josenanodev-react-components-library 0.0.28 → 0.1.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,31 @@
1
+ .export-to-excel-button {
2
+ position: relative;
3
+ width: 220px;
4
+ height: 48px;
5
+ opacity: 1;
6
+ cursor: pointer;
7
+ padding: 14px;
8
+ text-align: center;
9
+ text-decoration: none;
10
+ touch-action: manipulation;
11
+ font-size: 16px;
12
+ letter-spacing: normal;
13
+ color: rgb(255, 255, 255);
14
+ font-weight: 700;
15
+ border-radius: 4px;
16
+ border: none;
17
+ background: green;
18
+ box-shadow: none;
19
+ transition: all 0.5s;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-evenly;
23
+ margin: auto;
24
+ }
25
+ .export-to-excel-button:hover {
26
+ background: rgb(0, 170, 0);
27
+ }
28
+
29
+ .export-to-excel-button:disabled {
30
+ background: rgb(216, 216, 216);
31
+ }
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import "./ExportToExcelButton.css";
3
+ import { ExportToExcelButtonPropsType } from "./types";
4
+ declare const ExportToExcelButton: ({ customButtonText, customClass, fileName, headers, data, onAfterExport, disabled, }: ExportToExcelButtonPropsType) => JSX.Element;
5
+ export default ExportToExcelButton;
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ const react_1 = __importDefault(require("react"));
30
+ const ownFunctions = __importStar(require("./ExportToExcelButtonOwnFunctions"));
31
+ require("./ExportToExcelButton.css");
32
+ //Iconos
33
+ const ri_1 = require("react-icons/ri");
34
+ const ExportToExcelButton = ({ customButtonText = "Export to Excel", customClass, fileName = "untitled", headers, data, onAfterExport, disabled, }) => {
35
+ return (react_1.default.createElement("button", { disabled: disabled, className: customClass ? customClass : "export-to-excel-button", onClick: () => {
36
+ ownFunctions.downloadExcel(fileName, data, headers);
37
+ if (onAfterExport !== undefined) {
38
+ onAfterExport();
39
+ }
40
+ } },
41
+ customButtonText,
42
+ " ",
43
+ react_1.default.createElement(ri_1.RiFileExcel2Fill, null)));
44
+ };
45
+ exports.default = ExportToExcelButton;
@@ -0,0 +1,6 @@
1
+ import { dataObjectXlsxType } from "./types";
2
+ export declare function downloadExcel(fileName: string, data: {
3
+ [key: string]: dataObjectXlsxType[][];
4
+ } | undefined, headers: {
5
+ [key: string]: dataObjectXlsxType[];
6
+ } | undefined): void;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.downloadExcel = void 0;
27
+ //Librerias de terceros
28
+ const XLSX = __importStar(require("xlsx-js-style"));
29
+ function styleObjectParser(styleObject) {
30
+ let objetoResultante = {
31
+ v: styleObject.value,
32
+ s: {},
33
+ };
34
+ if (styleObject.allign)
35
+ objetoResultante.s.alignment = Object.assign({}, styleObject.allign);
36
+ if (styleObject.fontSize)
37
+ objetoResultante.s.font = Object.assign(Object.assign({}, objetoResultante.s.font), { sz: styleObject.fontSize });
38
+ if (styleObject.fontColor)
39
+ objetoResultante.s.font = Object.assign(Object.assign({}, objetoResultante.s.font), { color: { rgb: styleObject.fontColor } });
40
+ if (styleObject.bold)
41
+ objetoResultante.s.font = Object.assign(Object.assign({}, objetoResultante.s.font), { bold: styleObject.bold });
42
+ if (styleObject.backgroundColor)
43
+ objetoResultante.s.fill = Object.assign(Object.assign({}, objetoResultante.s.fill), { fgColor: { rgb: styleObject.backgroundColor } });
44
+ if (styleObject.borders)
45
+ objetoResultante.s.border = {
46
+ bgColor: styleObject.borders,
47
+ };
48
+ return objetoResultante;
49
+ }
50
+ function downloadExcel(fileName, data, headers) {
51
+ if (data !== undefined) {
52
+ const wb = XLSX.utils.book_new();
53
+ for (const hoja in data) {
54
+ if (Object.prototype.hasOwnProperty.call(data, hoja)) {
55
+ let dataXlsxJs = [];
56
+ if (headers !== undefined) {
57
+ dataXlsxJs = [
58
+ headers[hoja].map((encabezado) => styleObjectParser(encabezado)),
59
+ ...data[hoja].map((fila) => fila.map((celda) => styleObjectParser(celda))),
60
+ ];
61
+ }
62
+ else {
63
+ dataXlsxJs = [
64
+ ...data[hoja].map((fila) => fila.map((celda) => styleObjectParser(celda))),
65
+ ];
66
+ }
67
+ const ws = XLSX.utils.aoa_to_sheet(dataXlsxJs);
68
+ XLSX.utils.book_append_sheet(wb, ws, "hoja");
69
+ }
70
+ }
71
+ XLSX.writeFile(wb, `${fileName}.xlsx`);
72
+ }
73
+ }
74
+ exports.downloadExcel = downloadExcel;
@@ -0,0 +1,43 @@
1
+ export interface ExportToExcelButtonPropsType {
2
+ customButtonText?: string;
3
+ customClass?: string;
4
+ fileName?: string;
5
+ headers?: { [key: string]: dataObjectXlsxType[] };
6
+ data?: { [key: string]: dataObjectXlsxType[][] };
7
+ onAfterExport?: Function;
8
+ disabled?: boolean;
9
+ }
10
+
11
+ export interface styleObjectXlsxType {
12
+ allign?: {
13
+ vertical: "top" | "center" | "bottom";
14
+ horizontal: "left" | "center" | "right";
15
+ };
16
+ fontSize?: number;
17
+ fontColor?: string;
18
+ bold?: boolean;
19
+ backgroundColor?: string;
20
+ borders?: {
21
+ top: borderStyleType;
22
+ bottom: borderStyleType;
23
+ left: borderStyleType;
24
+ right: borderStyleType;
25
+ };
26
+ }
27
+ export interface dataObjectXlsxType extends styleObjectXlsxType {
28
+ value: string | number;
29
+ }
30
+
31
+ type borderStyleType =
32
+ | "dashDotDot"
33
+ | "dashDot"
34
+ | "dashed"
35
+ | "dotted"
36
+ | "hair"
37
+ | "mediumDashDotDot"
38
+ | "mediumDashDot"
39
+ | "mediumDashed"
40
+ | "medium"
41
+ | "slantDashDot"
42
+ | "thick"
43
+ | "thin";
@@ -48,7 +48,7 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
48
48
  x: pastDatesVisible ? Math.ceil(pastDaysInitialQuantity) * cellsWidth : 0,
49
49
  y: 0,
50
50
  };
51
- const initialDateOffset = 2 + chunkRenderX;
51
+ const initialDateOffset = 1 + chunkRenderX;
52
52
  //Refs
53
53
  const datesRowRef = (0, react_1.useRef)(null);
54
54
  const destiniesColumnRef = (0, react_1.useRef)(null);
@@ -7,5 +7,6 @@ import ProgressBar from "./components/ProgressBar/ProgressBar";
7
7
  import ParallelSelectionList from "./components/ParallelSelectionList/ParallelSelectionList";
8
8
  import Slider from "./components/Slider/Slider";
9
9
  import MultipleJoinedButtonsBar from "./components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar";
10
+ import ExportToExcelButton from "./components/ExportToExcelButton/ExportToExcelButton";
10
11
  import { setMulticalendarYScrollPosition } from "./Services/MulticalendarStatesAndSettings";
11
- export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, };
12
+ export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, ExportToExcelButton };
package/dist/cjs/index.js CHANGED
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MultipleJoinedButtonsBar = exports.Slider = exports.ParallelSelectionList = exports.ProgressBar = exports.PopUp = exports.Modal = exports.SearchBar = exports.SideBar = exports.setMulticalendarYScrollPosition = exports.Multicalendar = void 0;
6
+ exports.ExportToExcelButton = exports.MultipleJoinedButtonsBar = exports.Slider = exports.ParallelSelectionList = exports.ProgressBar = exports.PopUp = exports.Modal = exports.SearchBar = exports.SideBar = exports.setMulticalendarYScrollPosition = exports.Multicalendar = void 0;
7
7
  const Multicalendar_1 = __importDefault(require("./components/Multicalendar/Multicalendar"));
8
8
  exports.Multicalendar = Multicalendar_1.default;
9
9
  const SideBar_1 = __importDefault(require("./components/SideBar/SideBar"));
@@ -22,5 +22,7 @@ const Slider_1 = __importDefault(require("./components/Slider/Slider"));
22
22
  exports.Slider = Slider_1.default;
23
23
  const MultipleJoinedButtonsBar_1 = __importDefault(require("./components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar"));
24
24
  exports.MultipleJoinedButtonsBar = MultipleJoinedButtonsBar_1.default;
25
+ const ExportToExcelButton_1 = __importDefault(require("./components/ExportToExcelButton/ExportToExcelButton"));
26
+ exports.ExportToExcelButton = ExportToExcelButton_1.default;
25
27
  const MulticalendarStatesAndSettings_1 = require("./Services/MulticalendarStatesAndSettings");
26
28
  Object.defineProperty(exports, "setMulticalendarYScrollPosition", { enumerable: true, get: function () { return MulticalendarStatesAndSettings_1.setMulticalendarYScrollPosition; } });
@@ -0,0 +1,31 @@
1
+ .export-to-excel-button {
2
+ position: relative;
3
+ width: 220px;
4
+ height: 48px;
5
+ opacity: 1;
6
+ cursor: pointer;
7
+ padding: 14px;
8
+ text-align: center;
9
+ text-decoration: none;
10
+ touch-action: manipulation;
11
+ font-size: 16px;
12
+ letter-spacing: normal;
13
+ color: rgb(255, 255, 255);
14
+ font-weight: 700;
15
+ border-radius: 4px;
16
+ border: none;
17
+ background: green;
18
+ box-shadow: none;
19
+ transition: all 0.5s;
20
+ display: flex;
21
+ align-items: center;
22
+ justify-content: space-evenly;
23
+ margin: auto;
24
+ }
25
+ .export-to-excel-button:hover {
26
+ background: rgb(0, 170, 0);
27
+ }
28
+
29
+ .export-to-excel-button:disabled {
30
+ background: rgb(216, 216, 216);
31
+ }
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import "./ExportToExcelButton.css";
3
+ import { ExportToExcelButtonPropsType } from "./types";
4
+ declare const ExportToExcelButton: ({ customButtonText, customClass, fileName, headers, data, onAfterExport, disabled, }: ExportToExcelButtonPropsType) => JSX.Element;
5
+ export default ExportToExcelButton;
@@ -0,0 +1,17 @@
1
+ import React from "react";
2
+ import * as ownFunctions from "./ExportToExcelButtonOwnFunctions";
3
+ import "./ExportToExcelButton.css";
4
+ //Iconos
5
+ import { RiFileExcel2Fill } from "react-icons/ri";
6
+ const ExportToExcelButton = ({ customButtonText = "Export to Excel", customClass, fileName = "untitled", headers, data, onAfterExport, disabled, }) => {
7
+ return (React.createElement("button", { disabled: disabled, className: customClass ? customClass : "export-to-excel-button", onClick: () => {
8
+ ownFunctions.downloadExcel(fileName, data, headers);
9
+ if (onAfterExport !== undefined) {
10
+ onAfterExport();
11
+ }
12
+ } },
13
+ customButtonText,
14
+ " ",
15
+ React.createElement(RiFileExcel2Fill, null)));
16
+ };
17
+ export default ExportToExcelButton;
@@ -0,0 +1,6 @@
1
+ import { dataObjectXlsxType } from "./types";
2
+ export declare function downloadExcel(fileName: string, data: {
3
+ [key: string]: dataObjectXlsxType[][];
4
+ } | undefined, headers: {
5
+ [key: string]: dataObjectXlsxType[];
6
+ } | undefined): void;
@@ -0,0 +1,47 @@
1
+ //Librerias de terceros
2
+ import * as XLSX from "xlsx-js-style";
3
+ function styleObjectParser(styleObject) {
4
+ let objetoResultante = {
5
+ v: styleObject.value,
6
+ s: {},
7
+ };
8
+ if (styleObject.allign)
9
+ objetoResultante.s.alignment = Object.assign({}, styleObject.allign);
10
+ if (styleObject.fontSize)
11
+ objetoResultante.s.font = Object.assign(Object.assign({}, objetoResultante.s.font), { sz: styleObject.fontSize });
12
+ if (styleObject.fontColor)
13
+ objetoResultante.s.font = Object.assign(Object.assign({}, objetoResultante.s.font), { color: { rgb: styleObject.fontColor } });
14
+ if (styleObject.bold)
15
+ objetoResultante.s.font = Object.assign(Object.assign({}, objetoResultante.s.font), { bold: styleObject.bold });
16
+ if (styleObject.backgroundColor)
17
+ objetoResultante.s.fill = Object.assign(Object.assign({}, objetoResultante.s.fill), { fgColor: { rgb: styleObject.backgroundColor } });
18
+ if (styleObject.borders)
19
+ objetoResultante.s.border = {
20
+ bgColor: styleObject.borders,
21
+ };
22
+ return objetoResultante;
23
+ }
24
+ export function downloadExcel(fileName, data, headers) {
25
+ if (data !== undefined) {
26
+ const wb = XLSX.utils.book_new();
27
+ for (const hoja in data) {
28
+ if (Object.prototype.hasOwnProperty.call(data, hoja)) {
29
+ let dataXlsxJs = [];
30
+ if (headers !== undefined) {
31
+ dataXlsxJs = [
32
+ headers[hoja].map((encabezado) => styleObjectParser(encabezado)),
33
+ ...data[hoja].map((fila) => fila.map((celda) => styleObjectParser(celda))),
34
+ ];
35
+ }
36
+ else {
37
+ dataXlsxJs = [
38
+ ...data[hoja].map((fila) => fila.map((celda) => styleObjectParser(celda))),
39
+ ];
40
+ }
41
+ const ws = XLSX.utils.aoa_to_sheet(dataXlsxJs);
42
+ XLSX.utils.book_append_sheet(wb, ws, "hoja");
43
+ }
44
+ }
45
+ XLSX.writeFile(wb, `${fileName}.xlsx`);
46
+ }
47
+ }
@@ -0,0 +1,43 @@
1
+ export interface ExportToExcelButtonPropsType {
2
+ customButtonText?: string;
3
+ customClass?: string;
4
+ fileName?: string;
5
+ headers?: { [key: string]: dataObjectXlsxType[] };
6
+ data?: { [key: string]: dataObjectXlsxType[][] };
7
+ onAfterExport?: Function;
8
+ disabled?: boolean;
9
+ }
10
+
11
+ export interface styleObjectXlsxType {
12
+ allign?: {
13
+ vertical: "top" | "center" | "bottom";
14
+ horizontal: "left" | "center" | "right";
15
+ };
16
+ fontSize?: number;
17
+ fontColor?: string;
18
+ bold?: boolean;
19
+ backgroundColor?: string;
20
+ borders?: {
21
+ top: borderStyleType;
22
+ bottom: borderStyleType;
23
+ left: borderStyleType;
24
+ right: borderStyleType;
25
+ };
26
+ }
27
+ export interface dataObjectXlsxType extends styleObjectXlsxType {
28
+ value: string | number;
29
+ }
30
+
31
+ type borderStyleType =
32
+ | "dashDotDot"
33
+ | "dashDot"
34
+ | "dashed"
35
+ | "dotted"
36
+ | "hair"
37
+ | "mediumDashDotDot"
38
+ | "mediumDashDot"
39
+ | "mediumDashed"
40
+ | "medium"
41
+ | "slantDashDot"
42
+ | "thick"
43
+ | "thin";
@@ -20,7 +20,7 @@ const Multicalendar = ({ multicalendarId, ReactCellChildren, ReactListElementChi
20
20
  x: pastDatesVisible ? Math.ceil(pastDaysInitialQuantity) * cellsWidth : 0,
21
21
  y: 0,
22
22
  };
23
- const initialDateOffset = 2 + chunkRenderX;
23
+ const initialDateOffset = 1 + chunkRenderX;
24
24
  //Refs
25
25
  const datesRowRef = useRef(null);
26
26
  const destiniesColumnRef = useRef(null);
@@ -7,5 +7,6 @@ import ProgressBar from "./components/ProgressBar/ProgressBar";
7
7
  import ParallelSelectionList from "./components/ParallelSelectionList/ParallelSelectionList";
8
8
  import Slider from "./components/Slider/Slider";
9
9
  import MultipleJoinedButtonsBar from "./components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar";
10
+ import ExportToExcelButton from "./components/ExportToExcelButton/ExportToExcelButton";
10
11
  import { setMulticalendarYScrollPosition } from "./Services/MulticalendarStatesAndSettings";
11
- export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, };
12
+ export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, ExportToExcelButton };
package/dist/esm/index.js CHANGED
@@ -7,5 +7,6 @@ import ProgressBar from "./components/ProgressBar/ProgressBar";
7
7
  import ParallelSelectionList from "./components/ParallelSelectionList/ParallelSelectionList";
8
8
  import Slider from "./components/Slider/Slider";
9
9
  import MultipleJoinedButtonsBar from "./components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar";
10
+ import ExportToExcelButton from "./components/ExportToExcelButton/ExportToExcelButton";
10
11
  import { setMulticalendarYScrollPosition } from "./Services/MulticalendarStatesAndSettings";
11
- export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, };
12
+ export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, ExportToExcelButton };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "josenanodev-react-components-library",
3
- "version": "0.0.28",
3
+ "version": "0.1.0",
4
4
  "author": {
5
5
  "name": "Jose Carlos Cardenas Martinez"
6
6
  },
@@ -99,5 +99,8 @@
99
99
  },
100
100
  "readme": "ERROR: No README data found!",
101
101
  "homepage": "https://github.com/Josenanodev/josenanodev-react-components-library#readme",
102
- "_id": "josenanodev-react-components-library@0.0.13"
102
+ "_id": "josenanodev-react-components-library@0.0.13",
103
+ "dependencies": {
104
+ "xlsx-js-style": "^1.2.0"
105
+ }
103
106
  }