/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ import { Tabs } from './Tabs'; /** * EditableTabs component for Ant Design editable-card tabs. * * Mirrors the Superset EditableTabs component (type="editable-card") * which adds add/remove tab functionality to the base Tabs component. * * The add button (.ant-tabs-nav-add) is only rendered when * type="editable-card". If the host component switches to type="card" * (e.g., SQL Lab empty state), use the host page object for that case. */ export class EditableTabs extends Tabs { /** * Clicks the add-tab button rendered by antd in editable-card mode. */ async addTab(): Promise { await this.element.getByRole('button', { name: 'Add tab' }).click(); } /** * Clicks the remove button on the last tab. */ async removeLastTab(): Promise { await this.nav.locator('.ant-tabs-tab-remove').last().click(); } }