josenanodev-react-components-library 0.0.16 → 0.0.18

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 (61) hide show
  1. package/dist/cjs/components/Modal/Modal.css +3 -3
  2. package/dist/cjs/components/Modal/Modal.d.ts +1 -1
  3. package/dist/cjs/components/Modal/Modal.js +2 -2
  4. package/dist/cjs/components/Modal/types.d.ts +0 -1
  5. package/dist/cjs/components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar.css +40 -0
  6. package/dist/cjs/components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar.d.ts +5 -0
  7. package/dist/cjs/components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar.js +48 -0
  8. package/dist/cjs/components/MultipleJoinedButtonsBar/types.d.ts +6 -0
  9. package/dist/cjs/components/ParallelSelectionList/ParallelSelectionList.css +229 -0
  10. package/dist/cjs/components/ParallelSelectionList/ParallelSelectionList.d.ts +5 -0
  11. package/dist/cjs/components/ParallelSelectionList/ParallelSelectionList.js +135 -0
  12. package/dist/cjs/components/ParallelSelectionList/types.d.ts +19 -0
  13. package/dist/cjs/components/PopUp/PopUp.css +1 -1
  14. package/dist/cjs/components/PopUp/PopUp.d.ts +2 -2
  15. package/dist/cjs/components/PopUp/PopUp.js +6 -6
  16. package/dist/cjs/components/PopUp/types.d.ts +3 -2
  17. package/dist/cjs/components/ProgressBar/ProgressBar.css +39 -0
  18. package/dist/cjs/components/ProgressBar/ProgressBar.d.ts +5 -0
  19. package/dist/cjs/components/ProgressBar/ProgressBar.js +56 -0
  20. package/dist/cjs/components/ProgressBar/types.d.ts +7 -0
  21. package/dist/cjs/components/Slider/Slider.css +51 -0
  22. package/dist/cjs/components/Slider/Slider.d.ts +5 -0
  23. package/dist/cjs/components/Slider/Slider.js +165 -0
  24. package/dist/cjs/components/Slider/SliderOwnFunctions.d.ts +2 -0
  25. package/dist/cjs/components/Slider/SliderOwnFunctions.js +11 -0
  26. package/dist/cjs/components/Slider/types.d.ts +13 -0
  27. package/dist/cjs/hooks/useOutsideClick.d.ts +1 -1
  28. package/dist/cjs/hooks/useOutsideClick.js +5 -3
  29. package/dist/cjs/index.d.ts +5 -1
  30. package/dist/cjs/index.js +9 -1
  31. package/dist/esm/components/Modal/Modal.css +3 -3
  32. package/dist/esm/components/Modal/Modal.d.ts +1 -1
  33. package/dist/esm/components/Modal/Modal.js +2 -2
  34. package/dist/esm/components/Modal/types.d.ts +0 -1
  35. package/dist/esm/components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar.css +40 -0
  36. package/dist/esm/components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar.d.ts +5 -0
  37. package/dist/esm/components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar.js +23 -0
  38. package/dist/esm/components/MultipleJoinedButtonsBar/types.d.ts +6 -0
  39. package/dist/esm/components/ParallelSelectionList/ParallelSelectionList.css +229 -0
  40. package/dist/esm/components/ParallelSelectionList/ParallelSelectionList.d.ts +5 -0
  41. package/dist/esm/components/ParallelSelectionList/ParallelSelectionList.js +130 -0
  42. package/dist/esm/components/ParallelSelectionList/types.d.ts +19 -0
  43. package/dist/esm/components/PopUp/PopUp.css +1 -1
  44. package/dist/esm/components/PopUp/PopUp.d.ts +2 -2
  45. package/dist/esm/components/PopUp/PopUp.js +6 -6
  46. package/dist/esm/components/PopUp/types.d.ts +3 -2
  47. package/dist/esm/components/ProgressBar/ProgressBar.css +39 -0
  48. package/dist/esm/components/ProgressBar/ProgressBar.d.ts +5 -0
  49. package/dist/esm/components/ProgressBar/ProgressBar.js +31 -0
  50. package/dist/esm/components/ProgressBar/types.d.ts +7 -0
  51. package/dist/esm/components/Slider/Slider.css +51 -0
  52. package/dist/esm/components/Slider/Slider.d.ts +5 -0
  53. package/dist/esm/components/Slider/Slider.js +140 -0
  54. package/dist/esm/components/Slider/SliderOwnFunctions.d.ts +2 -0
  55. package/dist/esm/components/Slider/SliderOwnFunctions.js +6 -0
  56. package/dist/esm/components/Slider/types.d.ts +13 -0
  57. package/dist/esm/hooks/useOutsideClick.d.ts +1 -1
  58. package/dist/esm/hooks/useOutsideClick.js +5 -3
  59. package/dist/esm/index.d.ts +5 -1
  60. package/dist/esm/index.js +5 -1
  61. package/package.json +1 -1
@@ -0,0 +1,140 @@
1
+ import React, { useState, useRef, useEffect, Fragment } from "react";
2
+ import * as ownFunctions from "./SliderOwnFunctions";
3
+ import "./Slider.css";
4
+ const Slider = ({ minimumValue, maximumValue, onChange, initialValue = 0, value, showValueInsideButton, editableValueInsideButton, height = 40, width = 300, sufix, prefix, }) => {
5
+ //Refs
6
+ const sliderRef = useRef(null);
7
+ //Estados
8
+ const [position, setPosition] = useState(initialValue !== undefined
9
+ ? ownFunctions.definePostionByValue(initialValue, width, maximumValue, minimumValue)
10
+ : width / 2);
11
+ const [visibleValue, setVisibleValue] = useState(initialValue);
12
+ const [temporalVisibleValue, setTemporalVisibleValue] = useState(undefined);
13
+ const [cancelTransition, setCancelTransition] = useState(false);
14
+ useEffect(() => {
15
+ if (value !== undefined) {
16
+ setVisibleValue(value);
17
+ setPosition(ownFunctions.definePostionByValue(value, width, maximumValue, minimumValue));
18
+ }
19
+ }, [value, width, maximumValue, minimumValue]);
20
+ return (React.createElement("div", { ref: sliderRef, style: { width: width, height: height }, className: "slider", onMouseDown: (event1) => {
21
+ var nuevovisibleValue;
22
+ if (sliderRef.current !== null && sliderRef.current !== undefined) {
23
+ setCancelTransition(false);
24
+ const newPosition = event1.clientX - sliderRef.current.getBoundingClientRect().x;
25
+ setPosition(newPosition);
26
+ nuevovisibleValue = ownFunctions.defineVisibleValue(newPosition, width, maximumValue, minimumValue);
27
+ setVisibleValue(nuevovisibleValue);
28
+ }
29
+ function repositioning(event2) {
30
+ setCancelTransition(true);
31
+ if (sliderRef.current !== null && sliderRef.current !== undefined) {
32
+ setTemporalVisibleValue(undefined);
33
+ let newPosition = event2.clientX - sliderRef.current.getBoundingClientRect().x;
34
+ if (newPosition < 0)
35
+ newPosition = 0;
36
+ if (newPosition > width)
37
+ newPosition = width;
38
+ setPosition(newPosition);
39
+ nuevovisibleValue = ownFunctions.defineVisibleValue(newPosition, width, maximumValue, minimumValue);
40
+ setVisibleValue(nuevovisibleValue);
41
+ }
42
+ }
43
+ document.addEventListener("mousemove", repositioning);
44
+ function removeEventListeners() {
45
+ document.removeEventListener("mousemove", repositioning);
46
+ document.removeEventListener("mouseup", removeEventListeners);
47
+ setCancelTransition(false);
48
+ onChange(nuevovisibleValue);
49
+ }
50
+ document.addEventListener("mouseup", removeEventListeners);
51
+ }, onTouchStart: (event1) => {
52
+ var nuevovisibleValue;
53
+ if (sliderRef.current !== null && sliderRef.current !== undefined) {
54
+ setCancelTransition(false);
55
+ const newPosition = event1.touches[0].clientX - sliderRef.current.getBoundingClientRect().x;
56
+ setPosition(newPosition);
57
+ nuevovisibleValue = ownFunctions.defineVisibleValue(newPosition, width, maximumValue, minimumValue);
58
+ setVisibleValue(nuevovisibleValue);
59
+ }
60
+ function repositioning(event2) {
61
+ setCancelTransition(true);
62
+ if (sliderRef.current !== null && sliderRef.current !== undefined) {
63
+ setTemporalVisibleValue(undefined);
64
+ let newPosition = event2.touches[0].clientX - sliderRef.current.getBoundingClientRect().x;
65
+ if (newPosition < 0)
66
+ newPosition = 0;
67
+ if (newPosition > width)
68
+ newPosition = width;
69
+ setPosition(newPosition);
70
+ nuevovisibleValue = ownFunctions.defineVisibleValue(newPosition, width, maximumValue, minimumValue);
71
+ setVisibleValue(nuevovisibleValue);
72
+ }
73
+ }
74
+ document.addEventListener("touchmove", repositioning);
75
+ function removeEventListeners() {
76
+ document.removeEventListener("touchmove", repositioning);
77
+ document.removeEventListener("touchend", removeEventListeners);
78
+ setCancelTransition(false);
79
+ onChange(nuevovisibleValue);
80
+ }
81
+ document.addEventListener("touchend", removeEventListeners);
82
+ } },
83
+ React.createElement("div", { style: {
84
+ width: position,
85
+ height: height * 0.8,
86
+ borderTopLeftRadius: (height * 0.8) / 2,
87
+ borderBottomLeftRadius: (height * 0.8) / 2,
88
+ marginRight: -height / 2,
89
+ transition: cancelTransition ? "none" : "all 0.3s",
90
+ }, className: "left-fill" }),
91
+ React.createElement("div", { style: { width: height, height: height }, className: "sphere" }, showValueInsideButton && (React.createElement(Fragment, null,
92
+ prefix !== undefined && React.createElement("p", null, prefix),
93
+ React.createElement("input", { disabled: !editableValueInsideButton, type: "number", min: minimumValue, max: maximumValue, value: temporalVisibleValue !== undefined ? temporalVisibleValue : visibleValue, onChange: (event) => {
94
+ setTemporalVisibleValue(Number(event.target.value));
95
+ }, onFocus: () => {
96
+ setTemporalVisibleValue(visibleValue);
97
+ }, onKeyDown: (event) => {
98
+ if (event.key === "Enter" && temporalVisibleValue !== undefined) {
99
+ let nuevovalue = temporalVisibleValue;
100
+ if (nuevovalue < minimumValue)
101
+ nuevovalue = minimumValue;
102
+ if (nuevovalue > maximumValue)
103
+ nuevovalue = maximumValue;
104
+ const newPosition = ownFunctions.definePostionByValue(nuevovalue, width, maximumValue, minimumValue);
105
+ setPosition(newPosition);
106
+ const nuevovisibleValue = ownFunctions.defineVisibleValue(newPosition, width, maximumValue, minimumValue);
107
+ setVisibleValue(nuevovisibleValue);
108
+ onChange(nuevovisibleValue);
109
+ setTemporalVisibleValue(undefined);
110
+ }
111
+ if (event.key === "Escape") {
112
+ setPosition(ownFunctions.definePostionByValue(visibleValue, width, maximumValue, minimumValue));
113
+ setTemporalVisibleValue(undefined);
114
+ }
115
+ }, onBlur: () => {
116
+ if (temporalVisibleValue !== undefined) {
117
+ let nuevovalue = temporalVisibleValue;
118
+ if (nuevovalue < minimumValue)
119
+ nuevovalue = minimumValue;
120
+ if (nuevovalue > maximumValue)
121
+ nuevovalue = maximumValue;
122
+ const newPosition = ownFunctions.definePostionByValue(nuevovalue, width, maximumValue, minimumValue);
123
+ setPosition(newPosition);
124
+ const nuevovisibleValue = ownFunctions.defineVisibleValue(newPosition, width, maximumValue, minimumValue);
125
+ setVisibleValue(nuevovisibleValue);
126
+ onChange(nuevovisibleValue);
127
+ setTemporalVisibleValue(undefined);
128
+ }
129
+ } }),
130
+ sufix !== undefined && React.createElement("p", null, sufix)))),
131
+ React.createElement("div", { style: {
132
+ width: width - position,
133
+ height: height * 0.8,
134
+ borderTopRightRadius: (height * 0.8) / 2,
135
+ borderBottomRightRadius: (height * 0.8) / 2,
136
+ marginLeft: -height / 2,
137
+ transition: cancelTransition ? "none" : "all 0.3s",
138
+ }, className: "right-fill" })));
139
+ };
140
+ export default Slider;
@@ -0,0 +1,2 @@
1
+ export declare function defineVisibleValue(posicion: number, ancho: number, valorMaximo: number, valorMinimo: number): number;
2
+ export declare function definePostionByValue(nuevoValor: number, ancho: number, valorMaximo: number, valorMinimo: number): number;
@@ -0,0 +1,6 @@
1
+ export function defineVisibleValue(posicion, ancho, valorMaximo, valorMinimo) {
2
+ return Math.round((posicion / (ancho)) * (valorMaximo - valorMinimo) + valorMinimo);
3
+ }
4
+ export function definePostionByValue(nuevoValor, ancho, valorMaximo, valorMinimo) {
5
+ return ((nuevoValor - valorMinimo) / (valorMaximo - valorMinimo)) * (ancho);
6
+ }
@@ -0,0 +1,13 @@
1
+ export interface SliderPropsType {
2
+ minimumValue: number;
3
+ maximumValue: number;
4
+ onChange: (newValue: number) => Function;
5
+ initialValue?: number;
6
+ value?: number;
7
+ showValueInsideButton?: boolean;
8
+ editableValueInsideButton?: boolean;
9
+ height?: number;
10
+ width?: number;
11
+ sufix?: string;
12
+ prefix?: string;
13
+ }
@@ -2,5 +2,5 @@
2
2
  /**
3
3
  * Hook that alerts clicks outside of the passed ref
4
4
  */
5
- declare function useOutsideClick(elementRef: React.MutableRefObject<HTMLElement | null>, onOutsideClickAction: Function): void;
5
+ declare function useOutsideClick(elementRef: React.MutableRefObject<HTMLElement | null>, onOutsideClickAction: Function, elementsRefsExceptions?: React.MutableRefObject<HTMLElement | null>[]): void;
6
6
  export default useOutsideClick;
@@ -2,13 +2,15 @@ import { useEffect } from "react";
2
2
  /**
3
3
  * Hook that alerts clicks outside of the passed ref
4
4
  */
5
- function useOutsideClick(elementRef, onOutsideClickAction) {
5
+ function useOutsideClick(elementRef, onOutsideClickAction, elementsRefsExceptions = []) {
6
6
  useEffect(() => {
7
7
  /**
8
8
  * Alert if clicked on outside of element
9
9
  */
10
10
  function handleClickOutside(event) {
11
- if (elementRef.current && !elementRef.current.contains(event.target)) {
11
+ if (elementRef.current &&
12
+ !elementRef.current.contains(event.target) &&
13
+ elementsRefsExceptions.every((elementRefException) => elementRefException.current !== event.target)) {
12
14
  onOutsideClickAction();
13
15
  }
14
16
  }
@@ -18,6 +20,6 @@ function useOutsideClick(elementRef, onOutsideClickAction) {
18
20
  // Unbind the event listener on clean up
19
21
  document.removeEventListener("mousedown", handleClickOutside);
20
22
  };
21
- }, [elementRef, onOutsideClickAction]);
23
+ }, [elementRef, onOutsideClickAction, elementsRefsExceptions]);
22
24
  }
23
25
  export default useOutsideClick;
@@ -3,5 +3,9 @@ import SideBar from "./components/SideBar/SideBar";
3
3
  import SearchBar from "./components/SearchBar/SearchBar";
4
4
  import Modal from "./components/Modal/Modal";
5
5
  import PopUp from "./components/PopUp/PopUp";
6
+ import ProgressBar from "./components/ProgressBar/ProgressBar";
7
+ import ParallelSelectionList from "./components/ParallelSelectionList/ParallelSelectionList";
8
+ import Slider from "./components/Slider/Slider";
9
+ import MultipleJoinedButtonsBar from "./components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar";
6
10
  import { setMulticalendarYScrollPosition } from "./Services/MulticalendarStatesAndSettings";
7
- export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, };
11
+ export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, };
package/dist/esm/index.js CHANGED
@@ -3,5 +3,9 @@ import SideBar from "./components/SideBar/SideBar";
3
3
  import SearchBar from "./components/SearchBar/SearchBar";
4
4
  import Modal from "./components/Modal/Modal";
5
5
  import PopUp from "./components/PopUp/PopUp";
6
+ import ProgressBar from "./components/ProgressBar/ProgressBar";
7
+ import ParallelSelectionList from "./components/ParallelSelectionList/ParallelSelectionList";
8
+ import Slider from "./components/Slider/Slider";
9
+ import MultipleJoinedButtonsBar from "./components/MultipleJoinedButtonsBar/MultipleJoinedButtonsBar";
6
10
  import { setMulticalendarYScrollPosition } from "./Services/MulticalendarStatesAndSettings";
7
- export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, };
11
+ export { Multicalendar, setMulticalendarYScrollPosition, SideBar, SearchBar, Modal, PopUp, ProgressBar, ParallelSelectionList, Slider, MultipleJoinedButtonsBar, };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "josenanodev-react-components-library",
3
- "version": "0.0.16",
3
+ "version": "0.0.18",
4
4
  "author": {
5
5
  "name": "Jose Carlos Cardenas Martinez"
6
6
  },