From a8357f45b8b0c1f2b91a856918f6bdecdc65aa73 Mon Sep 17 00:00:00 2001 From: Wells Date: Thu, 7 Dec 2023 10:31:19 +0800 Subject: [PATCH] fix: add showSearch and showGroups to SettingForm & update internal icons (#73) * fix: add internal setters & fix ui * feat: add showSearch and showGroups to SettingForm * fix: update icons * fix: use antd form --------- Co-authored-by: wwsun --- apps/playground/src/pages/index.tsx | 1 + apps/storybook/src/setting-form.stories.tsx | 145 ++---------------- .../src/ui/toggle-button.stories.tsx | 14 +- packages/designer/src/setters/index.ts | 4 +- packages/designer/src/setting-panel.tsx | 4 +- .../datasource-panel/interface-config.tsx | 78 ++-------- .../designer/src/sidebar/variable-panel.tsx | 17 +- packages/designer/src/toolbar/history.tsx | 6 +- .../designer/src/toolbar/route-switch.tsx | 24 ++- .../designer/src/toolbar/toggle-panel.tsx | 18 +-- packages/setting-form/src/form-item.tsx | 31 ++-- packages/setting-form/src/form-ui.tsx | 3 + packages/setting-form/src/form.tsx | 49 ++++-- packages/setting-form/src/index.ts | 7 +- packages/setting-form/src/setter.tsx | 11 +- packages/ui/package.json | 1 - packages/ui/src/icons/code-outlined.tsx | 22 +++ packages/ui/src/icons/create-icon.tsx | 13 ++ packages/ui/src/icons/index.ts | 8 + .../icons/open-panel-filled-left-outlined.tsx | 20 +++ .../open-panel-filled-right-outlined.tsx | 20 +++ .../ui/src/icons/open-panel-left-outlined.tsx | 17 ++ .../src/icons/open-panel-right-outlined.tsx | 20 +++ packages/ui/src/icons/redo-outlined.tsx | 16 ++ packages/ui/src/icons/undo-outlined.tsx | 16 ++ packages/ui/src/index.ts | 2 +- yarn.lock | 8 - 27 files changed, 293 insertions(+), 282 deletions(-) create mode 100644 packages/ui/src/icons/code-outlined.tsx create mode 100644 packages/ui/src/icons/create-icon.tsx create mode 100644 packages/ui/src/icons/index.ts create mode 100644 packages/ui/src/icons/open-panel-filled-left-outlined.tsx create mode 100644 packages/ui/src/icons/open-panel-filled-right-outlined.tsx create mode 100644 packages/ui/src/icons/open-panel-left-outlined.tsx create mode 100644 packages/ui/src/icons/open-panel-right-outlined.tsx create mode 100644 packages/ui/src/icons/redo-outlined.tsx create mode 100644 packages/ui/src/icons/undo-outlined.tsx diff --git a/apps/playground/src/pages/index.tsx b/apps/playground/src/pages/index.tsx index 4d18e49..0b51865 100644 --- a/apps/playground/src/pages/index.tsx +++ b/apps/playground/src/pages/index.tsx @@ -68,6 +68,7 @@ export default function App() { + diff --git a/apps/storybook/src/setting-form.stories.tsx b/apps/storybook/src/setting-form.stories.tsx index 1d60441..cbebfa4 100644 --- a/apps/storybook/src/setting-form.stories.tsx +++ b/apps/storybook/src/setting-form.stories.tsx @@ -1,7 +1,6 @@ -import React, { useState } from 'react'; -import { EditableVariableTree, FormModel, SettingForm } from '@music163/tango-setting-form'; -import { ComponentPrototypeType, getValue } from '@music163/tango-helpers'; -import { createServices } from '@music163/request'; +import React from 'react'; +import { FormModel, SettingForm } from '@music163/tango-setting-form'; +import { ComponentPrototypeType } from '@music163/tango-helpers'; import { Box } from 'coral-system'; import { JsonView } from '@music163/tango-ui'; import { toJS } from 'mobx'; @@ -9,51 +8,9 @@ import { observer } from 'mobx-react-lite'; import { Card } from 'antd'; export default { - title: 'SettingForm/ Setters', + title: 'SettingForm', }; -const modelVariables = [ - { - title: 'stores', - key: 'stores', - selectable: false, - children: [ - { - title: 'app', - key: 'stores.app', - selectable: false, - children: [ - { title: 'app.title', key: 'stores.app.title', raw: '"hello"' }, - { title: 'app.age', key: 'stores.app.age', raw: '20' }, - { title: 'app.detail', key: 'stores.app.detail', raw: '{ foo: "foo" }' }, - { title: 'app.list', key: 'stores.app.list', type: 'function', raw: '() => {}' }, - ], - }, - { - title: 'user', - key: 'stores.user', - selectable: false, - children: [ - { title: 'name', key: 'stores.user.name' }, - { title: 'age', key: 'stores.user.age' }, - ], - }, - ], - }, - { - title: 'services', - key: 'services', - selectable: false, - children: [ - { - title: 'listUsers', - key: 'services.listUsers', - type: 'function', - }, - ], - }, -]; - const prototype: ComponentPrototypeType = { name: 'Test', exportType: 'namedExport', @@ -257,47 +214,6 @@ const prototype: ComponentPrototypeType = { ], }; -const deerService = createServices( - { - listMy: { - url: '/my/upload/list', - }, - listFav: { - url: '/my/star/list', - }, - listPub: { - url: '/list', - }, - }, - { - baseURL: 'https://febase-openapi.fn.netease.com/deer/api/deer/pic', - withCredentials: false, // 解决跨域时必须非*问题 - headers: { - 'Febase-Auth': 'dskPVkIRnQ2dEn1DbyxURmUj4rl4BsCh53xFAsJnvVs=', - }, - }, -); - -const context = { - stores: { - app: { - title: 'Sample App', - age: 20, - detail: { - foo: 'foo', - bar: 'bar', - biz: { - x: 'xxx', - }, - }, - newKey: 'xxx', - }, - foo: { - test: 'test string', - }, - }, -}; - /** * 表单值预览 */ @@ -310,9 +226,7 @@ export function Basic() { const model = new FormModel( { router: 'www.163.com', - expression: { - foo: 'foo', - }, + expression: `{ foo: 'foo' }`, object: { name: 'Alice', }, @@ -324,19 +238,7 @@ export function Basic() { return ( - + @@ -346,6 +248,14 @@ export function Basic() { ); } +export function Lite() { + return ( + + + + ); +} + export function NoExpressionSwitch() { const model = new FormModel({}); return ( @@ -354,30 +264,3 @@ export function NoExpressionSwitch() { ); } - -export function Binding() { - const [data, setData] = useState({}); - return ( - - - selected: {data?.key} - - { - if (!node || !node.key) { - return; - } - if (node.type === 'function') { - return node.raw; - } - const keyPath = node.key.replaceAll('?', ''); - return getValue(context, keyPath); - }} - onSelect={setData} - onAddVariable={console.log} - onSave={console.log} - /> - - ); -} diff --git a/apps/storybook/src/ui/toggle-button.stories.tsx b/apps/storybook/src/ui/toggle-button.stories.tsx index 925b757..71a1523 100644 --- a/apps/storybook/src/ui/toggle-button.stories.tsx +++ b/apps/storybook/src/ui/toggle-button.stories.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { ToggleButton, IconFont } from '@music163/tango-ui'; +import { ToggleButton, UndoOutlined, RedoOutlined } from '@music163/tango-ui'; import { Box, Flex } from 'coral-system'; export default { @@ -11,24 +11,24 @@ export function Basic() { - + - + - + - + - + - + diff --git a/packages/designer/src/setters/index.ts b/packages/designer/src/setters/index.ts index bfef59b..da3935d 100644 --- a/packages/designer/src/setters/index.ts +++ b/packages/designer/src/setters/index.ts @@ -168,4 +168,6 @@ const setters: IFormItemCreateOptions[] = [ { name: 'borderSetter', component: BorderSetter }, ]; -setters.forEach(register); +export function registerBuiltinSetters() { + setters.forEach(register); +} diff --git a/packages/designer/src/setting-panel.tsx b/packages/designer/src/setting-panel.tsx index 6eca6e6..63e6102 100644 --- a/packages/designer/src/setting-panel.tsx +++ b/packages/designer/src/setting-panel.tsx @@ -4,7 +4,9 @@ import { SettingForm, FormModel, SettingFormProps } from '@music163/tango-settin import { Panel } from '@music163/tango-ui'; import { clone } from '@music163/tango-helpers'; import { observer, useDesigner, useWorkspace } from '@music163/tango-context'; -import './setters'; +import { registerBuiltinSetters } from './setters'; + +registerBuiltinSetters(); export interface SettingPanelProps extends SettingFormProps { title?: React.ReactNode; diff --git a/packages/designer/src/sidebar/datasource-panel/interface-config.tsx b/packages/designer/src/sidebar/datasource-panel/interface-config.tsx index 3e84a78..23a5398 100644 --- a/packages/designer/src/sidebar/datasource-panel/interface-config.tsx +++ b/packages/designer/src/sidebar/datasource-panel/interface-config.tsx @@ -1,9 +1,9 @@ import React, { useState, useEffect, useMemo } from 'react'; import { observer, useWorkspace, useWorkspaceData } from '@music163/tango-context'; import { Box, css } from 'coral-system'; -import { Button, FormProps, Empty, Space, Dropdown } from 'antd'; +import { Button, FormProps, Empty, Space, Dropdown, Form, Select, Input } from 'antd'; import { PlayCircleOutlined } from '@ant-design/icons'; -import { Form, InputCode, Panel, JsonView, Search } from '@music163/tango-ui'; +import { InputCode, Panel, JsonView, Search } from '@music163/tango-ui'; import { isNil, getVariableContent, @@ -37,15 +37,6 @@ enum ServiceFunctionMethodType { // DELETE = 'DELETE', } -/** - * requestType - * headers: Content-Type - */ -enum DataServiceRequestType { - 'application/json' = 'json', - 'application/x-www-form-urlencoded' = 'x-www-form-urlencoded', -} - /** * 将 api 路径转换为默认的驼峰方法名 */ @@ -79,12 +70,6 @@ const httpMethods = Object.keys(ServiceFunctionMethodType).map((key) => ({ value: key, })); -// requestType 类型 -const requestTypes = Object.keys(DataServiceRequestType).map((key) => ({ - label: key, - value: DataServiceRequestType[key], -})); - const detailFormStyle = css` .ant-form-item { margin-bottom: 12px; @@ -261,8 +246,8 @@ function ServiceDetailForm({ return (
+ > + + + + + + + + diff --git a/packages/designer/src/toolbar/history.tsx b/packages/designer/src/toolbar/history.tsx index 0bc8e44..b9f239c 100644 --- a/packages/designer/src/toolbar/history.tsx +++ b/packages/designer/src/toolbar/history.tsx @@ -1,6 +1,6 @@ import React from 'react'; import { Box } from 'coral-system'; -import { ToggleButton, IconFont } from '@music163/tango-ui'; +import { ToggleButton, RedoOutlined, UndoOutlined } from '@music163/tango-ui'; import { observer, useWorkspace } from '@music163/tango-context'; export const HistoryTool = observer(() => { @@ -16,7 +16,7 @@ export const HistoryTool = observer(() => { workspace.selectSource.clear(); }} > - + { workspace.selectSource.clear(); }} > - + ); diff --git a/packages/designer/src/toolbar/route-switch.tsx b/packages/designer/src/toolbar/route-switch.tsx index 75d4fa6..8133c94 100644 --- a/packages/designer/src/toolbar/route-switch.tsx +++ b/packages/designer/src/toolbar/route-switch.tsx @@ -1,10 +1,10 @@ import React, { useMemo, useState } from 'react'; -import { Button, Popconfirm, Modal, ModalProps } from 'antd'; +import { Button, Popconfirm, Modal, ModalProps, Form, Input } from 'antd'; import { Box, css, Group, Text } from 'coral-system'; import { FileOutlined, DeleteOutlined, CopyOutlined, SettingOutlined } from '@ant-design/icons'; import { array2object, callAll } from '@music163/tango-helpers'; import { IPageConfigData } from '@music163/tango-core'; -import { Form, ToggleButton } from '@music163/tango-ui'; +import { ToggleButton } from '@music163/tango-ui'; import { observer, useWorkspace } from '@music163/tango-context'; export const RouteSwitchTool = observer(() => { @@ -250,17 +250,13 @@ function CopyViewModalForm({ }} > - + + + + > + + ); diff --git a/packages/designer/src/toolbar/toggle-panel.tsx b/packages/designer/src/toolbar/toggle-panel.tsx index 2a1c19f..1ca2cdf 100644 --- a/packages/designer/src/toolbar/toggle-panel.tsx +++ b/packages/designer/src/toolbar/toggle-panel.tsx @@ -1,7 +1,13 @@ import React from 'react'; import { observer, useDesigner } from '@music163/tango-context'; import { Box } from 'coral-system'; -import { IconFont, ToggleButton } from '@music163/tango-ui'; +import { + OpenPanelFilledLeftOutlined, + OpenPanelFilledRightOutlined, + OpenPanelLeftOutlined, + OpenPanelRightOutlined, + ToggleButton, +} from '@music163/tango-ui'; export const TogglePanelTool = observer(() => { const designer = useDesigner(); @@ -14,20 +20,14 @@ export const TogglePanelTool = observer(() => { designer.setActiveSidebarPanel(designer.activeSidebarPanel ? '' : 'outline'); }} > - + {designer.activeSidebarPanel ? : } designer.toggleRightPanel()} > - + {designer.showRightPanel ? : }
); diff --git a/packages/setting-form/src/form-item.tsx b/packages/setting-form/src/form-item.tsx index 7c10406..dfd8ff0 100644 --- a/packages/setting-form/src/form-item.tsx +++ b/packages/setting-form/src/form-item.tsx @@ -8,14 +8,15 @@ import { useBoolean, } from '@music163/tango-helpers'; import { isWrappedByExpressionContainer } from '@music163/tango-core'; -import { IconFont, ToggleButton } from '@music163/tango-ui'; -import { QuestionCircleOutlined } from '@ant-design/icons'; -import { InputProps, Tooltip } from 'antd'; +import { ToggleButton, CodeOutlined } from '@music163/tango-ui'; +import { InputProps } from 'antd'; import { useFormModel, useFormVariable } from './context'; import { FormControl } from './form-ui'; +import { Box, Text } from 'coral-system'; export interface FormItemProps extends ComponentPropType { extra?: React.ReactNode; + footer?: React.ReactNode; } export interface FormItemComponentProps { @@ -76,6 +77,7 @@ export function createFormItem(options: IFormItemCreateOptions) { getVisible: getVisibleProp, getSetterProps: getSetterPropsProp, extra, + footer, }: FormItemProps) { const { disableSwitchExpressionSetter } = useFormVariable(); const model = useFormModel(); @@ -106,7 +108,7 @@ export function createFormItem(options: IFormItemCreateOptions) { let expProps = {}; - // FIXME: 重新考虑这段代码的位置 + // FIXME: 重新考虑这段代码的位置,外置这个逻辑 if (['expressionSetter', 'actionSetter', 'eventSetter'].includes(setter) || isVariable) { expProps = { modalTitle: title, @@ -141,7 +143,8 @@ export function createFormItem(options: IFormItemCreateOptions) { docs={docs} error={field.error} extra={ - <> + + {extra} {!disableVariableSetter ? ( toggleIsVariable()} > - + ) : null} - {extra} - + } + footer={footer} data-setter={setterName} data-field={name} > @@ -187,10 +190,6 @@ export function register(config: IFormItemCreateOptions) { }); } -const iconStyle = { - color: 'red', -}; - export function SettingFormItem(props: FormItemProps) { const { setter } = props; const Comp = REGISTERED_FORM_ITEM_MAP[setter]; @@ -199,10 +198,10 @@ export function SettingFormItem(props: FormItemProps) { return ( - - + footer={ + + {props.setter} is invalid + } /> ); diff --git a/packages/setting-form/src/form-ui.tsx b/packages/setting-form/src/form-ui.tsx index bb2a072..eaded26 100644 --- a/packages/setting-form/src/form-ui.tsx +++ b/packages/setting-form/src/form-ui.tsx @@ -7,6 +7,7 @@ import { isNil, isString } from '@music163/tango-helpers'; export interface FormControlProps extends Omit { visible: boolean; extra?: React.ReactNode; + footer?: React.ReactNode; error?: string; children?: React.ReactNode; } @@ -18,6 +19,7 @@ export function FormControl({ tip, docs, extra, + footer, error, children, ...rest @@ -29,6 +31,7 @@ export function FormControl({ {extra}
{children} + {footer} {!!error && ( {error} diff --git a/packages/setting-form/src/form.tsx b/packages/setting-form/src/form.tsx index 252be75..1725648 100644 --- a/packages/setting-form/src/form.tsx +++ b/packages/setting-form/src/form.tsx @@ -83,7 +83,15 @@ export interface SettingFormProps { */ prototype?: ComponentPrototypeType; /** - * 选项分组信息 + * 是否显示搜索框 + */ + showSearch?: boolean; + /** + * 是否显示分组导航 + */ + showGroups?: boolean; + /** + * 选项分组信息,用于对表单项进行分组展示,如未提供,则使用内置的分组信息 */ groupOptions?: IFormTabsGroupOption[]; /** @@ -98,6 +106,8 @@ export function SettingForm({ model: modelProp, defaultValue, onChange = noop, + showSearch = true, + showGroups = true, groupOptions = internalGroups, }: SettingFormProps) { const [keyword, setKeyword] = useState(''); @@ -107,10 +117,8 @@ export function SettingForm({ const componentPropGroups = useMemo(() => { return normalizeComponentProps(componentProps); }, [componentProps]); + const filterProps = useMemo(() => { - if (!keyword) { - return componentPropGroups[tabKey] || []; - } const computedProps = mapTreeData(componentProps, (node) => { const { getProp, ...rest } = node; return { @@ -118,8 +126,19 @@ export function SettingForm({ ...getProp?.(model), }; }); + + // 没有进行搜索的情况 + if (!keyword) { + if (showGroups) { + return componentPropGroups[tabKey] || []; + } else { + return computedProps; + } + } + + // 用户进行搜索的情况 return filterComponentProps(computedProps, keyword); - }, [keyword, componentProps, tabKey, model]); + }, [keyword, componentProps, tabKey, model, showGroups, componentPropGroups]); const renderProps = useCallback( (props: ComponentPropType[]) => @@ -155,15 +174,17 @@ export function SettingForm({ - - { - setKeyword(val?.trim()); - }} - /> - - {!keyword && ( + {showSearch && ( + + { + setKeyword(val?.trim()); + }} + /> + + )} + {!keyword && showGroups && ( {groupOptions.map((group) => ( diff --git a/packages/setting-form/src/index.ts b/packages/setting-form/src/index.ts index b8da787..2b61eae 100644 --- a/packages/setting-form/src/index.ts +++ b/packages/setting-form/src/index.ts @@ -1,5 +1,5 @@ import { register } from './form-item'; -import { ExpressionSetter } from './setter'; +import { ExpressionSetter, TextSetter } from './setter'; // 预注册基础 Setter register({ @@ -7,6 +7,11 @@ register({ component: ExpressionSetter, }); +register({ + name: 'textSetter', + component: TextSetter, +}); + export * from './form'; export * from './form-item'; export * from './form-object'; diff --git a/packages/setting-form/src/setter.tsx b/packages/setting-form/src/setter.tsx index 3611e25..e1ea847 100644 --- a/packages/setting-form/src/setter.tsx +++ b/packages/setting-form/src/setter.tsx @@ -1,7 +1,12 @@ import React from 'react'; +import { Input } from 'antd'; +import { InputCode } from '@music163/tango-ui'; import { FormItemComponentProps } from './form-item'; -// TODO: 内置基本的 ExpressionSetter,默认全部 fallback 到此 setter -export function ExpressionSetter(props: FormItemComponentProps) { - return
exp setter
; +export function ExpressionSetter({ value, onChange, ...rest }: FormItemComponentProps) { + return onChange?.(val)} value={value || ''} {...rest} />; +} + +export function TextSetter({ onChange, ...rest }: FormItemComponentProps) { + return onChange?.(e.target.value)} {...rest} />; } diff --git a/packages/ui/package.json b/packages/ui/package.json index bdcd10e..cd252cd 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -41,7 +41,6 @@ "@music163/tango-helpers": "^0.1.8", "@uiw/react-codemirror": "^4.21.21", "antd": "^4.24.2", - "antd-easy-form": "^1.1.3", "coral-system": "^1.0.5", "eslint-linter-browserify": "^8.51.0", "react-json-view": "^1.21.3", diff --git a/packages/ui/src/icons/code-outlined.tsx b/packages/ui/src/icons/code-outlined.tsx new file mode 100644 index 0000000..193d253 --- /dev/null +++ b/packages/ui/src/icons/code-outlined.tsx @@ -0,0 +1,22 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const CodeOutlinedSvg = () => ( + + + + + + +); + +export const CodeOutlined = createIcon(CodeOutlinedSvg, 'CodeOutlined'); diff --git a/packages/ui/src/icons/create-icon.tsx b/packages/ui/src/icons/create-icon.tsx new file mode 100644 index 0000000..5c9ef15 --- /dev/null +++ b/packages/ui/src/icons/create-icon.tsx @@ -0,0 +1,13 @@ +import React from 'react'; +import Icon from '@ant-design/icons'; +import type { CustomIconComponentProps } from '@ant-design/icons/lib/components/Icon'; + +export function createIcon(component: React.ComponentType, displayName?: string) { + const CustomIcon = (props: Partial) => ( + + ); + if (displayName) { + CustomIcon.displayName = displayName; + } + return CustomIcon; +} diff --git a/packages/ui/src/icons/index.ts b/packages/ui/src/icons/index.ts new file mode 100644 index 0000000..8836e51 --- /dev/null +++ b/packages/ui/src/icons/index.ts @@ -0,0 +1,8 @@ +export * from './create-icon'; +export * from './code-outlined'; +export * from './open-panel-filled-left-outlined'; +export * from './open-panel-filled-right-outlined'; +export * from './open-panel-left-outlined'; +export * from './open-panel-right-outlined'; +export * from './undo-outlined'; +export * from './redo-outlined'; diff --git a/packages/ui/src/icons/open-panel-filled-left-outlined.tsx b/packages/ui/src/icons/open-panel-filled-left-outlined.tsx new file mode 100644 index 0000000..b4431d7 --- /dev/null +++ b/packages/ui/src/icons/open-panel-filled-left-outlined.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const OpenPanelFilledLeftOutlinedSvg = () => ( + + + + +); + +export const OpenPanelFilledLeftOutlined = createIcon( + OpenPanelFilledLeftOutlinedSvg, + 'OpenPanelFilledLeftOutlined', +); diff --git a/packages/ui/src/icons/open-panel-filled-right-outlined.tsx b/packages/ui/src/icons/open-panel-filled-right-outlined.tsx new file mode 100644 index 0000000..b30e2cf --- /dev/null +++ b/packages/ui/src/icons/open-panel-filled-right-outlined.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const OpenPanelFilledRightOutlinedSvg = () => ( + + + + +); + +export const OpenPanelFilledRightOutlined = createIcon( + OpenPanelFilledRightOutlinedSvg, + 'OpenPanelFilledRightOutlined', +); diff --git a/packages/ui/src/icons/open-panel-left-outlined.tsx b/packages/ui/src/icons/open-panel-left-outlined.tsx new file mode 100644 index 0000000..5632be5 --- /dev/null +++ b/packages/ui/src/icons/open-panel-left-outlined.tsx @@ -0,0 +1,17 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const OpenPanelLeftOutlinedSvg = () => ( + + + + +); + +export const OpenPanelLeftOutlined = createIcon(OpenPanelLeftOutlinedSvg, 'OpenPanelLeftOutlined'); diff --git a/packages/ui/src/icons/open-panel-right-outlined.tsx b/packages/ui/src/icons/open-panel-right-outlined.tsx new file mode 100644 index 0000000..8d1bceb --- /dev/null +++ b/packages/ui/src/icons/open-panel-right-outlined.tsx @@ -0,0 +1,20 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const OpenPanelRightOutlinedSvg = () => ( + + + + +); + +export const OpenPanelRightOutlined = createIcon( + OpenPanelRightOutlinedSvg, + 'OpenPanelRightOutlined', +); diff --git a/packages/ui/src/icons/redo-outlined.tsx b/packages/ui/src/icons/redo-outlined.tsx new file mode 100644 index 0000000..c6d70a8 --- /dev/null +++ b/packages/ui/src/icons/redo-outlined.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const RedoOutlinedSvg = () => ( + + + +); + +export const RedoOutlined = createIcon(RedoOutlinedSvg, 'RedoOutlined'); diff --git a/packages/ui/src/icons/undo-outlined.tsx b/packages/ui/src/icons/undo-outlined.tsx new file mode 100644 index 0000000..de703cb --- /dev/null +++ b/packages/ui/src/icons/undo-outlined.tsx @@ -0,0 +1,16 @@ +import React from 'react'; +import { createIcon } from './create-icon'; + +const UndoOutlinedSvg = () => ( + + + +); + +export const UndoOutlined = createIcon(UndoOutlinedSvg, 'UndoOutlined'); diff --git a/packages/ui/src/index.ts b/packages/ui/src/index.ts index 54117de..0ee4c20 100644 --- a/packages/ui/src/index.ts +++ b/packages/ui/src/index.ts @@ -1,3 +1,4 @@ +export * from './icons'; export * from './action-select'; export * from './code-editor'; export * from './chat-input'; @@ -19,4 +20,3 @@ export * from './tabs'; export * from './select-action'; export * from './copy-clipboard'; export * from './tag-select'; -export { Form } from 'antd-easy-form'; \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index cd257fc..9c6798b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5885,14 +5885,6 @@ ansi-to-html@^0.6.11: dependencies: entities "^2.0.0" -antd-easy-form@^1.1.3: - version "1.1.3" - resolved "https://registry.npmmirror.com/antd-easy-form/-/antd-easy-form-1.1.3.tgz#84fa26f05310d8d34e80b617801e88097da57a6d" - integrity sha512-jkTzV9qP8ECbSqwrU0/VxuFPsmBnHWCCLlFu3HA26/jQNXtBTKEuS5c26LGfCXwpuf/Z1YBtA6qWlVESASIUBQ== - dependencies: - "@ant-design/icons" "^4.8.0" - react-is "^18.2.0" - antd@^4.24.2: version "4.24.14" resolved "https://registry.npmmirror.com/antd/-/antd-4.24.14.tgz#af19c2c1ead71954a00b1e9c2f1ecbc84bd7a20d"