@royaltics/ui 1.0.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.
- package/README.md +84 -0
- package/dist/buttons/Button.d.ts +19 -0
- package/dist/buttons/Button.d.ts.map +1 -0
- package/dist/buttons/Button.js +12 -0
- package/dist/buttons/Button.js.map +1 -0
- package/dist/forms/Checkbox.d.ts +18 -0
- package/dist/forms/Checkbox.d.ts.map +1 -0
- package/dist/forms/Checkbox.js +17 -0
- package/dist/forms/Checkbox.js.map +1 -0
- package/dist/forms/Input.d.ts +31 -0
- package/dist/forms/Input.d.ts.map +1 -0
- package/dist/forms/Input.js +35 -0
- package/dist/forms/Input.js.map +1 -0
- package/dist/forms/InputAutocomplete.d.ts +20 -0
- package/dist/forms/InputAutocomplete.d.ts.map +1 -0
- package/dist/forms/InputAutocomplete.js +67 -0
- package/dist/forms/InputAutocomplete.js.map +1 -0
- package/dist/forms/Paginate.d.ts +12 -0
- package/dist/forms/Paginate.d.ts.map +1 -0
- package/dist/forms/Paginate.js +35 -0
- package/dist/forms/Paginate.js.map +1 -0
- package/dist/forms/PhotoCard.d.ts +12 -0
- package/dist/forms/PhotoCard.d.ts.map +1 -0
- package/dist/forms/PhotoCard.js +62 -0
- package/dist/forms/PhotoCard.js.map +1 -0
- package/dist/forms/PlayerYoutube.d.ts +17 -0
- package/dist/forms/PlayerYoutube.d.ts.map +1 -0
- package/dist/forms/PlayerYoutube.js +40 -0
- package/dist/forms/PlayerYoutube.js.map +1 -0
- package/dist/forms/RadioButton.d.ts +16 -0
- package/dist/forms/RadioButton.d.ts.map +1 -0
- package/dist/forms/RadioButton.js +14 -0
- package/dist/forms/RadioButton.js.map +1 -0
- package/dist/forms/Select.d.ts +22 -0
- package/dist/forms/Select.d.ts.map +1 -0
- package/dist/forms/Select.js +36 -0
- package/dist/forms/Select.js.map +1 -0
- package/dist/forms/TextArea.d.ts +22 -0
- package/dist/forms/TextArea.d.ts.map +1 -0
- package/dist/forms/TextArea.js +21 -0
- package/dist/forms/TextArea.js.map +1 -0
- package/dist/forms/ToogleSwitch.d.ts +12 -0
- package/dist/forms/ToogleSwitch.d.ts.map +1 -0
- package/dist/forms/ToogleSwitch.js +14 -0
- package/dist/forms/ToogleSwitch.js.map +1 -0
- package/dist/forms/index.d.ts +12 -0
- package/dist/forms/index.d.ts.map +1 -0
- package/dist/forms/index.js +12 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/hooks/index.d.ts +4 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +4 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useHttpState.d.ts +31 -0
- package/dist/hooks/useHttpState.d.ts.map +1 -0
- package/dist/hooks/useHttpState.js +100 -0
- package/dist/hooks/useHttpState.js.map +1 -0
- package/dist/hooks/useNavigatorOnline.d.ts +3 -0
- package/dist/hooks/useNavigatorOnline.d.ts.map +1 -0
- package/dist/hooks/useNavigatorOnline.js +20 -0
- package/dist/hooks/useNavigatorOnline.js.map +1 -0
- package/dist/hooks/useRouter.d.ts +9 -0
- package/dist/hooks/useRouter.d.ts.map +1 -0
- package/dist/hooks/useRouter.js +21 -0
- package/dist/hooks/useRouter.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/reducers/index.d.ts +7 -0
- package/dist/reducers/index.d.ts.map +1 -0
- package/dist/reducers/index.js +8 -0
- package/dist/reducers/index.js.map +1 -0
- package/dist/validator/validator.d.ts +25 -0
- package/dist/validator/validator.d.ts.map +1 -0
- package/dist/validator/validator.js +119 -0
- package/dist/validator/validator.js.map +1 -0
- package/package.json +46 -0
package/README.md
ADDED
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
# 📦 Royaltics Utils & UI
|
|
2
|
+
|
|
3
|
+
🚀 Una librería de utilidades y componentes UI reutilizables para proyectos JavaScript y TypeScript. Compatible con utilsJS y ESM.
|
|
4
|
+
|
|
5
|
+
## 📌 Instalación
|
|
6
|
+
|
|
7
|
+
Puedes instalar la librería usando **pnpm**, **npm** o **yarn**:
|
|
8
|
+
|
|
9
|
+
```sh
|
|
10
|
+
pnpm add royaltics
|
|
11
|
+
# o
|
|
12
|
+
npm install royaltics
|
|
13
|
+
# o
|
|
14
|
+
yarn add royaltics
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 📂 Estructura del Paquete
|
|
20
|
+
|
|
21
|
+
Esta librería está dividida en dos módulos principales:
|
|
22
|
+
|
|
23
|
+
- `` → Funciones utilitarias
|
|
24
|
+
- `` → Componentes UI
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 🛠 **Uso de Utilidades (**``**)**
|
|
29
|
+
|
|
30
|
+
### 📅 **Ejemplo: Formatear fecha en español**
|
|
31
|
+
|
|
32
|
+
```ts
|
|
33
|
+
import { dateToStringEs } from "royaltics/utils";
|
|
34
|
+
|
|
35
|
+
const fecha = new Date();
|
|
36
|
+
console.log(dateToStringEs(fecha)); // "Lunes, 30 de Marzo del 2023"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### 🔢 **Ejemplo: formatear Numeros**
|
|
40
|
+
|
|
41
|
+
```ts
|
|
42
|
+
import { defaultFloat } from "royaltics/utils";
|
|
43
|
+
|
|
44
|
+
console.log(defaultFloat("5,599")); // 5.599
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## 🎨 **Uso de Componentes UI (**``**)**
|
|
50
|
+
|
|
51
|
+
### ▶️ **Ejemplo: Reproductor de YouTube**
|
|
52
|
+
|
|
53
|
+
```tsx
|
|
54
|
+
import { YouTubePlayer } from "royaltics/ui";
|
|
55
|
+
|
|
56
|
+
const App = () => (
|
|
57
|
+
<YouTubePlayer videoId="dQw4w9WgXcQ" />
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
export default App;
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## ⚙️ **Compilación y Desarrollo**
|
|
66
|
+
|
|
67
|
+
Para compilar la librería:
|
|
68
|
+
|
|
69
|
+
```sh
|
|
70
|
+
pnpm build
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Para ejecutar en modo desarrollo:
|
|
74
|
+
|
|
75
|
+
```sh
|
|
76
|
+
pnpm dev
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 📜 **Licencia**
|
|
82
|
+
|
|
83
|
+
MIT License © 2025 - Royaltics Solutions
|
|
84
|
+
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import React, { ReactNode } from "react";
|
|
2
|
+
type ButtonType = {
|
|
3
|
+
lb?: string;
|
|
4
|
+
icon?: ReactNode;
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
IconNode?: any;
|
|
7
|
+
inForm?: boolean;
|
|
8
|
+
className?: any;
|
|
9
|
+
theme?: 'primary' | 'secondary' | 'warn' | 'danger' | 'default';
|
|
10
|
+
tabIndex?: number;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
onClick?: any;
|
|
13
|
+
wMax?: boolean;
|
|
14
|
+
padding?: 'small' | 'medium' | 'large';
|
|
15
|
+
wrap?: boolean;
|
|
16
|
+
};
|
|
17
|
+
declare const Button: ({ lb, padding, icon, children, IconNode, wMax, theme, className, onClick, inForm, disabled, tabIndex, wrap }: ButtonType) => React.JSX.Element;
|
|
18
|
+
export default Button;
|
|
19
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../src/buttons/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGzC,KAAK,UAAU,GAAG;IAChB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAC,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;IACtC,IAAI,CAAC,EAAC,OAAO,CAAA;CACd,CAAA;AAED,QAAA,MAAM,MAAM,iHAA0I,UAAU,sBA0B/J,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
const Button = ({ lb = "", padding, icon, children, IconNode, wMax = false, theme = 'default', className, onClick, inForm, disabled, tabIndex, wrap }) => {
|
|
4
|
+
return (React.createElement("div", { className: `flex flex-col items-stretch justify-end ${wMax ? 'w-max' : 'w-full'} ${className ?? ''}` },
|
|
5
|
+
React.createElement("button", { className: cn('button text-white ', theme == 'default' && "bg-gray-500 hover:bg-gray-600 disabled:bg-slate-300", theme == 'primary' && "bg-sky-650 hover:bg-sky-750 disabled:bg-sky-300 ", theme == 'secondary' && "bg-green-500 hover:bg-green-650 disabled:bg-green-300 ", theme == 'danger' && "bg-red-600 hover:bg-red-700 disabled:bg-red-300 ", theme == 'warn' && "bg-yellow-600 hover:bg-yellow-700 disabled:bg-yellow-300 ", padding == 'small' && (inForm || icon || IconNode ? '!py-[0.45rem]' : '!py-1.5'), padding == 'medium' && '!py-2 !px-4', padding == 'large' && '!p-4'), onClick: onClick, title: lb, tabIndex: tabIndex, disabled: disabled },
|
|
6
|
+
icon,
|
|
7
|
+
children,
|
|
8
|
+
IconNode && React.createElement(IconNode, { className: "h-5" }),
|
|
9
|
+
lb && React.createElement("span", { className: wrap ? 'hidden md:block' : '' }, lb))));
|
|
10
|
+
};
|
|
11
|
+
export default Button;
|
|
12
|
+
//# sourceMappingURL=Button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.js","sourceRoot":"","sources":["../../src/buttons/Button.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAoB,MAAM,OAAO,CAAC;AACzC,OAAO,EAAE,MAAM,YAAY,CAAA;AAkB3B,MAAM,MAAM,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,EAAE,KAAK,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAc,EAAE,EAAE;IAElK,OAAO,CACL,6BAAK,SAAS,EAAE,2CAA2C,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,IAAI,SAAS,IAAI,EAAE,EAAE;QACvG,gCACE,SAAS,EAAE,EAAE,CAAC,oBAAoB,EAChC,KAAK,IAAI,SAAS,IAAI,qDAAqD,EAC3E,KAAK,IAAI,SAAS,IAAI,kDAAkD,EACxE,KAAK,IAAI,WAAW,IAAI,wDAAwD,EAChF,KAAK,IAAI,QAAQ,IAAI,kDAAkD,EACvE,KAAK,IAAI,MAAM,IAAI,2DAA2D,EAC9E,OAAO,IAAI,OAAO,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,EAChF,OAAO,IAAI,QAAQ,IAAI,aAAa,EACpC,OAAO,IAAI,OAAO,IAAI,MAAM,CAC7B,EACD,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,EAAE,EACT,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ;YACjB,IAAI;YACJ,QAAQ;YACR,QAAQ,IAAI,oBAAC,QAAQ,IAAC,SAAS,EAAC,KAAK,GAAG;YACxC,EAAE,IAAI,8BAAM,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAA,CAAC,CAAA,EAAE,IAAG,EAAE,CAAQ,CACzD,CACL,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type CheckBoxType = {
|
|
3
|
+
id: string;
|
|
4
|
+
lb?: string;
|
|
5
|
+
state: {
|
|
6
|
+
inputs: any;
|
|
7
|
+
setInputs?: React.Dispatch<any>;
|
|
8
|
+
};
|
|
9
|
+
readOnly?: boolean;
|
|
10
|
+
icon?: any;
|
|
11
|
+
className?: string;
|
|
12
|
+
inForm?: boolean;
|
|
13
|
+
tabIndex?: number;
|
|
14
|
+
type?: 'number' | 'boolean';
|
|
15
|
+
};
|
|
16
|
+
declare const Checkbox: ({ id, state, lb, readOnly, className, inForm, type, tabIndex }: CheckBoxType) => React.JSX.Element;
|
|
17
|
+
export default Checkbox;
|
|
18
|
+
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../src/forms/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAC,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;CAC5B,CAAA;AACD,QAAA,MAAM,QAAQ,mEAAgF,YAAY,sBA4BzG,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
const Checkbox = ({ id, state, lb, readOnly, className, inForm, type = 'boolean', tabIndex }) => {
|
|
3
|
+
const { inputs, setInputs } = state;
|
|
4
|
+
const handleClick = () => {
|
|
5
|
+
if (setInputs && !readOnly) {
|
|
6
|
+
let value = type == 'number' ? (inputs[id] == 1 ? 0 : 1) : !inputs[id];
|
|
7
|
+
setInputs({ [id]: value });
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
return (React.createElement("div", { className: `font-medium flex items-center space-x-2 dark:text-gray-200 cursor-pointer ${readOnly ? 'text-gray-600 dark:text-gray-400' : ''} ${inForm ? 'mt-3' : ''}` },
|
|
11
|
+
React.createElement("input", { id: "check_" + id, onChange: handleClick, type: "checkbox", className: `appearance-none ${className ?? 'w-4 h-4'} rounded border border-gray-300 cursor-pointer `,
|
|
12
|
+
//dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:bg-gray-700 dark:border-gray-600
|
|
13
|
+
checked: inputs[id] || false, disabled: readOnly, tabIndex: tabIndex, name: id }),
|
|
14
|
+
React.createElement("label", { htmlFor: "check_" + id, className: "cursor-pointer" }, lb)));
|
|
15
|
+
};
|
|
16
|
+
export default Checkbox;
|
|
17
|
+
//# sourceMappingURL=Checkbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.js","sourceRoot":"","sources":["../../src/forms/Checkbox.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,MAAM,QAAQ,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAgB,EAAE,EAAE;IAC5G,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,IAAI,KAAK,GAAG,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvE,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,6EAA6E,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACvK,+BAAO,EAAE,EAAE,QAAQ,GAAG,EAAE,EACtB,QAAQ,EAAE,WAAW,EAErB,IAAI,EAAC,UAAU,EACf,SAAS,EAAE,mBAAmB,SAAS,IAAI,SAAS,mDAAmD;YACvG,uGAAuG;YACvG,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,EAAE,GAER;QACF,+BAAO,OAAO,EAAE,QAAQ,GAAG,EAAE,EAAE,SAAS,EAAC,gBAAgB,IAAE,EAAE,CAAS,CAClE,CAEP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import React, { LegacyRef } from "react";
|
|
2
|
+
type InputType = {
|
|
3
|
+
id: string;
|
|
4
|
+
lb?: string;
|
|
5
|
+
noWrap?: boolean;
|
|
6
|
+
type?: "text" | "hidden" | 'time' | "date" | "number" | 'email' | 'password' | 'month' | 'datetime-local';
|
|
7
|
+
placeholder?: string;
|
|
8
|
+
state: {
|
|
9
|
+
inputs: any;
|
|
10
|
+
setInputs?: React.Dispatch<any>;
|
|
11
|
+
};
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
readOnly?: boolean;
|
|
14
|
+
className?: string;
|
|
15
|
+
icon?: any;
|
|
16
|
+
textCenter?: boolean;
|
|
17
|
+
required?: boolean;
|
|
18
|
+
referer?: LegacyRef<any> | undefined;
|
|
19
|
+
onBlur?: (evt: any) => void;
|
|
20
|
+
onKeyDown?: (evt: any) => void;
|
|
21
|
+
enter?: "search" | "go" | "enter" | "done" | "next" | "previous" | "send";
|
|
22
|
+
onEnter?: (evt: any) => void;
|
|
23
|
+
autocomplete?: 'off' | 'new-password';
|
|
24
|
+
tabIndex?: number;
|
|
25
|
+
decimal?: boolean;
|
|
26
|
+
maxLength?: number;
|
|
27
|
+
onwheel?: boolean;
|
|
28
|
+
};
|
|
29
|
+
declare const Input: ({ id, lb, type, decimal, onwheel, maxLength, placeholder, state, disabled, icon, readOnly, noWrap, className, textCenter, required, referer, onKeyDown, enter, onEnter, autocomplete, tabIndex, onBlur }: InputType) => React.JSX.Element;
|
|
30
|
+
export default Input;
|
|
31
|
+
//# sourceMappingURL=Input.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.d.ts","sourceRoot":"","sources":["../../src/forms/Input.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEzC,KAAK,SAAS,GAAG;IACf,EAAE,EAAE,MAAM,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,gBAAgB,CAAC;IAC1G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACrC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,KAAK,CAAC,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IAC1E,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,YAAY,CAAC,EAAE,KAAK,GAAG,cAAc,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CAEnB,CAAA;AAED,QAAA,MAAM,KAAK,6MAAoP,SAAS,sBAuDvQ,CAAC;AAEF,eAAe,KAAK,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
const Input = ({ id, lb, type = 'text', decimal = true, onwheel = true, maxLength, placeholder, state, disabled, icon, readOnly, noWrap = true, className, textCenter = false, required, referer, onKeyDown, enter, onEnter, autocomplete, tabIndex, onBlur }) => {
|
|
3
|
+
const { inputs, setInputs } = state;
|
|
4
|
+
const _onKeyDown = (evt) => {
|
|
5
|
+
//validar decimal
|
|
6
|
+
if (type === 'number' && !decimal && (evt.keyCode == 110 || evt.keyCode == 188 || evt.keyCode == 190)) {
|
|
7
|
+
evt.preventDefault();
|
|
8
|
+
return;
|
|
9
|
+
}
|
|
10
|
+
if (evt.keyCode == 13 && onEnter && !evt.repeat) { //if Enter
|
|
11
|
+
onEnter(evt);
|
|
12
|
+
}
|
|
13
|
+
if (onKeyDown)
|
|
14
|
+
onKeyDown(evt);
|
|
15
|
+
};
|
|
16
|
+
return (React.createElement("div", { className: "flex flex-col items-stretch justify-start " + (className ?? '') },
|
|
17
|
+
lb && React.createElement("label", { htmlFor: id, className: `font-medium text-gray-700 dark:text-gray-200 pb-0.5` + (noWrap ? " text-justify" : "wrap") },
|
|
18
|
+
lb,
|
|
19
|
+
":"),
|
|
20
|
+
React.createElement("div", { className: `flex flex-row-reverse border dark:border-gray-600 rounded-md items-center ${readOnly ? 'bg-gray-50 dark:bg-gray-600' : 'dark:bg-gray-800 '}` },
|
|
21
|
+
React.createElement("input", { ref: referer, className: `py-1.5 rounded-md px-2 w-full ${textCenter ? 'text-center' : ''} outline-none ${readOnly ? 'bg-gray-50 dark:bg-gray-600 dark:text-gray-200' : 'dark:bg-gray-800 dark:text-white'}`, id: id, "aria-autocomplete": autocomplete === "off" ? "none" : "inline", autoComplete: autocomplete, type: type, value: inputs?.[id] || '', placeholder: placeholder || lb, disabled: disabled, readOnly: readOnly, required: required, maxLength: maxLength, onFocus: onwheel ? undefined : (e) => e.target.addEventListener("wheel", function (e) { e.preventDefault(); }, { passive: false }), onKeyDown: _onKeyDown, onBlur: onBlur, onPaste: (event) => {
|
|
22
|
+
event.preventDefault();
|
|
23
|
+
const pastedText = event.clipboardData.getData('text')?.trimEnd();
|
|
24
|
+
const { selectionStart, selectionEnd, value } = event.target;
|
|
25
|
+
const isFullySelected = (selectionStart === 0 && selectionEnd === value.length) || selectionEnd === null;
|
|
26
|
+
const finalValue = isFullySelected ? pastedText : value.slice(0, selectionStart) + pastedText + value.slice(selectionEnd);
|
|
27
|
+
// Set the input state with the new value
|
|
28
|
+
setInputs?.({ [id]: finalValue });
|
|
29
|
+
}, enterKeyHint: enter, tabIndex: tabIndex, onChange: (e) => {
|
|
30
|
+
setInputs?.({ [id]: e.target.value });
|
|
31
|
+
} }),
|
|
32
|
+
React.createElement("span", { className: `${icon ? "ml-1 pl-1" : ""} ${disabled ? "text-gray-400 dark:text-gray-800" : "text-gray-700 dark:text-gray-300"}` }, icon))));
|
|
33
|
+
};
|
|
34
|
+
export default Input;
|
|
35
|
+
//# sourceMappingURL=Input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Input.js","sourceRoot":"","sources":["../../src/forms/Input.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type InputProps = {
|
|
3
|
+
id: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
state: {
|
|
6
|
+
inputs: any;
|
|
7
|
+
setInputs: (data: any, items?: any) => void;
|
|
8
|
+
};
|
|
9
|
+
lb?: string;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
api: string;
|
|
12
|
+
disabled?: boolean;
|
|
13
|
+
keyText?: string;
|
|
14
|
+
keyValue?: string;
|
|
15
|
+
onKeyDown?: (e: any) => void;
|
|
16
|
+
criteria?: any;
|
|
17
|
+
};
|
|
18
|
+
declare const _default: React.MemoExoticComponent<({ lb, state, api, keyText, keyValue, disabled, className, id, placeholder, criteria }: InputProps) => JSX.Element>;
|
|
19
|
+
export default _default;
|
|
20
|
+
//# sourceMappingURL=InputAutocomplete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputAutocomplete.d.ts","sourceRoot":"","sources":["../../src/forms/InputAutocomplete.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgD,MAAM,OAAO,CAAC;AAOrE,KAAK,UAAU,GAAG;IACd,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,GAAG,KAAK,IAAI,CAAA;KAAE,CAAC;IACpE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,GAAG,CAAC;CAClB,CAAA;0IAEoJ,UAAU,KAAG,GAAG,CAAC,OAAO;AA0F7K,wBAAuC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import React, { memo, useEffect, useReducer, useState } from "react";
|
|
2
|
+
import cn from 'classnames';
|
|
3
|
+
import { XCircleIcon } from "@heroicons/react/24/outline";
|
|
4
|
+
import { Reducer } from "../reducers/index.js";
|
|
5
|
+
import useHttpState from "../hooks/useHttpState.js";
|
|
6
|
+
const InputAutocomplete = ({ lb, state, api, keyText = 'names', keyValue = 'id', disabled = false, className = '', id, placeholder, criteria = {} }) => {
|
|
7
|
+
const [dropdown, setDropDown] = useReducer((Reducer), { open: false, text: '' });
|
|
8
|
+
const [dropdownList, setDropDownList] = useState([]);
|
|
9
|
+
const [selectedItems, setSelectedItems] = useState([]); // Estado para los elementos seleccionados
|
|
10
|
+
const { inputs, setInputs } = state;
|
|
11
|
+
const { get, post } = useHttpState();
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
// Auto Select first Element -> Only if model not contains this key Text
|
|
14
|
+
if (selectedItems) {
|
|
15
|
+
setInputs({ [id]: selectedItems.map((item => item[keyValue])) }, selectedItems);
|
|
16
|
+
}
|
|
17
|
+
}, [selectedItems]);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
// Auto Select first Element -> Only if model not contains this key Text
|
|
20
|
+
if (inputs[id] > 0 && !inputs[keyText] && id) {
|
|
21
|
+
get(api + "/" + inputs[id], {
|
|
22
|
+
onSuccess: (d) => {
|
|
23
|
+
setInputs({ [id]: d[keyValue], [keyText]: d[keyText], text: d[keyText] });
|
|
24
|
+
}
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
}, []);
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
// Auto Select first Element -> Only if model not contains this key
|
|
30
|
+
if (dropdown.text?.length > 0 && id) {
|
|
31
|
+
post(api + '/search', {
|
|
32
|
+
data: { search: dropdown.text, ...criteria, limit: 100 },
|
|
33
|
+
onSuccess: (data) => {
|
|
34
|
+
setDropDownList(data);
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}, [dropdown.text]);
|
|
39
|
+
const handleSelect = (item) => {
|
|
40
|
+
if (Number(item[keyValue]) <= 0 || selectedItems.find(i => i[keyValue] === item[keyValue])) {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
setSelectedItems([...selectedItems, item]); // Agrega el elemento seleccionado a la lista
|
|
44
|
+
setDropDown({ text: '', open: false }); // Cierra el dropdown
|
|
45
|
+
};
|
|
46
|
+
const handleRemove = (item) => {
|
|
47
|
+
setSelectedItems(selectedItems.filter(i => i[keyValue] !== item[keyValue])); // Elimina el elemento de la lista
|
|
48
|
+
};
|
|
49
|
+
return (React.createElement("div", { className: "relative flex flex-col select-none " + className },
|
|
50
|
+
lb && React.createElement("label", { className: 'text-gray-700 dark:text-gray-200 pb-0.5' },
|
|
51
|
+
lb,
|
|
52
|
+
" (",
|
|
53
|
+
selectedItems.length,
|
|
54
|
+
")"),
|
|
55
|
+
React.createElement("div", { className: cn('flex flex-wrap items-center gap-2 border rounded-md py-1 px-1 dark:border-gray-600 ', disabled ? 'dark:bg-gray-600 dark:text-gray-300' : 'bg-white dark:bg-gray-800 dark:text-white') },
|
|
56
|
+
selectedItems.map((item, index) => (React.createElement("div", { key: index, className: "flex items-center bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded-md" },
|
|
57
|
+
React.createElement("span", null, item[keyText]),
|
|
58
|
+
React.createElement(XCircleIcon, { className: "h-4 w-4 ml-1 cursor-pointer", onClick: () => handleRemove(item) })))),
|
|
59
|
+
React.createElement("input", { className: "flex-grow overflow-hidden outline-none bg-transparent py-0.5", type: "text", enterKeyHint: "search", onChange: (e) => setDropDown({ open: true, text: e.target.value }), onKeyDown: (e) => {
|
|
60
|
+
if (e.key === 'Enter') {
|
|
61
|
+
setDropDown({ open: true, text: dropdown.text });
|
|
62
|
+
}
|
|
63
|
+
}, placeholder: placeholder || lb, value: dropdown.text })),
|
|
64
|
+
dropdown.open && dropdownList.length > 0 && React.createElement("div", { className: "absolute border-1 dark:border-slate-600 bg-white dark:bg-slate-800 top-full w-full z-30 overflow-y-auto max-h-48 p-1 rounded-md shadow-md" }, dropdownList && dropdownList.map((item, index) => (React.createElement("div", { key: index, className: cn('p-1 cursor-pointer hover:bg-black/10 truncate border-b-2 border-white dark:border-slate-700 dark:text-white'), onClick: () => handleSelect(item) }, item[keyText]))))));
|
|
65
|
+
};
|
|
66
|
+
export default memo(InputAutocomplete);
|
|
67
|
+
//# sourceMappingURL=InputAutocomplete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InputAutocomplete.js","sourceRoot":"","sources":["../../src/forms/InputAutocomplete.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type PaginateProps = {
|
|
3
|
+
defaultPage?: number;
|
|
4
|
+
onChangue: (page: number, offset: number, limit: number) => void;
|
|
5
|
+
rows: number;
|
|
6
|
+
rowsPage: number;
|
|
7
|
+
children: any;
|
|
8
|
+
overFlowAuto?: boolean;
|
|
9
|
+
};
|
|
10
|
+
declare const _default: React.MemoExoticComponent<({ defaultPage, rows, rowsPage, children, onChangue, overFlowAuto }: PaginateProps) => JSX.Element>;
|
|
11
|
+
export default _default;
|
|
12
|
+
//# sourceMappingURL=Paginate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paginate.d.ts","sourceRoot":"","sources":["../../src/forms/Paginate.tsx"],"names":[],"mappings":"AACA,OAAO,KAAkD,MAAM,OAAO,CAAC;AAGvE,KAAK,aAAa,GAAG;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACjE,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,GAAG,CAAC;IACd,YAAY,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAA;uHAE8F,aAAa,KAAG,GAAG,CAAC,OAAO;AAoD1H,wBAAoC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { ChevronLeftIcon, ChevronRightIcon } from '@heroicons/react/24/solid';
|
|
2
|
+
import React, { useEffect, useReducer } from 'react';
|
|
3
|
+
import { Reducer } from '../reducers/index.js';
|
|
4
|
+
const Paginate = ({ defaultPage = 1, rows, rowsPage = 30, children, onChangue, overFlowAuto }) => {
|
|
5
|
+
const [paginate, setPaginate] = useReducer((Reducer), { current: defaultPage, total: 1 });
|
|
6
|
+
useEffect(() => {
|
|
7
|
+
let pageTotal = 1;
|
|
8
|
+
if (rowsPage > 0)
|
|
9
|
+
pageTotal = Math.ceil(rows / rowsPage);
|
|
10
|
+
setPaginate({ total: pageTotal });
|
|
11
|
+
}, [rows]);
|
|
12
|
+
const nextPage = () => {
|
|
13
|
+
const page = (paginate.current + 1) >= paginate.total ? paginate.total : paginate.current + 1;
|
|
14
|
+
onChangue((page - 1) * rowsPage, page * rowsPage, page);
|
|
15
|
+
setPaginate({ current: page });
|
|
16
|
+
};
|
|
17
|
+
const prevPage = () => {
|
|
18
|
+
const page = (paginate.current - 1) < 0 ? 0 : paginate.current - 1;
|
|
19
|
+
onChangue((page - 1) * rowsPage, page * rowsPage, page);
|
|
20
|
+
setPaginate({ current: page });
|
|
21
|
+
};
|
|
22
|
+
return (React.createElement(React.Fragment, null,
|
|
23
|
+
React.createElement("div", { className: overFlowAuto ? 'w-full overflow-auto h-96 scrollbar-thin' : '' }, children),
|
|
24
|
+
React.createElement("div", { className: "my-1 flex items-center gap-1 cursor-pointer text-base select-none" },
|
|
25
|
+
React.createElement("button", { title: 'Anterior', disabled: paginate.current == 1 || paginate.total == 1, onClick: prevPage, className: 'p-1 font-bold rounded-md bg-slate-200 dark:bg-slate-600 disabled:text-gray-400 hover:bg-black/15' },
|
|
26
|
+
React.createElement(ChevronLeftIcon, { height: 24, width: 17 })),
|
|
27
|
+
Array.from({ length: paginate.total }, (_, index) => index + 1).map((pag) => (React.createElement("button", { key: pag, onClick: () => {
|
|
28
|
+
onChangue((pag - 1) * rowsPage, pag * rowsPage, pag);
|
|
29
|
+
setPaginate({ current: pag });
|
|
30
|
+
}, className: `p-1 px-2 rounded-md bg-slate-200 dark:bg-slate-600 dark:text-gray-200 disabled:text-gray-400 hover:bg-black/15 ${pag == paginate.current ? ' font-medium !bg-sky-650 text-white' : ' '}` }, pag))),
|
|
31
|
+
React.createElement("button", { title: 'Siguiente', disabled: paginate.current == paginate.total || paginate.total == 1, onClick: nextPage, className: 'p-1 font-bold rounded-md bg-slate-200 dark:bg-slate-600 disabled:text-gray-400 hover:bg-black/15' },
|
|
32
|
+
React.createElement(ChevronRightIcon, { height: 24, width: 17 })))));
|
|
33
|
+
};
|
|
34
|
+
export default React.memo(Paginate);
|
|
35
|
+
//# sourceMappingURL=Paginate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Paginate.js","sourceRoot":"","sources":["../../src/forms/Paginate.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type PhotoCardType = {
|
|
3
|
+
uuid?: string;
|
|
4
|
+
user_id?: any;
|
|
5
|
+
api: string;
|
|
6
|
+
photo: string | null;
|
|
7
|
+
theme?: 'small' | 'default';
|
|
8
|
+
set: (url: any) => void;
|
|
9
|
+
};
|
|
10
|
+
declare const PhotoCard: ({ uuid, api, user_id, photo, set, theme }: PhotoCardType) => React.JSX.Element;
|
|
11
|
+
export default PhotoCard;
|
|
12
|
+
//# sourceMappingURL=PhotoCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCard.d.ts","sourceRoot":"","sources":["../../src/forms/PhotoCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAMnD,KAAK,aAAa,GAAG;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;CAC3B,CAAA;AAED,QAAA,MAAM,SAAS,8CAAgE,aAAa,sBA8E3F,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import React, { useEffect, useState } from "react";
|
|
2
|
+
import { toast } from "react-toastify";
|
|
3
|
+
import { FolderIcon, TrashIcon } from '@heroicons/react/24/outline';
|
|
4
|
+
import cn from "classnames";
|
|
5
|
+
import useHttpState from "../hooks/useHttpState.js";
|
|
6
|
+
const PhotoCard = ({ uuid = '', api, user_id, photo, set, theme = 'default' }) => {
|
|
7
|
+
// Valores de los inputs
|
|
8
|
+
const [preview, setPreview] = useState(null);
|
|
9
|
+
const { deleteReq, patch } = useHttpState();
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
setPreview(photo);
|
|
12
|
+
}, [photo]);
|
|
13
|
+
// Crear una vista previa como efecto, siempre que se cambie el archivo seleccionado
|
|
14
|
+
//Update and Selected Image
|
|
15
|
+
const onSelectFile = (e) => {
|
|
16
|
+
if (!e.target.files || e.target.files.length === 0) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const exts = e.target.files[0].name?.split(".");
|
|
20
|
+
const ext = exts[exts.length - 1];
|
|
21
|
+
if (["jpg", "png", "jpeg", "bpm", "tif"].includes(ext)) {
|
|
22
|
+
setPreview(URL.createObjectURL(e.target.files[0]));
|
|
23
|
+
patch(api, {
|
|
24
|
+
data: { user_id, enterprise_id: 1, photo: e.target.files[0] },
|
|
25
|
+
content_type: 'file',
|
|
26
|
+
onSuccess: (data) => {
|
|
27
|
+
set({ photo: data.photo });
|
|
28
|
+
toast.success('Imagen Actualizada Correctamente!');
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
toast.error("Por favor seleccione una imagen de Extensión (jpg,png,bmp)");
|
|
34
|
+
}
|
|
35
|
+
};
|
|
36
|
+
const deletePreview = () => {
|
|
37
|
+
setPreview(null);
|
|
38
|
+
if (photo != 'Photo.jpg') {
|
|
39
|
+
deleteReq(api, {
|
|
40
|
+
onSuccess: (data) => {
|
|
41
|
+
set({ photo: 'Photo.jpg' });
|
|
42
|
+
toast.success('Imagen Eliminada Correctamente!');
|
|
43
|
+
setPreview(null);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
return (React.createElement("div", { className: "flex items-center space-x-2 justify-center" },
|
|
49
|
+
React.createElement("img", { src: preview ? preview : '/images/Photo.jpg', alt: "", className: cn(" rounded-full", theme == 'default' ? ' h-20 w-20' : 'h-8 w-8') }),
|
|
50
|
+
React.createElement("div", { className: cn("flex gap-2", theme == 'default' ? 'flex-col text-sm' : 'text-xs') },
|
|
51
|
+
React.createElement("input", { className: "hidden", type: "file", id: `profile-file-${uuid}`, accept: ".jpg, .png, .jpeg, .bmp, .tif, .tiff|image/*", onChange: (e) => {
|
|
52
|
+
onSelectFile(e);
|
|
53
|
+
} }),
|
|
54
|
+
React.createElement("label", { htmlFor: `profile-file-${uuid}`, className: "button outline-gray" },
|
|
55
|
+
React.createElement(FolderIcon, { className: "h-4" }),
|
|
56
|
+
React.createElement("span", { className: theme == 'small' ? 'hidden' : '' }, " Cambiar Imagen")),
|
|
57
|
+
preview && React.createElement("button", { className: "button outline-red", onClick: deletePreview },
|
|
58
|
+
React.createElement(TrashIcon, { className: "h-4" }),
|
|
59
|
+
React.createElement("span", { className: theme == 'small' ? 'hidden' : '' }, "Eliminar Imagen")))));
|
|
60
|
+
};
|
|
61
|
+
export default PhotoCard;
|
|
62
|
+
//# sourceMappingURL=PhotoCard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoCard.js","sourceRoot":"","sources":["../../src/forms/PhotoCard.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface YouTubePlayerProps {
|
|
3
|
+
videoId: string;
|
|
4
|
+
className?: string;
|
|
5
|
+
iframeClassName?: string;
|
|
6
|
+
onReady?: (player: YT.Player) => void;
|
|
7
|
+
onStateChange?: (event: YT.OnStateChangeEvent) => void;
|
|
8
|
+
options?: {
|
|
9
|
+
autoplay?: 0 | 1;
|
|
10
|
+
controls?: 0 | 1;
|
|
11
|
+
loop?: 0 | 1;
|
|
12
|
+
mute?: 0 | 1;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export declare const YouTubePlayer: ({ videoId, className, iframeClassName, onReady, onStateChange, options, }: YouTubePlayerProps) => React.JSX.Element;
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=PlayerYoutube.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerYoutube.d.ts","sourceRoot":"","sources":["../../src/forms/PlayerYoutube.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAUjD,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,KAAK,IAAI,CAAC;IACtC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,kBAAkB,KAAK,IAAI,CAAC;IACvD,OAAO,CAAC,EAAE;QACR,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KACd,CAAC;CACH;AAED,eAAO,MAAM,aAAa,8EAOvB,kBAAkB,sBAuCpB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import React, { useEffect, useRef } from "react";
|
|
2
|
+
;
|
|
3
|
+
export const YouTubePlayer = ({ videoId, className, iframeClassName, onReady, onStateChange, options = {}, }) => {
|
|
4
|
+
const playerRef = useRef(null);
|
|
5
|
+
useEffect(() => {
|
|
6
|
+
if (!playerRef.current)
|
|
7
|
+
return;
|
|
8
|
+
// Cargar el script de la API de YouTube si no está en el documento
|
|
9
|
+
if (!window.YT) {
|
|
10
|
+
const tag = document.createElement("script");
|
|
11
|
+
tag.src = "https://www.youtube.com/iframe_api";
|
|
12
|
+
tag.async = true;
|
|
13
|
+
document.body.appendChild(tag);
|
|
14
|
+
}
|
|
15
|
+
const onYouTubeIframeAPIReady = () => {
|
|
16
|
+
const player = new YT.Player(playerRef.current, {
|
|
17
|
+
videoId,
|
|
18
|
+
playerVars: {
|
|
19
|
+
autoplay: options.autoplay ?? 0,
|
|
20
|
+
controls: options.controls ?? 1,
|
|
21
|
+
loop: options.loop ?? 0,
|
|
22
|
+
mute: options.mute ?? 0,
|
|
23
|
+
},
|
|
24
|
+
events: {
|
|
25
|
+
onReady: (event) => onReady?.(event.target),
|
|
26
|
+
onStateChange,
|
|
27
|
+
},
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
// Esperar a que la API de YouTube esté lista
|
|
31
|
+
if (window.YT && window.YT.Player) {
|
|
32
|
+
onYouTubeIframeAPIReady();
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
window.onYouTubeIframeAPIReady = onYouTubeIframeAPIReady;
|
|
36
|
+
}
|
|
37
|
+
}, [videoId, options]);
|
|
38
|
+
return React.createElement("div", { ref: playerRef, className: className });
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=PlayerYoutube.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlayerYoutube.js","sourceRoot":"","sources":["../../src/forms/PlayerYoutube.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAQhD,CAAC;AAgBF,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,OAAO,EACP,SAAS,EACT,eAAe,EACf,OAAO,EACP,aAAa,EACb,OAAO,GAAG,EAAE,GACO,EAAE,EAAE;IACvB,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAE/C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,SAAS,CAAC,OAAO;YAAE,OAAO;QAE/B,mEAAmE;QACnE,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;YAC7C,GAAG,CAAC,GAAG,GAAG,oCAAoC,CAAC;YAC/C,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;YACjB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,uBAAuB,GAAG,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,OAAyB,EAAE;gBAChE,OAAO;gBACP,UAAU,EAAE;oBACV,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC;oBAC/B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;oBACvB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC;iBACxB;gBACD,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC;oBAC3C,aAAa;iBACd;aACF,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,6CAA6C;QAC7C,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;YAClC,uBAAuB,EAAE,CAAC;QAC5B,CAAC;aAAM,CAAC;YACL,MAAc,CAAC,uBAAuB,GAAG,uBAAuB,CAAC;QACpE,CAAC;IACH,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvB,OAAO,6BAAK,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAI,CAAC;AACvD,CAAC,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface CheckBoxType {
|
|
3
|
+
id: string;
|
|
4
|
+
value: any;
|
|
5
|
+
lb?: string;
|
|
6
|
+
state: {
|
|
7
|
+
inputs: any;
|
|
8
|
+
setInputs?: React.Dispatch<any>;
|
|
9
|
+
};
|
|
10
|
+
readOnly?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
inForm?: boolean;
|
|
13
|
+
}
|
|
14
|
+
declare const RadioButton: ({ id, state, lb, readOnly, className, inForm, value }: CheckBoxType) => React.JSX.Element;
|
|
15
|
+
export default RadioButton;
|
|
16
|
+
//# sourceMappingURL=RadioButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioButton.d.ts","sourceRoot":"","sources":["../../src/forms/RadioButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,GAAG,CAAC;IACX,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,SAAS,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAA;KAAE,CAAC;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AACD,QAAA,MAAM,WAAW,0DAA2D,YAAY,sBAuBvF,CAAC;AAEF,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
const RadioButton = ({ id, state, lb, readOnly, className, inForm, value }) => {
|
|
3
|
+
const { inputs, setInputs } = state;
|
|
4
|
+
const handleClick = () => {
|
|
5
|
+
if (setInputs && !readOnly) {
|
|
6
|
+
setInputs({ [id]: value });
|
|
7
|
+
}
|
|
8
|
+
};
|
|
9
|
+
return (React.createElement("div", { className: `font-normal flex items-center space-x-2 cursor-pointer ${readOnly ? 'text-gray-500 dark:text-gray-400' : ''} ${inForm ? 'mt-3' : ''}` },
|
|
10
|
+
React.createElement("input", { id: "check_" + id + value, onChange: handleClick, type: "radio", className: `appearance-none ${className ?? 'w-4 h-4'} checked:border-white border-2 bg-slate-200 rounded-full cursor-pointer focus:ring-blue-500 checked:bg-sky-650 ring-2 ring-gray-400 checked:ring-sky-700`, checked: inputs[id] == value, disabled: readOnly, name: id }),
|
|
11
|
+
React.createElement("label", { htmlFor: "check_" + id + value, className: "cursor-pointer" }, lb)));
|
|
12
|
+
};
|
|
13
|
+
export default RadioButton;
|
|
14
|
+
//# sourceMappingURL=RadioButton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioButton.js","sourceRoot":"","sources":["../../src/forms/RadioButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,MAAM,WAAW,GAAG,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAgB,EAAE,EAAE;IAC1F,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IAEpC,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC3B,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,6BAAK,SAAS,EAAE,2DAA2D,QAAQ,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACrJ,+BAAO,EAAE,EAAE,QAAQ,GAAG,EAAE,GAAG,KAAK,EAC9B,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAC,OAAO,EACZ,SAAS,EAAE,mBAAmB,SAAS,IAAI,SAAS,2JAA2J,EAC/M,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,EAC5B,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,EAAE,GACR;QACF,+BAAO,OAAO,EAAE,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,SAAS,EAAC,gBAAgB,IAAE,EAAE,CAAS,CAC1E,CAEP,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC"}
|