kelt-ui-kit-react 1.6.2 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/src/App.menu.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import { NavLink } from "react-router-dom";
|
|
|
2
2
|
import { ActionView } from "./action/Action.view";
|
|
3
3
|
import { BadgeView } from "./badge/Badge.view";
|
|
4
4
|
import { ButtonView } from "./button/Button.view";
|
|
5
|
+
import { ButtonFileView } from "./button/buttonFile/ButtonFile.view";
|
|
5
6
|
import { CardView } from "./card/Card.view";
|
|
6
7
|
import { CarouselView } from "./carousel/Carousel.view";
|
|
7
8
|
import { DamierView } from "./damier/Damier.view";
|
|
@@ -234,6 +235,13 @@ export const MenuList: MenuProps[] = [
|
|
|
234
235
|
children: <NavLink to="/input-price">Input Price</NavLink>,
|
|
235
236
|
element: <InputPriceView />,
|
|
236
237
|
},
|
|
238
|
+
{
|
|
239
|
+
id: 29,
|
|
240
|
+
name: "Button File",
|
|
241
|
+
link: "/button-file",
|
|
242
|
+
children: <NavLink to="/button-file">Button File</NavLink>,
|
|
243
|
+
element: <ButtonFileView />,
|
|
244
|
+
},
|
|
237
245
|
];
|
|
238
246
|
|
|
239
247
|
export const AppMenu = (): JSX.Element => {
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { ChangeEvent, useRef } from "react";
|
|
2
|
+
import { Button } from "../Button";
|
|
3
|
+
|
|
4
|
+
interface ButtonFileProps {
|
|
5
|
+
onFileSelected?: (file: File, buffer: ArrayBuffer) => void;
|
|
6
|
+
accept?: string;
|
|
7
|
+
buttonText?: string;
|
|
8
|
+
buttonClassName?: string;
|
|
9
|
+
containerClassName?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export const ButtonFile = ({
|
|
13
|
+
onFileSelected,
|
|
14
|
+
accept = "*",
|
|
15
|
+
buttonText = "Choisir un fichier",
|
|
16
|
+
buttonClassName,
|
|
17
|
+
containerClassName,
|
|
18
|
+
}: ButtonFileProps) => {
|
|
19
|
+
const fileInputRef = useRef<HTMLInputElement>(null);
|
|
20
|
+
|
|
21
|
+
const handleFileChange = (e: ChangeEvent<HTMLInputElement>) => {
|
|
22
|
+
const file = e.target.files?.[0];
|
|
23
|
+
|
|
24
|
+
if (file && onFileSelected) {
|
|
25
|
+
const reader = new FileReader();
|
|
26
|
+
|
|
27
|
+
reader.onload = (event: ProgressEvent<FileReader>) => {
|
|
28
|
+
const buffer = event.target?.result as ArrayBuffer;
|
|
29
|
+
onFileSelected(file, buffer);
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
reader.readAsArrayBuffer(file);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
const handleButtonClick = () => {
|
|
37
|
+
fileInputRef.current?.click();
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
return (
|
|
41
|
+
<div className={containerClassName}>
|
|
42
|
+
<input
|
|
43
|
+
type="file"
|
|
44
|
+
ref={fileInputRef}
|
|
45
|
+
onChange={handleFileChange}
|
|
46
|
+
className="hidden"
|
|
47
|
+
accept={accept}
|
|
48
|
+
/>
|
|
49
|
+
<Button
|
|
50
|
+
onClick={handleButtonClick}
|
|
51
|
+
className={
|
|
52
|
+
buttonClassName ||
|
|
53
|
+
"bg-green-500 hover:bg-green-600 text-white font-medium py-3 px-6 rounded-lg transition-colors duration-200"
|
|
54
|
+
}
|
|
55
|
+
title={buttonText || "Choisir un fichier"}
|
|
56
|
+
/>
|
|
57
|
+
</div>
|
|
58
|
+
);
|
|
59
|
+
};
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { ButtonFile } from "./ButtonFile";
|
|
2
|
+
|
|
3
|
+
export const ButtonFileView = () => {
|
|
4
|
+
const handleZipFile = (file: File, buffer: ArrayBuffer) => {
|
|
5
|
+
console.log("Fichier sélectionné:", file.name);
|
|
6
|
+
console.log("Type:", file.type);
|
|
7
|
+
console.log("Taille:", file.size);
|
|
8
|
+
console.log("Buffer:", buffer);
|
|
9
|
+
console.log("Taille du buffer:", buffer.byteLength);
|
|
10
|
+
|
|
11
|
+
// Convertir en Uint8Array si nécessaire
|
|
12
|
+
const uint8Array = new Uint8Array(buffer);
|
|
13
|
+
console.log("Uint8Array:", uint8Array);
|
|
14
|
+
|
|
15
|
+
// Faites ce que vous voulez avec le buffer ici
|
|
16
|
+
};
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div className="min-h-screen bg-gray-50 p-8">
|
|
20
|
+
<div className="max-w-2xl mx-auto space-y-6">
|
|
21
|
+
<div className="border-2 border-dashed border-gray-300 rounded-lg p-8 text-center bg-white">
|
|
22
|
+
<h2 className="text-2xl font-semibold mb-6 text-gray-800">
|
|
23
|
+
Exemple 1 : Fichier ZIP
|
|
24
|
+
</h2>
|
|
25
|
+
<ButtonFile
|
|
26
|
+
onFileSelected={handleZipFile}
|
|
27
|
+
accept=".zip"
|
|
28
|
+
buttonText="Sélectionner un ZIP"
|
|
29
|
+
/>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
<div className="border-2 border-dashed border-gray-300 rounded-lg p-8 text-center bg-white">
|
|
33
|
+
<h2 className="text-2xl font-semibold mb-6 text-gray-800">
|
|
34
|
+
Exemple 2 : Tout type de fichier
|
|
35
|
+
</h2>
|
|
36
|
+
<ButtonFile
|
|
37
|
+
onFileSelected={(file: File, buffer: ArrayBuffer) => {
|
|
38
|
+
console.log(
|
|
39
|
+
"Fichier:",
|
|
40
|
+
file.name,
|
|
41
|
+
"Buffer size:",
|
|
42
|
+
buffer.byteLength,
|
|
43
|
+
);
|
|
44
|
+
}}
|
|
45
|
+
buttonText="Sélectionner n'importe quel fichier"
|
|
46
|
+
buttonClassName="bg-blue-500 hover:bg-blue-600 text-white font-medium py-2 px-4 rounded"
|
|
47
|
+
/>
|
|
48
|
+
</div>
|
|
49
|
+
|
|
50
|
+
<div className="border-2 border-dashed border-gray-300 rounded-lg p-8 text-center bg-white">
|
|
51
|
+
<h2 className="text-2xl font-semibold mb-6 text-gray-800">
|
|
52
|
+
Exemple 3 : Images uniquement
|
|
53
|
+
</h2>
|
|
54
|
+
<ButtonFile
|
|
55
|
+
onFileSelected={(file: File, buffer: ArrayBuffer) => {
|
|
56
|
+
console.log("Image:", file.name);
|
|
57
|
+
// Créer une URL pour prévisualiser l'image
|
|
58
|
+
const blob = new Blob([buffer], { type: file.type });
|
|
59
|
+
const url = URL.createObjectURL(blob);
|
|
60
|
+
console.log("URL de prévisualisation:", url);
|
|
61
|
+
}}
|
|
62
|
+
accept="image/*"
|
|
63
|
+
buttonText="Sélectionner une image"
|
|
64
|
+
buttonClassName="bg-purple-500 hover:bg-purple-600 text-white font-medium py-3 px-6 rounded-lg"
|
|
65
|
+
/>
|
|
66
|
+
</div>
|
|
67
|
+
</div>
|
|
68
|
+
</div>
|
|
69
|
+
);
|
|
70
|
+
};
|
package/src/index.ts
CHANGED
|
@@ -18,6 +18,7 @@ export { ButtonAction } from "./action/ButtonAction";
|
|
|
18
18
|
export { Badge } from "./badge/Badge";
|
|
19
19
|
export { Button } from "./button/Button";
|
|
20
20
|
export { ButtonActions } from "./button/buttonActions/ButtonActions";
|
|
21
|
+
export { ButtonFile } from "./button/buttonFile/ButtonFile";
|
|
21
22
|
export { Card } from "./card/Card";
|
|
22
23
|
export { Carousel } from "./carousel/Carousel";
|
|
23
24
|
export { Damier } from "./damier/Damier";
|