toast lokasyonu top-end olarak değiştirildi.
This commit is contained in:
parent
f2a75eb20f
commit
7c43ed600f
36 changed files with 409 additions and 364 deletions
|
|
@ -1,5 +1,5 @@
|
|||
import { useState, useEffect, useCallback } from 'react'
|
||||
import { FaThLarge } from 'react-icons/fa';
|
||||
import { FaThLarge } from 'react-icons/fa'
|
||||
import {
|
||||
parseReactCode,
|
||||
updateComponentProp,
|
||||
|
|
@ -82,7 +82,7 @@ function CodeLayout() {
|
|||
"Bileşen başarıyla kaydedildi."
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,36 +5,36 @@ import { themeConfig } from '@/configs/theme.config'
|
|||
import { useStoreState } from '@/store'
|
||||
|
||||
const CopyButton = () => {
|
||||
const theme = useStoreState((state) => state.theme)
|
||||
const theme = useStoreState((state) => state.theme)
|
||||
|
||||
const handleCopy = () => {
|
||||
const config = {
|
||||
...themeConfig,
|
||||
...theme,
|
||||
layout: {
|
||||
type: theme.layout.type,
|
||||
sideNavCollapse: theme.layout.sideNavCollapse,
|
||||
},
|
||||
panelExpand: false,
|
||||
}
|
||||
|
||||
navigator.clipboard.writeText(JSON.stringify(config, null, 2))
|
||||
|
||||
toast.push(
|
||||
<Notification title="Copy Success" type="success">
|
||||
{`Please replace themeConfig in 'src/configs/themeConfig.js'`}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
}
|
||||
)
|
||||
const handleCopy = () => {
|
||||
const config = {
|
||||
...themeConfig,
|
||||
...theme,
|
||||
layout: {
|
||||
type: theme.layout.type,
|
||||
sideNavCollapse: theme.layout.sideNavCollapse,
|
||||
},
|
||||
panelExpand: false,
|
||||
}
|
||||
|
||||
return (
|
||||
<Button block variant="solid" onClick={handleCopy}>
|
||||
Copy config
|
||||
</Button>
|
||||
navigator.clipboard.writeText(JSON.stringify(config, null, 2))
|
||||
|
||||
toast.push(
|
||||
<Notification title="Copy Success" type="success">
|
||||
{`Please replace themeConfig in 'src/configs/themeConfig.js'`}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
return (
|
||||
<Button block variant="solid" onClick={handleCopy}>
|
||||
Copy config
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
export default CopyButton
|
||||
|
|
|
|||
|
|
@ -11,230 +11,224 @@ import type { CommonProps } from '../@types/common'
|
|||
import type { ReactNode, ChangeEvent, MouseEvent } from 'react'
|
||||
|
||||
export interface UploadProps extends CommonProps {
|
||||
accept?: string
|
||||
beforeUpload?: (file: FileList | null, fileList: File[]) => boolean | string
|
||||
disabled?: boolean
|
||||
draggable?: boolean
|
||||
fileList?: File[]
|
||||
fileListClass?: string
|
||||
fileItemClass?: string
|
||||
multiple?: boolean
|
||||
onChange?: (file: File[], fileList: File[]) => void
|
||||
onFileRemove?: (file: File[]) => void
|
||||
showList?: boolean
|
||||
tip?: string | ReactNode
|
||||
uploadLimit?: number
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
field?: any
|
||||
accept?: string
|
||||
beforeUpload?: (file: FileList | null, fileList: File[]) => boolean | string
|
||||
disabled?: boolean
|
||||
draggable?: boolean
|
||||
fileList?: File[]
|
||||
fileListClass?: string
|
||||
fileItemClass?: string
|
||||
multiple?: boolean
|
||||
onChange?: (file: File[], fileList: File[]) => void
|
||||
onFileRemove?: (file: File[]) => void
|
||||
showList?: boolean
|
||||
tip?: string | ReactNode
|
||||
uploadLimit?: number
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
field?: any
|
||||
}
|
||||
|
||||
const filesToArray = (files: File[]) =>
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
Object.keys(files).map((key) => files[key as any])
|
||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||
Object.keys(files).map((key) => files[key as any])
|
||||
|
||||
const Upload = forwardRef<HTMLDivElement, UploadProps>((props, ref) => {
|
||||
const {
|
||||
accept,
|
||||
beforeUpload,
|
||||
disabled = false,
|
||||
draggable = false,
|
||||
fileList = [],
|
||||
fileListClass,
|
||||
fileItemClass,
|
||||
multiple,
|
||||
onChange,
|
||||
onFileRemove,
|
||||
showList = true,
|
||||
tip,
|
||||
uploadLimit,
|
||||
children,
|
||||
className,
|
||||
field,
|
||||
...rest
|
||||
} = props
|
||||
const {
|
||||
accept,
|
||||
beforeUpload,
|
||||
disabled = false,
|
||||
draggable = false,
|
||||
fileList = [],
|
||||
fileListClass,
|
||||
fileItemClass,
|
||||
multiple,
|
||||
onChange,
|
||||
onFileRemove,
|
||||
showList = true,
|
||||
tip,
|
||||
uploadLimit,
|
||||
children,
|
||||
className,
|
||||
field,
|
||||
...rest
|
||||
} = props
|
||||
|
||||
const fileInputField = useRef<HTMLInputElement>(null)
|
||||
const [files, setFiles] = useState(fileList)
|
||||
const [dragOver, setDragOver] = useState(false)
|
||||
const fileInputField = useRef<HTMLInputElement>(null)
|
||||
const [files, setFiles] = useState(fileList)
|
||||
const [dragOver, setDragOver] = useState(false)
|
||||
|
||||
const { themeColor, primaryColorLevel } = useConfig()
|
||||
const { themeColor, primaryColorLevel } = useConfig()
|
||||
|
||||
useEffect(() => {
|
||||
if (JSON.stringify(files) !== JSON.stringify(fileList)) {
|
||||
setFiles(fileList)
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [JSON.stringify(fileList)])
|
||||
useEffect(() => {
|
||||
if (JSON.stringify(files) !== JSON.stringify(fileList)) {
|
||||
setFiles(fileList)
|
||||
}
|
||||
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||
}, [JSON.stringify(fileList)])
|
||||
|
||||
const triggerMessage = (msg: string | ReactNode = '') => {
|
||||
toast.push(
|
||||
<Notification type="danger" duration={2000}>
|
||||
{msg || 'Upload Failed!'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
}
|
||||
)
|
||||
const triggerMessage = (msg: string | ReactNode = '') => {
|
||||
toast.push(
|
||||
<Notification type="danger" duration={2000}>
|
||||
{msg || 'Upload Failed!'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
const pushFile = (newFiles: FileList | null, file: File[]) => {
|
||||
if (newFiles) {
|
||||
for (const f of newFiles) {
|
||||
file.push(f)
|
||||
}
|
||||
}
|
||||
|
||||
const pushFile = (newFiles: FileList | null, file: File[]) => {
|
||||
if (newFiles) {
|
||||
for (const f of newFiles) {
|
||||
file.push(f)
|
||||
}
|
||||
return file
|
||||
}
|
||||
|
||||
const addNewFiles = (newFiles: FileList | null) => {
|
||||
let file = cloneDeep(files)
|
||||
if (typeof uploadLimit === 'number' && uploadLimit !== 0) {
|
||||
if (Object.keys(file).length >= uploadLimit) {
|
||||
if (uploadLimit === 1) {
|
||||
file.shift()
|
||||
file = pushFile(newFiles, file)
|
||||
}
|
||||
|
||||
return file
|
||||
}
|
||||
|
||||
const addNewFiles = (newFiles: FileList | null) => {
|
||||
let file = cloneDeep(files)
|
||||
if (typeof uploadLimit === 'number' && uploadLimit !== 0) {
|
||||
if (Object.keys(file).length >= uploadLimit) {
|
||||
if (uploadLimit === 1) {
|
||||
file.shift()
|
||||
file = pushFile(newFiles, file)
|
||||
}
|
||||
|
||||
return filesToArray({ ...file })
|
||||
}
|
||||
}
|
||||
file = pushFile(newFiles, file)
|
||||
return filesToArray({ ...file })
|
||||
}
|
||||
}
|
||||
file = pushFile(newFiles, file)
|
||||
return filesToArray({ ...file })
|
||||
}
|
||||
|
||||
const onNewFileUpload = (e: ChangeEvent<HTMLInputElement>) => {
|
||||
const { files: newFiles } = e.target
|
||||
let result: boolean | string = true
|
||||
|
||||
if (beforeUpload) {
|
||||
result = beforeUpload(newFiles, files)
|
||||
|
||||
if (result === false) {
|
||||
triggerMessage()
|
||||
return
|
||||
}
|
||||
|
||||
if (typeof result === 'string' && result.length > 0) {
|
||||
triggerMessage(result)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
const onNewFileUpload = (e: ChangeEvent<HTMLInputElement>) => {
|
||||
const { files: newFiles } = e.target
|
||||
let result: boolean | string = true
|
||||
if (result) {
|
||||
const updatedFiles = addNewFiles(newFiles)
|
||||
setFiles(updatedFiles)
|
||||
onChange?.(updatedFiles, files)
|
||||
}
|
||||
}
|
||||
|
||||
if (beforeUpload) {
|
||||
result = beforeUpload(newFiles, files)
|
||||
const removeFile = (fileIndex: number) => {
|
||||
const deletedFileList = files.filter((_, index) => index !== fileIndex)
|
||||
setFiles(deletedFileList)
|
||||
onFileRemove?.(deletedFileList)
|
||||
}
|
||||
|
||||
if (result === false) {
|
||||
triggerMessage()
|
||||
return
|
||||
}
|
||||
const triggerUpload = (e: MouseEvent<HTMLDivElement>) => {
|
||||
if (!disabled) {
|
||||
fileInputField.current?.click()
|
||||
}
|
||||
e.stopPropagation()
|
||||
}
|
||||
|
||||
if (typeof result === 'string' && result.length > 0) {
|
||||
triggerMessage(result)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
if (result) {
|
||||
const updatedFiles = addNewFiles(newFiles)
|
||||
setFiles(updatedFiles)
|
||||
onChange?.(updatedFiles, files)
|
||||
}
|
||||
const renderChildren = () => {
|
||||
if (!draggable && !children) {
|
||||
return (
|
||||
<Button disabled={disabled} onClick={(e) => e.preventDefault()}>
|
||||
Upload
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
const removeFile = (fileIndex: number) => {
|
||||
const deletedFileList = files.filter((_, index) => index !== fileIndex)
|
||||
setFiles(deletedFileList)
|
||||
onFileRemove?.(deletedFileList)
|
||||
if (draggable && !children) {
|
||||
return <span>Choose a file or drag and drop here</span>
|
||||
}
|
||||
|
||||
const triggerUpload = (e: MouseEvent<HTMLDivElement>) => {
|
||||
if (!disabled) {
|
||||
fileInputField.current?.click()
|
||||
}
|
||||
e.stopPropagation()
|
||||
return children
|
||||
}
|
||||
|
||||
const handleDragLeave = useCallback(() => {
|
||||
if (draggable) {
|
||||
setDragOver(false)
|
||||
}
|
||||
}, [draggable])
|
||||
|
||||
const renderChildren = () => {
|
||||
if (!draggable && !children) {
|
||||
return (
|
||||
<Button disabled={disabled} onClick={(e) => e.preventDefault()}>
|
||||
Upload
|
||||
</Button>
|
||||
)
|
||||
}
|
||||
|
||||
if (draggable && !children) {
|
||||
return <span>Choose a file or drag and drop here</span>
|
||||
}
|
||||
|
||||
return children
|
||||
const handleDragOver = useCallback(() => {
|
||||
if (draggable && !disabled) {
|
||||
setDragOver(true)
|
||||
}
|
||||
}, [draggable, disabled])
|
||||
|
||||
const handleDragLeave = useCallback(() => {
|
||||
if (draggable) {
|
||||
setDragOver(false)
|
||||
}
|
||||
}, [draggable])
|
||||
|
||||
const handleDragOver = useCallback(() => {
|
||||
if (draggable && !disabled) {
|
||||
setDragOver(true)
|
||||
}
|
||||
}, [draggable, disabled])
|
||||
|
||||
const handleDrop = useCallback(() => {
|
||||
if (draggable) {
|
||||
setDragOver(false)
|
||||
}
|
||||
}, [draggable])
|
||||
|
||||
const draggableProp = {
|
||||
onDragLeave: handleDragLeave,
|
||||
onDragOver: handleDragOver,
|
||||
onDrop: handleDrop,
|
||||
const handleDrop = useCallback(() => {
|
||||
if (draggable) {
|
||||
setDragOver(false)
|
||||
}
|
||||
}, [draggable])
|
||||
|
||||
const draggableEventFeedbackClass = `border-${themeColor}-${primaryColorLevel}`
|
||||
const draggableProp = {
|
||||
onDragLeave: handleDragLeave,
|
||||
onDragOver: handleDragOver,
|
||||
onDrop: handleDrop,
|
||||
}
|
||||
|
||||
const uploadClass = classNames(
|
||||
'upload',
|
||||
draggable && `upload-draggable`,
|
||||
draggable && !disabled && `hover:${draggableEventFeedbackClass}`,
|
||||
draggable && disabled && 'disabled',
|
||||
dragOver && draggableEventFeedbackClass,
|
||||
className
|
||||
)
|
||||
const draggableEventFeedbackClass = `border-${themeColor}-${primaryColorLevel}`
|
||||
|
||||
const uploadInputClass = classNames(
|
||||
'upload-input',
|
||||
draggable && `draggable`
|
||||
)
|
||||
const uploadClass = classNames(
|
||||
'upload',
|
||||
draggable && `upload-draggable`,
|
||||
draggable && !disabled && `hover:${draggableEventFeedbackClass}`,
|
||||
draggable && disabled && 'disabled',
|
||||
dragOver && draggableEventFeedbackClass,
|
||||
className,
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<div
|
||||
ref={ref}
|
||||
className={uploadClass}
|
||||
{...(draggable ? draggableProp : { onClick: triggerUpload })}
|
||||
{...rest}
|
||||
>
|
||||
<input
|
||||
ref={fileInputField}
|
||||
className={uploadInputClass}
|
||||
type="file"
|
||||
disabled={disabled}
|
||||
multiple={multiple}
|
||||
accept={accept}
|
||||
title=""
|
||||
value=""
|
||||
onChange={onNewFileUpload}
|
||||
{...field}
|
||||
{...rest}
|
||||
></input>
|
||||
{renderChildren()}
|
||||
</div>
|
||||
{tip}
|
||||
{showList && (
|
||||
<div className={classNames('upload-file-list', fileListClass)}>
|
||||
{files.map((file, index) => (
|
||||
<FileItem key={file.name + index} file={file} className={fileItemClass}>
|
||||
<CloseButton
|
||||
className="upload-file-remove"
|
||||
onClick={() => removeFile(index)}
|
||||
/>
|
||||
</FileItem>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)
|
||||
const uploadInputClass = classNames('upload-input', draggable && `draggable`)
|
||||
|
||||
return (
|
||||
<>
|
||||
<div
|
||||
ref={ref}
|
||||
className={uploadClass}
|
||||
{...(draggable ? draggableProp : { onClick: triggerUpload })}
|
||||
{...rest}
|
||||
>
|
||||
<input
|
||||
ref={fileInputField}
|
||||
className={uploadInputClass}
|
||||
type="file"
|
||||
disabled={disabled}
|
||||
multiple={multiple}
|
||||
accept={accept}
|
||||
title=""
|
||||
value=""
|
||||
onChange={onNewFileUpload}
|
||||
{...field}
|
||||
{...rest}
|
||||
></input>
|
||||
{renderChildren()}
|
||||
</div>
|
||||
{tip}
|
||||
{showList && (
|
||||
<div className={classNames('upload-file-list', fileListClass)}>
|
||||
{files.map((file, index) => (
|
||||
<FileItem key={file.name + index} file={file} className={fileItemClass}>
|
||||
<CloseButton className="upload-file-remove" onClick={() => removeFile(index)} />
|
||||
</FileItem>
|
||||
))}
|
||||
</div>
|
||||
)}
|
||||
</>
|
||||
)
|
||||
})
|
||||
|
||||
Upload.displayName = 'Upload'
|
||||
|
|
|
|||
|
|
@ -14,7 +14,11 @@ export abstract class UiEvalService {
|
|||
const { texts, config } = state.abpConfig
|
||||
|
||||
// Create translate function similar to useLocalization hook
|
||||
const translate = (localizationKey: string, params?: Record<string, string | number>, defaultResourceName?: string): string => {
|
||||
const translate = (
|
||||
localizationKey: string,
|
||||
params?: Record<string, string | number>,
|
||||
defaultResourceName?: string,
|
||||
): string => {
|
||||
if (!texts) {
|
||||
return localizationKey
|
||||
}
|
||||
|
|
@ -22,7 +26,7 @@ export abstract class UiEvalService {
|
|||
texts,
|
||||
defaultResourceName ?? config?.localization?.defaultResourceName,
|
||||
localizationKey,
|
||||
params
|
||||
params,
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -37,7 +41,7 @@ export abstract class UiEvalService {
|
|||
{translate('::App.BackgroundWorkers.Message')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,7 +100,7 @@ export class SignalRService {
|
|||
this.connection.onreconnected(async () => {
|
||||
this.isConnected = true
|
||||
toast.push(<Notification title="🔄 Bağlantı tekrar kuruldu" type="success" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
|
||||
if (this.currentSessionId && store.getState().auth.user) {
|
||||
|
|
@ -113,7 +113,7 @@ export class SignalRService {
|
|||
if (this.isKicked) {
|
||||
toast.push(
|
||||
<Notification title="⚠️ Bağlantı koptu, yeniden bağlanılıyor..." type="warning" />,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
this.isConnected = false
|
||||
this.currentSessionId = undefined
|
||||
|
|
@ -132,19 +132,19 @@ export class SignalRService {
|
|||
|
||||
this.connection.on('Error', (message: string) => {
|
||||
toast.push(<Notification title={`❌ Hata: ${message}`} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
})
|
||||
|
||||
this.connection.on('Warning', (message: string) => {
|
||||
toast.push(<Notification title={`⚠️ Uyarı: ${message}`} type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
})
|
||||
|
||||
this.connection.on('Info', (message: string) => {
|
||||
toast.push(<Notification title={`ℹ️ Bilgi: ${message}`} type="info" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
})
|
||||
|
||||
|
|
@ -164,7 +164,7 @@ export class SignalRService {
|
|||
this.connection.on('ForceDisconnect', async (message: string) => {
|
||||
this.isKicked = true
|
||||
toast.push(<Notification title={`❌ Sınıftan çıkarıldınız: ${message}`} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
|
||||
if (this.onForceCleanup) {
|
||||
|
|
@ -200,7 +200,7 @@ export class SignalRService {
|
|||
await Promise.race([startPromise, timeout])
|
||||
this.isConnected = true
|
||||
toast.push(<Notification title="✅ Bağlantı kuruldu" type="success" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
} catch {
|
||||
toast.push(
|
||||
|
|
@ -208,7 +208,7 @@ export class SignalRService {
|
|||
title="⚠️ Sunucuya bağlanılamadı. Lütfen sayfayı yenileyin veya internet bağlantınızı kontrol edin."
|
||||
type="danger"
|
||||
/>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
this.isConnected = false
|
||||
}
|
||||
|
|
@ -236,7 +236,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('JoinClass', sessionId, userId, userName, isTeacher, isActive)
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Sınıfa katılamadı" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -254,7 +254,7 @@ export class SignalRService {
|
|||
this.currentSessionId = undefined
|
||||
} catch {
|
||||
toast.push(<Notification title="⚠️ Çıkış başarısız" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -295,7 +295,7 @@ export class SignalRService {
|
|||
)
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Mesaj gönderilemedi" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -342,7 +342,7 @@ export class SignalRService {
|
|||
)
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Özel mesaj gönderilemedi" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -382,7 +382,7 @@ export class SignalRService {
|
|||
)
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Duyuru gönderilemedi" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -404,7 +404,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('MuteParticipant', sessionId, userId, isMuted, isTeacher)
|
||||
} catch {
|
||||
toast.push(<Notification title="⚠️ Katılımcı susturulamadı" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -421,7 +421,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('RaiseHand', sessionId, studentId, studentName)
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ El kaldırma başarısız" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -438,7 +438,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('KickParticipant', sessionId, participantId)
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Katılımcı atılamadı" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -455,7 +455,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('ApproveHandRaise', sessionId, studentId)
|
||||
} catch {
|
||||
toast.push(<Notification title="⚠️ El kaldırma onayı başarısız" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -472,7 +472,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('DismissHandRaise', sessionId, studentId)
|
||||
} catch {
|
||||
toast.push(<Notification title="⚠️ El indirme başarısız" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -552,7 +552,7 @@ export class SignalRService {
|
|||
await this.connection.invoke('LeaveClass', this.currentSessionId)
|
||||
} catch {
|
||||
toast.push(<Notification title="⚠️ Bağlantı koparılırken hata" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ export class WebRTCService {
|
|||
title="❌ Kamera/Mikrofon erişilemedi. Tarayıcı ayarlarınızı veya izinleri kontrol edin."
|
||||
type="danger"
|
||||
/>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
throw new Error('Media devices access failed')
|
||||
}
|
||||
|
|
@ -104,7 +105,7 @@ export class WebRTCService {
|
|||
title={`❌ Bağlantı kurulamadı (${this.maxRetries} deneme başarısız).`}
|
||||
type="danger"
|
||||
/>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
this.closePeerConnection(userId)
|
||||
}
|
||||
|
|
@ -149,7 +150,7 @@ export class WebRTCService {
|
|||
return offer
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Offer oluşturulamadı" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
throw new Error('Offer creation failed')
|
||||
}
|
||||
|
|
@ -169,7 +170,7 @@ export class WebRTCService {
|
|||
return answer
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Answer oluşturulamadı" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
throw new Error('Answer creation failed')
|
||||
}
|
||||
|
|
@ -237,7 +238,7 @@ export class WebRTCService {
|
|||
}
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Kamera açılamadı" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -266,7 +267,7 @@ export class WebRTCService {
|
|||
}
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ Mikrofon açılamadı" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -285,12 +286,12 @@ export class WebRTCService {
|
|||
await this.signalRService.sendOffer(this.sessionId, userId, offer)
|
||||
} else {
|
||||
toast.push(<Notification title="⚠️ Tekrar bağlanma başarısız" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
} catch {
|
||||
toast.push(<Notification title="❌ ICE restart başarısız" type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -344,7 +345,7 @@ export class WebRTCService {
|
|||
pc.removeTrack(sender)
|
||||
} catch {
|
||||
toast.push(<Notification title="⚠️ Track silinemedi" type="warning" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
if (sender.track?.readyState !== 'ended') {
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ const useListFormColumns = ({
|
|||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
return null
|
||||
|
|
@ -231,7 +231,7 @@ const useListFormColumns = ({
|
|||
// {'Lookup Datası boş geldi.'}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
return
|
||||
|
|
@ -252,7 +252,7 @@ const useListFormColumns = ({
|
|||
// {'Network error'}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
return
|
||||
|
|
|
|||
|
|
@ -97,7 +97,7 @@ const useListFormCustomDataSource = ({
|
|||
// {'multiValue Error'}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
console.log('multiValue Error', e)
|
||||
|
|
@ -132,7 +132,7 @@ const useListFormCustomDataSource = ({
|
|||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
return null
|
||||
|
|
@ -156,7 +156,7 @@ const useListFormCustomDataSource = ({
|
|||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
return null
|
||||
|
|
@ -178,7 +178,7 @@ const useListFormCustomDataSource = ({
|
|||
// {error.toString()}
|
||||
// </Notification>,
|
||||
// {
|
||||
// placement: 'top-center',
|
||||
// placement: 'top-end',
|
||||
// },
|
||||
// )
|
||||
return null
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ function ChartEdit() {
|
|||
{'Chart Bilgileri Kaydedildi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -3352,7 +3352,7 @@ function ChartEdit() {
|
|||
: 'Kayıt Değiştirildi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -3460,7 +3460,7 @@ function ChartEdit() {
|
|||
: 'Kayıt Değiştirildi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -3757,7 +3757,7 @@ function ChartEdit() {
|
|||
: 'Kayıt Değiştirildi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -4093,7 +4093,7 @@ function ChartEdit() {
|
|||
: 'Kayıt Değiştirildi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -4389,7 +4389,7 @@ function ChartEdit() {
|
|||
{translate('::ListForms.KayitSilindi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ const Wizard = () => {
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
setSubmitting(false)
|
||||
|
|
@ -163,7 +163,7 @@ const Wizard = () => {
|
|||
}, 500)
|
||||
} catch (error: any) {
|
||||
toast.push(<Notification title={error.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@ import { SelectBoxOption } from '@/shared/types'
|
|||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import { Field, FieldProps, Form, Formik } from 'formik'
|
||||
import { useState } from 'react'
|
||||
import { FaEdit, FaFileMedical, FaTrash } from 'react-icons/fa';
|
||||
import { FaEdit, FaFileMedical, FaTrash } from 'react-icons/fa'
|
||||
import * as Yup from 'yup'
|
||||
import { listFormCustomizationOptions } from './options'
|
||||
import { IdentityRoleDto, IdentityUserDto } from '@/proxy/admin/models'
|
||||
|
|
@ -170,7 +170,7 @@ function FormCustomization({
|
|||
: translate('::ListForms.KayitEklendi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
setRow(null)
|
||||
|
|
@ -180,6 +180,7 @@ function FormCustomization({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
@ -335,7 +336,7 @@ function FormCustomization({
|
|||
{translate('::ListForms.KayitSilindi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
getListFormCustomizations()
|
||||
|
|
|
|||
|
|
@ -131,6 +131,7 @@ const FormEdit = () => {
|
|||
<Notification type="success" duration={2000}>
|
||||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} catch (error: any) {
|
||||
toast.push(
|
||||
|
|
@ -138,6 +139,7 @@ const FormEdit = () => {
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
formikHelpers.setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ import { useLocalization } from '@/utils/hooks/useLocalization'
|
|||
import setNull from '@/utils/setNull'
|
||||
import { Field, FieldProps, Form, Formik } from 'formik'
|
||||
import { useState } from 'react'
|
||||
import { FaEdit, FaPlusSquare, FaCheck, FaTrashAlt } from 'react-icons/fa';
|
||||
import { FaEdit, FaPlusSquare, FaCheck, FaTrashAlt } from 'react-icons/fa'
|
||||
import { object, string } from 'yup'
|
||||
import { columnRowTypeListOptions, columnValidationComparisonTypeListOptions } from '../options'
|
||||
import { FormFieldEditProps } from './FormFields'
|
||||
|
|
@ -141,7 +141,7 @@ function FormFieldTabConditionalFormatting({
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
handleClose()
|
||||
|
|
@ -151,6 +151,7 @@ function FormFieldTabConditionalFormatting({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
}
|
||||
}}
|
||||
|
|
@ -200,7 +201,7 @@ function FormFieldTabConditionalFormatting({
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
handleClose()
|
||||
|
|
@ -210,6 +211,7 @@ function FormFieldTabConditionalFormatting({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ import { useLocalization } from '@/utils/hooks/useLocalization'
|
|||
import setNull from '@/utils/setNull'
|
||||
import { Field, FieldProps, Form, Formik } from 'formik'
|
||||
import { useState } from 'react'
|
||||
import { FaEdit, FaPlusSquare, FaCheck, FaTrashAlt } from 'react-icons/fa';
|
||||
import { FaEdit, FaPlusSquare, FaCheck, FaTrashAlt } from 'react-icons/fa'
|
||||
import { bool, object, string } from 'yup'
|
||||
import {
|
||||
columnValidationComparisonTypeListOptions,
|
||||
|
|
@ -159,6 +159,7 @@ function FormFieldTabValidationRules({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
}
|
||||
}}
|
||||
|
|
@ -210,7 +211,7 @@ function FormFieldTabValidationRules({
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
handleClose()
|
||||
|
|
@ -220,6 +221,7 @@ function FormFieldTabValidationRules({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ import setNull from '@/utils/setNull'
|
|||
import classNames from 'classnames'
|
||||
import { Field, FieldProps, Form, Formik, FormikHelpers } from 'formik'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { FaFileMedical, FaCopy, FaEyeSlash, FaMinus, FaTimes } from 'react-icons/fa';
|
||||
import { FaFileMedical, FaCopy, FaEyeSlash, FaMinus, FaTimes } from 'react-icons/fa'
|
||||
import { number, object, string } from 'yup'
|
||||
import FormFieldEdit from './FormFieldEdit'
|
||||
import { dbSourceTypeOptions } from '../options'
|
||||
|
|
@ -142,7 +142,7 @@ function FormFields({
|
|||
{error.toString()}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -179,6 +179,7 @@ function FormFields({
|
|||
<Notification type="success" duration={2000}>
|
||||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} catch (error: any) {
|
||||
toast.push(
|
||||
|
|
@ -186,6 +187,7 @@ function FormFields({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
formikHelpers?.setSubmitting(false)
|
||||
|
|
@ -222,6 +224,7 @@ function FormFields({
|
|||
<Notification type="success" duration={100}>
|
||||
{'Alanlar geldi'}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
})
|
||||
setSubmitting(false)
|
||||
|
|
@ -424,7 +427,7 @@ function FormFields({
|
|||
: translate('::ListForms.KayitEklendi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
handleNewFieldFormClose()
|
||||
|
|
@ -434,6 +437,7 @@ function FormFields({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
@ -588,7 +592,7 @@ function FormFields({
|
|||
{translate('::ListForms.KayitSilindi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
getFields()
|
||||
|
|
@ -642,7 +646,7 @@ function FormFields({
|
|||
await postListFormFieldCopy({ ...values })
|
||||
|
||||
toast.push(<Notification type="success">{'Field Kopyalandı.'}</Notification>, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
handleCopyFieldFormClose()
|
||||
} catch (error: any) {
|
||||
|
|
@ -651,6 +655,7 @@ function FormFields({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -137,6 +137,7 @@ function JsonRowOpDialogCommand({
|
|||
<Notification type="success">
|
||||
{data.index === -1 ? 'Kayıt eklendi' : 'Kayıt güncellendi'}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
handleClose()
|
||||
} catch (error: any) {
|
||||
|
|
@ -145,6 +146,7 @@ function JsonRowOpDialogCommand({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
@ -355,7 +357,9 @@ function JsonRowOpDialogCommand({
|
|||
setSubmitting(true)
|
||||
try {
|
||||
await deleteListFormJsonRow(data.id, data.tabName, values.index)
|
||||
toast.push(<Notification type="success">Kayıt silindi </Notification>)
|
||||
toast.push(<Notification type="success">Kayıt silindi </Notification>, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
handleClose()
|
||||
} catch (error: any) {
|
||||
toast.push(
|
||||
|
|
@ -363,6 +367,7 @@ function JsonRowOpDialogCommand({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -122,6 +122,7 @@ function JsonRowOpDialogDatabase({
|
|||
<Notification type="success">
|
||||
{data.index === -1 ? 'Kayıt eklendi' : 'Kayıt güncellendi'}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
handleClose()
|
||||
} catch (error: any) {
|
||||
|
|
@ -130,6 +131,7 @@ function JsonRowOpDialogDatabase({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
@ -252,7 +254,9 @@ function JsonRowOpDialogDatabase({
|
|||
setSubmitting(true)
|
||||
try {
|
||||
await deleteListFormJsonRow(data.id, data.tabName, values.index)
|
||||
toast.push(<Notification type="success">Kayıt silindi </Notification>)
|
||||
toast.push(<Notification type="success">Kayıt silindi </Notification>, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
handleClose()
|
||||
} catch (error: any) {
|
||||
toast.push(
|
||||
|
|
@ -260,6 +264,7 @@ function JsonRowOpDialogDatabase({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -18,11 +18,7 @@ import { useLocalization } from '@/utils/hooks/useLocalization'
|
|||
import { Field, FieldArray, FieldProps, Form, Formik } from 'formik'
|
||||
import groupBy from 'lodash/groupBy'
|
||||
import { Dispatch, SetStateAction, useEffect, useState } from 'react'
|
||||
import {
|
||||
FaCalendarPlus,
|
||||
FaCalendarMinus,
|
||||
FaTag,
|
||||
} from 'react-icons/fa'
|
||||
import { FaCalendarPlus, FaCalendarMinus, FaTag } from 'react-icons/fa'
|
||||
import { number, object, string } from 'yup'
|
||||
import {
|
||||
columnEditorTypeListOptions,
|
||||
|
|
@ -109,7 +105,7 @@ function JsonRowOpDialogEditForm({
|
|||
{error.toString()}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -181,6 +177,7 @@ function JsonRowOpDialogEditForm({
|
|||
<Notification type="success">
|
||||
{data.index === -1 ? 'Kayıt eklendi' : 'Kayıt güncellendi'}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
handleClose()
|
||||
} catch (error: any) {
|
||||
|
|
@ -189,6 +186,7 @@ function JsonRowOpDialogEditForm({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
@ -767,6 +765,7 @@ function JsonRowOpDialogEditForm({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -14,10 +14,7 @@ import { useStoreActions } from '@/store'
|
|||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import { Field, FieldArray, FieldProps, Form, Formik } from 'formik'
|
||||
import { Dispatch, SetStateAction } from 'react'
|
||||
import {
|
||||
FaCalendarPlus,
|
||||
FaCalendarMinus,
|
||||
} from 'react-icons/fa'
|
||||
import { FaCalendarPlus, FaCalendarMinus } from 'react-icons/fa'
|
||||
import { object, string } from 'yup'
|
||||
import { tabTypeOptions } from '../options'
|
||||
import { JsonRowDialogData } from './types'
|
||||
|
|
@ -107,6 +104,7 @@ function JsonRowOpDialogSubForm({
|
|||
<Notification type="success">
|
||||
{data.index === -1 ? 'Kayıt eklendi' : 'Kayıt güncellendi'}
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
handleClose()
|
||||
} catch (error: any) {
|
||||
|
|
@ -115,6 +113,7 @@ function JsonRowOpDialogSubForm({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
@ -281,6 +280,7 @@ function JsonRowOpDialogSubForm({
|
|||
Hata
|
||||
<code>{error}</code>
|
||||
</Notification>,
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -53,7 +53,7 @@ function CreateNotification({
|
|||
{translate('::Kaydet')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
onDialogClose()
|
||||
|
|
@ -63,7 +63,7 @@ function CreateNotification({
|
|||
{'Hata'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ const OrganizationUnits = () => {
|
|||
{translate('::Kaydet')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -239,7 +239,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -296,7 +296,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -332,7 +332,7 @@ const OrganizationUnits = () => {
|
|||
{translate('::Kaydet')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -343,7 +343,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -365,7 +365,7 @@ const OrganizationUnits = () => {
|
|||
{translate('::Kaydet')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -376,7 +376,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -781,7 +781,7 @@ const OrganizationUnits = () => {
|
|||
Updated
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
await fetchUsersAndRoles(activeOu)
|
||||
|
|
@ -792,7 +792,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -852,7 +852,7 @@ const OrganizationUnits = () => {
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
await fetchUsersAndRoles(activeOu)
|
||||
|
|
@ -863,7 +863,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -932,7 +932,7 @@ const OrganizationUnits = () => {
|
|||
{translate('::KayitSilindi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} catch (error) {
|
||||
|
|
@ -941,7 +941,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -979,7 +979,7 @@ const OrganizationUnits = () => {
|
|||
{translate('::Abp.Identity.OrganizationUnit.MoveAllUsersMessage')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
await fetchUsersAndRoles(values.id)
|
||||
|
|
@ -990,7 +990,7 @@ const OrganizationUnits = () => {
|
|||
Hata
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -19,7 +19,14 @@ import {
|
|||
CropperRef,
|
||||
} from 'react-advanced-cropper'
|
||||
import 'react-advanced-cropper/dist/style.css'
|
||||
import { FaFacebookMessenger, FaEnvelope, FaTrashAlt, FaUserCircle, FaPhone, FaPlus } from 'react-icons/fa';
|
||||
import {
|
||||
FaFacebookMessenger,
|
||||
FaEnvelope,
|
||||
FaTrashAlt,
|
||||
FaUserCircle,
|
||||
FaPhone,
|
||||
FaPlus,
|
||||
} from 'react-icons/fa'
|
||||
import * as Yup from 'yup'
|
||||
import isEmpty from 'lodash/isEmpty'
|
||||
import FormRow from '@/views/shared/FormRow'
|
||||
|
|
@ -112,11 +119,11 @@ const General = () => {
|
|||
})
|
||||
|
||||
toast.push(<Notification title={'Profil güncellendi'} type="success" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
} else {
|
||||
toast.push(<Notification title={resp?.error?.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ import { useLocalization } from '@/utils/hooks/useLocalization'
|
|||
import FormDesription from '@/views/shared/FormDesription'
|
||||
import FormRow from '@/views/shared/FormRow'
|
||||
import { Field, Form, Formik } from 'formik'
|
||||
import { FaDesktop, FaMobileAlt, FaTabletAlt } from 'react-icons/fa';
|
||||
import { FaDesktop, FaMobileAlt, FaTabletAlt } from 'react-icons/fa'
|
||||
import * as Yup from 'yup'
|
||||
|
||||
type LoginHistory = {
|
||||
|
|
@ -57,11 +57,11 @@ const Password = ({ data }: { data?: LoginHistory[] }) => {
|
|||
const resp = await changePassword(values.password, values.newPassword)
|
||||
if (resp.status === 204) {
|
||||
toast.push(<Notification title={'Password updated'} type="success" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
} else {
|
||||
toast.push(<Notification title={resp?.error?.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ const Roles = () => {
|
|||
toast.push(
|
||||
<RolesPermission open={true} name={'admin'} onDialogClose={() => {}}></RolesPermission>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}}
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ function TenantConnectionString({
|
|||
{translate('::AbpTenantManagement.Tenants.ConnectionStringDeleted')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
onDialogClose()
|
||||
|
|
@ -116,7 +116,7 @@ function TenantConnectionString({
|
|||
{'Hata'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -142,7 +142,7 @@ function TenantConnectionString({
|
|||
{translate('::AbpTenantManagement.Tenants.ConnectionStringSaved')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -154,7 +154,7 @@ function TenantConnectionString({
|
|||
{'Hata'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -181,7 +181,7 @@ function TenantConnectionString({
|
|||
{translate('::AbpTenantManagement.Tenants.DatabaseSeeded')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} catch (error) {
|
||||
|
|
@ -190,7 +190,7 @@ function TenantConnectionString({
|
|||
{'Hata'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,7 @@ import dayjs from 'dayjs'
|
|||
import { Field, FieldArray, FieldProps, Form, Formik, FormikHelpers } from 'formik'
|
||||
import { useEffect, useState } from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { FaLockOpen, FaUser, FaFileAlt, FaTrashAlt } from 'react-icons/fa';
|
||||
import { FaLockOpen, FaUser, FaFileAlt, FaTrashAlt } from 'react-icons/fa'
|
||||
import { useParams } from 'react-router-dom'
|
||||
import * as Yup from 'yup'
|
||||
import { SelectBoxOption } from '@/shared/types'
|
||||
|
|
@ -81,7 +81,7 @@ function UserDetails() {
|
|||
{translate('::Kaydet')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
setOpen(false)
|
||||
|
|
@ -92,7 +92,7 @@ function UserDetails() {
|
|||
{'Hata'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
@ -134,7 +134,7 @@ function UserDetails() {
|
|||
{translate('Kaydet')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -375,7 +375,7 @@ function UserDetails() {
|
|||
{'Lockout bilgileri kaydedildi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -752,7 +752,7 @@ function UserDetails() {
|
|||
<Notification type="success" duration={2000}>
|
||||
{translate('::Abp.Identity.User.ClaimDeleted')}
|
||||
</Notification>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
setConfirmDeleteClaim(null)
|
||||
getUser()
|
||||
|
|
|
|||
|
|
@ -104,7 +104,7 @@ const Users = () => {
|
|||
|
||||
updatePermissions(providerName, activeUser.id, { permissions: updatePermList })
|
||||
toast.push(<Notification title={'Permission updated'} type="success" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -285,7 +285,7 @@ const RoomDetail: React.FC = () => {
|
|||
if (!isActive) return
|
||||
|
||||
toast.push(<Notification title={`${name} sınıfa katıldı`} type="success" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
|
||||
// State’e ekle
|
||||
|
|
@ -370,7 +370,7 @@ const RoomDetail: React.FC = () => {
|
|||
title={`Katılımcı ayrıldı: ${userName ?? 'Bilinmeyen'}`}
|
||||
type="warning"
|
||||
/>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
}
|
||||
|
||||
|
|
@ -445,7 +445,7 @@ const RoomDetail: React.FC = () => {
|
|||
title="❌ Sınıf servisleri başlatılamadı. Bağlantınızı veya tarayıcı izinlerini kontrol edin."
|
||||
type="danger"
|
||||
/>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
@ -484,7 +484,9 @@ const RoomDetail: React.FC = () => {
|
|||
// Başka sayfaya yönlendir
|
||||
navigate(ROUTES_ENUM.protected.admin.classroom.classes)
|
||||
} catch (err) {
|
||||
toast.push(<Notification title="⚠️ Çıkış sırasında hata oluştu" type="warning" />)
|
||||
toast.push(<Notification title="⚠️ Çıkış sırasında hata oluştu" type="warning" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
navigate(ROUTES_ENUM.protected.admin.classroom.classes)
|
||||
}
|
||||
}
|
||||
|
|
@ -504,7 +506,9 @@ const RoomDetail: React.FC = () => {
|
|||
user.role === 'teacher',
|
||||
)
|
||||
} catch (error) {
|
||||
toast.push(<Notification title="❌ Özel mesaj gönderilemedi" type="danger" />)
|
||||
toast.push(<Notification title="❌ Özel mesaj gönderilemedi" type="danger" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
} else if (messageMode === 'announcement' && user.role === 'teacher') {
|
||||
try {
|
||||
|
|
@ -516,7 +520,9 @@ const RoomDetail: React.FC = () => {
|
|||
user.role === 'teacher',
|
||||
)
|
||||
} catch (error) {
|
||||
toast.push(<Notification title="❌ Duyuru gönderilemedi" type="danger" />)
|
||||
toast.push(<Notification title="❌ Duyuru gönderilemedi" type="danger" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
|
|
@ -528,7 +534,9 @@ const RoomDetail: React.FC = () => {
|
|||
user.role === 'teacher',
|
||||
)
|
||||
} catch (error) {
|
||||
toast.push(<Notification title="❌ Genel mesaj gönderilemedi" type="danger" />)
|
||||
toast.push(<Notification title="❌ Genel mesaj gönderilemedi" type="danger" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
setNewMessage('')
|
||||
|
|
@ -549,7 +557,9 @@ const RoomDetail: React.FC = () => {
|
|||
isTeacher,
|
||||
)
|
||||
} catch (err) {
|
||||
toast.push(<Notification title="❌ Katılımcı susturulamadı" type="danger" />)
|
||||
toast.push(<Notification title="❌ Katılımcı susturulamadı" type="danger" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -609,7 +619,9 @@ const RoomDetail: React.FC = () => {
|
|||
}),
|
||||
)
|
||||
} catch (error) {
|
||||
toast.push(<Notification title="❌ Katılımcı atılamadı" type="danger" />)
|
||||
toast.push(<Notification title="❌ Katılımcı atılamadı" type="danger" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -672,7 +684,9 @@ const RoomDetail: React.FC = () => {
|
|||
handleStopScreenShare()
|
||||
}
|
||||
} catch (error) {
|
||||
toast.push(<Notification title="❌ Ekran paylaşımı başlatılamadı" type="danger" />)
|
||||
toast.push(<Notification title="❌ Ekran paylaşımı başlatılamadı" type="danger" />, {
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ import navigationIcon from '@/configs/navigation-icon.config'
|
|||
import { useLocalization } from '@/utils/hooks/useLocalization'
|
||||
import CustomStore from 'devextreme/data/custom_store'
|
||||
import { useState } from 'react'
|
||||
import { FaPlus, FaTrash, FaEdit, FaFileAlt, FaSave } from 'react-icons/fa';
|
||||
import { FaPlus, FaTrash, FaEdit, FaFileAlt, FaSave } from 'react-icons/fa'
|
||||
import { useNavigate } from 'react-router-dom'
|
||||
import { GridColumnData } from '../list/GridColumnData'
|
||||
import { useToolbar } from '../list/useToolbar'
|
||||
|
|
@ -82,12 +82,12 @@ const FormButtons = (props: {
|
|||
{translate('::ListForms.FormBilgileriSilindi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} catch (error: any) {
|
||||
toast.push(<Notification title={error.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
} finally {
|
||||
setLoading(false)
|
||||
|
|
@ -200,7 +200,11 @@ const FormButtons = (props: {
|
|||
if (onActionEdit) {
|
||||
onActionEdit()
|
||||
} else {
|
||||
navigate(ROUTES_ENUM.protected.admin.formEdit.replace(':listFormCode', listFormCode).replace(':id', id!))
|
||||
navigate(
|
||||
ROUTES_ENUM.protected.admin.formEdit
|
||||
.replace(':listFormCode', listFormCode)
|
||||
.replace(':id', id!),
|
||||
)
|
||||
}
|
||||
}}
|
||||
{...(permissions.u ? {} : { disabled: true })}
|
||||
|
|
@ -217,7 +221,11 @@ const FormButtons = (props: {
|
|||
if (onActionView) {
|
||||
onActionView()
|
||||
} else {
|
||||
navigate(ROUTES_ENUM.protected.admin.formView.replace(':listFormCode', listFormCode).replace(':id', id!))
|
||||
navigate(
|
||||
ROUTES_ENUM.protected.admin.formView
|
||||
.replace(':listFormCode', listFormCode)
|
||||
.replace(':id', id!),
|
||||
)
|
||||
}
|
||||
}}
|
||||
{...(permissions.r ? {} : { disabled: true })}
|
||||
|
|
|
|||
|
|
@ -67,7 +67,7 @@ const useGridData = (props: {
|
|||
}
|
||||
} catch (error: any) {
|
||||
toast.push(<Notification title={error.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
} finally {
|
||||
setLoading(false)
|
||||
|
|
@ -101,7 +101,7 @@ const useGridData = (props: {
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
@ -139,7 +139,7 @@ const useGridData = (props: {
|
|||
{translate('::ListForms.FormBilgileriKaydedildi')}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} else {
|
||||
|
|
@ -148,7 +148,7 @@ const useGridData = (props: {
|
|||
}
|
||||
} catch (error: any) {
|
||||
toast.push(<Notification title={error.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
} finally {
|
||||
setLoading(false)
|
||||
|
|
|
|||
|
|
@ -319,7 +319,7 @@ const Grid = (props: GridProps) => {
|
|||
{e.error?.message}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
}
|
||||
|
|
@ -497,7 +497,7 @@ const Grid = (props: GridProps) => {
|
|||
<Notification type="danger" duration={2500}>
|
||||
{translate('::App.Common.ExportError') ?? 'Dışa aktarma sırasında hata oluştu.'}
|
||||
</Notification>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -80,7 +80,7 @@ const GridFilterDialogs = (props: {
|
|||
{'Filter not found'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
return
|
||||
|
|
@ -97,7 +97,7 @@ const GridFilterDialogs = (props: {
|
|||
{'Filter Saved'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
@ -152,7 +152,7 @@ const GridFilterDialogs = (props: {
|
|||
{'Filter Deleted'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -279,7 +279,7 @@ const useFilters = ({
|
|||
{error.message}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ const useToolbar = ({
|
|||
{'Tüm kayıtlar silindi.'}
|
||||
</Notification>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -20,11 +20,7 @@ import {
|
|||
import { Field, FieldProps, Form, Formik } from 'formik'
|
||||
import { SelectBoxOption } from '@/shared/types'
|
||||
import * as Yup from 'yup'
|
||||
import {
|
||||
FaExternalLinkAlt,
|
||||
FaPlus,
|
||||
FaTrashAlt
|
||||
} from 'react-icons/fa';
|
||||
import { FaExternalLinkAlt, FaPlus, FaTrashAlt } from 'react-icons/fa'
|
||||
import { MenuDto } from '@/proxy/menus/models'
|
||||
|
||||
interface MenuItemComponentProps {
|
||||
|
|
@ -194,7 +190,7 @@ export const MenuItemComponent: React.FC<MenuItemComponentProps> = ({
|
|||
<Notification title="Başarılı" type="success">
|
||||
{translate('::KayitEklendi')}
|
||||
</Notification>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
setIsModalOpen(false)
|
||||
refetch()
|
||||
|
|
@ -203,7 +199,7 @@ export const MenuItemComponent: React.FC<MenuItemComponentProps> = ({
|
|||
<Notification title="Hata" type="danger">
|
||||
{translate('::IslemBasarisiz')}
|
||||
</Notification>,
|
||||
{ placement: 'top-center' },
|
||||
{ placement: 'top-end' },
|
||||
)
|
||||
} finally {
|
||||
setSubmitting(false)
|
||||
|
|
|
|||
|
|
@ -21,7 +21,7 @@ import { Field, FieldProps, Form, Formik } from 'formik'
|
|||
import isEmpty from 'lodash/isEmpty'
|
||||
import { useEffect, useMemo, useState } from 'react'
|
||||
import { Helmet } from 'react-helmet'
|
||||
import { FaQuestionCircle } from 'react-icons/fa';
|
||||
import { FaQuestionCircle } from 'react-icons/fa'
|
||||
|
||||
type Option = {
|
||||
value: string
|
||||
|
|
@ -76,17 +76,17 @@ const Settings = () => {
|
|||
title={
|
||||
translate('::' + activeGroupName) +
|
||||
' ' +
|
||||
translate('::SuccessfullySaved', 'AbpSettingManagement')
|
||||
translate('AbpSettingManagement::SuccessfullySaved')
|
||||
}
|
||||
type="success"
|
||||
/>,
|
||||
{
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
},
|
||||
)
|
||||
} else {
|
||||
toast.push(<Notification title={resp?.error?.message} type="danger" />, {
|
||||
placement: 'top-center',
|
||||
placement: 'top-end',
|
||||
})
|
||||
}
|
||||
//getConfig değiştiriliyor.
|
||||
|
|
|
|||
Loading…
Reference in a new issue