import { isNil, isNumber } from '../utils'; import { Dialog } from './dialog'; import Chainable = Cypress.Chainable; export * from './dialog'; export class Dialogs { /** * Dismiss the top dialog */ dismiss(target?: string): Chainable { return this.getDialog().dismiss(target); } /** * Close the top dialog */ close(target?: string): Chainable { return this.getDialog().close(target); } /** * Get the dialog by the given index or selector. If not provided, will returned the top dialog. */ getDialog(id?: number | string): Dialog { const prefixSelector = 'dato-dialog'; let selector = `${prefixSelector}:last-of-type`; if (!isNil(id)) { selector = isNumber(id) ? `${prefixSelector}:nth-child(${id})` : `${prefixSelector} ${id}`; } return new Dialog(`${selector}`); } }