techsbcn-storybook 2.9.0 → 2.10.1

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.
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ export interface FileUploadData {
3
+ file: File;
4
+ base64Content: string;
5
+ note: string | null;
6
+ }
7
+ export interface FileUploadComponentProps {
8
+ labels: {
9
+ dropzone: string;
10
+ noteLabel: string;
11
+ notePlaceholder: string;
12
+ save: string;
13
+ success: string;
14
+ };
15
+ onUpload: (data: FileUploadData) => Promise<boolean>;
16
+ }
17
+ export declare const FileUploadComponent: React.FC<FileUploadComponentProps>;
@@ -6,3 +6,4 @@ export declare const getSession: () => Session | null;
6
6
  export declare const getJwtToken: () => string | null;
7
7
  export declare const saveSession: (jwt: string) => void;
8
8
  export declare const clearSession: () => void;
9
+ export declare const logout: (logoutRedirect: string) => void;
@@ -3,3 +3,4 @@ export declare const redirectDownload: (url: any, fileName: string) => void;
3
3
  export declare const getImageByBlob: (binaryString: any) => string;
4
4
  export declare const getImageByBase64: (content: string) => string;
5
5
  export declare const toBase64: (file: Blob) => Promise<string>;
6
+ export declare const readFileAsBase64: (file: File) => Promise<string>;
package/dist/index.d.ts CHANGED
@@ -27,5 +27,6 @@ export * from './components/ui/Spinner/Spinner';
27
27
  export * from './components/fields/DatePickerComponent/DatePickerComponent';
28
28
  export * from './components/wrappers/CardComponent/CardComponent';
29
29
  export * from './components/notifications/SnackbarComponent';
30
+ export * from './components/fields/FileUploadComponent/FileUploadComponent';
30
31
  export * from './helpers/index';
31
32
  export * from './interfaces/index';
package/dist/index.js CHANGED
@@ -21,6 +21,8 @@ var yup = require('@hookform/resolvers/yup');
21
21
  var lab = require('@mui/lab');
22
22
  var xDatePickers = require('@mui/x-date-pickers');
23
23
  var AdapterDayjs = require('@mui/x-date-pickers/AdapterDayjs');
24
+ var freeSolidSvgIcons = require('@fortawesome/free-solid-svg-icons');
25
+ var reactFontawesome = require('@fortawesome/react-fontawesome');
24
26
 
25
27
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
26
28
 
@@ -629,6 +631,10 @@ var clearSession = () => {
629
631
  if (typeof document === "undefined") return;
630
632
  document.cookie = `${AUTH_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; SameSite=Lax`;
631
633
  };
634
+ var logout = (logoutRedirect) => {
635
+ clearSession();
636
+ window.location.replace(logoutRedirect);
637
+ };
632
638
 
633
639
  // src/helpers/CheckPermission.tsx
634
640
  var checkPermission = (persmisionAvailable, userRoles) => {
@@ -690,6 +696,12 @@ var toBase64 = (file) => {
690
696
  reader.onerror = (error) => reject(error);
691
697
  });
692
698
  };
699
+ var readFileAsBase64 = (file) => new Promise((resolve, reject) => {
700
+ const reader = new FileReader();
701
+ reader.onload = () => resolve(String(reader.result).split(",").pop() ?? "");
702
+ reader.onerror = () => reject(reader.error);
703
+ reader.readAsDataURL(file);
704
+ });
693
705
 
694
706
  // src/interfaces/search/SearchFilters.tsx
695
707
  var SearchBaseDefaults = {
@@ -2857,6 +2869,58 @@ var SnackbarComponent = ({
2857
2869
  },
2858
2870
  /* @__PURE__ */ React10__default.default.createElement(material.Alert, { severity, variant: "filled", onClose, action, sx: { width: "100%" } }, message)
2859
2871
  );
2872
+ var FileUploadComponent = ({ labels, onUpload }) => {
2873
+ const [file, setFile] = React10.useState(null);
2874
+ const [note, setNote] = React10.useState("");
2875
+ const [loading, setLoading] = React10.useState(false);
2876
+ const save = async () => {
2877
+ if (!file) return;
2878
+ setLoading(true);
2879
+ try {
2880
+ const base64Content = await readFileAsBase64(file);
2881
+ if (!await onUpload({ file, base64Content, note: note.trim() || null })) return;
2882
+ addNotification({ message: labels.success, type: "success" });
2883
+ setFile(null);
2884
+ setNote("");
2885
+ } finally {
2886
+ setLoading(false);
2887
+ }
2888
+ };
2889
+ return /* @__PURE__ */ React10__default.default.createElement(material.Card, { variant: "outlined" }, /* @__PURE__ */ React10__default.default.createElement(material.CardContent, null, /* @__PURE__ */ React10__default.default.createElement(
2890
+ material.Box,
2891
+ {
2892
+ component: "label",
2893
+ onDragOver: (event) => event.preventDefault(),
2894
+ onDrop: (event) => {
2895
+ event.preventDefault();
2896
+ setFile(event.dataTransfer.files[0] ?? null);
2897
+ }
2898
+ },
2899
+ /* @__PURE__ */ React10__default.default.createElement(
2900
+ "input",
2901
+ {
2902
+ type: "file",
2903
+ hidden: true,
2904
+ onChange: (event) => {
2905
+ setFile(event.target.files?.[0] ?? null);
2906
+ event.target.value = "";
2907
+ }
2908
+ }
2909
+ ),
2910
+ /* @__PURE__ */ React10__default.default.createElement(reactFontawesome.FontAwesomeIcon, { icon: freeSolidSvgIcons.faArrowUpFromBracket, size: "xl" }),
2911
+ /* @__PURE__ */ React10__default.default.createElement(material.Typography, null, file?.name ?? labels.dropzone)
2912
+ ), /* @__PURE__ */ React10__default.default.createElement(material.Typography, { variant: "subtitle2", sx: { mt: 3, mb: 1 } }, labels.noteLabel), /* @__PURE__ */ React10__default.default.createElement(
2913
+ TextFieldComponent,
2914
+ {
2915
+ name: "note",
2916
+ placeholder: labels.notePlaceholder,
2917
+ value: note,
2918
+ onChange: (event) => setNote(event.target.value),
2919
+ multiline: true,
2920
+ rows: 3
2921
+ }
2922
+ ), /* @__PURE__ */ React10__default.default.createElement(material.Box, { sx: { display: "flex", justifyContent: "flex-end", mt: 1 } }, /* @__PURE__ */ React10__default.default.createElement(ButtonComponent, { label: labels.save, disabled: !file, loading, onClick: save }))));
2923
+ };
2860
2924
 
2861
2925
  exports.AppBreadcrumbs = AppBreadcrumbs;
2862
2926
  exports.AppHeader = AppHeader;
@@ -2867,6 +2931,7 @@ exports.ChangePasswordForm = ChangePasswordForm;
2867
2931
  exports.DatePickerComponent = DatePickerComponent;
2868
2932
  exports.DetailPanelComponent = DetailPanelComponent;
2869
2933
  exports.DrawerSidebar = DrawerSidebar;
2934
+ exports.FileUploadComponent = FileUploadComponent;
2870
2935
  exports.GroupBy = GroupBy;
2871
2936
  exports.LinearProgressComponent = LinearProgressComponent;
2872
2937
  exports.LoginForm = LoginForm;
@@ -2899,6 +2964,8 @@ exports.getImageByBase64 = getImageByBase64;
2899
2964
  exports.getImageByBlob = getImageByBlob;
2900
2965
  exports.getJwtToken = getJwtToken;
2901
2966
  exports.getSession = getSession;
2967
+ exports.logout = logout;
2968
+ exports.readFileAsBase64 = readFileAsBase64;
2902
2969
  exports.redirectDownload = redirectDownload;
2903
2970
  exports.removeNotification = removeNotification;
2904
2971
  exports.saveSession = saveSession;