fix: make TagSelector always visible for accessibility and mobile support (#23515)
This commit is contained in:
@@ -9,10 +9,10 @@ import { useQuery } from '@tanstack/react-query'
|
|||||||
|
|
||||||
// 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 Datasets from './datasets'
|
||||||
import DatasetFooter from './DatasetFooter'
|
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'
|
@@ -162,24 +162,19 @@ const DatasetCard = ({
|
|||||||
</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]',
|
'mb-2 line-clamp-2 max-h-[36px] grow px-[14px] text-xs leading-normal text-text-tertiary',
|
||||||
tags.length ? 'line-clamp-2' : 'line-clamp-4',
|
|
||||||
!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(
|
<div className='mt-4 flex h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1'>
|
||||||
'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={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',
|
'mr-[41px] w-full grow group-hover:!mr-0',
|
||||||
tags.length ? '!block' : '!hidden',
|
|
||||||
)}>
|
)}>
|
||||||
<TagSelector
|
<TagSelector
|
||||||
position='bl'
|
position='bl'
|
@@ -3,8 +3,8 @@
|
|||||||
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 NewDatasetCard from './new-dataset-card'
|
||||||
import DatasetCard from './DatasetCard'
|
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'
|
@@ -1,6 +1,6 @@
|
|||||||
'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 = () => {
|
||||||
|
@@ -370,20 +370,14 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
|
|||||||
{app.description}
|
{app.description}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div className={cn(
|
<div className='absolute bottom-1 left-0 right-0 flex h-[42px] shrink-0 items-center pb-[6px] pl-[14px] pr-[6px] pt-1'>
|
||||||
'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',
|
|
||||||
)}>
|
|
||||||
{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(
|
<div className='mr-[41px] w-full grow group-hover:!mr-0'>
|
||||||
'mr-[41px] w-full grow group-hover:!mr-0 group-hover:!block',
|
|
||||||
tags.length ? '!block' : '!hidden',
|
|
||||||
)}>
|
|
||||||
<TagSelector
|
<TagSelector
|
||||||
position='bl'
|
position='bl'
|
||||||
type='app'
|
type='app'
|
||||||
@@ -395,7 +389,7 @@ const AppCard = ({ app, onRefresh }: AppCardProps) => {
|
|||||||
/>
|
/>
|
||||||
</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 />}
|
||||||
|
@@ -238,12 +238,16 @@ const TagSelector: FC<TagSelectorProps> = ({
|
|||||||
}, [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>
|
||||||
|
@@ -70,7 +70,7 @@ export const useUpdateAccessMode = () => {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
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],
|
||||||
@@ -80,7 +80,7 @@ export const useGetUserCanAccessApp = ({ appId, isInstalledApp = true }: { appId
|
|||||||
else
|
else
|
||||||
return { result: true }
|
return { result: true }
|
||||||
},
|
},
|
||||||
enabled: !!appId,
|
enabled: enabled !== undefined ? enabled : !!appId,
|
||||||
staleTime: 0,
|
staleTime: 0,
|
||||||
gcTime: 0,
|
gcTime: 0,
|
||||||
})
|
})
|
||||||
|
Reference in New Issue
Block a user