mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-08-12 19:18:58 +08:00
fix: batch mobile layout fixes (#1641)
This commit is contained in:
parent
cf0ba794d7
commit
3c37fd37fa
@ -6,11 +6,9 @@ const Layout: FC<{
|
|||||||
children: React.ReactNode
|
children: React.ReactNode
|
||||||
}> = ({ children }) => {
|
}> = ({ children }) => {
|
||||||
return (
|
return (
|
||||||
<div className=''>
|
<div className="min-w-[300px] h-full pb-[env(safe-area-inset-bottom)]">
|
||||||
<div className="min-w-[300px]">
|
<GA gaType={GaType.webapp} />
|
||||||
<GA gaType={GaType.webapp} />
|
{children}
|
||||||
{children}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -17,6 +17,7 @@ import ModifyRetrievalModal from './modify-retrieval-modal'
|
|||||||
import type { HitTestingResponse, HitTesting as HitTestingType } from '@/models/datasets'
|
import type { HitTestingResponse, HitTesting as HitTestingType } from '@/models/datasets'
|
||||||
import Loading from '@/app/components/base/loading'
|
import Loading from '@/app/components/base/loading'
|
||||||
import Modal from '@/app/components/base/modal'
|
import Modal from '@/app/components/base/modal'
|
||||||
|
import Drawer from '@/app/components/base/drawer'
|
||||||
import Pagination from '@/app/components/base/pagination'
|
import Pagination from '@/app/components/base/pagination'
|
||||||
import FloatRightContainer from '@/app/components/base/float-right-container'
|
import FloatRightContainer from '@/app/components/base/float-right-container'
|
||||||
import { fetchTestingRecords } from '@/service/datasets'
|
import { fetchTestingRecords } from '@/service/datasets'
|
||||||
@ -206,7 +207,7 @@ const HitTesting: FC<Props> = ({ datasetId }: Props) => {
|
|||||||
}}
|
}}
|
||||||
/>}
|
/>}
|
||||||
</Modal>
|
</Modal>
|
||||||
{isShowModifyRetrievalModal && (
|
<Drawer isOpen={isShowModifyRetrievalModal} onClose={() => setIsShowModifyRetrievalModal(false)} footer={null} mask={isMobile} panelClassname='mt-16 mx-2 sm:mr-2 mb-3 !p-0 !max-w-[640px] rounded-xl'>
|
||||||
<ModifyRetrievalModal
|
<ModifyRetrievalModal
|
||||||
indexMethod={currentDataset?.indexing_technique || ''}
|
indexMethod={currentDataset?.indexing_technique || ''}
|
||||||
value={retrievalConfig}
|
value={retrievalConfig}
|
||||||
@ -217,7 +218,7 @@ const HitTesting: FC<Props> = ({ datasetId }: Props) => {
|
|||||||
setIsShowModifyRetrievalModal(false)
|
setIsShowModifyRetrievalModal(false)
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
</Drawer>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -66,9 +66,8 @@ const ModifyRetrievalModal: FC<Props> = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div
|
<div
|
||||||
className='fixed top-16 right-2 flex flex-col bg-white border-[0.5px] border-gray-200 rounded-xl shadow-xl z-10'
|
className='w-full flex flex-col bg-white border-[0.5px] border-gray-200 rounded-xl shadow-xl'
|
||||||
style={{
|
style={{
|
||||||
width: 632,
|
|
||||||
height: 'calc(100vh - 72px)',
|
height: 'calc(100vh - 72px)',
|
||||||
}}
|
}}
|
||||||
ref={ref}
|
ref={ref}
|
||||||
|
@ -30,31 +30,29 @@ const AppCard = ({
|
|||||||
const { t } = useTranslation()
|
const { t } = useTranslation()
|
||||||
const { app: appBasicInfo } = app
|
const { app: appBasicInfo } = app
|
||||||
return (
|
return (
|
||||||
<div className={s.wrap}>
|
<div className='col-span-1 bg-white border-2 border-solid border-transparent rounded-lg shadow-sm min-h-[160px] flex flex-col transition-all duration-200 ease-in-out cursor-pointer hover:shadow-lg'>
|
||||||
<div className='col-span-1 bg-white border-2 border-solid border-transparent rounded-lg shadow-sm min-h-[160px] flex flex-col transition-all duration-200 ease-in-out cursor-pointer hover:shadow-lg'>
|
<div className='flex pt-[14px] px-[14px] pb-3 h-[66px] items-center gap-3 grow-0 shrink-0'>
|
||||||
<div className='flex pt-[14px] px-[14px] pb-3 h-[66px] items-center gap-3 grow-0 shrink-0'>
|
<AppIcon size='small' icon={app.app.icon} background={app.app.icon_background} />
|
||||||
<AppIcon size='small' icon={app.app.icon} background={app.app.icon_background} />
|
<div className='relative h-8 text-sm font-medium leading-8 grow'>
|
||||||
<div className='relative h-8 text-sm font-medium leading-8 grow'>
|
<div className='absolute top-0 left-0 w-full h-full overflow-hidden text-ellipsis whitespace-nowrap'>{appBasicInfo.name}</div>
|
||||||
<div className='absolute top-0 left-0 w-full h-full overflow-hidden text-ellipsis whitespace-nowrap'>{appBasicInfo.name}</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
<div className='mb-3 px-[14px] h-9 text-xs leading-normal text-gray-500 line-clamp-2'>{app.description}</div>
|
</div>
|
||||||
<div className='flex items-center flex-wrap min-h-[42px] px-[14px] pt-2 pb-[10px]'>
|
<div className='mb-3 px-[14px] h-9 text-xs leading-normal text-gray-500 line-clamp-2'>{app.description}</div>
|
||||||
<div className={s.mode}>
|
<div className='flex items-center flex-wrap min-h-[42px] px-[14px] pt-2 pb-[10px]'>
|
||||||
<AppModeLabel mode={appBasicInfo.mode} />
|
<div className={s.mode}>
|
||||||
</div>
|
<AppModeLabel mode={appBasicInfo.mode} />
|
||||||
<div className={cn(s.opWrap, 'flex items-center w-full space-x-2')}>
|
</div>
|
||||||
<Button type='primary' className='grow flex items-center !h-7' onClick={() => onAddToWorkspace(appBasicInfo.id)}>
|
<div className={cn(s.opWrap, 'flex items-center w-full space-x-2')}>
|
||||||
<PlusIcon className='w-4 h-4 mr-1' />
|
<Button type='primary' className='grow flex items-center !h-7' onClick={() => onAddToWorkspace(appBasicInfo.id)}>
|
||||||
<span className='text-xs'>{t('explore.appCard.addToWorkspace')}</span>
|
<PlusIcon className='w-4 h-4 mr-1' />
|
||||||
|
<span className='text-xs'>{t('explore.appCard.addToWorkspace')}</span>
|
||||||
|
</Button>
|
||||||
|
{canCreate && (
|
||||||
|
<Button className='grow flex items-center !h-7 space-x-1' onClick={onCreate}>
|
||||||
|
{CustomizeBtn}
|
||||||
|
<span className='text-xs'>{t('explore.appCard.customize')}</span>
|
||||||
</Button>
|
</Button>
|
||||||
{canCreate && (
|
)}
|
||||||
<Button className='grow flex items-center !h-7 space-x-1' onClick={onCreate}>
|
|
||||||
{CustomizeBtn}
|
|
||||||
<span className='text-xs'>{t('explore.appCard.customize')}</span>
|
|
||||||
</Button>
|
|
||||||
)}
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,7 +1,3 @@
|
|||||||
.wrap {
|
|
||||||
min-width: 312px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.mode {
|
.mode {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 28px;
|
height: 28px;
|
||||||
|
@ -97,14 +97,9 @@ const Apps: FC = () => {
|
|||||||
value={currCategory}
|
value={currCategory}
|
||||||
onChange={setCurrCategory}
|
onChange={setCurrCategory}
|
||||||
/>
|
/>
|
||||||
<div
|
<div className='flex flex-1 mt-6 pb-6 flex-col overflow-auto bg-gray-100 shrink-0 grow'>
|
||||||
className='flex mt-6 pb-6 flex-col overflow-auto bg-gray-100 shrink-0 grow'
|
|
||||||
style={{
|
|
||||||
maxHeight: 'calc(100vh - 243px)',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<nav
|
<nav
|
||||||
className={`${s.appList} grid content-start gap-4 px-12 shrink-0`}>
|
className={`${s.appList} grid content-start gap-4 px-6 sm:px-12 shrink-0`}>
|
||||||
{currList.map(app => (
|
{currList.map(app => (
|
||||||
<AppCard
|
<AppCard
|
||||||
key={app.app_id}
|
key={app.app_id}
|
||||||
|
@ -33,7 +33,7 @@ const Explore: FC<IExploreProps> = ({
|
|||||||
}, [])
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='flex h-full bg-gray-100 border-t border-gray-200'>
|
<div className='flex h-full bg-gray-100 border-t border-gray-200 overflow-hidden'>
|
||||||
<ExploreContext.Provider
|
<ExploreContext.Provider
|
||||||
value={
|
value={
|
||||||
{
|
{
|
||||||
|
@ -141,7 +141,7 @@ export default function AccountSetting({
|
|||||||
{
|
{
|
||||||
menuItems.map(menuItem => (
|
menuItems.map(menuItem => (
|
||||||
<div key={menuItem.key} className='mb-4'>
|
<div key={menuItem.key} className='mb-4'>
|
||||||
<div className='px-2 mb-[6px] text-xs font-medium text-gray-500'>{menuItem.name}</div>
|
<div className='px-2 mb-[6px] text-[10px] sm:text-xs font-medium text-gray-500'>{menuItem.name}</div>
|
||||||
<div>
|
<div>
|
||||||
{
|
{
|
||||||
menuItem.items.map(item => (
|
menuItem.items.map(item => (
|
||||||
|
@ -19,7 +19,7 @@ import LogoSite from '@/app/components/base/logo/logo-site'
|
|||||||
import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
|
import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'
|
||||||
|
|
||||||
const navClassName = `
|
const navClassName = `
|
||||||
flex items-center relative mr-3 px-3 h-9 rounded-xl
|
flex items-center relative mr-0 sm:mr-3 px-3 h-9 rounded-xl
|
||||||
font-medium text-sm
|
font-medium text-sm
|
||||||
cursor-pointer
|
cursor-pointer
|
||||||
`
|
`
|
||||||
|
@ -682,7 +682,7 @@ const Main: FC<IMainProps> = ({
|
|||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className='bg-gray-100 h-full'>
|
<div className='bg-gray-100 h-full flex flex-col'>
|
||||||
{!isInstalledApp && (
|
{!isInstalledApp && (
|
||||||
<Header
|
<Header
|
||||||
title={siteInfo.title}
|
title={siteInfo.title}
|
||||||
@ -719,8 +719,7 @@ const Main: FC<IMainProps> = ({
|
|||||||
)}
|
)}
|
||||||
{/* main */}
|
{/* main */}
|
||||||
<div className={cn(
|
<div className={cn(
|
||||||
isInstalledApp ? 'h-full' : 'h-[calc(100vh_-_3rem)] tablet:h-screen',
|
'h-full flex-grow flex flex-col overflow-y-auto',
|
||||||
'flex-grow flex flex-col overflow-y-auto',
|
|
||||||
)
|
)
|
||||||
}>
|
}>
|
||||||
<ConfigSence
|
<ConfigSence
|
||||||
|
@ -8,6 +8,7 @@ import './styles/markdown.scss'
|
|||||||
|
|
||||||
export const metadata = {
|
export const metadata = {
|
||||||
title: 'Dify',
|
title: 'Dify',
|
||||||
|
viewport: 'width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, user-scalable=no',
|
||||||
}
|
}
|
||||||
|
|
||||||
const LocaleLayout = ({
|
const LocaleLayout = ({
|
||||||
@ -19,6 +20,12 @@ const LocaleLayout = ({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<html lang={locale ?? 'en'} className="h-full">
|
<html lang={locale ?? 'en'} className="h-full">
|
||||||
|
<head>
|
||||||
|
<meta name="theme-color" content="#FFFFFF" />
|
||||||
|
<meta name="mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||||
|
<meta name="apple-mobile-web-app-status-bar-style" content="default" />
|
||||||
|
</head>
|
||||||
<body
|
<body
|
||||||
className="h-full select-auto"
|
className="h-full select-auto"
|
||||||
data-api-prefix={process.env.NEXT_PUBLIC_API_PREFIX}
|
data-api-prefix={process.env.NEXT_PUBLIC_API_PREFIX}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user