浏览代码

fix: make TagSelector always visible for accessibility and mobile support (#23515)

tags/1.7.2
lyzno1 2 个月前
父节点
当前提交
f6c7175828
没有帐户链接到提交者的电子邮件

web/app/(commonLayout)/datasets/Container.tsx → web/app/(commonLayout)/datasets/container.tsx 查看文件



// Components // Components
import ExternalAPIPanel from '../../components/datasets/external-api/external-api-panel' import ExternalAPIPanel from '../../components/datasets/external-api/external-api-panel'
import Datasets from './Datasets'
import DatasetFooter from './DatasetFooter'
import Datasets from './datasets'
import DatasetFooter from './dataset-footer'
import ApiServer from '../../components/develop/ApiServer' import ApiServer from '../../components/develop/ApiServer'
import Doc from './Doc'
import Doc from './doc'
import TabSliderNew from '@/app/components/base/tab-slider-new' import TabSliderNew from '@/app/components/base/tab-slider-new'
import TagManagementModal from '@/app/components/base/tag-management' import TagManagementModal from '@/app/components/base/tag-management'
import TagFilter from '@/app/components/base/tag-management/filter' import TagFilter from '@/app/components/base/tag-management/filter'

web/app/(commonLayout)/datasets/DatasetCard.tsx → web/app/(commonLayout)/datasets/dataset-card.tsx 查看文件

</div> </div>
<div <div
className={cn( className={cn(
'mb-2 max-h-[72px] grow px-[14px] text-xs leading-normal text-text-tertiary group-hover:line-clamp-2 group-hover:max-h-[36px]',
tags.length ? 'line-clamp-2' : 'line-clamp-4',
'mb-2 line-clamp-2 max-h-[36px] grow px-[14px] text-xs leading-normal text-text-tertiary',
!dataset.embedding_available && 'opacity-50 hover:opacity-100', !dataset.embedding_available && 'opacity-50 hover:opacity-100',
)} )}
title={dataset.description}> title={dataset.description}>
{dataset.description} {dataset.description}
</div> </div>
<div className={cn(
'mt-4 h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1',
tags.length ? 'flex' : '!hidden group-hover:!flex',
)}>
<div className='mt-4 flex h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1'>
<div className={cn('flex w-0 grow items-center gap-1', !dataset.embedding_available && 'opacity-50 hover:opacity-100')} onClick={(e) => { <div className={cn('flex w-0 grow items-center gap-1', !dataset.embedding_available && 'opacity-50 hover:opacity-100')} onClick={(e) => {
e.stopPropagation() e.stopPropagation()
e.preventDefault() e.preventDefault()
}}> }}>
<div className={cn( <div className={cn(
'mr-[41px] w-full grow group-hover:!mr-0 group-hover:!block',
tags.length ? '!block' : '!hidden',
'mr-[41px] w-full grow group-hover:!mr-0',
)}> )}>
<TagSelector <TagSelector
position='bl' position='bl'

web/app/(commonLayout)/datasets/DatasetFooter.tsx → web/app/(commonLayout)/datasets/dataset-footer.tsx 查看文件


web/app/(commonLayout)/datasets/Datasets.tsx → web/app/(commonLayout)/datasets/datasets.tsx 查看文件

import { useCallback, useEffect, useRef } from 'react' import { useCallback, useEffect, useRef } from 'react'
import useSWRInfinite from 'swr/infinite' import useSWRInfinite from 'swr/infinite'
import { debounce } from 'lodash-es' import { debounce } from 'lodash-es'
import NewDatasetCard from './NewDatasetCard'
import DatasetCard from './DatasetCard'
import NewDatasetCard from './new-dataset-card'
import DatasetCard from './dataset-card'
import type { DataSetListResponse, FetchDatasetsParams } from '@/models/datasets' import type { DataSetListResponse, FetchDatasetsParams } from '@/models/datasets'
import { fetchDatasets } from '@/service/datasets' import { fetchDatasets } from '@/service/datasets'
import { useAppContext } from '@/context/app-context' import { useAppContext } from '@/context/app-context'

web/app/(commonLayout)/datasets/Doc.tsx → web/app/(commonLayout)/datasets/doc.tsx 查看文件


web/app/(commonLayout)/datasets/NewDatasetCard.tsx → web/app/(commonLayout)/datasets/new-dataset-card.tsx 查看文件


+ 1
- 1
web/app/(commonLayout)/datasets/page.tsx 查看文件

'use client' 'use client'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Container from './Container'
import Container from './container'
import useDocumentTitle from '@/hooks/use-document-title' import useDocumentTitle from '@/hooks/use-document-title'


const AppList = () => { const AppList = () => {

+ 3
- 9
web/app/components/apps/app-card.tsx 查看文件

{app.description} {app.description}
</div> </div>
</div> </div>
<div className={cn(
'absolute bottom-1 left-0 right-0 h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1',
tags.length ? 'flex' : '!hidden group-hover:!flex',
)}>
<div className='absolute bottom-1 left-0 right-0 flex h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1'>
{isCurrentWorkspaceEditor && ( {isCurrentWorkspaceEditor && (
<> <>
<div className={cn('flex w-0 grow items-center gap-1')} onClick={(e) => { <div className={cn('flex w-0 grow items-center gap-1')} onClick={(e) => {
e.stopPropagation() e.stopPropagation()
e.preventDefault() e.preventDefault()
}}> }}>
<div className={cn(
'mr-[41px] w-full grow group-hover:!mr-0 group-hover:!block',
tags.length ? '!block' : '!hidden',
)}>
<div className='mr-[41px] w-full grow group-hover:!mr-0'>
<TagSelector <TagSelector
position='bl' position='bl'
type='app' type='app'
/> />
</div> </div>
</div> </div>
<div className='mx-1 !hidden h-[14px] w-[1px] shrink-0 group-hover:!flex' />
<div className='mx-1 !hidden h-[14px] w-[1px] shrink-0 bg-divider-regular group-hover:!flex' />
<div className='!hidden shrink-0 group-hover:!flex'> <div className='!hidden shrink-0 group-hover:!flex'>
<CustomPopover <CustomPopover
htmlContent={<Operations />} htmlContent={<Operations />}

+ 5
- 1
web/app/components/base/tag-management/selector.tsx 查看文件

}, [selectedTags, tagList]) }, [selectedTags, tagList])


const Trigger = () => { const Trigger = () => {
const hasNoTags = !triggerContent
return ( return (
<div className={cn( <div className={cn(
'group/tip relative flex w-full cursor-pointer items-center gap-1 rounded-md px-2 py-[7px] hover:bg-state-base-hover', 'group/tip relative flex w-full cursor-pointer items-center gap-1 rounded-md px-2 py-[7px] hover:bg-state-base-hover',
)}> )}>
<Tag01 className='h-3 w-3 shrink-0 text-components-input-text-placeholder' /> <Tag01 className='h-3 w-3 shrink-0 text-components-input-text-placeholder' />
<div className='system-sm-regular grow truncate text-start text-components-input-text-placeholder'>
<div className={cn(
'system-sm-regular grow truncate text-start',
hasNoTags ? 'italic text-components-input-text-placeholder' : 'font-medium text-components-input-text-placeholder',
)}>
{!triggerContent ? t('common.tag.addTag') : triggerContent} {!triggerContent ? t('common.tag.addTag') : triggerContent}
</div> </div>
</div> </div>

+ 2
- 2
web/service/access-control.ts 查看文件

}) })
} }


export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true }: { appId?: string; isInstalledApp?: boolean; }) => {
export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true, enabled }: { appId?: string; isInstalledApp?: boolean; enabled?: boolean }) => {
const systemFeatures = useGlobalPublicStore(s => s.systemFeatures) const systemFeatures = useGlobalPublicStore(s => s.systemFeatures)
return useQuery({ return useQuery({
queryKey: [NAME_SPACE, 'user-can-access-app', appId], queryKey: [NAME_SPACE, 'user-can-access-app', appId],
else else
return { result: true } return { result: true }
}, },
enabled: !!appId,
enabled: enabled !== undefined ? enabled : !!appId,
staleTime: 0, staleTime: 0,
gcTime: 0, gcTime: 0,
}) })

正在加载...
取消
保存