import { withoutDefaults } from '@wix/bex-core'; import { useWixPatternsContainer } from '@wix/bex-core/react'; import { useRafRender } from '../../hooks/useRafRender'; import React, { lazy, Suspense } from 'react'; import { Box, Divider, SidePanel } from '@wix/design-system'; import { ScrollableContent } from '../ScrollableContent'; import { observer } from 'mobx-react-lite'; import { CustomFieldsList } from './CustomFieldsList'; import { AddCustomFieldCTAButton } from './AddCustomFieldCTAButton'; import { cairoFiltersPanelUsed } from '@wix/bex-core/bi'; import { CustomFieldsPanelState } from '../../state/CustomFields/CustomFieldsPanelState'; import { PatternsSidePanel } from '../SidePanel/PatternsSidePanel'; // Lazy: the archive CTA loads only for sources that archive, so sources that // don't (e.g. a schema) never pull it into their bundle. const ArchivedItemsCTAButton = lazy(() => import('../ArchivedItemsPanel/ArchivedItemsCTAButton').then((m) => ({ default: m.ArchivedItemsCTAButton, })), ); export interface CustomFieldsPanelProps { state: CustomFieldsPanelState; } export function _CustomFieldsPanel({ state }: CustomFieldsPanelProps) { const container = useWixPatternsContainer(); const { translate: t } = container; const origin = 'Custom fields panel'; const entered = useRafRender(); if (!entered) { return null; } return ( { state.reportBi( withoutDefaults(cairoFiltersPanelUsed)({ isOpened: false, feature: 'Manage custom fields', origin: 'X Button', }), ); state.closeSidePanel?.(); }} > {state.archive?.shouldDisplay && ( state.closeSidePanel?.()} dataHook="custom-fields" /> )} { state.openCustomFieldModal({ origin }); }} /> ); } export const CustomFieldsPanel = observer(_CustomFieldsPanel);