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)">
-