UNPKG

@atlaskit/editor-plugin-extension

Version:

editor-plugin-extension plugin for @atlaskit/editor-core

50 lines (48 loc) 1.37 kB
/** * @jsxRuntime classic * @jsx jsx */ import React, { useState } from 'react'; // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 import { css, jsx } from '@emotion/react'; import { injectIntl } from 'react-intl'; import Tabs, { Tab, TabList, TabPanel } from '@atlaskit/tabs'; const panelWrapperStyles = css({ flexGrow: 1, maxWidth: '100%' }); const TabGroupImpl = props => { const { field, renderPanel } = props; const { fields } = field; const [activeTab, setActiveTab] = useState(() => { const activeTabName = field.defaultTab || fields[0].name; const index = fields.findIndex(f => f.name === activeTabName); return Math.max(index, 0); }); const onChange = React.useCallback(index => { setActiveTab(index); }, [setActiveTab]); return jsx(Tabs, { id: `configPanelTabs-${field.name}`, onChange: onChange, selected: activeTab }, jsx(TabList, null, fields.map(({ name, label }) => jsx(Tab, { key: `tab-${name}` }, label))), fields.map(field => jsx(TabPanel, { key: `panel-${field.name}` }, jsx("div", { css: panelWrapperStyles }, renderPanel(field))))); }; TabGroupImpl.displayName = 'TabGroup'; // eslint-disable-next-line @typescript-eslint/ban-types const TabGroup = injectIntl(TabGroupImpl); export default TabGroup;