contentoh-components-library 21.2.98 → 21.2.99

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.
Files changed (88) hide show
  1. package/.env.development +0 -3
  2. package/dist/components/molecules/CustomSelect/CustomSelect.stories.js +22 -21
  3. package/dist/components/molecules/CustomSelect/SelectItem.js +1 -10
  4. package/dist/components/molecules/HeaderTop/index.js +5 -10
  5. package/dist/components/molecules/HeaderTop/styles.js +1 -1
  6. package/dist/global-files/fonts.css +0 -12
  7. package/dist/global-files/variables.js +0 -2
  8. package/dist/index.js +46 -241
  9. package/package.json +1 -12
  10. package/src/components/molecules/CustomSelect/CustomSelect.stories.js +12 -20
  11. package/src/components/molecules/CustomSelect/SelectItem.js +0 -7
  12. package/src/components/molecules/HeaderTop/index.js +6 -11
  13. package/src/components/molecules/HeaderTop/styles.js +0 -4
  14. package/src/global-files/fonts.css +0 -12
  15. package/src/global-files/variables.js +0 -2
  16. package/src/index.js +0 -15
  17. package/src/assets/images/customSelect/starIcon.svg +0 -14
  18. package/src/assets/images/defaultImages/Spinner.gif +0 -0
  19. package/src/assets/images/defaultImages/notFound.svg +0 -124
  20. package/src/components/atoms/ButtonFileChooser/ButtonFileChooser.stories.js +0 -47
  21. package/src/components/atoms/ButtonFileChooser/index.js +0 -69
  22. package/src/components/atoms/ButtonFileChooser/styles.js +0 -4
  23. package/src/components/atoms/ButtonV2/ButtonV2.stories.js +0 -51
  24. package/src/components/atoms/ButtonV2/index.js +0 -79
  25. package/src/components/atoms/ButtonV2/styles.js +0 -195
  26. package/src/components/atoms/CustomIcon/CustomIcon.stories.js +0 -36
  27. package/src/components/atoms/CustomIcon/index.js +0 -41
  28. package/src/components/atoms/CustomIcon/styles.js +0 -85
  29. package/src/components/atoms/IconFile/IconFile.stories.js +0 -35
  30. package/src/components/atoms/IconFile/index.js +0 -119
  31. package/src/components/atoms/IconFile/styles.js +0 -67
  32. package/src/components/atoms/Image/Image.stories.js +0 -51
  33. package/src/components/atoms/Image/index.js +0 -55
  34. package/src/components/atoms/Image/styles.js +0 -34
  35. package/src/components/atoms/ImageLink/ImageLink.stories.js +0 -43
  36. package/src/components/atoms/ImageLink/index.js +0 -57
  37. package/src/components/atoms/ImageLink/styles.js +0 -30
  38. package/src/components/atoms/ImagePreview/ImagePreview.stories.js +0 -52
  39. package/src/components/atoms/ImagePreview/index.js +0 -191
  40. package/src/components/atoms/ImagePreview/styles.js +0 -77
  41. package/src/components/atoms/InputText/InputText.stories.js +0 -39
  42. package/src/components/atoms/InputText/index.js +0 -61
  43. package/src/components/atoms/InputText/styles.js +0 -89
  44. package/src/components/atoms/NotFound/NotFound.stories.js +0 -19
  45. package/src/components/atoms/NotFound/index.js +0 -52
  46. package/src/components/atoms/NotFound/styles.js +0 -55
  47. package/src/components/atoms/SelectItemV2/SelectItemV2.stories.js +0 -26
  48. package/src/components/atoms/SelectItemV2/index.js +0 -45
  49. package/src/components/atoms/SelectItemV2/styles.js +0 -55
  50. package/src/components/atoms/Tooltip/Tooltip.stories.js +0 -51
  51. package/src/components/atoms/Tooltip/index.js +0 -59
  52. package/src/components/atoms/Tooltip/styles.js +0 -42
  53. package/src/components/molecules/ButtonDownloadFile/DownloadFile.stories.js +0 -54
  54. package/src/components/molecules/ButtonDownloadFile/index.js +0 -111
  55. package/src/components/molecules/ButtonDownloadFile/styles.js +0 -66
  56. package/src/components/molecules/ImageTooltip/ImageTooltip.stories.js +0 -46
  57. package/src/components/molecules/ImageTooltip/index.js +0 -62
  58. package/src/components/molecules/ImageTooltip/styles.js +0 -18
  59. package/src/components/molecules/SelectV2/SelectV2.stories.js +0 -114
  60. package/src/components/molecules/SelectV2/index.js +0 -332
  61. package/src/components/molecules/SelectV2/styles.js +0 -100
  62. package/src/components/organisms/Chat/Chat.stories.js +0 -199
  63. package/src/components/organisms/Chat/ChatLists/ChatLists.stories.js +0 -65
  64. package/src/components/organisms/Chat/ChatLists/Rotoplas.jpeg +0 -0
  65. package/src/components/organisms/Chat/ChatLists/THD.png +0 -0
  66. package/src/components/organisms/Chat/ChatLists/index.js +0 -141
  67. package/src/components/organisms/Chat/ChatLists/styles.js +0 -162
  68. package/src/components/organisms/Chat/ContainerItems/ContainerItems.stories.js +0 -142
  69. package/src/components/organisms/Chat/ContainerItems/index.js +0 -549
  70. package/src/components/organisms/Chat/ContainerItems/styles.js +0 -328
  71. package/src/components/organisms/Chat/ContentChat/ContentChat.stories.js +0 -102
  72. package/src/components/organisms/Chat/ContentChat/Rotoplas.jpeg +0 -0
  73. package/src/components/organisms/Chat/ContentChat/THD.png +0 -0
  74. package/src/components/organisms/Chat/ContentChat/index.js +0 -900
  75. package/src/components/organisms/Chat/ContentChat/styles.js +0 -41
  76. package/src/components/organisms/Chat/Footer/Footer.stories.js +0 -22
  77. package/src/components/organisms/Chat/Footer/index.js +0 -669
  78. package/src/components/organisms/Chat/Footer/styles.js +0 -286
  79. package/src/components/organisms/Chat/Header/Header.stories.js +0 -66
  80. package/src/components/organisms/Chat/Header/index.js +0 -94
  81. package/src/components/organisms/Chat/Header/styles.js +0 -49
  82. package/src/components/organisms/Chat/index.js +0 -294
  83. package/src/components/organisms/Chat/styles.js +0 -42
  84. package/src/components/organisms/Modal/Modal.stories.js +0 -55
  85. package/src/components/organisms/Modal/index.js +0 -97
  86. package/src/components/organisms/Modal/styles.js +0 -103
  87. package/src/global-files/handle_http.js +0 -231
  88. package/src/global-files/utils.js +0 -300
@@ -1,89 +0,0 @@
1
- import styled from "styled-components";
2
- import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
-
4
- export const Container = styled.div`
5
- width: fit-content;
6
- min-width: min-content;
7
- //border: 1px solid red;
8
-
9
- .inputText {
10
- width: 100%;
11
- height: 100%;
12
-
13
- // container interno del input o textarea
14
- > div {
15
- min-width: 0px;
16
- font-family: ${FontFamily.RobotoRegular}, sans-serif;
17
- font-size: ${({ size }) => (size ? size : "13")}px;
18
- text-align: left;
19
- color: #a2a2a2;
20
- padding: ${({ borderType }) => {
21
- return ["rectangle", "oval"].includes(borderType?.toLowerCase())
22
- ? "5px 10px"
23
- : "0px";
24
- }};
25
- border-radius: ${({ borderType }) => {
26
- return borderType?.toLowerCase() === "oval"
27
- ? "17px"
28
- : borderType?.toLowerCase() === "rectangle"
29
- ? "6px"
30
- : "0px";
31
- }};
32
-
33
- // input 1 linea
34
- > input {
35
- padding: 0px;
36
- }
37
-
38
- // borde
39
- > fieldset {
40
- border: ${({ borderType }) => {
41
- return ["rectangle", "oval"].includes(borderType?.toLowerCase())
42
- ? "1px solid black"
43
- : "none";
44
- }};
45
- border-color: inherit;
46
- }
47
-
48
- &.Mui-focused {
49
- > fieldset {
50
- border-color: inherit;
51
- }
52
- }
53
- &.Mui-disabled {
54
- cursor: not-allowed;
55
- * {
56
- cursor: inherit;
57
- }
58
- }
59
- }
60
-
61
- &.fill {
62
- &.gray > div {
63
- background-color: #e8e5e5;
64
- color: #262626;
65
- border-color: #7b7979;
66
- }
67
- &.white > div {
68
- background-color: white;
69
- color: #e33aa9;
70
- border-color: #e33aa9;
71
- }
72
- }
73
-
74
- &.transparent {
75
- > div {
76
- background-color: transparent;
77
- }
78
-
79
- &.gray > div {
80
- color: #a2a2a2;
81
- border-color: #7b7979;
82
- }
83
- &.black > div {
84
- color: #262626;
85
- border-color: #7b7979;
86
- }
87
- }
88
- }
89
- `;
@@ -1,19 +0,0 @@
1
- import { NotFound } from "./index";
2
-
3
- export default {
4
- title: "Components/atoms/NotFound",
5
- component: NotFound,
6
- argTypes: {},
7
- };
8
-
9
- const Template = (args) => <NotFound {...args} />;
10
-
11
- export const NotFoundTest = Template.bind({});
12
- NotFoundTest.args = {
13
- code: "501",
14
- message: "No se pudo obtener los mensajes del chat",
15
- details: "no se encontro la cadena asociada al producto",
16
- };
17
-
18
- export const NotFoundDefault = Template.bind({});
19
- NotFoundDefault.args = {};
@@ -1,52 +0,0 @@
1
- import { Container } from "./styles";
2
- import { ButtonV2 } from "../ButtonV2";
3
- import { Modal } from "../../organisms/Modal";
4
- import { FontAwesomeIcon as Icon } from "@fortawesome/react-fontawesome";
5
- import { faCircleInfo as iconInfo } from "@fortawesome/free-solid-svg-icons";
6
- import imgNotFountDefault from "../../../assets/images/defaultImages/notFound.svg";
7
- import { useState, useEffect } from "react";
8
-
9
- export const NotFound = (props) => {
10
- const {
11
- className, // string
12
- code, // string
13
- message, // string
14
- details, // string
15
- } = props;
16
- const [showModal, setShowModal] = useState(false);
17
-
18
- return (
19
- <>
20
- <Container className={className}>
21
- <img src={imgNotFountDefault} alt={"imagen not found"} />
22
-
23
- <div className="divInfo">
24
- {/* icono info */}
25
- <ButtonV2
26
- className={"btnInfo"}
27
- type={"pink"}
28
- transparent
29
- icon={iconInfo}
30
- size={16}
31
- onClick={() => {
32
- setShowModal(true);
33
- }}
34
- />
35
-
36
- <label className="label-error">
37
- Codigo de error
38
- <label> {code ? code : 404} </label>
39
- </label>
40
- </div>
41
-
42
- <Modal
43
- show={showModal}
44
- title={message ? message : "Error NO especificado"}
45
- message={details ? details : "Reporta esto a TI"}
46
- icon={"info"}
47
- onClickBtnDefault={(event) => setShowModal(false)}
48
- />
49
- </Container>
50
- </>
51
- );
52
- };
@@ -1,55 +0,0 @@
1
- import styled from "styled-components";
2
- import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
-
4
- export const Container = styled.div`
5
- width: 100%;
6
- height: 100%;
7
- min-width: min-content;
8
- min-height: min-content;
9
- display: flex;
10
- flex-direction: column;
11
- justify-content: center;
12
- align-items: center;
13
- gap: 6px;
14
- padding: 20px 10px;
15
- overflow: auto;
16
- //border: 1px solid red;
17
-
18
- img {
19
- width: 80%;
20
- min-width: 35px;
21
- max-width: 480px;
22
- max-height: 90%;
23
- object-fit: contain;
24
- //border: 1px solid blue;
25
- }
26
-
27
- .divInfo {
28
- display: flex;
29
- flex-direction: row;
30
- flex-wrap: wrap;
31
- gap: 7px;
32
- align-items: center;
33
-
34
- .btnInfo {
35
- padding: 0px;
36
- }
37
-
38
- .label-error {
39
- display: flex;
40
- flex-direction: row;
41
- flex-wrap: wrap;
42
- align-items: center;
43
- gap: 3px;
44
- font-family: ${FontFamily.RobotoRegular}, sans-serif;
45
- font-size: 13px;
46
- color: #262626;
47
-
48
- label {
49
- font-family: ${FontFamily.RobotoMedium}, sans-serif;
50
- font-size: 15px;
51
- color: #e33aa9;
52
- }
53
- }
54
- }
55
- `;
@@ -1,26 +0,0 @@
1
- import { SelectItemV2 } from "./index";
2
-
3
- export default {
4
- title: "Components/atoms/SelectItemV2",
5
- component: SelectItemV2,
6
- argTypes: {
7
- checkbox: {
8
- options: [undefined, true, false],
9
- control: { type: "select" },
10
- },
11
- },
12
- };
13
-
14
- const Template = (args) => <SelectItemV2 {...args} />;
15
-
16
- export const SelectItemV2Test = Template.bind({});
17
- SelectItemV2Test.args = {
18
- label: "Label del item",
19
- value: 1,
20
- checkbox: true,
21
- selected: false,
22
- onClick: (isSelected, value) => {
23
- console.log("isSelected:", isSelected);
24
- console.log("value:", value);
25
- },
26
- };
@@ -1,45 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { Checkbox } from "@mui/material";
3
- import { Container } from "./styles";
4
- import React from "react";
5
- import { isStringEmpty } from "../../../global-files/utils";
6
-
7
- export const SelectItemV2 = (props) => {
8
- const {
9
- id,
10
- keyId,
11
- className, // (string) clase del container
12
- label, // (string) texto visible del item
13
- value, // valor del item
14
- checkbox /* (boolean)
15
- true -> item con checkbox
16
- false -> item sin checkbox pero respeta el espacio del checkbox
17
- undefined -> item sin checkbox
18
- */,
19
- selected, // (boolean) item seleccionado??
20
- onClick, // (isSelected , value) => {}
21
- } = props;
22
-
23
- return (
24
- <Container
25
- className={
26
- "selectItemV2" +
27
- (isStringEmpty(className) ? "" : " " + className) +
28
- (!checkbox && selected ? " selectedItem" : "")
29
- }
30
- id={id}
31
- key={keyId}
32
- checkbox={checkbox}
33
- onClick={(event) => onClick && onClick(!selected, value)}
34
- >
35
- {checkbox !== undefined && (
36
- <Checkbox
37
- className={"checkbox" + (checkbox ? "" : " hidden")}
38
- checked={selected}
39
- />
40
- )}
41
-
42
- <label className="label">{label}</label>
43
- </Container>
44
- );
45
- };
@@ -1,55 +0,0 @@
1
- import styled from "styled-components";
2
- import { GlobalColors, FontFamily } from "../../../global-files/variables";
3
-
4
- export const Container = styled.div`
5
- width: fit-content;
6
- display: flex;
7
- flex-direction: row;
8
- flex-wrap: nowrap;
9
- gap: 11px;
10
- justify-content: flex-start;
11
- align-items: center;
12
- cursor: pointer;
13
- padding: 8px;
14
- transition: background 0.25s;
15
- //border: 1px solid lightgray;
16
-
17
- &:hover {
18
- background-color: #f0f0f0;
19
- }
20
-
21
- .checkbox {
22
- padding: 3px;
23
-
24
- &.hidden {
25
- visibility: hidden;
26
- }
27
-
28
- &.Mui-checked {
29
- color: #808080;
30
- }
31
-
32
- .MuiSvgIcon-root {
33
- font-size: 16px;
34
- }
35
- }
36
-
37
- .label {
38
- cursor: inherit;
39
- font-family: ${FontFamily.RobotoRegular}, sans-serif;
40
- font-size: 12px;
41
- text-align: left;
42
- color: #262626;
43
- line-height: 1.25;
44
- padding: ${({ checkbox }) => (checkbox === undefined ? "3" : "0")}px;
45
- }
46
-
47
- // para item sin checkbox seleccionado
48
- &.selectedItem {
49
- background-color: #8e8e8e;
50
- .label {
51
- font-family: ${FontFamily.RobotoMedium}, sans-serif;
52
- color: white;
53
- }
54
- }
55
- `;
@@ -1,51 +0,0 @@
1
- import { Tooltip } from "./index";
2
-
3
- export default {
4
- title: "Components/atoms/Tooltip",
5
- component: Tooltip,
6
- argTypes: {
7
- position: {
8
- options: [
9
- undefined,
10
- "topStart",
11
- "topEnd",
12
- "topCenter",
13
- "rightStart",
14
- "rightEnd",
15
- "rightCenter",
16
- "bottomStart",
17
- "bottomEnd",
18
- "bottomCenter",
19
- "leftStart",
20
- "leftEnd",
21
- "leftCenter",
22
- ],
23
- control: { type: "select" },
24
- },
25
- addArrow: {
26
- options: [undefined, false, true],
27
- control: { type: "select" },
28
- },
29
- transitionType: {
30
- options: [undefined, "grow", "fade", "zoom"],
31
- control: { type: "select" },
32
- },
33
- followCursor: {
34
- options: [undefined, false, true],
35
- control: { type: "select" },
36
- },
37
- },
38
- };
39
-
40
- const Template = (args) => <Tooltip {...args} />;
41
-
42
- export const TooltipDefault = Template.bind({});
43
- TooltipDefault.args = {
44
- componentTooltip: <p> hola soy tooltip de prueba en storybook </p>,
45
- children: <button> abrir tooltip </button>,
46
- classNameTooltip: "container-tooltip",
47
- position: undefined,
48
- addArrow: undefined,
49
- transitionType: undefined,
50
- followCursor: undefined,
51
- };
@@ -1,59 +0,0 @@
1
- import { useEffect, useRef, useState } from "react";
2
- import { Fade, Grow, Popper, Tooltip as TooltipMUI, Zoom } from "@mui/material";
3
- import { Container } from "./styles";
4
- import React from "react";
5
-
6
- export const Tooltip = (props) => {
7
- const {
8
- componentTooltip, // (jsx) componente que aparecera en el tooltip
9
- children, // (jsx) componente interno que va dentro de la etiqueta <Tooltip>
10
- className, // (string) clase del container trigger
11
- classNameTooltip, // (string) clase del contenedor tooltip
12
- position, // (string) posicion del contenedor tooltip (values en object positions)
13
- addArrow, // (boolean) add flecha en la parte posterior del tooltip?
14
- transitionType, // (string) -> 'grow' (default) | 'fade' | 'zoom'
15
- followCursor, // (boolean) true -> el tooltip se movera junto al cursor
16
- } = props;
17
- const positions = {
18
- topStart: "top-start",
19
- topEnd: "top-end",
20
- topCenter: "top",
21
-
22
- rightStart: "right-start",
23
- rightEnd: "right-end",
24
- rightCenter: "right",
25
-
26
- bottomStart: "bottom-start",
27
- bottomEnd: "bottom-end",
28
- bottomCenter: "bottom",
29
-
30
- leftStart: "left-start",
31
- leftEnd: "left-end",
32
- leftCenter: "left",
33
- };
34
-
35
- return (
36
- <TooltipMUI
37
- {...props}
38
- placement={positions[position] ?? positions.topCenter}
39
- arrow={addArrow || addArrow === undefined ? true : false}
40
- componentsProps={{
41
- tooltip: { className: classNameTooltip },
42
- popper: { disablePortal: true },
43
- transition: { timeout: 300 },
44
- }}
45
- TransitionComponent={
46
- transitionType === "grow"
47
- ? Grow
48
- : transitionType === "fade"
49
- ? Fade
50
- : Zoom
51
- }
52
- enterDelay={300}
53
- followCursor={followCursor ?? false}
54
- title={componentTooltip}
55
- >
56
- <Container className={className}> {children} </Container>
57
- </TooltipMUI>
58
- );
59
- };
@@ -1,42 +0,0 @@
1
- import { FontFamily } from "../../../global-files/variables";
2
- import styled from "styled-components";
3
-
4
- export const Container = styled.div`
5
- width: fit-content;
6
- //margin: 100px 0px 0px 100px; modo dev
7
- //border: 1px solid red; modo dev
8
-
9
- + .MuiTooltip-popper {
10
- background-color: transparent;
11
-
12
- .MuiTooltip-tooltip {
13
- --background: white;
14
- box-shadow: 0px 0px 10px 1px gray;
15
- background-color: var(--background);
16
- padding: 10px;
17
- border-radius: 7px;
18
- max-width: 60vw;
19
- font-family: ${FontFamily.RobotoMedium}, sans-serif;
20
- font-size: 12px;
21
- text-align: left;
22
- color: #262626;
23
-
24
- .MuiTooltip-arrow {
25
- color: var(--background);
26
- }
27
- }
28
-
29
- &[data-popper-placement*="bottom"] .MuiTooltip-tooltip {
30
- margin-top: 10px;
31
- }
32
- &[data-popper-placement*="top"] .MuiTooltip-tooltip {
33
- margin-bottom: 10px;
34
- }
35
- &[data-popper-placement*="left"] .MuiTooltip-tooltip {
36
- margin-right: 10px;
37
- }
38
- &[data-popper-placement*="right"] .MuiTooltip-tooltip {
39
- margin-left: 10px;
40
- }
41
- }
42
- `;
@@ -1,54 +0,0 @@
1
- import { ButtonDownloadFile } from "./index";
2
- export default {
3
- title: "Components/molecules/ButtonDownloadFile",
4
- component: ButtonDownloadFile,
5
- argTypes: {
6
- type: {
7
- options: [
8
- undefined,
9
- "white",
10
- "whiteS2",
11
- "pink",
12
- "gray",
13
- "purple",
14
- "black",
15
- ],
16
- control: { type: "select" },
17
- },
18
- borderType: {
19
- options: [undefined, "rectangle", "circle"],
20
- control: { type: "select" },
21
- },
22
- },
23
- };
24
-
25
- const Template = (args) => <ButtonDownloadFile {...args} />;
26
-
27
- export const DownloadFileOk = Template.bind({});
28
- DownloadFileOk.args = {
29
- type: undefined,
30
- transparent: false,
31
- borderType: undefined,
32
- size: "70",
33
- onDownload: (error) => {
34
- error &&
35
- alert("mensaje: " + error.message + "\nDetalles: " + error.details);
36
- },
37
- url: `https://content-management-images.s3.amazonaws.com/84300/1/chat/acuse RFC-8b2eb177-5bfc-4266-9b26-4e7297880594-9e2e5853-4697-442a-8ff7-3b7a1ede0856.pdf`,
38
- };
39
-
40
- export const DownloadFileError = Template.bind({});
41
- DownloadFileError.args = {
42
- id: "",
43
- key: "",
44
- color: undefined,
45
- background: undefined,
46
- borderType: "circle",
47
- size: "70",
48
- width: "100px",
49
- onDownload: (error) => {
50
- error &&
51
- alert("mensaje: " + error.message + "\nDetalles: " + error.details);
52
- },
53
- url: `https://content-management-images.s3.amazonaws.com/84300/1/chat/noExiste.pdf`,
54
- };
@@ -1,111 +0,0 @@
1
- import { Container } from "./styles";
2
- import { faArrowDown as IconDownload } from "@fortawesome/free-solid-svg-icons";
3
- import { useState } from "react";
4
- import { ButtonV2 } from "../../atoms/ButtonV2";
5
- import { IconFile } from "../../atoms/IconFile";
6
- import axios from "axios";
7
- import { getFileExtension } from "../../../global-files/utils";
8
-
9
- export const ButtonDownloadFile = (props) => {
10
- const {
11
- id,
12
- key,
13
- className,
14
- type, // white | pink | gray | purple (white -> predeterminado)
15
- transparent, // boolean
16
- size, // number ... default (13)
17
- borderType, // rectangle || circle || (cualquier otro valor -> no borde)
18
- url, // src del file
19
- onDownload, // ( {message , details} ) => {}
20
- } = props;
21
- const [showDownload, setShowDownload] = useState(false);
22
- const [loading, setLoading] = useState(false);
23
-
24
- const getSrc = () => {
25
- const temp = url.split("/");
26
- return temp[temp.length - 1];
27
- };
28
-
29
- const getFile = async () => {
30
- try {
31
- setLoading(true);
32
- const responseFile = await axios({
33
- url: url,
34
- method: "GET",
35
- responseType: "blob",
36
- });
37
- if (responseFile.status != 200) {
38
- setLoading(false);
39
- onDownload &&
40
- onDownload({
41
- message: "No se pudo descargar el archivo",
42
- details: responseFile.statusText,
43
- });
44
- return;
45
- }
46
- const newUrl = window.URL.createObjectURL(new Blob([responseFile.data]));
47
- const link = document.createElement("a");
48
- link.href = newUrl;
49
- link.setAttribute("download", getSrc());
50
- link.style.display = "none";
51
- document.body.appendChild(link);
52
- setLoading(false);
53
- link.click();
54
- document.body.removeChild(link);
55
- } catch (err) {
56
- setLoading(false);
57
- onDownload &&
58
- onDownload({
59
- message: "No se pudo descargar el archivo",
60
- details: err.message,
61
- });
62
- }
63
- };
64
-
65
- return (
66
- <>
67
- <Container
68
- id={id}
69
- key={key}
70
- className={className}
71
- borderType={borderType}
72
- onMouseEnter={(event) => {
73
- if (!showDownload) {
74
- setShowDownload(true);
75
- //console.log("showDownload");
76
- }
77
- }}
78
- onMouseLeave={(event) => {
79
- if (!loading) {
80
- setShowDownload(false);
81
- //console.log("showIconFile");
82
- }
83
- }}
84
- >
85
- {showDownload ? (
86
- <ButtonV2
87
- className={"buttonDownload"}
88
- type={type}
89
- transparent={transparent}
90
- size={size}
91
- borderType={borderType}
92
- icon={IconDownload}
93
- isLoading={loading}
94
- onClick={async (event) => {
95
- getFile();
96
- }}
97
- />
98
- ) : (
99
- <IconFile
100
- className="iconFile"
101
- type={type}
102
- transparent={transparent}
103
- size={size}
104
- borderType={borderType}
105
- ext={getFileExtension(getSrc())}
106
- />
107
- )}
108
- </Container>
109
- </>
110
- );
111
- };