feat: add popup

This commit is contained in:
Joel 2025-02-20 11:45:36 +08:00
parent 1a7de23864
commit 15f80a72b8
6 changed files with 61 additions and 17 deletions

View File

@ -20,6 +20,7 @@ import Button from '@/app/components/base/button'
import Input from '@/app/components/base/input'
import { ApiConnectionMod } from '@/app/components/base/icons/src/vender/solid/development'
import CheckboxWithLabel from '@/app/components/datasets/create/website/base/checkbox-with-label'
import EditMetadataBatchModal from '@/app/components/datasets/metadata/edit-metadata-batch/modal'
// import DatasetMetadataDrawer from '@/app/components/datasets/metadata/dataset-metadata-drawer'
import MetaDataDocument from '@/app/components/datasets/metadata/metadata-document'
// Services
@ -111,7 +112,7 @@ const Container = () => {
onIsBuiltInEnabledChange={setIsBuiltInEnabled}
onClose={() => { }}
/> */}
{/* <EditMetadataBatchModal
<EditMetadataBatchModal
documentNum={20}
list={[
{
@ -124,12 +125,12 @@ const Container = () => {
id: '2.1', name: 'num v', type: DataType.number, value: 10,
},
{
id: '3', name: 'name3', type: DataType.time, value: '', isUpdated: true, updateType: UpdateType.delete,
id: '3', name: 'name3', type: DataType.time, value: '', isUpdated: true, // updateType: UpdateType.delete,
},
]}
onHide={() => { }}
onChange={(list, newList, isApplyToAllSelectDocument) => { console.log(list, newList, isApplyToAllSelectDocument) }}
/> */}
/>
</div>
<div className='sticky top-0 flex justify-between pt-4 px-12 pb-2 leading-[56px] bg-background-body z-10 flex-wrap gap-y-2'>
<TabSliderNew

View File

@ -0,0 +1,29 @@
'use client'
import type { FC } from 'react'
import React from 'react'
import Button from '../../base/button'
import { RiAddLine } from '@remixicon/react'
import cn from '@/utils/classnames'
type Props = {
className?: string
onClick?: () => void
}
const AddedMetadataButton: FC<Props> = ({
className,
onClick,
}) => {
return (
<Button
className={cn('w-full flex items-center', className)}
size='small'
variant='tertiary'
onClick={onClick}
>
<RiAddLine className='mr-1 size-3.5' />
<div>Add metadata</div>
</Button>
)
}
export default React.memo(AddedMetadataButton)

View File

@ -10,8 +10,9 @@ import { useTranslation } from 'react-i18next'
import Checkbox from '../../../base/checkbox'
import Tooltip from '../../../base/tooltip'
import SelectMetadataModal from '../select-metadata-modal'
import { RiAddLine, RiQuestionLine } from '@remixicon/react'
import { RiQuestionLine } from '@remixicon/react'
import Divider from '@/app/components/base/divider'
import AddMetadataButton from '../add-metadata-button'
type Props = {
documentNum: number
@ -99,11 +100,10 @@ const EditMetadataBatchModal: FC<Props> = ({
</div>
<div className='mt-3'>
<SelectMetadataModal
popupPlacement='top-start'
popupOffset={{ mainAxis: 4, crossAxis: 0 }}
trigger={
<Button className='w-full flex items-center' size='small' variant='tertiary'>
<RiAddLine className='mr-1 size-3.5' />
<div>Add metadata</div>
</Button>
<AddMetadataButton />
}
onSave={data => setAddedList([...addedList, data])}
/>

View File

@ -10,7 +10,7 @@ import { useTranslation } from 'react-i18next'
const MetadataDocument: FC = () => {
const { t } = useTranslation()
const [isEdit, setIsEdit] = useState(false)
const [isEdit, setIsEdit] = useState(true)
const [list, setList] = useState<MetadataItemWithValue[]>([
{

View File

@ -7,6 +7,9 @@ import InputCombined from '../edit-metadata-batch/input-combined'
import { RiDeleteBinLine } from '@remixicon/react'
import Tooltip from '@/app/components/base/tooltip'
import cn from '@/utils/classnames'
import Divider from '@/app/components/base/divider'
import SelectMetadataModal from '../select-metadata-modal'
import AddMetadataButton from '../add-metadata-button'
type Props = {
title: string
@ -32,7 +35,7 @@ const InfoGroup: FC<Props> = ({
onAdd,
}) => {
return (
<div>
<div className='bg-white'>
<div className='flex items-center justify-between'>
<div className='flex items-center space-x-1'>
<div className='system-xs-medium text-text-secondary'>{title}</div>
@ -45,6 +48,17 @@ const InfoGroup: FC<Props> = ({
</div> */}
</div>
<div className={cn('mt-3 space-y-1', contentClassName)}>
{isEdit && (
<div>
<SelectMetadataModal
trigger={
<AddMetadataButton />
}
onSave={() => { }}
/>
<Divider className='my-3 ' bgStyle='gradient' />
</div>
)}
{list.map((item, i) => (
<Field key={item.id || `${i}`} label={item.name}>
{isEdit ? (

View File

@ -6,12 +6,14 @@ import CreateContent from './create-content'
import SelectMetadata from './select-metadata'
import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '../../base/portal-to-follow-elem'
import type { MetadataItem } from './types'
import type { Placement } from '@floating-ui/react'
import { DataType } from './types'
type Props = {
popupPlacement?: Placement
popupOffset?: { mainAxis: number, crossAxis: number }
onSave: (data: any) => void
trigger: React.ReactNode
popupLeft?: number
} & CreateContentProps
enum Step {
@ -26,8 +28,9 @@ const testMetadataList: MetadataItem[] = [
]
const SelectMetadataModal: FC<Props> = ({
popupPlacement = 'left-start',
popupOffset = { mainAxis: -38, crossAxis: 4 },
trigger,
popupLeft = 4,
onSave,
}) => {
const [open, setOpen] = useState(false)
@ -41,11 +44,8 @@ const SelectMetadataModal: FC<Props> = ({
<PortalToFollowElem
open={open}
onOpenChange={setOpen}
placement='left-start'
offset={{
mainAxis: popupLeft,
crossAxis: -38,
}}
placement={popupPlacement}
offset={popupOffset}
>
<PortalToFollowElemTrigger
onClick={() => setOpen(!open)}