import { browser , by , protractor } from 'protractor' ; import { Component } from '../component' ; import { waitForPresence , waitElement } from '../../utilities/utils' ; import { BrowserActions } from '@alfresco/adf-testing' ; export class SearchInput extends Component { searchButton = this . component . element ( by . css ( '.app-search-button' ) ) ; searchContainer = browser . element ( by . css ( '.app-search-container' ) ) ; searchControl = browser . element ( by . css ( '.app-search-control' ) ) ; searchInput = browser . element ( by . css ( `input[id='app-control-input']` ) ) ; searchOptionsArea = browser . element ( by . id ( 'search-options' ) ) ; searchFilesOption = this . searchOptionsArea . element ( by . cssContainingText ( '.mat-checkbox' , 'Files' ) ) ; searchFoldersOption = this . searchOptionsArea . element ( by . cssContainingText ( '.mat-checkbox' , 'Folders' ) ) ; searchLibrariesOption = this . searchOptionsArea . element ( by . cssContainingText ( '.mat-checkbox' , 'Libraries' ) ) ; clearSearchButton = this . searchContainer . $ ( '.app-clear-icon' ) ; constructor ( ancestor ? ) { super ( 'aca-search-input' , ancestor ) ; } async waitForSearchControl ( ) { await waitForPresence ( this . searchControl ) ; } async isSearchContainerDisplayed ( ) { const isContainerDisplayed = await this . searchContainer . isDisplayed ( ) ; const isSearchButtonDisplayed = await this . searchButton . isDisplayed ( ) ; return isContainerDisplayed && isSearchButtonDisplayed ; } async clickSearchButton ( ) { await BrowserActions . click ( this . searchButton ) ; await this . waitForSearchControl ( ) ; } async isOptionsAreaDisplayed ( ) { await waitElement ( '.app-search-control' ) ; return browser . isElementPresent ( this . searchOptionsArea ) ; } async clickFilesOption ( ) { await BrowserActions . click ( this . searchFilesOption ) ; } async clickFoldersOption ( ) { await BrowserActions . click ( this . searchFoldersOption ) ; } async clickLibrariesOption ( ) { await BrowserActions . click ( this . searchLibrariesOption ) ; } async isFilesOptionEnabled ( ) { const optClass = await this . searchFilesOption . getAttribute ( 'class' ) ; return ! optClass . includes ( 'mat-checkbox-disabled' ) ; } async isFoldersOptionEnabled ( ) { const optClass = await this . searchFoldersOption . getAttribute ( 'class' ) ; return ! optClass . includes ( 'mat-checkbox-disabled' ) ; } async isLibrariesOptionEnabled ( ) { const optClass = await this . searchLibrariesOption . getAttribute ( 'class' ) ; return ! optClass . includes ( 'mat-checkbox-disabled' ) ; } async isFilesOptionChecked ( ) { const optClass = await this . searchFilesOption . getAttribute ( 'class' ) ; return optClass . includes ( 'mat-checkbox-checked' ) ; } async isFoldersOptionChecked ( ) { const optClass = await this . searchFoldersOption . getAttribute ( 'class' ) ; return optClass . includes ( 'mat-checkbox-checked' ) ; } async isLibrariesOptionChecked ( ) { const optClass = await this . searchLibrariesOption . getAttribute ( 'class' ) ; return optClass . includes ( 'mat-checkbox-checked' ) ; } async clearOptions ( ) { if ( await this . isFilesOptionChecked ( ) ) { await this . clickFilesOption ( ) ; } if ( await this . isFoldersOptionChecked ( ) ) { await this . clickFoldersOption ( ) ; } if ( await this . isLibrariesOptionChecked ( ) ) { await this . clickLibrariesOption ( ) ; } } async isClearSearchButtonPresent ( ) { return browser . isElementPresent ( this . clearSearchButton ) ; } async clickClearSearchButton ( ) { if ( await this . isClearSearchButtonPresent ( ) ) { await BrowserActions . click ( this . clearSearchButton ) ; } } async checkOnlyFiles ( ) { await this . clearOptions ( ) ; await this . clickFilesOption ( ) ; } async checkOnlyFolders ( ) { await this . clearOptions ( ) ; await this . clickFoldersOption ( ) ; } async checkFilesAndFolders ( ) { await this . clearOptions ( ) ; await this . clickFilesOption ( ) ; await this . clickFoldersOption ( ) ; } async checkLibraries ( ) { await this . clearOptions ( ) ; await this . clickLibrariesOption ( ) ; } async searchFor ( text ) { await BrowserActions . clearWithBackSpace ( this . searchInput ) ; await this . searchInput . sendKeys ( text ) ; await this . searchInput . sendKeys ( protractor . Key . ENTER ) ; } }