@skyux/grids 5.6.2 → 5.7.2

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.
@@ -35,8 +35,7 @@ export class SkyGridComponent {
35
35
  * Indicates whether to enable the multiselect feature to display a column of
36
36
  * checkboxes on the left side of the grid. You can specify a unique ID with
37
37
  * the `multiselectRowId` property, but multiselect defaults to the `id` property on
38
- * the `data` object. To include options to select and clear all multiselect checkboxes,
39
- * we recommend the [list view grid](https://developer.blackbaud.com/skyux/components/list/grid) component.
38
+ * the `data` object.
40
39
  * @default false
41
40
  */
42
41
  this.enableMultiselect = false;
@@ -1 +1 @@
1
- {"version":3,"file":"grid.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/grids/src/lib/modules/grid/grid.component.ts","../../../../../../../../libs/components/grids/src/lib/modules/grid/grid.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAppWindowRef,\n SkyOverlayService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport {\n ListItemModel,\n ListSortFieldSelectorModel,\n} from '@skyux/list-builder-common';\n\nimport { DragulaService } from 'ng2-dragula';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n take,\n takeUntil,\n takeWhile,\n} from 'rxjs/operators';\n\nimport { SkyGridAdapterService } from './grid-adapter.service';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridColumnModel } from './grid-column.model';\nimport { SkyGridColumnDescriptionModelChange } from './types/grid-column-description-model-change';\nimport { SkyGridColumnHeadingModelChange } from './types/grid-column-heading-model-change';\nimport { SkyGridColumnInlineHelpPopoverModelChange } from './types/grid-column-inline-help-popover-model-change';\nimport { SkyGridColumnWidthModelChange } from './types/grid-column-width-model-change';\nimport { SkyGridMessage } from './types/grid-message';\nimport { SkyGridMessageType } from './types/grid-message-type';\nimport { SkyGridRowDeleteCancelArgs } from './types/grid-row-delete-cancel-args';\nimport { SkyGridRowDeleteConfig } from './types/grid-row-delete-config';\nimport { SkyGridRowDeleteConfirmArgs } from './types/grid-row-delete-confirm-args';\nimport { SkyGridRowDeleteContents } from './types/grid-row-delete-contents';\nimport { SkyGridSelectedRowsModelChange } from './types/grid-selected-rows-model-change';\nimport { SkyGridSelectedRowsSource } from './types/grid-selected-rows-source';\nimport { SkyGridUIConfig } from './types/grid-ui-config';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n viewProviders: [DragulaService],\n providers: [SkyGridAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyGridComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n /**\n * Specifies columns and column properties for the grid.\n */\n @Input()\n public set columns(newColumns: Array<SkyGridColumnModel>) {\n const oldColumns = this.columns;\n this._columns = newColumns;\n if (oldColumns) {\n this.transferColumnWidths(oldColumns, this.columns);\n this.isResized = false;\n this.setDisplayedColumns(true);\n }\n this.changeDetector.markForCheck();\n }\n\n public get columns(): Array<SkyGridColumnModel> {\n return this._columns;\n }\n\n /**\n * Specifies the data for the grid. Each item requires an `id` and a property that maps\n * to the `field` or `id` property of each column in the grid.\n */\n @Input()\n public data: Array<any>;\n\n /**\n * Indicates whether to enable the multiselect feature to display a column of\n * checkboxes on the left side of the grid. You can specify a unique ID with\n * the `multiselectRowId` property, but multiselect defaults to the `id` property on\n * the `data` object. To include options to select and clear all multiselect checkboxes,\n * we recommend the [list view grid](https://developer.blackbaud.com/skyux/components/list/grid) component.\n * @default false\n */\n @Input()\n public enableMultiselect = false;\n\n /**\n * Specifies how the grid fits to its parent. The valid options are `width`,\n * which fits the grid to the parent's full width, and `scroll`, which allows the grid\n * to exceed the parent's width. If the grid does not have enough columns to fill\n * the parent's width, it always stretches to the parent's full width.\n * @default \"width\"\n */\n @Input()\n public fit = 'width';\n\n /**\n * Indicates whether to display a toolbar with the grid.\n */\n @Input()\n public hasToolbar = false;\n\n /**\n * Specifies the height of the grid.\n */\n @Input()\n public height: number;\n\n /**\n * Specifies text to highlight within the grid.\n * Typically, this property is used in conjunction with search.\n */\n @Input()\n public highlightText: string;\n\n /**\n * Provides an observable to send commands to the grid.\n */\n @Input()\n public messageStream = new Subject<SkyGridMessage>();\n\n /**\n * Specifies a unique ID that matches a property on the `data` object.\n * By default, this property uses the `id` property.\n */\n @Input()\n public multiselectRowId: string;\n\n /**\n * Specifies the ID of the row to highlight. The ID matches the `id` property\n * of the `data` object. Typically, this property is used in conjunction with\n * the flyout component to indicate the currently selected row.\n */\n @Input()\n public rowHighlightedId: string;\n\n /**\n * Specifies the columns to display in the grid based on the `id` or `field` properties\n * of the columns. If no columns are specified, then the grid displays all columns.\n */\n @Input()\n public set selectedColumnIds(value: Array<string>) {\n const currentIds = this._selectedColumnIds;\n this._selectedColumnIds = value;\n\n if (this.columns) {\n this.setDisplayedColumns();\n }\n\n // Ensure that the ids have changed.\n if (!currentIds || !value || !this.arraysEqual(value, currentIds)) {\n // This variable ensures that we do not set user config options or fire the change event\n // on the first time that the columns are set up\n if (this.selectedColumnIdsSet) {\n this.setUserConfig({\n selectedColumnIds: value,\n });\n\n this.selectedColumnIdsChange.emit(this._selectedColumnIds);\n\n if (this.isResized) {\n this.resetTableWidth();\n }\n }\n }\n\n this.selectedColumnIdsSet = true;\n }\n\n public get selectedColumnIds(): Array<string> {\n return this._selectedColumnIds;\n }\n\n /**\n * Specifies a set of IDs for the rows to select in a multiselect grid.\n * The IDs match the `id` properties of the `data` objects.\n * Rows with IDs that are not included are de-selected in the grid.\n */\n @Input()\n public set selectedRowIds(value: Array<string>) {\n if (value) {\n this._selectedRowIds = value;\n this.applySelectedRows();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectedRowIdsChange);\n }\n }\n\n public get selectedRowIds(): Array<string> {\n return this._selectedRowIds;\n }\n\n /**\n * Specifies a unique key for the UI Config Service to retrieve stored settings from a database.\n * The UI Config Service saves configuration settings for users and returns\n * `selectedColumnIds` to preserve the columns to display and the preferred column order. You must provide `id` values for your `sky-grid-column` elements because the UI Config Service depends on those values to organize columns based on user settings. For more information about the UI Config Service, see [the sticky settings documentation](https://developer.blackbaud.com/skyux/learn/get-started/sticky-settings).\n */\n @Input()\n public settingsKey: string;\n\n /**\n * Displays a caret in the column that was used to sort the grid. This is particularly useful\n * when you programmatically sort data and want to visually indicate how the grid was sorted.\n * This property accepts a `ListSortFieldSelectorModel` value with the following properties:\n * - `fieldSelector` Represents the current sort field. This property accepts `string` values.\n * - `descending` Indicates whether to sort in descending order. The caret that visually\n * indicates the sort order points down for descending order and up for ascending order.\n * This property accepts `boolean` values. Default is `false`.\n */\n @Input()\n public sortField: ListSortFieldSelectorModel;\n\n /**\n * Specifies the width of the grid in pixels.\n */\n @Input()\n public width: number;\n\n /**\n * Fires when the width of a column changes.\n */\n @Output()\n public columnWidthChange = new EventEmitter<\n Array<SkyGridColumnWidthModelChange>\n >();\n\n /**\n * Fires when the selection of multiselect checkboxes changes.\n * Emits an array of IDs for the selected rows based on the `multiselectRowId` property\n * that the consumer provides.\n */\n @Output()\n public multiselectSelectionChange = new EventEmitter<SkyGridSelectedRowsModelChange>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteCancel = new EventEmitter<SkyGridRowDeleteCancelArgs>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteConfirm = new EventEmitter<SkyGridRowDeleteConfirmArgs>();\n\n /**\n * Fires when the columns to display in the grid change or when the order of the columns changes.\n * The event emits an array of IDs for the displayed columns that reflects the column order.\n */\n @Output()\n public selectedColumnIdsChange = new EventEmitter<Array<string>>();\n\n /**\n * Fires when the active sort field changes.\n */\n @Output()\n public sortFieldChange = new EventEmitter<ListSortFieldSelectorModel>();\n\n public columnResizeStep = 10;\n public currentSortField: BehaviorSubject<ListSortFieldSelectorModel>;\n public displayedColumns: Array<SkyGridColumnModel>;\n public gridId: number = ++nextId;\n public rowDeleteConfigs: SkyGridRowDeleteConfig[] = [];\n public items: Array<any>;\n public maxColWidth = 9999; // This is an arbitrary number, as the input range picker won't work without a value.\n public minColWidth = 50;\n public showResizeBar = false;\n public showTopScroll = false;\n\n public get tableWidth() {\n return this.tableElementRef.nativeElement.offsetWidth;\n }\n\n @ContentChildren(SkyGridColumnComponent)\n private columnComponents: QueryList<SkyGridColumnComponent>;\n\n @ViewChildren('gridCol')\n private columnElementRefs: QueryList<ElementRef>;\n @ViewChildren('colSizeRange')\n private columnRangeInputElementRefs: QueryList<ElementRef>;\n @ViewChildren('inlineDeleteRef')\n private inlineDeleteRefs: QueryList<ElementRef>;\n @ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })\n private inlineDeleteTemplateRef: TemplateRef<any>;\n @ViewChild('gridContainer')\n private tableContainerElementRef: ElementRef;\n @ViewChild('gridTable')\n private tableElementRef: ElementRef;\n @ViewChild('topScrollContainer')\n private topScrollContainerElementRef: ElementRef;\n @ViewChild('resizeBar')\n private resizeBar: ElementRef;\n\n private activeResizeColumnIndex: string;\n private isDraggingResizeHandle = false;\n private isResized = false;\n private ngUnsubscribe = new Subject();\n private rowDeleteContents: { [id: string]: SkyGridRowDeleteContents } = {};\n private startColumnWidth: number;\n private subscriptions: Subscription[] = [];\n private scrollTriggered = false;\n private selectedColumnIdsSet = false;\n private xPosStart: number;\n\n private _columns: Array<SkyGridColumnModel>;\n private _selectedColumnIds: Array<string>;\n private _selectedRowIds: Array<string>;\n\n constructor(\n private affixService: SkyAffixService,\n private changeDetector: ChangeDetectorRef,\n private dragulaService: DragulaService,\n private gridAdapter: SkyGridAdapterService,\n private overlayService: SkyOverlayService,\n private skyWindow: SkyAppWindowRef,\n private uiConfigService: SkyUIConfigService\n ) {\n this.displayedColumns = new Array<SkyGridColumnModel>();\n this.items = new Array<any>();\n this.currentSortField = new BehaviorSubject<ListSortFieldSelectorModel>({\n fieldSelector: '',\n descending: false,\n });\n }\n\n public ngOnInit() {\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyGridMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngAfterContentInit() {\n if (this.settingsKey) {\n this.applyUserConfig().then(() => {\n this.initColumns();\n });\n } else {\n this.initColumns();\n }\n\n // Setup column drag-and-drop.\n this.gridAdapter.initializeDragAndDrop(\n this.dragulaService,\n (selectedColumnIds: Array<string>) => {\n this.onHeaderDrop(selectedColumnIds);\n }\n );\n\n this.applySelectedRows();\n }\n\n public ngAfterViewInit() {\n this.checkUserColumnWidthsForScroll();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.columns && this.columns) {\n if (this.selectedColumnIds) {\n this.selectedColumnIds = this.selectedColumnIds.filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n });\n }\n this.setDisplayedColumns(true);\n }\n\n if (changes.data && this.data) {\n this.transformData();\n\n // This set timeout is necessary to ensure the data has rendered in the grid\n setTimeout(() => {\n // This cleans up any lingering row deletes for items that have been removed.\n Object.keys(this.rowDeleteContents).forEach((id) => {\n if (!this.data.find((item) => item.id === id)) {\n this.destroyRowDelete(id);\n } else {\n // The rows re-render thus messing up the affixers. We must reaffix them so that things\n // continue to render correctly.\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + id + '\"]'\n );\n\n this.rowDeleteContents[id].affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n });\n\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n if (changes.sortField) {\n this.setSortHeaders();\n }\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n this.multiselectSelectionChange.complete();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n Object.keys(this.rowDeleteContents).forEach((id) => {\n this.destroyRowDelete(id);\n });\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.checkUserColumnWidthsForScroll();\n }\n\n public getTopScrollWidth(): string {\n return this.tableElementRef.nativeElement.scrollWidth;\n }\n\n public getTableClassNames() {\n const classNames: string[] = [];\n\n if (this.fit !== 'scroll') {\n classNames.push('sky-grid-fit');\n }\n\n if (this.hasToolbar) {\n classNames.push('sky-grid-has-toolbar');\n }\n\n return this.addDelimeter(classNames, ' ');\n }\n\n public getTableHeaderClassNames(column: SkyGridColumnModel) {\n const classNames: string[] = [];\n\n if (column && column.locked) {\n classNames.push('sky-grid-header-locked');\n }\n\n return this.addDelimeter(classNames, ' ');\n }\n\n public getCaretIconNames(column: SkyGridColumnModel) {\n const iconNames: string[] = [];\n\n this.getSortDirection(column.field).subscribe((sortDir) => {\n if (sortDir === 'asc') {\n iconNames.push('caret-up');\n }\n if (sortDir === 'desc') {\n iconNames.push('caret-down');\n }\n });\n\n return this.addDelimeter(iconNames, ' ');\n }\n\n public onKeydown(event: KeyboardEvent, column: SkyGridColumnModel) {\n const key = event.key.toLowerCase();\n if (key === 'enter' || key === ' ') {\n this.sortByColumn(column);\n }\n }\n\n public sortByColumn(column: SkyGridColumnModel) {\n if (!this.isDraggingResizeHandle && column.isSortable) {\n this.currentSortField\n .pipe(\n take(1),\n map((field) => {\n let selector = {\n fieldSelector: column.field,\n descending: true,\n };\n\n if (\n field &&\n field.fieldSelector === column.field &&\n field.descending\n ) {\n selector = {\n fieldSelector: column.field,\n descending: false,\n };\n }\n this.sortFieldChange.emit(selector);\n this.currentSortField.next(selector);\n })\n )\n .subscribe();\n }\n }\n\n public getSortDirection(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField\n ? field.descending\n ? 'desc'\n : 'asc'\n : undefined;\n })\n );\n }\n\n public getAriaSortDirection(column: SkyGridColumnModel): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === column.field\n ? field.descending\n ? 'descending'\n : 'ascending'\n : column.isSortable\n ? 'none'\n : undefined;\n })\n );\n }\n\n public getCaretVisibility(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField ? 'visible' : 'hidden';\n })\n );\n }\n\n public getHelpInlineClass(columnField: string): Observable<boolean> {\n return this.getCaretVisibility(columnField).pipe(\n map((visibility: string) => {\n return visibility === 'hidden';\n })\n );\n }\n\n public onMultiselectCheckboxChange() {\n this.emitSelectedRows(SkyGridSelectedRowsSource.CheckboxChange);\n }\n\n public updateColumnHeading(change: SkyGridColumnHeadingModelChange) {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.heading = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateInlineHelpPopover(\n change: SkyGridColumnInlineHelpPopoverModelChange\n ) {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.inlineHelpPopover = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateColumnDescription(change: SkyGridColumnDescriptionModelChange) {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.description = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public onResizeColumnStart(event: MouseEvent): void {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n\n this.isDraggingResizeHandle = true;\n this.xPosStart = event.pageX;\n this.showResizeBar = true;\n\n // Show visual indicator of where mouse is dragging (resizeBar).\n this.changeDetector.detectChanges();\n this.setResizeBarPosition(event.pageX);\n\n event.preventDefault();\n event.stopPropagation();\n\n const mouseMoveEvent = fromEvent(document, 'mousemove');\n const touchMoveEvent = fromEvent(document, 'touchmove');\n\n merge(mouseMoveEvent, touchMoveEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n })\n )\n .subscribe((moveEvent: any) => {\n this.onResizeHandleMove(moveEvent);\n });\n\n const mouseUpEvent = fromEvent(document, 'mouseup');\n const touchEndEvent = fromEvent(document, 'touchend');\n\n merge(mouseUpEvent, touchEndEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n })\n )\n .subscribe((endEvent: any) => {\n this.onResizeHandleRelease(endEvent);\n });\n }\n\n public onKeydownResizeCol(event: KeyboardEvent) {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n }\n\n public onInputChangeResizeCol(event: Event) {\n const input = event.target as HTMLInputElement;\n const newValue = Number(input.value);\n const deltaX = newValue - this.startColumnWidth;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newValue, deltaX);\n const left = input.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleMove(event: MouseEvent) {\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n\n if (newColWidth <= this.minColWidth) {\n event.stopPropagation();\n return;\n }\n\n const max = this.getMaxRangeByIndex(this.activeResizeColumnIndex);\n if (this.fit === 'width' && newColWidth > max) {\n event.stopPropagation();\n return;\n }\n\n this.setResizeBarPosition(event.pageX);\n }\n\n public onResizeHandleBlur(event: Event) {\n this.showResizeBar = false;\n }\n\n public onResizeHandleFocus(event: KeyboardEvent) {\n this.showResizeBar = true;\n this.changeDetector.detectChanges();\n\n const target = event.target as HTMLElement;\n const left = target.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleRelease(event: MouseEvent) {\n this.showResizeBar = false;\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newColWidth, deltaX);\n this.isDraggingResizeHandle = false;\n this.activeResizeColumnIndex = undefined;\n\n event.stopPropagation();\n this.changeDetector.markForCheck();\n }\n\n public onRowClick(event: any, selectedItem: ListItemModel) {\n /* istanbul ignore else */\n if (this.enableMultiselect) {\n if (\n event.target === event.currentTarget ||\n !this.isInteractiveElement(event)\n ) {\n selectedItem.isSelected = !selectedItem.isSelected;\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.RowClick);\n }\n }\n }\n\n public isRowHighlighted(id: string): boolean {\n if (this.rowHighlightedId) {\n return id === this.rowHighlightedId;\n }\n return false;\n }\n\n public getRowHeight(index: number): string {\n return this.gridAdapter.getRowHeight(this.tableElementRef, index);\n }\n\n public cancelRowDelete(id: string) {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== id\n );\n this.rowDeleteCancel.emit({ id: id });\n\n this.destroyRowDelete(id);\n }\n\n public confirmRowDelete(id: string) {\n this.rowDeleteConfigs.find((config) => config.id === id).pending = true;\n this.rowDeleteConfirm.emit({ id: id });\n }\n\n public getRowDeleteItem(id: string): SkyGridRowDeleteConfig {\n return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === id);\n }\n\n // Prevent touch devices from inadvertently scrolling grid while dragging columns.\n public onTouchMove(event: any): void {\n event.preventDefault();\n }\n\n public onTopScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.tableContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.tableContainerElementRef.nativeElement.scrollLeft =\n this.topScrollContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n public onGridScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.topScrollContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.topScrollContainerElementRef.nativeElement.scrollLeft =\n this.tableContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n private checkUserColumnWidthsForScroll(): void {\n if (\n !this.showTopScroll &&\n this.columnElementRefs &&\n this.columnElementRefs.length > 0\n ) {\n let columnsWidthTotal = 0;\n const windowSize = this.skyWindow.nativeWindow.innerWidth;\n this.columnElementRefs.forEach((col) => {\n if (!this.showTopScroll) {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n const width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth\n );\n columnsWidthTotal = columnsWidthTotal + width;\n if (columnsWidthTotal > windowSize) {\n this.showTopScroll = true;\n setTimeout(() => {\n this.changeDetector.markForCheck();\n });\n }\n }\n });\n }\n }\n\n private multiselectSelectAll() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].isSelected = true;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectAll);\n }\n\n private multiselectClearAll() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].isSelected = false;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.ClearAll);\n }\n\n private handleIncomingMessages(message: SkyGridMessage) {\n /* tslint:disable-next-line:switch-default */\n switch (message.type) {\n case SkyGridMessageType.SelectAll:\n this.multiselectSelectAll();\n break;\n\n case SkyGridMessageType.ClearAll:\n this.multiselectClearAll();\n break;\n case SkyGridMessageType.PromptDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.promptDeleteRow) {\n const existingConfig = this.rowDeleteConfigs.find(\n (config) => config.id === message.data.promptDeleteRow.id\n );\n if (existingConfig) {\n existingConfig.pending = false;\n } else {\n this.rowDeleteConfigs.push({\n id: message.data.promptDeleteRow.id,\n pending: false,\n });\n const overlay = this.overlayService.create({\n enableScroll: true,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n overlay.attachTemplate(this.inlineDeleteTemplateRef, {\n $implicit: this.data.find(\n (item) => item.id === message.data.promptDeleteRow.id\n ),\n });\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. This manual setting is 1 less than the omnibar's z-index of 1000. We\n * discussed changing the overlay service to allow for this but decided against that\n * change at this time due to its niche nature.\n */\n overlay.componentRef.instance.zIndex = '999';\n\n setTimeout(() => {\n const inlineDeleteRef = this.inlineDeleteRefs\n .toArray()\n .find((elRef) => {\n return (\n elRef.nativeElement.id ===\n 'row-delete-ref-' + message.data.promptDeleteRow.id\n );\n });\n const affixer = this.affixService.createAffixer(inlineDeleteRef);\n\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + message.data.promptDeleteRow.id + '\"]'\n );\n\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n\n this.rowDeleteContents[message.data.promptDeleteRow.id] = {\n affixer: affixer,\n overlay: overlay,\n };\n });\n }\n }\n break;\n case SkyGridMessageType.AbortDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.abortDeleteRow) {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== message.data.abortDeleteRow.id\n );\n\n this.destroyRowDelete(message.data.abortDeleteRow.id);\n }\n break;\n }\n this.changeDetector.markForCheck();\n }\n\n private onHeaderDrop(newColumnIds: Array<string>) {\n // update selected columnIds\n this.selectedColumnIdsSet = true;\n this.selectedColumnIds = newColumnIds;\n\n // mark for check because we are using ChangeDetectionStrategy.onPush\n this.changeDetector.markForCheck();\n }\n\n private setDisplayedColumns(respectHidden: boolean = false) {\n /* sanity check */\n /* istanbul ignore else */\n if (this.columns) {\n if (this.selectedColumnIds !== undefined) {\n // setup displayed columns\n this.displayedColumns = this.selectedColumnIds\n .filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n })\n .map((columnId) => {\n return this.columns.filter((column) => column.id === columnId)[0];\n });\n } else if (respectHidden) {\n this.displayedColumns = this.columns.filter((column) => {\n return !column.hidden;\n });\n } else {\n this.displayedColumns = this.columns;\n }\n }\n }\n\n private transformData() {\n // Transform data into object with id and data properties\n if (\n this.data &&\n this.data.length > 0 &&\n this.data[0].id &&\n !this.data[0].data\n ) {\n if (this.multiselectRowId) {\n this.items = this.getGridDataWithSelectedRows();\n } else {\n this.items = this.data.map((item) => new ListItemModel(item.id, item));\n }\n } else {\n this.items = this.data;\n }\n }\n\n private getGridDataWithSelectedRows() {\n const selectedRows = this.getSelectedRows();\n return this.data.map((item) => {\n let checked;\n if (Object.prototype.hasOwnProperty.call(item, this.multiselectRowId)) {\n checked = selectedRows.indexOf(item[this.multiselectRowId]) > -1;\n } else {\n checked = selectedRows.indexOf(item.id) > -1;\n }\n return new ListItemModel(item.id, item, checked);\n });\n }\n\n private applySelectedRows(): void {\n if (this.items && this.items.length > 0 && this.selectedRowIds) {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].isSelected =\n this.selectedRowIds.indexOf(this.items[i].id) > -1;\n }\n this.changeDetector.markForCheck();\n }\n }\n\n private setSortHeaders() {\n this.currentSortField.next(\n this.sortField || { fieldSelector: '', descending: false }\n );\n }\n\n private getColumnsFromComponent() {\n this.columns = this.columnComponents.map((columnComponent) => {\n return new SkyGridColumnModel(columnComponent.template, columnComponent);\n });\n }\n\n private updateColumns() {\n this.getColumnsFromComponent();\n\n // This set timeout is necessary to ensure the columns have rendered in the grid\n setTimeout(() => {\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n private resizeColumnByIndex(\n columnIndex: string,\n newColWidth: number,\n deltaX: number\n ) {\n const column = this.getColumnModelByIndex(columnIndex);\n\n // Prevent accidental shrinkage below minimum width.\n if (newColWidth <= this.minColWidth) {\n deltaX = deltaX + this.minColWidth - newColWidth;\n newColWidth = this.minColWidth;\n }\n\n // fit=width adds/removes width from the last column\n // fit=scroll adds/removes width from the table\n if (this.fit === 'width') {\n const lastColumn = this.getLastDisplayedColumn();\n\n // Prevent accidental growth that would bump last column off screen.\n const max = this.getMaxRangeByIndex(columnIndex);\n if (newColWidth > max) {\n newColWidth = max;\n deltaX = max - this.startColumnWidth;\n }\n column.width = newColWidth;\n lastColumn.width = lastColumn.width - deltaX;\n this.updateMaxRange();\n } else {\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth + deltaX}px`\n );\n column.width = newColWidth;\n }\n\n this.changeDetector.detectChanges();\n this.columnWidthChange.emit(this.getColumnWidthModelChange());\n }\n\n private initColumnWidths() {\n // Establish table width.\n this.showTopScroll = true;\n\n // Set column widths based on the width initially given by the browser.\n // computedWidth prevents accidental overflow for browsers with sub-pixel widths.\n this.columnElementRefs.forEach((col, index) => {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n /* istanbul ignore next */\n this.getColumnModelByIndex(index).width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth\n );\n });\n\n // 'scroll' tables should be allowed to expand outside of their constraints.\n if (this.fit === 'scroll') {\n this.gridAdapter.setStyle(this.tableElementRef, 'min-width', 'auto');\n }\n\n // Update max limits for input ranges.\n if (this.fit === 'width') {\n this.updateMaxRange();\n }\n\n this.changeDetector.detectChanges();\n }\n\n private transferColumnWidths(\n oldColumns: SkyGridColumnModel[],\n newColumns: SkyGridColumnModel[]\n ) {\n /* sanity check */\n /* istanbul ignore else */\n if (oldColumns && newColumns) {\n for (const oldColumn of oldColumns) {\n if (oldColumn.width) {\n const matchingColumn = newColumns.find(\n (newColumn) => oldColumn.id === newColumn.id\n );\n if (matchingColumn && !matchingColumn.width) {\n matchingColumn.width = oldColumn.width;\n }\n }\n }\n }\n this.changeDetector.markForCheck();\n }\n\n private getColumnWidthModelChange() {\n const columnWidthModelChange = new Array<SkyGridColumnWidthModelChange>();\n this.columns.forEach((column) => {\n columnWidthModelChange.push({\n id: column.id,\n field: column.field,\n width: column.width,\n });\n });\n return columnWidthModelChange;\n }\n\n private updateMaxRange() {\n const leftoverWidth =\n this.getLastDisplayedColumn().width - this.minColWidth;\n this.displayedColumns.forEach((column, index) => {\n const newMaxRange = column.width + leftoverWidth;\n const rangeInput = this.getRangeInputByIndex(index);\n rangeInput.nativeElement.max = newMaxRange;\n rangeInput.nativeElement.setAttribute('aria-valuemax', newMaxRange);\n });\n }\n\n private initializeResizeColumn(event: any) {\n const clickTarget = event.target as HTMLElement;\n this.activeResizeColumnIndex = clickTarget.getAttribute('sky-cmp-index');\n const column = this.getColumnModelByIndex(this.activeResizeColumnIndex);\n this.startColumnWidth = column.width;\n }\n\n private resetTableWidth() {\n this.skyWindow.nativeWindow.setTimeout(() => {\n this.gridAdapter.setStyle(this.tableElementRef, 'width', `auto`);\n this.changeDetector.detectChanges();\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth}px`\n );\n this.changeDetector.detectChanges();\n });\n }\n\n private getRangeInputByIndex(index: string | number) {\n return this.columnRangeInputElementRefs.find(\n (input) =>\n input.nativeElement.getAttribute('sky-cmp-index') === index.toString()\n );\n }\n\n private getColumnModelByIndex(index: string | number) {\n return this.displayedColumns[Number(index)];\n }\n\n private getMaxRangeByIndex(index: string) {\n const columnElementRef = this.columnElementRefs.find(\n (th) => th.nativeElement.getAttribute('sky-cmp-index') === index\n );\n const rangeInput = columnElementRef.nativeElement.querySelector(\n '.sky-grid-column-input-aria-only'\n );\n return Number(rangeInput.max);\n }\n\n private getLastDisplayedColumn() {\n return this.getColumnModelByIndex(this.displayedColumns.length - 1);\n }\n\n private addDelimeter(text: string[], delimiter: string) {\n return text.filter((val) => val).join(delimiter);\n }\n\n private destroyRowDelete(id: string) {\n const rowDeleteContents = this.rowDeleteContents[id];\n /* istanbul ignore else */\n if (rowDeleteContents) {\n rowDeleteContents.affixer.destroy();\n this.overlayService.close(rowDeleteContents.overlay);\n delete this.rowDeleteContents[id];\n }\n }\n\n private emitSelectedRows(source: SkyGridSelectedRowsSource) {\n const selectedRows: SkyGridSelectedRowsModelChange = {\n selectedRowIds: this.getSelectedRows(),\n source: source,\n };\n this.multiselectSelectionChange.emit(selectedRows);\n }\n\n private getSelectedRows() {\n return this.items\n .filter((item) => {\n return item.isSelected;\n })\n .map((item) => {\n if (\n Object.prototype.hasOwnProperty.call(item.data, this.multiselectRowId)\n ) {\n return item.data[this.multiselectRowId];\n }\n return item.id;\n });\n }\n\n private isInteractiveElement(event: any): any {\n const interactiveElSelectors = `\n a,\n button,\n input,\n label,\n option,\n select,\n textarea,\n details,\n dialog,\n menu,\n menuitem,\n summary`;\n return event.target.closest(interactiveElSelectors);\n }\n\n private setResizeBarPosition(xPosition: number): void {\n const parentScroll = this.tableContainerElementRef.nativeElement.scrollLeft;\n const resizeBarX =\n xPosition -\n this.tableElementRef.nativeElement.getBoundingClientRect().left -\n parentScroll;\n this.gridAdapter.setStyle(this.resizeBar, 'left', resizeBarX + 'px');\n }\n\n private applyUserConfig(): Promise<void> {\n return new Promise<void>((resolve) => {\n this.uiConfigService\n .getConfig(this.settingsKey)\n .pipe(take(1))\n .subscribe(\n (config: SkyGridUIConfig) => {\n /* istanbul ignore else */\n if (config && config.selectedColumnIds) {\n // Remove any columnIds that don't exist in the current data set.\n this.selectedColumnIds = config.selectedColumnIds.filter((id) =>\n this.columns.find((column) => column.id === id)\n );\n this.changeDetector.markForCheck();\n }\n\n resolve();\n },\n () => {\n resolve();\n }\n );\n });\n }\n\n private setUserConfig(config: SkyGridUIConfig): void {\n if (!this.settingsKey) {\n return;\n }\n\n this.uiConfigService\n .setConfig(this.settingsKey, config)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n (err) => {\n console.warn('Could not save grid settings.');\n console.warn(err);\n }\n );\n }\n\n private initColumns(): void {\n /* istanbul ignore else */\n if (this.columnComponents.length !== 0 || this.columns !== undefined) {\n /* istanbul ignore else */\n /* sanity check */\n if (this.columnComponents.length > 0) {\n this.getColumnsFromComponent();\n }\n\n this.transformData();\n this.setDisplayedColumns(true);\n this.changeDetector.markForCheck();\n }\n\n // Watch for added/removed columns:\n this.subscriptions.push(\n this.columnComponents.changes.subscribe(() => this.updateColumns())\n );\n\n // Watch for column heading changes:\n this.columnComponents.forEach((comp: SkyGridColumnComponent) => {\n this.subscriptions.push(\n comp.headingModelChanges.subscribe(\n (change: SkyGridColumnHeadingModelChange) => {\n this.updateColumnHeading(change);\n }\n )\n );\n this.subscriptions.push(\n comp.descriptionModelChanges.subscribe(\n (change: SkyGridColumnDescriptionModelChange) => {\n this.updateColumnDescription(change);\n }\n )\n );\n this.subscriptions.push(\n comp.inlineHelpPopoverModelChanges.subscribe(\n (change: SkyGridColumnInlineHelpPopoverModelChange) => {\n this.updateInlineHelpPopover(change);\n }\n )\n );\n });\n }\n\n private arraysEqual(arrayA: any[], arrayB: any[]): boolean {\n return (\n arrayA.length === arrayB.length &&\n arrayA.every((value, index) => value === arrayB[index])\n );\n }\n}\n","<div class=\"sky-grid\">\n <div\n *ngIf=\"showTopScroll\"\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n #topScrollContainer\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n <div\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n #gridContainer\n >\n <table class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\" #gridTable>\n <thead>\n <tr dragula=\"sky-grid-heading\">\n <th\n *ngIf=\"enableMultiselect\"\n class=\"\n sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\n \"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n <th\n *ngFor=\"\n let column of displayedColumns;\n let last = last;\n let i = index\n \"\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n #gridCol\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n <span\n *ngIf=\"(getCaretVisibility(column.field) | async) === 'hidden'\"\n class=\"sky-grid-header-caret-hidden-spacing\"\n ></span>\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [icon]=\"getCaretIconNames(column)\"\n >\n </sky-icon>\n <sky-help-inline\n *ngIf=\"column.inlineHelpPopover\"\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n >\n </sky-help-inline>\n </div>\n <span\n *ngIf=\"(fit === 'width' && !last) || fit === 'scroll'\"\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n <input\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur($event)\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n #colSizeRange\n />\n </th>\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n <tr\n class=\"sky-grid-row\"\n *ngFor=\"let item of items; let i = index\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n <td\n *ngIf=\"enableMultiselect\"\n class=\"sky-grid-multiselect-cell sky-grid-header-locked\"\n >\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"'skyux_grid_multiselect_select_row' | skyLibResources\"\n (change)=\"onMultiselectCheckboxChange()\"\n [(ngModel)]=\"item.isSelected\"\n >\n </sky-checkbox>\n </div>\n </td>\n <td\n *ngFor=\"\n let column of displayedColumns;\n let last = last;\n let i = index\n \"\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n >\n </sky-grid-cell>\n </td>\n </tr>\n </tbody>\n </table>\n <div\n *ngIf=\"showResizeBar\"\n aria-hidden=\"true\"\n id=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n #resizeBar\n ></div>\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template let-item #inlineDeleteTemplateRef>\n <div\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n #inlineDeleteRef\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n ></sky-inline-delete>\n </div>\n</ng-template>\n"]}
1
+ {"version":3,"file":"grid.component.js","sourceRoot":"","sources":["../../../../../../../../libs/components/grids/src/lib/modules/grid/grid.component.ts","../../../../../../../../libs/components/grids/src/lib/modules/grid/grid.component.html"],"names":[],"mappings":"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","sourcesContent":["import {\n AfterContentInit,\n AfterViewInit,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n ContentChildren,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n QueryList,\n SimpleChanges,\n TemplateRef,\n ViewChild,\n ViewChildren,\n} from '@angular/core';\nimport {\n SkyAffixAutoFitContext,\n SkyAffixService,\n SkyAppWindowRef,\n SkyOverlayService,\n SkyUIConfigService,\n} from '@skyux/core';\nimport {\n ListItemModel,\n ListSortFieldSelectorModel,\n} from '@skyux/list-builder-common';\n\nimport { DragulaService } from 'ng2-dragula';\nimport {\n BehaviorSubject,\n Observable,\n Subject,\n Subscription,\n fromEvent,\n merge,\n} from 'rxjs';\nimport {\n distinctUntilChanged,\n map,\n take,\n takeUntil,\n takeWhile,\n} from 'rxjs/operators';\n\nimport { SkyGridAdapterService } from './grid-adapter.service';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridColumnModel } from './grid-column.model';\nimport { SkyGridColumnDescriptionModelChange } from './types/grid-column-description-model-change';\nimport { SkyGridColumnHeadingModelChange } from './types/grid-column-heading-model-change';\nimport { SkyGridColumnInlineHelpPopoverModelChange } from './types/grid-column-inline-help-popover-model-change';\nimport { SkyGridColumnWidthModelChange } from './types/grid-column-width-model-change';\nimport { SkyGridMessage } from './types/grid-message';\nimport { SkyGridMessageType } from './types/grid-message-type';\nimport { SkyGridRowDeleteCancelArgs } from './types/grid-row-delete-cancel-args';\nimport { SkyGridRowDeleteConfig } from './types/grid-row-delete-config';\nimport { SkyGridRowDeleteConfirmArgs } from './types/grid-row-delete-confirm-args';\nimport { SkyGridRowDeleteContents } from './types/grid-row-delete-contents';\nimport { SkyGridSelectedRowsModelChange } from './types/grid-selected-rows-model-change';\nimport { SkyGridSelectedRowsSource } from './types/grid-selected-rows-source';\nimport { SkyGridUIConfig } from './types/grid-ui-config';\n\nlet nextId = 0;\n\n@Component({\n selector: 'sky-grid',\n templateUrl: './grid.component.html',\n styleUrls: ['./grid.component.scss'],\n viewProviders: [DragulaService],\n providers: [SkyGridAdapterService],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SkyGridComponent\n implements OnInit, AfterContentInit, AfterViewInit, OnChanges, OnDestroy\n{\n /**\n * Specifies columns and column properties for the grid.\n */\n @Input()\n public set columns(newColumns: Array<SkyGridColumnModel>) {\n const oldColumns = this.columns;\n this._columns = newColumns;\n if (oldColumns) {\n this.transferColumnWidths(oldColumns, this.columns);\n this.isResized = false;\n this.setDisplayedColumns(true);\n }\n this.changeDetector.markForCheck();\n }\n\n public get columns(): Array<SkyGridColumnModel> {\n return this._columns;\n }\n\n /**\n * Specifies the data for the grid. Each item requires an `id` and a property that maps\n * to the `field` or `id` property of each column in the grid.\n */\n @Input()\n public data: Array<any>;\n\n /**\n * Indicates whether to enable the multiselect feature to display a column of\n * checkboxes on the left side of the grid. You can specify a unique ID with\n * the `multiselectRowId` property, but multiselect defaults to the `id` property on\n * the `data` object.\n * @default false\n */\n @Input()\n public enableMultiselect = false;\n\n /**\n * Specifies how the grid fits to its parent. The valid options are `width`,\n * which fits the grid to the parent's full width, and `scroll`, which allows the grid\n * to exceed the parent's width. If the grid does not have enough columns to fill\n * the parent's width, it always stretches to the parent's full width.\n * @default \"width\"\n */\n @Input()\n public fit = 'width';\n\n /**\n * Indicates whether to display a toolbar with the grid.\n */\n @Input()\n public hasToolbar = false;\n\n /**\n * Specifies the height of the grid.\n */\n @Input()\n public height: number;\n\n /**\n * Specifies text to highlight within the grid.\n * Typically, this property is used in conjunction with search.\n */\n @Input()\n public highlightText: string;\n\n /**\n * Provides an observable to send commands to the grid.\n */\n @Input()\n public messageStream = new Subject<SkyGridMessage>();\n\n /**\n * Specifies a unique ID that matches a property on the `data` object.\n * By default, this property uses the `id` property.\n */\n @Input()\n public multiselectRowId: string;\n\n /**\n * Specifies the ID of the row to highlight. The ID matches the `id` property\n * of the `data` object. Typically, this property is used in conjunction with\n * the flyout component to indicate the currently selected row.\n */\n @Input()\n public rowHighlightedId: string;\n\n /**\n * Specifies the columns to display in the grid based on the `id` or `field` properties\n * of the columns. If no columns are specified, then the grid displays all columns.\n */\n @Input()\n public set selectedColumnIds(value: Array<string>) {\n const currentIds = this._selectedColumnIds;\n this._selectedColumnIds = value;\n\n if (this.columns) {\n this.setDisplayedColumns();\n }\n\n // Ensure that the ids have changed.\n if (!currentIds || !value || !this.arraysEqual(value, currentIds)) {\n // This variable ensures that we do not set user config options or fire the change event\n // on the first time that the columns are set up\n if (this.selectedColumnIdsSet) {\n this.setUserConfig({\n selectedColumnIds: value,\n });\n\n this.selectedColumnIdsChange.emit(this._selectedColumnIds);\n\n if (this.isResized) {\n this.resetTableWidth();\n }\n }\n }\n\n this.selectedColumnIdsSet = true;\n }\n\n public get selectedColumnIds(): Array<string> {\n return this._selectedColumnIds;\n }\n\n /**\n * Specifies a set of IDs for the rows to select in a multiselect grid.\n * The IDs match the `id` properties of the `data` objects.\n * Rows with IDs that are not included are de-selected in the grid.\n */\n @Input()\n public set selectedRowIds(value: Array<string>) {\n if (value) {\n this._selectedRowIds = value;\n this.applySelectedRows();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectedRowIdsChange);\n }\n }\n\n public get selectedRowIds(): Array<string> {\n return this._selectedRowIds;\n }\n\n /**\n * Specifies a unique key for the UI Config Service to retrieve stored settings from a database.\n * The UI Config Service saves configuration settings for users and returns\n * `selectedColumnIds` to preserve the columns to display and the preferred column order. You must provide `id` values for your `sky-grid-column` elements because the UI Config Service depends on those values to organize columns based on user settings. For more information about the UI Config Service, see [the sticky settings documentation](https://developer.blackbaud.com/skyux/learn/get-started/sticky-settings).\n */\n @Input()\n public settingsKey: string;\n\n /**\n * Displays a caret in the column that was used to sort the grid. This is particularly useful\n * when you programmatically sort data and want to visually indicate how the grid was sorted.\n * This property accepts a `ListSortFieldSelectorModel` value with the following properties:\n * - `fieldSelector` Represents the current sort field. This property accepts `string` values.\n * - `descending` Indicates whether to sort in descending order. The caret that visually\n * indicates the sort order points down for descending order and up for ascending order.\n * This property accepts `boolean` values. Default is `false`.\n */\n @Input()\n public sortField: ListSortFieldSelectorModel;\n\n /**\n * Specifies the width of the grid in pixels.\n */\n @Input()\n public width: number;\n\n /**\n * Fires when the width of a column changes.\n */\n @Output()\n public columnWidthChange = new EventEmitter<\n Array<SkyGridColumnWidthModelChange>\n >();\n\n /**\n * Fires when the selection of multiselect checkboxes changes.\n * Emits an array of IDs for the selected rows based on the `multiselectRowId` property\n * that the consumer provides.\n */\n @Output()\n public multiselectSelectionChange = new EventEmitter<SkyGridSelectedRowsModelChange>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteCancel = new EventEmitter<SkyGridRowDeleteCancelArgs>();\n\n /**\n * @internal\n */\n @Output()\n public rowDeleteConfirm = new EventEmitter<SkyGridRowDeleteConfirmArgs>();\n\n /**\n * Fires when the columns to display in the grid change or when the order of the columns changes.\n * The event emits an array of IDs for the displayed columns that reflects the column order.\n */\n @Output()\n public selectedColumnIdsChange = new EventEmitter<Array<string>>();\n\n /**\n * Fires when the active sort field changes.\n */\n @Output()\n public sortFieldChange = new EventEmitter<ListSortFieldSelectorModel>();\n\n public columnResizeStep = 10;\n public currentSortField: BehaviorSubject<ListSortFieldSelectorModel>;\n public displayedColumns: Array<SkyGridColumnModel>;\n public gridId: number = ++nextId;\n public rowDeleteConfigs: SkyGridRowDeleteConfig[] = [];\n public items: Array<any>;\n public maxColWidth = 9999; // This is an arbitrary number, as the input range picker won't work without a value.\n public minColWidth = 50;\n public showResizeBar = false;\n public showTopScroll = false;\n\n public get tableWidth() {\n return this.tableElementRef.nativeElement.offsetWidth;\n }\n\n @ContentChildren(SkyGridColumnComponent)\n private columnComponents: QueryList<SkyGridColumnComponent>;\n\n @ViewChildren('gridCol')\n private columnElementRefs: QueryList<ElementRef>;\n @ViewChildren('colSizeRange')\n private columnRangeInputElementRefs: QueryList<ElementRef>;\n @ViewChildren('inlineDeleteRef')\n private inlineDeleteRefs: QueryList<ElementRef>;\n @ViewChild('inlineDeleteTemplateRef', { read: TemplateRef })\n private inlineDeleteTemplateRef: TemplateRef<any>;\n @ViewChild('gridContainer')\n private tableContainerElementRef: ElementRef;\n @ViewChild('gridTable')\n private tableElementRef: ElementRef;\n @ViewChild('topScrollContainer')\n private topScrollContainerElementRef: ElementRef;\n @ViewChild('resizeBar')\n private resizeBar: ElementRef;\n\n private activeResizeColumnIndex: string;\n private isDraggingResizeHandle = false;\n private isResized = false;\n private ngUnsubscribe = new Subject();\n private rowDeleteContents: { [id: string]: SkyGridRowDeleteContents } = {};\n private startColumnWidth: number;\n private subscriptions: Subscription[] = [];\n private scrollTriggered = false;\n private selectedColumnIdsSet = false;\n private xPosStart: number;\n\n private _columns: Array<SkyGridColumnModel>;\n private _selectedColumnIds: Array<string>;\n private _selectedRowIds: Array<string>;\n\n constructor(\n private affixService: SkyAffixService,\n private changeDetector: ChangeDetectorRef,\n private dragulaService: DragulaService,\n private gridAdapter: SkyGridAdapterService,\n private overlayService: SkyOverlayService,\n private skyWindow: SkyAppWindowRef,\n private uiConfigService: SkyUIConfigService\n ) {\n this.displayedColumns = new Array<SkyGridColumnModel>();\n this.items = new Array<any>();\n this.currentSortField = new BehaviorSubject<ListSortFieldSelectorModel>({\n fieldSelector: '',\n descending: false,\n });\n }\n\n public ngOnInit() {\n this.messageStream\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe((message: SkyGridMessage) => {\n this.handleIncomingMessages(message);\n });\n }\n\n public ngAfterContentInit() {\n if (this.settingsKey) {\n this.applyUserConfig().then(() => {\n this.initColumns();\n });\n } else {\n this.initColumns();\n }\n\n // Setup column drag-and-drop.\n this.gridAdapter.initializeDragAndDrop(\n this.dragulaService,\n (selectedColumnIds: Array<string>) => {\n this.onHeaderDrop(selectedColumnIds);\n }\n );\n\n this.applySelectedRows();\n }\n\n public ngAfterViewInit() {\n this.checkUserColumnWidthsForScroll();\n }\n\n public ngOnChanges(changes: SimpleChanges) {\n if (changes.columns && this.columns) {\n if (this.selectedColumnIds) {\n this.selectedColumnIds = this.selectedColumnIds.filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n });\n }\n this.setDisplayedColumns(true);\n }\n\n if (changes.data && this.data) {\n this.transformData();\n\n // This set timeout is necessary to ensure the data has rendered in the grid\n setTimeout(() => {\n // This cleans up any lingering row deletes for items that have been removed.\n Object.keys(this.rowDeleteContents).forEach((id) => {\n if (!this.data.find((item) => item.id === id)) {\n this.destroyRowDelete(id);\n } else {\n // The rows re-render thus messing up the affixers. We must reaffix them so that things\n // continue to render correctly.\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + id + '\"]'\n );\n\n this.rowDeleteContents[id].affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n }\n });\n\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n if (changes.sortField) {\n this.setSortHeaders();\n }\n }\n\n public ngOnDestroy() {\n this.subscriptions.forEach((subscription: Subscription) => {\n subscription.unsubscribe();\n });\n this.multiselectSelectionChange.complete();\n\n this.ngUnsubscribe.next();\n this.ngUnsubscribe.complete();\n\n Object.keys(this.rowDeleteContents).forEach((id) => {\n this.destroyRowDelete(id);\n });\n }\n\n @HostListener('window:resize')\n public onWindowResize(): void {\n this.checkUserColumnWidthsForScroll();\n }\n\n public getTopScrollWidth(): string {\n return this.tableElementRef.nativeElement.scrollWidth;\n }\n\n public getTableClassNames() {\n const classNames: string[] = [];\n\n if (this.fit !== 'scroll') {\n classNames.push('sky-grid-fit');\n }\n\n if (this.hasToolbar) {\n classNames.push('sky-grid-has-toolbar');\n }\n\n return this.addDelimeter(classNames, ' ');\n }\n\n public getTableHeaderClassNames(column: SkyGridColumnModel) {\n const classNames: string[] = [];\n\n if (column && column.locked) {\n classNames.push('sky-grid-header-locked');\n }\n\n return this.addDelimeter(classNames, ' ');\n }\n\n public getCaretIconNames(column: SkyGridColumnModel) {\n const iconNames: string[] = [];\n\n this.getSortDirection(column.field).subscribe((sortDir) => {\n if (sortDir === 'asc') {\n iconNames.push('caret-up');\n }\n if (sortDir === 'desc') {\n iconNames.push('caret-down');\n }\n });\n\n return this.addDelimeter(iconNames, ' ');\n }\n\n public onKeydown(event: KeyboardEvent, column: SkyGridColumnModel) {\n const key = event.key.toLowerCase();\n if (key === 'enter' || key === ' ') {\n this.sortByColumn(column);\n }\n }\n\n public sortByColumn(column: SkyGridColumnModel) {\n if (!this.isDraggingResizeHandle && column.isSortable) {\n this.currentSortField\n .pipe(\n take(1),\n map((field) => {\n let selector = {\n fieldSelector: column.field,\n descending: true,\n };\n\n if (\n field &&\n field.fieldSelector === column.field &&\n field.descending\n ) {\n selector = {\n fieldSelector: column.field,\n descending: false,\n };\n }\n this.sortFieldChange.emit(selector);\n this.currentSortField.next(selector);\n })\n )\n .subscribe();\n }\n }\n\n public getSortDirection(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField\n ? field.descending\n ? 'desc'\n : 'asc'\n : undefined;\n })\n );\n }\n\n public getAriaSortDirection(column: SkyGridColumnModel): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === column.field\n ? field.descending\n ? 'descending'\n : 'ascending'\n : column.isSortable\n ? 'none'\n : undefined;\n })\n );\n }\n\n public getCaretVisibility(columnField: string): Observable<string> {\n return this.currentSortField.pipe(\n distinctUntilChanged(),\n map((field) => {\n return field.fieldSelector === columnField ? 'visible' : 'hidden';\n })\n );\n }\n\n public getHelpInlineClass(columnField: string): Observable<boolean> {\n return this.getCaretVisibility(columnField).pipe(\n map((visibility: string) => {\n return visibility === 'hidden';\n })\n );\n }\n\n public onMultiselectCheckboxChange() {\n this.emitSelectedRows(SkyGridSelectedRowsSource.CheckboxChange);\n }\n\n public updateColumnHeading(change: SkyGridColumnHeadingModelChange) {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.heading = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateInlineHelpPopover(\n change: SkyGridColumnInlineHelpPopoverModelChange\n ) {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.inlineHelpPopover = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public updateColumnDescription(change: SkyGridColumnDescriptionModelChange) {\n const foundColumnModel = this.columns.find((column: SkyGridColumnModel) => {\n return (\n (change.id !== undefined && change.id === column.id) ||\n (change.field !== undefined && change.field === column.field)\n );\n });\n\n /* istanbul ignore else */\n if (foundColumnModel) {\n foundColumnModel.description = change.value;\n this.changeDetector.markForCheck();\n }\n }\n\n public onResizeColumnStart(event: MouseEvent): void {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n\n this.isDraggingResizeHandle = true;\n this.xPosStart = event.pageX;\n this.showResizeBar = true;\n\n // Show visual indicator of where mouse is dragging (resizeBar).\n this.changeDetector.detectChanges();\n this.setResizeBarPosition(event.pageX);\n\n event.preventDefault();\n event.stopPropagation();\n\n const mouseMoveEvent = fromEvent(document, 'mousemove');\n const touchMoveEvent = fromEvent(document, 'touchmove');\n\n merge(mouseMoveEvent, touchMoveEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n })\n )\n .subscribe((moveEvent: any) => {\n this.onResizeHandleMove(moveEvent);\n });\n\n const mouseUpEvent = fromEvent(document, 'mouseup');\n const touchEndEvent = fromEvent(document, 'touchend');\n\n merge(mouseUpEvent, touchEndEvent)\n .pipe(\n takeWhile(() => {\n return this.isDraggingResizeHandle;\n })\n )\n .subscribe((endEvent: any) => {\n this.onResizeHandleRelease(endEvent);\n });\n }\n\n public onKeydownResizeCol(event: KeyboardEvent) {\n // If this table hasn't been resized, initialize all the resize widths.\n if (!this.isResized) {\n this.initColumnWidths();\n this.isResized = true;\n }\n\n this.initializeResizeColumn(event);\n }\n\n public onInputChangeResizeCol(event: Event) {\n const input = event.target as HTMLInputElement;\n const newValue = Number(input.value);\n const deltaX = newValue - this.startColumnWidth;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newValue, deltaX);\n const left = input.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleMove(event: MouseEvent) {\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n\n if (newColWidth <= this.minColWidth) {\n event.stopPropagation();\n return;\n }\n\n const max = this.getMaxRangeByIndex(this.activeResizeColumnIndex);\n if (this.fit === 'width' && newColWidth > max) {\n event.stopPropagation();\n return;\n }\n\n this.setResizeBarPosition(event.pageX);\n }\n\n public onResizeHandleBlur(event: Event) {\n this.showResizeBar = false;\n }\n\n public onResizeHandleFocus(event: KeyboardEvent) {\n this.showResizeBar = true;\n this.changeDetector.detectChanges();\n\n const target = event.target as HTMLElement;\n const left = target.getBoundingClientRect().left;\n this.setResizeBarPosition(left);\n }\n\n public onResizeHandleRelease(event: MouseEvent) {\n this.showResizeBar = false;\n const deltaX = event.pageX - this.xPosStart;\n const newColWidth = this.startColumnWidth + deltaX;\n this.resizeColumnByIndex(this.activeResizeColumnIndex, newColWidth, deltaX);\n this.isDraggingResizeHandle = false;\n this.activeResizeColumnIndex = undefined;\n\n event.stopPropagation();\n this.changeDetector.markForCheck();\n }\n\n public onRowClick(event: any, selectedItem: ListItemModel) {\n /* istanbul ignore else */\n if (this.enableMultiselect) {\n if (\n event.target === event.currentTarget ||\n !this.isInteractiveElement(event)\n ) {\n selectedItem.isSelected = !selectedItem.isSelected;\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.RowClick);\n }\n }\n }\n\n public isRowHighlighted(id: string): boolean {\n if (this.rowHighlightedId) {\n return id === this.rowHighlightedId;\n }\n return false;\n }\n\n public getRowHeight(index: number): string {\n return this.gridAdapter.getRowHeight(this.tableElementRef, index);\n }\n\n public cancelRowDelete(id: string) {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== id\n );\n this.rowDeleteCancel.emit({ id: id });\n\n this.destroyRowDelete(id);\n }\n\n public confirmRowDelete(id: string) {\n this.rowDeleteConfigs.find((config) => config.id === id).pending = true;\n this.rowDeleteConfirm.emit({ id: id });\n }\n\n public getRowDeleteItem(id: string): SkyGridRowDeleteConfig {\n return this.rowDeleteConfigs.find((rowDelete) => rowDelete.id === id);\n }\n\n // Prevent touch devices from inadvertently scrolling grid while dragging columns.\n public onTouchMove(event: any): void {\n event.preventDefault();\n }\n\n public onTopScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.tableContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.tableContainerElementRef.nativeElement.scrollLeft =\n this.topScrollContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n public onGridScroll(event: any): void {\n /* sanity check */\n /* istanbul ignore else */\n if (this.topScrollContainerElementRef) {\n if (this.scrollTriggered) {\n this.scrollTriggered = false;\n this.topScrollContainerElementRef.nativeElement.scrollLeft =\n this.tableContainerElementRef.nativeElement.scrollLeft;\n } else {\n this.scrollTriggered = true;\n }\n }\n }\n\n private checkUserColumnWidthsForScroll(): void {\n if (\n !this.showTopScroll &&\n this.columnElementRefs &&\n this.columnElementRefs.length > 0\n ) {\n let columnsWidthTotal = 0;\n const windowSize = this.skyWindow.nativeWindow.innerWidth;\n this.columnElementRefs.forEach((col) => {\n if (!this.showTopScroll) {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n const width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth\n );\n columnsWidthTotal = columnsWidthTotal + width;\n if (columnsWidthTotal > windowSize) {\n this.showTopScroll = true;\n setTimeout(() => {\n this.changeDetector.markForCheck();\n });\n }\n }\n });\n }\n }\n\n private multiselectSelectAll() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].isSelected = true;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.SelectAll);\n }\n\n private multiselectClearAll() {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].isSelected = false;\n }\n this.changeDetector.markForCheck();\n this.emitSelectedRows(SkyGridSelectedRowsSource.ClearAll);\n }\n\n private handleIncomingMessages(message: SkyGridMessage) {\n /* tslint:disable-next-line:switch-default */\n switch (message.type) {\n case SkyGridMessageType.SelectAll:\n this.multiselectSelectAll();\n break;\n\n case SkyGridMessageType.ClearAll:\n this.multiselectClearAll();\n break;\n case SkyGridMessageType.PromptDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.promptDeleteRow) {\n const existingConfig = this.rowDeleteConfigs.find(\n (config) => config.id === message.data.promptDeleteRow.id\n );\n if (existingConfig) {\n existingConfig.pending = false;\n } else {\n this.rowDeleteConfigs.push({\n id: message.data.promptDeleteRow.id,\n pending: false,\n });\n const overlay = this.overlayService.create({\n enableScroll: true,\n showBackdrop: false,\n closeOnNavigation: true,\n enableClose: false,\n enablePointerEvents: true,\n });\n\n overlay.attachTemplate(this.inlineDeleteTemplateRef, {\n $implicit: this.data.find(\n (item) => item.id === message.data.promptDeleteRow.id\n ),\n });\n\n /**\n * We are manually setting the z-index here because overlays will always be on top of\n * the omnibar. This manual setting is 1 less than the omnibar's z-index of 1000. We\n * discussed changing the overlay service to allow for this but decided against that\n * change at this time due to its niche nature.\n */\n overlay.componentRef.instance.zIndex = '999';\n\n setTimeout(() => {\n const inlineDeleteRef = this.inlineDeleteRefs\n .toArray()\n .find((elRef) => {\n return (\n elRef.nativeElement.id ===\n 'row-delete-ref-' + message.data.promptDeleteRow.id\n );\n });\n const affixer = this.affixService.createAffixer(inlineDeleteRef);\n\n const rowElement: HTMLElement =\n this.tableElementRef.nativeElement.querySelector(\n '[sky-cmp-id=\"' + message.data.promptDeleteRow.id + '\"]'\n );\n\n affixer.affixTo(rowElement, {\n autoFitContext: SkyAffixAutoFitContext.Viewport,\n isSticky: true,\n placement: 'above',\n verticalAlignment: 'top',\n horizontalAlignment: 'left',\n enableAutoFit: false,\n });\n\n this.rowDeleteContents[message.data.promptDeleteRow.id] = {\n affixer: affixer,\n overlay: overlay,\n };\n });\n }\n }\n break;\n case SkyGridMessageType.AbortDeleteRow:\n /* sanity check */\n /* istanbul ignore else */\n if (message.data && message.data.abortDeleteRow) {\n this.rowDeleteConfigs = this.rowDeleteConfigs.filter(\n (config) => config.id !== message.data.abortDeleteRow.id\n );\n\n this.destroyRowDelete(message.data.abortDeleteRow.id);\n }\n break;\n }\n this.changeDetector.markForCheck();\n }\n\n private onHeaderDrop(newColumnIds: Array<string>) {\n // update selected columnIds\n this.selectedColumnIdsSet = true;\n this.selectedColumnIds = newColumnIds;\n\n // mark for check because we are using ChangeDetectionStrategy.onPush\n this.changeDetector.markForCheck();\n }\n\n private setDisplayedColumns(respectHidden: boolean = false) {\n /* sanity check */\n /* istanbul ignore else */\n if (this.columns) {\n if (this.selectedColumnIds !== undefined) {\n // setup displayed columns\n this.displayedColumns = this.selectedColumnIds\n .filter((columnId) => {\n return this.columns.find((column) => column.id === columnId);\n })\n .map((columnId) => {\n return this.columns.filter((column) => column.id === columnId)[0];\n });\n } else if (respectHidden) {\n this.displayedColumns = this.columns.filter((column) => {\n return !column.hidden;\n });\n } else {\n this.displayedColumns = this.columns;\n }\n }\n }\n\n private transformData() {\n // Transform data into object with id and data properties\n if (\n this.data &&\n this.data.length > 0 &&\n this.data[0].id &&\n !this.data[0].data\n ) {\n if (this.multiselectRowId) {\n this.items = this.getGridDataWithSelectedRows();\n } else {\n this.items = this.data.map((item) => new ListItemModel(item.id, item));\n }\n } else {\n this.items = this.data;\n }\n }\n\n private getGridDataWithSelectedRows() {\n const selectedRows = this.getSelectedRows();\n return this.data.map((item) => {\n let checked;\n if (Object.prototype.hasOwnProperty.call(item, this.multiselectRowId)) {\n checked = selectedRows.indexOf(item[this.multiselectRowId]) > -1;\n } else {\n checked = selectedRows.indexOf(item.id) > -1;\n }\n return new ListItemModel(item.id, item, checked);\n });\n }\n\n private applySelectedRows(): void {\n if (this.items && this.items.length > 0 && this.selectedRowIds) {\n for (let i = 0; i < this.items.length; i++) {\n this.items[i].isSelected =\n this.selectedRowIds.indexOf(this.items[i].id) > -1;\n }\n this.changeDetector.markForCheck();\n }\n }\n\n private setSortHeaders() {\n this.currentSortField.next(\n this.sortField || { fieldSelector: '', descending: false }\n );\n }\n\n private getColumnsFromComponent() {\n this.columns = this.columnComponents.map((columnComponent) => {\n return new SkyGridColumnModel(columnComponent.template, columnComponent);\n });\n }\n\n private updateColumns() {\n this.getColumnsFromComponent();\n\n // This set timeout is necessary to ensure the columns have rendered in the grid\n setTimeout(() => {\n this.checkUserColumnWidthsForScroll();\n });\n }\n\n private resizeColumnByIndex(\n columnIndex: string,\n newColWidth: number,\n deltaX: number\n ) {\n const column = this.getColumnModelByIndex(columnIndex);\n\n // Prevent accidental shrinkage below minimum width.\n if (newColWidth <= this.minColWidth) {\n deltaX = deltaX + this.minColWidth - newColWidth;\n newColWidth = this.minColWidth;\n }\n\n // fit=width adds/removes width from the last column\n // fit=scroll adds/removes width from the table\n if (this.fit === 'width') {\n const lastColumn = this.getLastDisplayedColumn();\n\n // Prevent accidental growth that would bump last column off screen.\n const max = this.getMaxRangeByIndex(columnIndex);\n if (newColWidth > max) {\n newColWidth = max;\n deltaX = max - this.startColumnWidth;\n }\n column.width = newColWidth;\n lastColumn.width = lastColumn.width - deltaX;\n this.updateMaxRange();\n } else {\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth + deltaX}px`\n );\n column.width = newColWidth;\n }\n\n this.changeDetector.detectChanges();\n this.columnWidthChange.emit(this.getColumnWidthModelChange());\n }\n\n private initColumnWidths() {\n // Establish table width.\n this.showTopScroll = true;\n\n // Set column widths based on the width initially given by the browser.\n // computedWidth prevents accidental overflow for browsers with sub-pixel widths.\n this.columnElementRefs.forEach((col, index) => {\n const computedWidth = parseFloat(\n window.getComputedStyle(col.nativeElement).width\n );\n const offsetWidth = col.nativeElement.offsetWidth;\n /* istanbul ignore next */\n this.getColumnModelByIndex(index).width = Math.max(\n computedWidth || offsetWidth,\n this.minColWidth\n );\n });\n\n // 'scroll' tables should be allowed to expand outside of their constraints.\n if (this.fit === 'scroll') {\n this.gridAdapter.setStyle(this.tableElementRef, 'min-width', 'auto');\n }\n\n // Update max limits for input ranges.\n if (this.fit === 'width') {\n this.updateMaxRange();\n }\n\n this.changeDetector.detectChanges();\n }\n\n private transferColumnWidths(\n oldColumns: SkyGridColumnModel[],\n newColumns: SkyGridColumnModel[]\n ) {\n /* sanity check */\n /* istanbul ignore else */\n if (oldColumns && newColumns) {\n for (const oldColumn of oldColumns) {\n if (oldColumn.width) {\n const matchingColumn = newColumns.find(\n (newColumn) => oldColumn.id === newColumn.id\n );\n if (matchingColumn && !matchingColumn.width) {\n matchingColumn.width = oldColumn.width;\n }\n }\n }\n }\n this.changeDetector.markForCheck();\n }\n\n private getColumnWidthModelChange() {\n const columnWidthModelChange = new Array<SkyGridColumnWidthModelChange>();\n this.columns.forEach((column) => {\n columnWidthModelChange.push({\n id: column.id,\n field: column.field,\n width: column.width,\n });\n });\n return columnWidthModelChange;\n }\n\n private updateMaxRange() {\n const leftoverWidth =\n this.getLastDisplayedColumn().width - this.minColWidth;\n this.displayedColumns.forEach((column, index) => {\n const newMaxRange = column.width + leftoverWidth;\n const rangeInput = this.getRangeInputByIndex(index);\n rangeInput.nativeElement.max = newMaxRange;\n rangeInput.nativeElement.setAttribute('aria-valuemax', newMaxRange);\n });\n }\n\n private initializeResizeColumn(event: any) {\n const clickTarget = event.target as HTMLElement;\n this.activeResizeColumnIndex = clickTarget.getAttribute('sky-cmp-index');\n const column = this.getColumnModelByIndex(this.activeResizeColumnIndex);\n this.startColumnWidth = column.width;\n }\n\n private resetTableWidth() {\n this.skyWindow.nativeWindow.setTimeout(() => {\n this.gridAdapter.setStyle(this.tableElementRef, 'width', `auto`);\n this.changeDetector.detectChanges();\n this.gridAdapter.setStyle(\n this.tableElementRef,\n 'width',\n `${this.tableWidth}px`\n );\n this.changeDetector.detectChanges();\n });\n }\n\n private getRangeInputByIndex(index: string | number) {\n return this.columnRangeInputElementRefs.find(\n (input) =>\n input.nativeElement.getAttribute('sky-cmp-index') === index.toString()\n );\n }\n\n private getColumnModelByIndex(index: string | number) {\n return this.displayedColumns[Number(index)];\n }\n\n private getMaxRangeByIndex(index: string) {\n const columnElementRef = this.columnElementRefs.find(\n (th) => th.nativeElement.getAttribute('sky-cmp-index') === index\n );\n const rangeInput = columnElementRef.nativeElement.querySelector(\n '.sky-grid-column-input-aria-only'\n );\n return Number(rangeInput.max);\n }\n\n private getLastDisplayedColumn() {\n return this.getColumnModelByIndex(this.displayedColumns.length - 1);\n }\n\n private addDelimeter(text: string[], delimiter: string) {\n return text.filter((val) => val).join(delimiter);\n }\n\n private destroyRowDelete(id: string) {\n const rowDeleteContents = this.rowDeleteContents[id];\n /* istanbul ignore else */\n if (rowDeleteContents) {\n rowDeleteContents.affixer.destroy();\n this.overlayService.close(rowDeleteContents.overlay);\n delete this.rowDeleteContents[id];\n }\n }\n\n private emitSelectedRows(source: SkyGridSelectedRowsSource) {\n const selectedRows: SkyGridSelectedRowsModelChange = {\n selectedRowIds: this.getSelectedRows(),\n source: source,\n };\n this.multiselectSelectionChange.emit(selectedRows);\n }\n\n private getSelectedRows() {\n return this.items\n .filter((item) => {\n return item.isSelected;\n })\n .map((item) => {\n if (\n Object.prototype.hasOwnProperty.call(item.data, this.multiselectRowId)\n ) {\n return item.data[this.multiselectRowId];\n }\n return item.id;\n });\n }\n\n private isInteractiveElement(event: any): any {\n const interactiveElSelectors = `\n a,\n button,\n input,\n label,\n option,\n select,\n textarea,\n details,\n dialog,\n menu,\n menuitem,\n summary`;\n return event.target.closest(interactiveElSelectors);\n }\n\n private setResizeBarPosition(xPosition: number): void {\n const parentScroll = this.tableContainerElementRef.nativeElement.scrollLeft;\n const resizeBarX =\n xPosition -\n this.tableElementRef.nativeElement.getBoundingClientRect().left -\n parentScroll;\n this.gridAdapter.setStyle(this.resizeBar, 'left', resizeBarX + 'px');\n }\n\n private applyUserConfig(): Promise<void> {\n return new Promise<void>((resolve) => {\n this.uiConfigService\n .getConfig(this.settingsKey)\n .pipe(take(1))\n .subscribe(\n (config: SkyGridUIConfig) => {\n /* istanbul ignore else */\n if (config && config.selectedColumnIds) {\n // Remove any columnIds that don't exist in the current data set.\n this.selectedColumnIds = config.selectedColumnIds.filter((id) =>\n this.columns.find((column) => column.id === id)\n );\n this.changeDetector.markForCheck();\n }\n\n resolve();\n },\n () => {\n resolve();\n }\n );\n });\n }\n\n private setUserConfig(config: SkyGridUIConfig): void {\n if (!this.settingsKey) {\n return;\n }\n\n this.uiConfigService\n .setConfig(this.settingsKey, config)\n .pipe(takeUntil(this.ngUnsubscribe))\n .subscribe(\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n () => {},\n (err) => {\n console.warn('Could not save grid settings.');\n console.warn(err);\n }\n );\n }\n\n private initColumns(): void {\n /* istanbul ignore else */\n if (this.columnComponents.length !== 0 || this.columns !== undefined) {\n /* istanbul ignore else */\n /* sanity check */\n if (this.columnComponents.length > 0) {\n this.getColumnsFromComponent();\n }\n\n this.transformData();\n this.setDisplayedColumns(true);\n this.changeDetector.markForCheck();\n }\n\n // Watch for added/removed columns:\n this.subscriptions.push(\n this.columnComponents.changes.subscribe(() => this.updateColumns())\n );\n\n // Watch for column heading changes:\n this.columnComponents.forEach((comp: SkyGridColumnComponent) => {\n this.subscriptions.push(\n comp.headingModelChanges.subscribe(\n (change: SkyGridColumnHeadingModelChange) => {\n this.updateColumnHeading(change);\n }\n )\n );\n this.subscriptions.push(\n comp.descriptionModelChanges.subscribe(\n (change: SkyGridColumnDescriptionModelChange) => {\n this.updateColumnDescription(change);\n }\n )\n );\n this.subscriptions.push(\n comp.inlineHelpPopoverModelChanges.subscribe(\n (change: SkyGridColumnInlineHelpPopoverModelChange) => {\n this.updateInlineHelpPopover(change);\n }\n )\n );\n });\n }\n\n private arraysEqual(arrayA: any[], arrayB: any[]): boolean {\n return (\n arrayA.length === arrayB.length &&\n arrayA.every((value, index) => value === arrayB[index])\n );\n }\n}\n","<div class=\"sky-grid\">\n <div\n *ngIf=\"showTopScroll\"\n class=\"sky-grid-top-scroll-container\"\n (scroll)=\"onTopScroll($event)\"\n #topScrollContainer\n >\n <div\n class=\"sky-grid-top-scroll\"\n [style.width.px]=\"getTopScrollWidth()\"\n ></div>\n </div>\n <div\n class=\"sky-grid-table-container\"\n [style.height.px]=\"height\"\n [style.width.px]=\"width\"\n (scroll)=\"onGridScroll($event)\"\n #gridContainer\n >\n <table class=\"sky-grid-table\" [ngClass]=\"getTableClassNames()\" #gridTable>\n <thead>\n <tr dragula=\"sky-grid-heading\">\n <th\n *ngIf=\"enableMultiselect\"\n class=\"\n sky-grid-heading sky-grid-multiselect-cell sky-grid-header-locked\n \"\n scope=\"col\"\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <span class=\"screen-reader-only\">\n {{ 'skyux_grid_multiselect_select_row' | skyLibResources }}\n </span>\n </th>\n <th\n *ngFor=\"\n let column of displayedColumns;\n let last = last;\n let i = index\n \"\n class=\"sky-grid-heading sky-field-label\"\n scope=\"col\"\n [attr.sky-cmp-index]=\"i\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n [attr.aria-sort]=\"getAriaSortDirection(column) | async\"\n [id]=\"'sky-grid-' + gridId + '-column-' + i\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n [tabIndex]=\"column.isSortable ? 0 : -1\"\n (mouseup)=\"sortByColumn(column)\"\n (keydown)=\"onKeydown($event, column)\"\n (touchmove)=\"onTouchMove($event)\"\n #gridCol\n >\n <div\n class=\"overflow\"\n [ngClass]=\"getTableHeaderClassNames(column)\"\n [style.max-width.px]=\"column.width - 1\"\n [style.width.px]=\"column.width - 1\"\n >\n <span\n *ngIf=\"(getCaretVisibility(column.field) | async) === 'hidden'\"\n class=\"sky-grid-header-caret-hidden-spacing\"\n ></span>\n <!-- The no spacing here is intentional to avoid extra spaces due to these being inline elements -->\n <span class=\"sky-grid-header-text\">{{\n column.heading?.trim()\n }}</span>\n <sky-icon\n class=\"sky-grid-heading-sort\"\n [ngClass]=\"\n 'sky-grid-heading-sort-' +\n (getCaretVisibility(column.field) | async)\n \"\n [icon]=\"getCaretIconNames(column)\"\n >\n </sky-icon>\n <sky-help-inline\n *ngIf=\"column.inlineHelpPopover\"\n [ngClass]=\"{\n 'sky-grid-help-inline-sort-hidden':\n getHelpInlineClass(column.field) | async\n }\"\n [skyPopover]=\"column.inlineHelpPopover\"\n (keydown.enter)=\"$event.stopPropagation()\"\n (keydown.space)=\"$event.stopPropagation()\"\n (mousedown)=\"$event.stopPropagation()\"\n (mouseup)=\"$event.stopPropagation()\"\n >\n </sky-help-inline>\n </div>\n <span\n *ngIf=\"(fit === 'width' && !last) || fit === 'scroll'\"\n aria-hidden=\"true\"\n class=\"sky-grid-resize-handle\"\n tabindex=\"-1\"\n [attr.sky-cmp-index]=\"i\"\n (mousedown)=\"onResizeColumnStart($event)\"\n (touchstart)=\"onResizeColumnStart($event)\"\n >\n </span>\n <input\n aria-label=\"Width of column\"\n class=\"sky-grid-column-input-aria-only\"\n role=\"slider\"\n type=\"range\"\n [attr.aria-controls]=\"'sky-grid-' + gridId + '-column-' + i\"\n [attr.aria-valuemin]=\"minColWidth\"\n [attr.aria-valuemax]=\"maxColWidth\"\n [attr.aria-valuenow]=\"column.width\"\n [attr.sky-cmp-index]=\"i\"\n [min]=\"minColWidth\"\n [max]=\"maxColWidth\"\n [step]=\"columnResizeStep\"\n [(ngModel)]=\"column.width\"\n (blur)=\"onResizeHandleBlur($event)\"\n (focus)=\"onResizeHandleFocus($event)\"\n (keydown)=\"onKeydownResizeCol($event)\"\n (change)=\"onInputChangeResizeCol($event)\"\n #colSizeRange\n />\n </th>\n </tr>\n </thead>\n <tbody class=\"sky-grid-tbody\">\n <tr\n class=\"sky-grid-row\"\n *ngFor=\"let item of items; let i = index\"\n [attr.aria-current]=\"isRowHighlighted(item.id) ? true : null\"\n [attr.sky-cmp-id]=\"item.id\"\n [ngClass]=\"{\n 'sky-grid-multiselect-selected-row': item.isSelected,\n 'sky-grid-multiselect-row': enableMultiselect,\n 'sky-grid-row-highlight': isRowHighlighted(item.id)\n }\"\n (click)=\"onRowClick($event, item)\"\n >\n <td\n *ngIf=\"enableMultiselect\"\n class=\"sky-grid-multiselect-cell sky-grid-header-locked\"\n >\n <div\n [style.max-width.px]=\"minColWidth\"\n [style.width.px]=\"minColWidth\"\n >\n <sky-checkbox\n [label]=\"'skyux_grid_multiselect_select_row' | skyLibResources\"\n (change)=\"onMultiselectCheckboxChange()\"\n [(ngModel)]=\"item.isSelected\"\n >\n </sky-checkbox>\n </div>\n </td>\n <td\n *ngFor=\"\n let column of displayedColumns;\n let last = last;\n let i = index\n \"\n class=\"sky-grid-cell\"\n [ngClass]=\"'sky-grid-column-alignment-' + column.alignment\"\n [style.max-width.px]=\"column.width\"\n [style.width.px]=\"column.width\"\n >\n <sky-grid-cell\n [skyHighlight]=\"\n !column.excludeFromHighlighting ? highlightText : undefined\n \"\n [template]=\"column.template || defaultCellTemplate\"\n [fieldSelector]=\"column.field\"\n [item]=\"item\"\n [columnId]=\"column.id\"\n [attr.sky-cmp-id]=\"column.id || column.field\"\n >\n </sky-grid-cell>\n </td>\n </tr>\n </tbody>\n </table>\n <div\n *ngIf=\"showResizeBar\"\n aria-hidden=\"true\"\n id=\"sky-grid-resize-bar\"\n tabindex=\"-1\"\n #resizeBar\n ></div>\n </div>\n</div>\n\n<ng-template #defaultCellTemplate let-row=\"row\" let-value=\"value\">{{\n value\n}}</ng-template>\n\n<ng-template let-item #inlineDeleteTemplateRef>\n <div\n [id]=\"'row-delete-ref-' + item.id\"\n [ngStyle]=\"{\n height: getRowHeight(0),\n position: 'fixed',\n width: tableWidth + 'px'\n }\"\n #inlineDeleteRef\n >\n <sky-inline-delete\n [pending]=\"getRowDeleteItem(item.id).pending\"\n (cancelTriggered)=\"cancelRowDelete(item.id)\"\n (deleteTriggered)=\"confirmRowDelete(item.id)\"\n ></sky-inline-delete>\n </div>\n</ng-template>\n"]}
@@ -7,7 +7,7 @@ import { SkyHelpInlineModule, SkyIconModule, SkyTextHighlightModule, } from '@sk
7
7
  import { SkyInlineDeleteModule } from '@skyux/layout';
8
8
  import { SkyPopoverModule } from '@skyux/popovers';
9
9
  import { DragulaModule } from 'ng2-dragula';
10
- import { SkyuxGridsResourcesModule } from '../shared/skyux-grids-resources.module';
10
+ import { SkyGridsResourcesModule } from '../shared/sky-grids-resources.module';
11
11
  import { SkyGridCellComponent } from './grid-cell.component';
12
12
  import { SkyGridColumnComponent } from './grid-column.component';
13
13
  import { SkyGridComponent } from './grid.component';
@@ -22,7 +22,7 @@ SkyGridModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version:
22
22
  FormsModule,
23
23
  SkyAffixModule,
24
24
  SkyCheckboxModule,
25
- SkyuxGridsResourcesModule,
25
+ SkyGridsResourcesModule,
26
26
  SkyHelpInlineModule,
27
27
  SkyIconModule,
28
28
  SkyInlineDeleteModule,
@@ -35,7 +35,7 @@ SkyGridModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version:
35
35
  FormsModule,
36
36
  SkyAffixModule,
37
37
  SkyCheckboxModule,
38
- SkyuxGridsResourcesModule,
38
+ SkyGridsResourcesModule,
39
39
  SkyHelpInlineModule,
40
40
  SkyIconModule,
41
41
  SkyInlineDeleteModule,
@@ -57,7 +57,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImpo
57
57
  FormsModule,
58
58
  SkyAffixModule,
59
59
  SkyCheckboxModule,
60
- SkyuxGridsResourcesModule,
60
+ SkyGridsResourcesModule,
61
61
  SkyHelpInlineModule,
62
62
  SkyIconModule,
63
63
  SkyInlineDeleteModule,
@@ -1 +1 @@
1
- {"version":3,"file":"grid.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/grids/src/lib/modules/grid/grid.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;;AAwBpD,MAAM,OAAO,aAAa;;2GAAb,aAAa;4GAAb,aAAa,iBApBtB,gBAAgB;QAChB,sBAAsB;QACtB,oBAAoB,aAGpB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,cAAc;QACd,iBAAiB;QACjB,yBAAyB;QACzB,mBAAmB;QACnB,aAAa;QACb,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB,aAEd,gBAAgB,EAAE,sBAAsB;4GAEvC,aAAa,YAhBf;YACP,YAAY;YACZ,aAAa;YACb,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,yBAAyB;YACzB,mBAAmB;YACnB,aAAa;YACb,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAChB,sBAAsB;SACvB;4FAGU,aAAa;kBAtBzB,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;qBACrB;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,cAAc;wBACd,iBAAiB;wBACjB,yBAAyB;wBACzB,mBAAmB;wBACnB,aAAa;wBACb,qBAAqB;wBACrB,gBAAgB;wBAChB,gBAAgB;wBAChB,sBAAsB;qBACvB;oBACD,OAAO,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;iBACpD","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyOverlayModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport {\n SkyHelpInlineModule,\n SkyIconModule,\n SkyTextHighlightModule,\n} from '@skyux/indicators';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\nimport { SkyPopoverModule } from '@skyux/popovers';\n\nimport { DragulaModule } from 'ng2-dragula';\n\nimport { SkyuxGridsResourcesModule } from '../shared/skyux-grids-resources.module';\n\nimport { SkyGridCellComponent } from './grid-cell.component';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridComponent } from './grid.component';\n\n@NgModule({\n declarations: [\n SkyGridComponent,\n SkyGridColumnComponent,\n SkyGridCellComponent,\n ],\n imports: [\n CommonModule,\n DragulaModule,\n FormsModule,\n SkyAffixModule,\n SkyCheckboxModule,\n SkyuxGridsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyInlineDeleteModule,\n SkyOverlayModule,\n SkyPopoverModule,\n SkyTextHighlightModule,\n ],\n exports: [SkyGridComponent, SkyGridColumnComponent],\n})\nexport class SkyGridModule {}\n"]}
1
+ {"version":3,"file":"grid.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/grids/src/lib/modules/grid/grid.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,sBAAsB,GACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAEnD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAE/E,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;;AAwBpD,MAAM,OAAO,aAAa;;2GAAb,aAAa;4GAAb,aAAa,iBApBtB,gBAAgB;QAChB,sBAAsB;QACtB,oBAAoB,aAGpB,YAAY;QACZ,aAAa;QACb,WAAW;QACX,cAAc;QACd,iBAAiB;QACjB,uBAAuB;QACvB,mBAAmB;QACnB,aAAa;QACb,qBAAqB;QACrB,gBAAgB;QAChB,gBAAgB;QAChB,sBAAsB,aAEd,gBAAgB,EAAE,sBAAsB;4GAEvC,aAAa,YAhBf;YACP,YAAY;YACZ,aAAa;YACb,WAAW;YACX,cAAc;YACd,iBAAiB;YACjB,uBAAuB;YACvB,mBAAmB;YACnB,aAAa;YACb,qBAAqB;YACrB,gBAAgB;YAChB,gBAAgB;YAChB,sBAAsB;SACvB;4FAGU,aAAa;kBAtBzB,QAAQ;mBAAC;oBACR,YAAY,EAAE;wBACZ,gBAAgB;wBAChB,sBAAsB;wBACtB,oBAAoB;qBACrB;oBACD,OAAO,EAAE;wBACP,YAAY;wBACZ,aAAa;wBACb,WAAW;wBACX,cAAc;wBACd,iBAAiB;wBACjB,uBAAuB;wBACvB,mBAAmB;wBACnB,aAAa;wBACb,qBAAqB;wBACrB,gBAAgB;wBAChB,gBAAgB;wBAChB,sBAAsB;qBACvB;oBACD,OAAO,EAAE,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;iBACpD","sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { SkyAffixModule, SkyOverlayModule } from '@skyux/core';\nimport { SkyCheckboxModule } from '@skyux/forms';\nimport {\n SkyHelpInlineModule,\n SkyIconModule,\n SkyTextHighlightModule,\n} from '@skyux/indicators';\nimport { SkyInlineDeleteModule } from '@skyux/layout';\nimport { SkyPopoverModule } from '@skyux/popovers';\n\nimport { DragulaModule } from 'ng2-dragula';\n\nimport { SkyGridsResourcesModule } from '../shared/sky-grids-resources.module';\n\nimport { SkyGridCellComponent } from './grid-cell.component';\nimport { SkyGridColumnComponent } from './grid-column.component';\nimport { SkyGridComponent } from './grid.component';\n\n@NgModule({\n declarations: [\n SkyGridComponent,\n SkyGridColumnComponent,\n SkyGridCellComponent,\n ],\n imports: [\n CommonModule,\n DragulaModule,\n FormsModule,\n SkyAffixModule,\n SkyCheckboxModule,\n SkyGridsResourcesModule,\n SkyHelpInlineModule,\n SkyIconModule,\n SkyInlineDeleteModule,\n SkyOverlayModule,\n SkyPopoverModule,\n SkyTextHighlightModule,\n ],\n exports: [SkyGridComponent, SkyGridColumnComponent],\n})\nexport class SkyGridModule {}\n"]}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * NOTICE: DO NOT MODIFY THIS FILE!
3
3
  * The contents of this file were automatically generated by
4
- * the 'ng generate @skyux/i18n:lib-resources-module modules/shared/skyux-grids' schematic.
4
+ * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-grids' schematic.
5
5
  * To update this file, simply rerun the command.
6
6
  */
7
7
  import { NgModule } from '@angular/core';
@@ -10,7 +10,7 @@ import * as i0 from "@angular/core";
10
10
  const RESOURCES = {
11
11
  'EN-US': { skyux_grid_multiselect_select_row: { message: 'Select row' } },
12
12
  };
13
- export class SkyuxGridsResourcesProvider {
13
+ export class SkyGridsResourcesProvider {
14
14
  getString(localeInfo, name) {
15
15
  return getLibStringForLocale(RESOURCES, localeInfo.locale, name);
16
16
  }
@@ -18,28 +18,28 @@ export class SkyuxGridsResourcesProvider {
18
18
  /**
19
19
  * Import into any component library module that needs to use resource strings.
20
20
  */
21
- export class SkyuxGridsResourcesModule {
21
+ export class SkyGridsResourcesModule {
22
22
  }
23
- SkyuxGridsResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyuxGridsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
- SkyuxGridsResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyuxGridsResourcesModule, exports: [SkyI18nModule] });
25
- SkyuxGridsResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyuxGridsResourcesModule, providers: [
23
+ SkyGridsResourcesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyGridsResourcesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
24
+ SkyGridsResourcesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyGridsResourcesModule, exports: [SkyI18nModule] });
25
+ SkyGridsResourcesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyGridsResourcesModule, providers: [
26
26
  {
27
27
  provide: SKY_LIB_RESOURCES_PROVIDERS,
28
- useClass: SkyuxGridsResourcesProvider,
28
+ useClass: SkyGridsResourcesProvider,
29
29
  multi: true,
30
30
  },
31
31
  ], imports: [SkyI18nModule] });
32
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyuxGridsResourcesModule, decorators: [{
32
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.2.16", ngImport: i0, type: SkyGridsResourcesModule, decorators: [{
33
33
  type: NgModule,
34
34
  args: [{
35
35
  exports: [SkyI18nModule],
36
36
  providers: [
37
37
  {
38
38
  provide: SKY_LIB_RESOURCES_PROVIDERS,
39
- useClass: SkyuxGridsResourcesProvider,
39
+ useClass: SkyGridsResourcesProvider,
40
40
  multi: true,
41
41
  },
42
42
  ],
43
43
  }]
44
44
  }] });
45
- //# sourceMappingURL=skyux-grids-resources.module.js.map
45
+ //# sourceMappingURL=sky-grids-resources.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sky-grids-resources.module.js","sourceRoot":"","sources":["../../../../../../../../libs/components/grids/src/lib/modules/shared/sky-grids-resources.module.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EACL,2BAA2B,EAE3B,aAAa,EAGb,qBAAqB,GACtB,MAAM,aAAa,CAAC;;AAErB,MAAM,SAAS,GAA0C;IACvD,OAAO,EAAE,EAAE,iCAAiC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE;CAC1E,CAAC;AAEF,MAAM,OAAO,yBAAyB;IAC7B,SAAS,CACd,UAA4B,EAC5B,IAAY;QAEZ,OAAO,qBAAqB,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;CACF;AAED;;GAEG;AAWH,MAAM,OAAO,uBAAuB;;qHAAvB,uBAAuB;sHAAvB,uBAAuB,YATxB,aAAa;sHASZ,uBAAuB,aARvB;QACT;YACE,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,yBAAyB;YACnC,KAAK,EAAE,IAAI;SACZ;KACF,YAPS,aAAa;4FASZ,uBAAuB;kBAVnC,QAAQ;mBAAC;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,SAAS,EAAE;wBACT;4BACE,OAAO,EAAE,2BAA2B;4BACpC,QAAQ,EAAE,yBAAyB;4BACnC,KAAK,EAAE,IAAI;yBACZ;qBACF;iBACF","sourcesContent":["/**\n * NOTICE: DO NOT MODIFY THIS FILE!\n * The contents of this file were automatically generated by\n * the 'ng generate @skyux/i18n:lib-resources-module lib/modules/shared/sky-grids' schematic.\n * To update this file, simply rerun the command.\n */\nimport { NgModule } from '@angular/core';\nimport {\n SKY_LIB_RESOURCES_PROVIDERS,\n SkyAppLocaleInfo,\n SkyI18nModule,\n SkyLibResources,\n SkyLibResourcesProvider,\n getLibStringForLocale,\n} from '@skyux/i18n';\n\nconst RESOURCES: { [locale: string]: SkyLibResources } = {\n 'EN-US': { skyux_grid_multiselect_select_row: { message: 'Select row' } },\n};\n\nexport class SkyGridsResourcesProvider implements SkyLibResourcesProvider {\n public getString(\n localeInfo: SkyAppLocaleInfo,\n name: string\n ): string | undefined {\n return getLibStringForLocale(RESOURCES, localeInfo.locale, name);\n }\n}\n\n/**\n * Import into any component library module that needs to use resource strings.\n */\n@NgModule({\n exports: [SkyI18nModule],\n providers: [\n {\n provide: SKY_LIB_RESOURCES_PROVIDERS,\n useClass: SkyGridsResourcesProvider,\n multi: true,\n },\n ],\n})\nexport class SkyGridsResourcesModule {}\n"]}