techsbcn-storybook 2.9.0 → 2.10.0

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
@@ -5,13 +5,13 @@ var material = require('@mui/material');
5
5
  var iconsMaterial = require('@mui/icons-material');
6
6
  var styles = require('@mui/material/styles');
7
7
  var lodash = require('lodash');
8
+ var reactRouter = require('react-router');
8
9
  var CloseIcon = require('@mui/icons-material/Close');
9
10
  var notistack = require('notistack');
10
11
  var dayjs = require('dayjs');
11
12
  var localizedFormat = require('dayjs/plugin/localizedFormat');
12
13
  var timezone = require('dayjs/plugin/timezone');
13
14
  var utc = require('dayjs/plugin/utc');
14
- var reactRouter = require('react-router');
15
15
  var MenuIcon = require('@mui/icons-material/Menu');
16
16
  var Select = require('react-select');
17
17
  var reactSelectAsyncPaginate = require('react-select-async-paginate');
@@ -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
 
@@ -583,8 +585,7 @@ var TextFieldComponent = ({
583
585
  }
584
586
  ));
585
587
  };
586
-
587
- // src/helpers/AuthHelper.tsx
588
+ var navigate = reactRouter.useNavigate();
588
589
  var AUTH_COOKIE_NAME = "auth_token";
589
590
  var NAME_IDENTIFIER_CLAIM = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier";
590
591
  var ROLE_CLAIM = "http://schemas.microsoft.com/ws/2008/06/identity/claims/role";
@@ -629,6 +630,10 @@ var clearSession = () => {
629
630
  if (typeof document === "undefined") return;
630
631
  document.cookie = `${AUTH_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; SameSite=Lax`;
631
632
  };
633
+ var logout = (logoutRedirect) => {
634
+ clearSession();
635
+ navigate(logoutRedirect, { replace: true });
636
+ };
632
637
 
633
638
  // src/helpers/CheckPermission.tsx
634
639
  var checkPermission = (persmisionAvailable, userRoles) => {
@@ -690,6 +695,12 @@ var toBase64 = (file) => {
690
695
  reader.onerror = (error) => reject(error);
691
696
  });
692
697
  };
698
+ var readFileAsBase64 = (file) => new Promise((resolve, reject) => {
699
+ const reader = new FileReader();
700
+ reader.onload = () => resolve(String(reader.result).split(",").pop() ?? "");
701
+ reader.onerror = () => reject(reader.error);
702
+ reader.readAsDataURL(file);
703
+ });
693
704
 
694
705
  // src/interfaces/search/SearchFilters.tsx
695
706
  var SearchBaseDefaults = {
@@ -2857,6 +2868,58 @@ var SnackbarComponent = ({
2857
2868
  },
2858
2869
  /* @__PURE__ */ React10__default.default.createElement(material.Alert, { severity, variant: "filled", onClose, action, sx: { width: "100%" } }, message)
2859
2870
  );
2871
+ var FileUploadComponent = ({ labels, onUpload }) => {
2872
+ const [file, setFile] = React10.useState(null);
2873
+ const [note, setNote] = React10.useState("");
2874
+ const [loading, setLoading] = React10.useState(false);
2875
+ const save = async () => {
2876
+ if (!file) return;
2877
+ setLoading(true);
2878
+ try {
2879
+ const base64Content = await readFileAsBase64(file);
2880
+ if (!await onUpload({ file, base64Content, note: note.trim() || null })) return;
2881
+ addNotification({ message: labels.success, type: "success" });
2882
+ setFile(null);
2883
+ setNote("");
2884
+ } finally {
2885
+ setLoading(false);
2886
+ }
2887
+ };
2888
+ return /* @__PURE__ */ React10__default.default.createElement(material.Card, { variant: "outlined" }, /* @__PURE__ */ React10__default.default.createElement(material.CardContent, null, /* @__PURE__ */ React10__default.default.createElement(
2889
+ material.Box,
2890
+ {
2891
+ component: "label",
2892
+ onDragOver: (event) => event.preventDefault(),
2893
+ onDrop: (event) => {
2894
+ event.preventDefault();
2895
+ setFile(event.dataTransfer.files[0] ?? null);
2896
+ }
2897
+ },
2898
+ /* @__PURE__ */ React10__default.default.createElement(
2899
+ "input",
2900
+ {
2901
+ type: "file",
2902
+ hidden: true,
2903
+ onChange: (event) => {
2904
+ setFile(event.target.files?.[0] ?? null);
2905
+ event.target.value = "";
2906
+ }
2907
+ }
2908
+ ),
2909
+ /* @__PURE__ */ React10__default.default.createElement(reactFontawesome.FontAwesomeIcon, { icon: freeSolidSvgIcons.faArrowUpFromBracket, size: "xl" }),
2910
+ /* @__PURE__ */ React10__default.default.createElement(material.Typography, null, file?.name ?? labels.dropzone)
2911
+ ), /* @__PURE__ */ React10__default.default.createElement(material.Typography, { variant: "subtitle2", sx: { mt: 3, mb: 1 } }, labels.noteLabel), /* @__PURE__ */ React10__default.default.createElement(
2912
+ TextFieldComponent,
2913
+ {
2914
+ name: "note",
2915
+ placeholder: labels.notePlaceholder,
2916
+ value: note,
2917
+ onChange: (event) => setNote(event.target.value),
2918
+ multiline: true,
2919
+ rows: 3
2920
+ }
2921
+ ), /* @__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 }))));
2922
+ };
2860
2923
 
2861
2924
  exports.AppBreadcrumbs = AppBreadcrumbs;
2862
2925
  exports.AppHeader = AppHeader;
@@ -2867,6 +2930,7 @@ exports.ChangePasswordForm = ChangePasswordForm;
2867
2930
  exports.DatePickerComponent = DatePickerComponent;
2868
2931
  exports.DetailPanelComponent = DetailPanelComponent;
2869
2932
  exports.DrawerSidebar = DrawerSidebar;
2933
+ exports.FileUploadComponent = FileUploadComponent;
2870
2934
  exports.GroupBy = GroupBy;
2871
2935
  exports.LinearProgressComponent = LinearProgressComponent;
2872
2936
  exports.LoginForm = LoginForm;
@@ -2899,6 +2963,8 @@ exports.getImageByBase64 = getImageByBase64;
2899
2963
  exports.getImageByBlob = getImageByBlob;
2900
2964
  exports.getJwtToken = getJwtToken;
2901
2965
  exports.getSession = getSession;
2966
+ exports.logout = logout;
2967
+ exports.readFileAsBase64 = readFileAsBase64;
2902
2968
  exports.redirectDownload = redirectDownload;
2903
2969
  exports.removeNotification = removeNotification;
2904
2970
  exports.saveSession = saveSession;