1
0
Fork 0
mirror of https://github.com/portainer/portainer.git synced 2025-07-25 08:19:40 +02:00

refactor(settings): migrate helm cert panel to react [EE-5505] (#9132)

This commit is contained in:
Chaim Lev-Ari 2023-06-29 13:31:17 +07:00 committed by GitHub
parent c452de82b7
commit f293ea41d3
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
19 changed files with 268 additions and 70 deletions

View file

@ -14,6 +14,7 @@ export interface Props {
required?: boolean;
inputId: string;
color?: ComponentProps<typeof Button>['color'];
name?: string;
}
export function FileUploadField({
@ -24,6 +25,7 @@ export function FileUploadField({
required = false,
inputId,
color = 'primary',
name,
}: Props) {
const fileRef = createRef<HTMLInputElement>();
@ -38,6 +40,7 @@ export function FileUploadField({
className={styles.fileInput}
onChange={changeHandler}
aria-label="file-input"
name={name}
/>
<Button
size="small"

View file

@ -0,0 +1,34 @@
import { PropsWithChildren } from 'react';
import { LoadingButton } from '@@/buttons';
interface Props {
submitLabel: string;
loadingText: string;
isLoading: boolean;
isValid: boolean;
}
export function FormActions({
submitLabel = 'Save',
loadingText = 'Saving',
isLoading,
children,
isValid,
}: PropsWithChildren<Props>) {
return (
<div className="form-group">
<div className="col-sm-12">
<LoadingButton
loadingText={loadingText}
isLoading={isLoading}
disabled={!isValid}
>
{submitLabel}
</LoadingButton>
{children}
</div>
</div>
);
}

View file

@ -22,3 +22,24 @@ export function withFileSize(fileValidation: FileSchema, maxSize: number) {
return file.size <= maxSize;
}
}
export function withFileExtension(
fileValidation: FileSchema,
allowedExtensions: string[]
) {
return fileValidation.test(
'fileExtension',
'Selected file has invalid extension.',
validateFileExtension
);
function validateFileExtension(file?: File) {
if (!file) {
return true;
}
const fileExtension = file.name.split('.').pop();
return allowedExtensions.includes(fileExtension || '');
}
}