diff --git a/demo-shell/src/app/components/datatable/copy-content/datatable.component.html b/demo-shell/src/app/components/datatable/copy-content/datatable.component.html index e4005850ee..832b6a8581 100644 --- a/demo-shell/src/app/components/datatable/copy-content/datatable.component.html +++ b/demo-shell/src/app/components/datatable/copy-content/datatable.component.html @@ -18,6 +18,7 @@ + diff --git a/demo-shell/src/app/components/datatable/copy-content/datatable.component.ts b/demo-shell/src/app/components/datatable/copy-content/datatable.component.ts index 585ed77935..64195a2dfc 100644 --- a/demo-shell/src/app/components/datatable/copy-content/datatable.component.ts +++ b/demo-shell/src/app/components/datatable/copy-content/datatable.component.ts @@ -60,17 +60,26 @@ export class DataTableComponent { { id: 1, name: 'First', - createdBy: 'Created one' + createdBy: 'Created one', + json: null }, { id: 2, name: 'Second', - createdBy: 'Created two' + createdBy: 'Created two', + json: { + id: 4 + } }, { id: 3, name: 'Third', - createdBy: 'Created three' + createdBy: 'Created three', + json: { + id: 4, + name: 'Image 8', + createdOn: new Date(2016, 6, 2, 15, 8, 4) + } } ] ); @@ -119,7 +128,7 @@ export class DataTableComponent { { type: 'text', key: 'id', title: 'Id', sortable: true , cssClass: '', copyContent: true }, { type: 'text', key: 'name', title: 'Name', cssClass: 'adf-ellipsis-cell', sortable: true, copyContent: false }, { type: 'text', key: 'createdBy', title: 'Created By', sortable: true, cssClass: ''}, - { type: 'json', key: 'json', title: 'Json', cssClass: 'adf-expand-cell-2'} + { type: 'json', key: 'json', title: 'Json', cssClass: 'adf-expand-cell-2', copyContent: true} ] ); } diff --git a/e2e/core/datatable/data-table-component.e2e.ts b/e2e/core/datatable/data-table-component.e2e.ts index cf14f36f8a..639af112f2 100644 --- a/e2e/core/datatable/data-table-component.e2e.ts +++ b/e2e/core/datatable/data-table-component.e2e.ts @@ -164,10 +164,30 @@ describe('Datatable component', () => { expect(copyContentDataTablePage.getClipboardInputText()).toEqual('1'); copyContentDataTablePage.clickOnIdColumn('2'); notificationPage.checkNotifyContains('Text copied to clipboard'); + copyContentDataTablePage.mouseOverIdColumn('3'); copyContentDataTablePage.clickOnIdColumn('3'); notificationPage.checkNotifyContains('Text copied to clipboard'); copyContentDataTablePage.pasteClipboard(); expect(copyContentDataTablePage.getClipboardInputText()).toEqual('3'); }); + + it('[C307100] A column value of type text and with copyContent set to true is copied when clicking on it', () => { + dataTablePage.mouseOverIdColumn('1'); + expect(dataTablePage.getCopyContentTooltip()).toEqual('Click to copy'); + dataTablePage.clickOnIdColumn('1'); + notificationPage.checkNotifyContains('Text copied to clipboard'); + dataTablePage.pasteClipboard(); + expect(dataTablePage.getClipboardInputText()).toEqual('1'); + }); + + it('[C307101] A column value of type json and with copyContent set to true is copied when clicking on it', () => { + const jsonValue = `{ "id": 4 }`; + copyContentDataTablePage.mouseOverJsonColumn(2); + expect(copyContentDataTablePage.getCopyContentTooltip()).toEqual('Click to copy'); + copyContentDataTablePage.clickOnJsonColumn(2); + notificationPage.checkNotifyContains('Text copied to clipboard'); + copyContentDataTablePage.pasteClipboard(); + expect(copyContentDataTablePage.getClipboardInputText()).toContain(jsonValue); + }); }); }); diff --git a/e2e/pages/adf/contentServicesPage.ts b/e2e/pages/adf/contentServicesPage.ts index a8310c56cf..4b263f7524 100644 --- a/e2e/pages/adf/contentServicesPage.ts +++ b/e2e/pages/adf/contentServicesPage.ts @@ -651,7 +651,7 @@ export class ContentServicesPage { } checkRowIsDisplayed(rowName) { - const row = this.contentList.dataTablePage().getRowElement('Display name', rowName); + const row = this.contentList.dataTablePage().getCellElementByValue('Display name', rowName); BrowserVisibility.waitUntilElementIsVisible(row); } diff --git a/e2e/pages/adf/demo-shell/customSourcesPage.ts b/e2e/pages/adf/demo-shell/customSourcesPage.ts index 95b4db8895..a989e867bf 100644 --- a/e2e/pages/adf/demo-shell/customSourcesPage.ts +++ b/e2e/pages/adf/demo-shell/customSourcesPage.ts @@ -71,7 +71,7 @@ export class CustomSources { } getStatusCell(rowName) { - const cell = this.dataTable.getCellByRowAndColumn('Name', rowName, column.status); + const cell = this.dataTable.getCellByRowContentAndColumn('Name', rowName, column.status); BrowserVisibility.waitUntilElementIsVisible(cell); return cell.getText(); } diff --git a/e2e/pages/adf/demo-shell/dataTablePage.ts b/e2e/pages/adf/demo-shell/dataTablePage.ts index bfe30ac248..2f9877b713 100644 --- a/e2e/pages/adf/demo-shell/dataTablePage.ts +++ b/e2e/pages/adf/demo-shell/dataTablePage.ts @@ -24,7 +24,8 @@ export class DataTablePage { columns = { id: 'Id', name: 'Name', - createdBy: 'Created By' + createdBy: 'Created By', + json: 'Json' }; data = { @@ -66,7 +67,7 @@ export class DataTablePage { } replaceRows(id) { - const rowID = this.dataTable.getRowElement(this.columns.id, id); + const rowID = this.dataTable.getCellElementByValue(this.columns.id, id); BrowserVisibility.waitUntilElementIsVisible(rowID); this.replaceRowsElement.click(); BrowserVisibility.waitUntilElementIsNotVisible(rowID); @@ -89,7 +90,7 @@ export class DataTablePage { } checkRowIsNotSelected(rowNumber) { - const isRowSelected = this.dataTable.getRowElement(this.columns.id, rowNumber) + const isRowSelected = this.dataTable.getCellElementByValue(this.columns.id, rowNumber) .element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row custom-row-style ng-star-inserted is-selected')]`)); BrowserVisibility.waitUntilElementIsNotOnPage(isRowSelected); } @@ -116,13 +117,14 @@ export class DataTablePage { } clickCheckbox(rowNumber) { - const checkbox = this.dataTable.getRowElement(this.columns.id, rowNumber).element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); + const checkbox = this.dataTable.getCellElementByValue(this.columns.id, rowNumber) + .element(by.xpath(`ancestor::div[contains(@class, 'adf-datatable-row')]//mat-checkbox/label`)); BrowserVisibility.waitUntilElementIsVisible(checkbox); checkbox.click(); } selectRow(rowNumber) { - const locator = this.dataTable.getRowElement(this.columns.id, rowNumber); + const locator = this.dataTable.getCellElementByValue(this.columns.id, rowNumber); BrowserVisibility.waitUntilElementIsVisible(locator); BrowserVisibility.waitUntilElementIsClickable(locator); locator.click(); @@ -130,7 +132,7 @@ export class DataTablePage { } selectRowWithKeyboard(rowNumber) { - const row = this.dataTable.getRowElement(this.columns.id, rowNumber); + const row = this.dataTable.getCellElementByValue(this.columns.id, rowNumber); browser.actions().sendKeys(protractor.Key.COMMAND).click(row).perform(); } @@ -142,7 +144,7 @@ export class DataTablePage { } getRowCheckbox(rowNumber) { - return this.dataTable.getRowElement(this.columns.id, rowNumber).element(by.xpath(`ancestor::div/div/mat-checkbox[contains(@class, 'mat-checkbox-checked')]`)); + return this.dataTable.getCellElementByValue(this.columns.id, rowNumber).element(by.xpath(`ancestor::div/div/mat-checkbox[contains(@class, 'mat-checkbox-checked')]`)); } getCopyContentTooltip() { @@ -161,10 +163,18 @@ export class DataTablePage { return this.dataTable.mouseOverColumn(this.columns.id, name); } + mouseOverJsonColumn(rowNumber) { + return this.dataTable.mouseOverElement(this.dataTable.getCellByRowNumberAndColumnName(rowNumber - 1, this.columns.json)); + } + clickOnIdColumn(name) { return this.dataTable.clickColumn(this.columns.id, name); } + clickOnJsonColumn(rowNumber) { + return this.dataTable.clickElement(this.dataTable.getCellByRowNumberAndColumnName(rowNumber - 1, this.columns.json)); + } + clickOnNameColumn(name) { return this.dataTable.clickColumn(this.columns.name, name); } diff --git a/e2e/pages/adf/permissionsPage.ts b/e2e/pages/adf/permissionsPage.ts index f83c766852..284eb8271c 100644 --- a/e2e/pages/adf/permissionsPage.ts +++ b/e2e/pages/adf/permissionsPage.ts @@ -119,7 +119,7 @@ export class PermissionsPage { } getRoleCellValue(rowName) { - const locator = new DataTableComponentPage().getCellByRowAndColumn('Authority ID', rowName, column.role); + const locator = new DataTableComponentPage().getCellByRowContentAndColumn('Authority ID', rowName, column.role); BrowserVisibility.waitUntilElementIsVisible(locator); return locator.getText(); } diff --git a/e2e/pages/adf/searchResultsPage.ts b/e2e/pages/adf/searchResultsPage.ts index 846876a027..e39e792011 100644 --- a/e2e/pages/adf/searchResultsPage.ts +++ b/e2e/pages/adf/searchResultsPage.ts @@ -29,7 +29,7 @@ export class SearchResultsPage { contentServices = new ContentServicesPage(); getNodeHighlight(content) { - return this.dataTable.getCellByRowAndColumn('Display name', content, 'Search'); + return this.dataTable.getCellByRowContentAndColumn('Display name', content, 'Search'); } tableIsLoaded() { diff --git a/lib/core/datatable/components/datatable/datatable.component.html b/lib/core/datatable/components/datatable/datatable.component.html index f1d25f0b22..71b6ccd003 100644 --- a/lib/core/datatable/components/datatable/datatable.component.html +++ b/lib/core/datatable/components/datatable/datatable.component.html @@ -159,8 +159,7 @@ [tooltip]="getCellTooltip(row, col)"> -
+