import { CommonKeyword } from "./commonKeyword"; import { logger } from '../Logger/logger'; import { TextField } from './textfield'; import { Wait } from "./dewWait"; /** * Pick values in */ export class DewAutocomplete { /** * To select first element in the autocomplete * * ```js * * DewAutocomplete.selectFirst(".//div[@dew-autocomplete-body]") * ``` * * @param {String} locator located by CSS|XPath|strict locator. * */ static async selectFirst(locator: string) { try { await activate(locator); await CommonKeyword.clickElement(`.//div[@dew-autocomplete-body='']//div[contains(@class,'item')][1]`); await deactivate(); } catch (error) { logger.log(`Issue while performing operation in DDCC: Error while selecting first value from auto complete`); throw error; } } /** * To select multiple values in a autocomplete * * ```js * * DewAutocomplete.selectMultipleByText(".//div[@dew-autocomplete-body]","Sales","Procurement") * ``` * * @param {String} locator located by CSS|XPath|strict locator. * @param {Array} values 1 or more values to be selected */ static async selectMultipleByText(locator: string, ...values: any) { try { // await activate(locator); for (const value of values) { await TextField.enterTextUsingLocator(locator, value); await CommonKeyword.clickElement(`.//div[@dew-autocomplete-body='']//*[text()[normalize-space()='${value}']]`); } await deactivate(); } catch (error) { logger.log(`Issue while performing operation in DDCC: Error while selecting text from auto complete`); throw error; } } /** * To select element by text provided * * ```js * * DewAutocomplete.selectByText(".//div[@dew-autocomplete-body]","Sales") * ``` * * @param {String} locator located by CSS|XPath|strict locator. * @param {string} value to be selected */ static async selectByText(locator: string, value: string) { await this.selectMultipleByText(locator, value); } } /** * This function is used to click in autocomplete field to display suggested values * @param {*} field */ async function activate(field: string) { await TextField.enterTextUsingLocator(field, ` `); await Wait.waitUntilVisibilityOfElement(`[dew-autocomplete-body]`); } /** * This function is used to disappear the suggested values of autocomplete */ async function deactivate() { await CommonKeyword.click(`//body`); }