import { TableOutlined } from '@ant-design/icons'; import { DataBlockInitializer, SchemaComponent, SchemaComponentOptions, useCollectionManager } from '@nocobase/client'; import { SchemaOptionsContext } from '@formily/react'; import { FormDialog, FormLayout } from '@formily/antd'; import React, { useContext } from 'react'; import { useMapTranslation } from '../locale'; import { createMapBlockSchema } from './utils'; export const MapBlockInitializer = (props) => { const { insert } = props; const options = useContext(SchemaOptionsContext); const { getCollectionFieldsOptions } = useCollectionManager(); const { t } = useMapTranslation(); return ( } onCreateBlockSchema={async ({ item }) => { const mapFieldOptions = getCollectionFieldsOptions(item.name, ['point', 'lineString', 'polygon']); const markerFieldOptions = getCollectionFieldsOptions(item.name, 'string'); const values = await FormDialog(t('Create map block'), () => { return ( { const value = field.form.values.field console.log("🚀 ~ file: MapBlockInitializer.tsx:45 ~ values ~ value:", value) console.log("🚀 ~ file: MapBlockInitializer.tsx:50 ~ values ~ mapFieldOptions:", mapFieldOptions) if (!value) { return } const item = mapFieldOptions.find((item) => item.value === value).type field.hidden = item !== 'point' }, }, }, }} /> ); }).open({ initialValues: {}, }); insert( createMapBlockSchema({ collection: item.name, fieldNames: { ...values, }, }), ); }} title={t('Map block')} /> ); };