flysoft-react-ui 0.5.0 → 0.5.2

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 (162) hide show
  1. package/dist/App.d.ts.map +1 -1
  2. package/dist/App.js +16 -3
  3. package/dist/components/form-controls/AutocompleteInput.d.ts +11 -3
  4. package/dist/components/form-controls/AutocompleteInput.d.ts.map +1 -1
  5. package/dist/components/form-controls/AutocompleteInput.js +410 -31
  6. package/dist/components/form-controls/Button.js +1 -1
  7. package/dist/components/form-controls/Checkbox.d.ts +14 -0
  8. package/dist/components/form-controls/Checkbox.d.ts.map +1 -0
  9. package/dist/components/form-controls/Checkbox.js +77 -0
  10. package/dist/components/form-controls/DateInput.d.ts +20 -4
  11. package/dist/components/form-controls/DateInput.d.ts.map +1 -1
  12. package/dist/components/form-controls/DateInput.js +425 -70
  13. package/dist/components/form-controls/DatePicker.d.ts +4 -3
  14. package/dist/components/form-controls/DatePicker.d.ts.map +1 -1
  15. package/dist/components/form-controls/DatePicker.js +26 -30
  16. package/dist/components/form-controls/Input.d.ts +10 -1
  17. package/dist/components/form-controls/Input.d.ts.map +1 -1
  18. package/dist/components/form-controls/Input.js +16 -10
  19. package/dist/components/form-controls/Pagination.d.ts +1 -0
  20. package/dist/components/form-controls/Pagination.d.ts.map +1 -1
  21. package/dist/components/form-controls/Pagination.js +3 -40
  22. package/dist/components/form-controls/RadioButtonGroup.d.ts +62 -0
  23. package/dist/components/form-controls/RadioButtonGroup.d.ts.map +1 -0
  24. package/dist/components/form-controls/RadioButtonGroup.js +220 -0
  25. package/dist/components/form-controls/SearchSelectInput-OLD.d.ts +68 -0
  26. package/dist/components/form-controls/SearchSelectInput-OLD.d.ts.map +1 -0
  27. package/dist/components/form-controls/SearchSelectInput-OLD.js +962 -0
  28. package/dist/components/form-controls/SearchSelectInput.d.ts +70 -0
  29. package/dist/components/form-controls/SearchSelectInput.d.ts.map +1 -0
  30. package/dist/components/form-controls/SearchSelectInput.js +335 -0
  31. package/dist/components/form-controls/index.d.ts +7 -1
  32. package/dist/components/form-controls/index.d.ts.map +1 -1
  33. package/dist/components/form-controls/index.js +3 -0
  34. package/dist/components/layout/AppLayout.d.ts +3 -2
  35. package/dist/components/layout/AppLayout.d.ts.map +1 -1
  36. package/dist/components/layout/AppLayout.js +104 -31
  37. package/dist/components/layout/Collection.js +1 -1
  38. package/dist/components/layout/DataTable.d.ts +3 -1
  39. package/dist/components/layout/DataTable.d.ts.map +1 -1
  40. package/dist/components/layout/DataTable.js +34 -29
  41. package/dist/components/utils/Avatar.d.ts +49 -0
  42. package/dist/components/utils/Avatar.d.ts.map +1 -0
  43. package/dist/components/utils/Avatar.js +93 -0
  44. package/dist/components/utils/Badge.d.ts +3 -0
  45. package/dist/components/utils/Badge.d.ts.map +1 -1
  46. package/dist/components/utils/Badge.js +130 -26
  47. package/dist/components/utils/Dialog.d.ts.map +1 -1
  48. package/dist/components/utils/Dialog.js +5 -1
  49. package/dist/components/utils/Filter.d.ts +57 -0
  50. package/dist/components/utils/Filter.d.ts.map +1 -0
  51. package/dist/components/utils/Filter.js +580 -0
  52. package/dist/components/utils/FiltersDialog.d.ts +21 -0
  53. package/dist/components/utils/FiltersDialog.d.ts.map +1 -0
  54. package/dist/components/utils/FiltersDialog.js +104 -0
  55. package/dist/components/utils/Loader.js +1 -1
  56. package/dist/components/utils/RoadMap.d.ts +59 -0
  57. package/dist/components/utils/RoadMap.d.ts.map +1 -0
  58. package/dist/components/utils/RoadMap.js +138 -0
  59. package/dist/components/utils/Snackbar.d.ts +13 -0
  60. package/dist/components/utils/Snackbar.d.ts.map +1 -0
  61. package/dist/components/utils/Snackbar.js +121 -0
  62. package/dist/components/utils/SnackbarContainer.d.ts +7 -0
  63. package/dist/components/utils/SnackbarContainer.d.ts.map +1 -0
  64. package/dist/components/utils/SnackbarContainer.js +25 -0
  65. package/dist/components/utils/index.d.ts +12 -0
  66. package/dist/components/utils/index.d.ts.map +1 -1
  67. package/dist/components/utils/index.js +6 -0
  68. package/dist/contexts/AppLayoutContext.d.ts +40 -0
  69. package/dist/contexts/AppLayoutContext.d.ts.map +1 -0
  70. package/dist/contexts/AppLayoutContext.js +98 -0
  71. package/dist/contexts/ListCrudContext.d.ts +29 -0
  72. package/dist/contexts/ListCrudContext.d.ts.map +1 -0
  73. package/dist/contexts/ListCrudContext.js +209 -0
  74. package/dist/contexts/SnackbarContext.d.ts +26 -0
  75. package/dist/contexts/SnackbarContext.d.ts.map +1 -0
  76. package/dist/contexts/SnackbarContext.js +34 -0
  77. package/dist/contexts/index.d.ts +6 -0
  78. package/dist/contexts/index.d.ts.map +1 -1
  79. package/dist/contexts/index.js +6 -0
  80. package/dist/contexts/presets.js +6 -6
  81. package/dist/docs/AvatarDocs.d.ts +4 -0
  82. package/dist/docs/AvatarDocs.d.ts.map +1 -0
  83. package/dist/docs/AvatarDocs.js +7 -0
  84. package/dist/docs/BadgeDocs.d.ts.map +1 -1
  85. package/dist/docs/BadgeDocs.js +4 -2
  86. package/dist/docs/CheckboxDocs.d.ts +4 -0
  87. package/dist/docs/CheckboxDocs.d.ts.map +1 -0
  88. package/dist/docs/CheckboxDocs.js +7 -0
  89. package/dist/docs/DataTableDocs.d.ts.map +1 -1
  90. package/dist/docs/DataTableDocs.js +6 -2
  91. package/dist/docs/DateInputDocs.d.ts +1 -0
  92. package/dist/docs/DateInputDocs.d.ts.map +1 -1
  93. package/dist/docs/DateInputDocs.js +7 -9
  94. package/dist/docs/DatePickerDocs.d.ts +1 -0
  95. package/dist/docs/DatePickerDocs.d.ts.map +1 -1
  96. package/dist/docs/DatePickerDocs.js +6 -8
  97. package/dist/docs/DocAdmin.d.ts +4 -0
  98. package/dist/docs/DocAdmin.d.ts.map +1 -0
  99. package/dist/docs/DocAdmin.js +68 -0
  100. package/dist/docs/DocsMenu.d.ts.map +1 -1
  101. package/dist/docs/DocsMenu.js +1 -1
  102. package/dist/docs/DocsRouter.d.ts.map +1 -1
  103. package/dist/docs/DocsRouter.js +11 -1
  104. package/dist/docs/ExampleFormDocs.d.ts +4 -0
  105. package/dist/docs/ExampleFormDocs.d.ts.map +1 -0
  106. package/dist/docs/ExampleFormDocs.js +148 -0
  107. package/dist/docs/FilterDocs.d.ts +4 -0
  108. package/dist/docs/FilterDocs.d.ts.map +1 -0
  109. package/dist/docs/FilterDocs.js +112 -0
  110. package/dist/docs/InputDocs.d.ts.map +1 -1
  111. package/dist/docs/InputDocs.js +11 -1
  112. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts +11 -0
  113. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.d.ts.map +1 -0
  114. package/dist/docs/ListCrudDocs.tsx/ListCrudDocs.js +25 -0
  115. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts +2 -0
  116. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.d.ts.map +1 -0
  117. package/dist/docs/ListCrudDocs.tsx/ListCrudDocsContentPersonas.js +51 -0
  118. package/dist/docs/PaginationDocs.js +6 -6
  119. package/dist/docs/RadioButtonGroupDocs.d.ts +4 -0
  120. package/dist/docs/RadioButtonGroupDocs.d.ts.map +1 -0
  121. package/dist/docs/RadioButtonGroupDocs.js +46 -0
  122. package/dist/docs/RoadMapDocs.d.ts +4 -0
  123. package/dist/docs/RoadMapDocs.d.ts.map +1 -0
  124. package/dist/docs/RoadMapDocs.js +171 -0
  125. package/dist/docs/SearchSelectInputDocs.d.ts +4 -0
  126. package/dist/docs/SearchSelectInputDocs.d.ts.map +1 -0
  127. package/dist/docs/SearchSelectInputDocs.js +168 -0
  128. package/dist/docs/SnackbarDocs.d.ts +4 -0
  129. package/dist/docs/SnackbarDocs.d.ts.map +1 -0
  130. package/dist/docs/SnackbarDocs.js +50 -0
  131. package/dist/docs/TabsGroupDocs.d.ts.map +1 -1
  132. package/dist/docs/TabsGroupDocs.js +12 -1
  133. package/dist/docs/docMockServices/empresaService.d.ts +38 -0
  134. package/dist/docs/docMockServices/empresaService.d.ts.map +1 -0
  135. package/dist/docs/docMockServices/empresaService.js +116 -0
  136. package/dist/docs/docMockServices/index.d.ts +9 -0
  137. package/dist/docs/docMockServices/index.d.ts.map +1 -0
  138. package/dist/docs/docMockServices/index.js +8 -0
  139. package/dist/docs/docMockServices/initialData.d.ts +6 -0
  140. package/dist/docs/docMockServices/initialData.d.ts.map +1 -0
  141. package/dist/docs/docMockServices/initialData.js +132 -0
  142. package/dist/docs/docMockServices/interfaces.d.ts +26 -0
  143. package/dist/docs/docMockServices/interfaces.d.ts.map +1 -0
  144. package/dist/docs/docMockServices/interfaces.js +1 -0
  145. package/dist/docs/docMockServices/personaEmpresaService.d.ts +43 -0
  146. package/dist/docs/docMockServices/personaEmpresaService.d.ts.map +1 -0
  147. package/dist/docs/docMockServices/personaEmpresaService.js +113 -0
  148. package/dist/docs/docMockServices/personaService.d.ts +39 -0
  149. package/dist/docs/docMockServices/personaService.d.ts.map +1 -0
  150. package/dist/docs/docMockServices/personaService.js +180 -0
  151. package/dist/hooks/index.d.ts +2 -0
  152. package/dist/hooks/index.d.ts.map +1 -1
  153. package/dist/hooks/index.js +1 -0
  154. package/dist/hooks/useAsyncRequest.d.ts +17 -0
  155. package/dist/hooks/useAsyncRequest.d.ts.map +1 -0
  156. package/dist/hooks/useAsyncRequest.js +70 -0
  157. package/dist/index.css +1 -1
  158. package/dist/index.d.ts +19 -1
  159. package/dist/index.d.ts.map +1 -1
  160. package/dist/index.js +9 -0
  161. package/dist/index.js.map +1 -1
  162. package/package.json +5 -2
@@ -0,0 +1,116 @@
1
+ const STORAGE_KEY = "docMockServices_empresas";
2
+ /**
3
+ * Simula un delay de red para hacer más realista el mock
4
+ */
5
+ const simulateNetworkDelay = (ms = 500) => {
6
+ return new Promise((resolve) => setTimeout(resolve, ms));
7
+ };
8
+ /**
9
+ * Obtiene todas las empresas del almacenamiento (función helper interna)
10
+ */
11
+ const _obtenerTodas = () => {
12
+ const data = localStorage.getItem(STORAGE_KEY);
13
+ return data ? JSON.parse(data) : [];
14
+ };
15
+ /**
16
+ * Servicio mock para gestionar Empresas en localStorage
17
+ */
18
+ export const empresaService = {
19
+ /**
20
+ * Obtiene empresas opcionalmente filtradas por nombre
21
+ */
22
+ async listar(params) {
23
+ await simulateNetworkDelay();
24
+ const todas = _obtenerTodas();
25
+ if (!params?.filtro) {
26
+ return todas;
27
+ }
28
+ const filtroLower = params.filtro.toLowerCase();
29
+ return todas.filter((emp) => emp.nombre.toLowerCase().includes(filtroLower));
30
+ },
31
+ /**
32
+ * Obtiene empresas paginadas opcionalmente filtradas por nombre
33
+ */
34
+ async listarPaginados(params) {
35
+ await simulateNetworkDelay();
36
+ const pagina = params?.pagina ?? 1;
37
+ const limit = params?.limit ?? 20;
38
+ const todas = _obtenerTodas();
39
+ let todasFiltradas = todas;
40
+ if (params?.filtro) {
41
+ const filtroLower = params.filtro.toLowerCase();
42
+ todasFiltradas = todas.filter((emp) => emp.nombre.toLowerCase().includes(filtroLower));
43
+ }
44
+ const total = todasFiltradas.length;
45
+ // Si limit es 0, devolver todos los elementos sin paginar
46
+ if (limit === 0) {
47
+ return {
48
+ list: todasFiltradas,
49
+ limit: 0,
50
+ page: 1,
51
+ pages: 1,
52
+ total,
53
+ };
54
+ }
55
+ const pages = Math.ceil(total / limit);
56
+ const inicio = (pagina - 1) * limit;
57
+ const fin = inicio + limit;
58
+ const list = todasFiltradas.slice(inicio, fin);
59
+ return {
60
+ list,
61
+ limit,
62
+ page: pagina,
63
+ pages,
64
+ total,
65
+ };
66
+ },
67
+ /**
68
+ * Busca una empresa por ID
69
+ */
70
+ async buscarPorId(id) {
71
+ await simulateNetworkDelay();
72
+ const empresas = _obtenerTodas();
73
+ return empresas.find((emp) => emp.id === id);
74
+ },
75
+ /**
76
+ * Agrega una nueva empresa
77
+ */
78
+ async agregar(empresa) {
79
+ await simulateNetworkDelay();
80
+ const empresas = _obtenerTodas();
81
+ const nuevoId = empresas.length > 0 ? Math.max(...empresas.map((e) => e.id)) + 1 : 1;
82
+ const nuevaEmpresa = {
83
+ id: nuevoId,
84
+ ...empresa,
85
+ };
86
+ empresas.push(nuevaEmpresa);
87
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(empresas));
88
+ return nuevaEmpresa;
89
+ },
90
+ /**
91
+ * Edita una empresa existente
92
+ */
93
+ async editar(id, datos) {
94
+ await simulateNetworkDelay();
95
+ const empresas = _obtenerTodas();
96
+ const index = empresas.findIndex((emp) => emp.id === id);
97
+ if (index === -1)
98
+ return null;
99
+ empresas[index] = { ...empresas[index], ...datos };
100
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(empresas));
101
+ return empresas[index];
102
+ },
103
+ /**
104
+ * Elimina una empresa por ID
105
+ */
106
+ async eliminar(id) {
107
+ await simulateNetworkDelay();
108
+ const empresas = _obtenerTodas();
109
+ const index = empresas.findIndex((emp) => emp.id === id);
110
+ if (index === -1)
111
+ return false;
112
+ empresas.splice(index, 1);
113
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(empresas));
114
+ return true;
115
+ },
116
+ };
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Exportaciones del módulo de servicios mock para documentación
3
+ */
4
+ export * from "./interfaces";
5
+ export * from "./empresaService";
6
+ export * from "./personaService";
7
+ export * from "./personaEmpresaService";
8
+ export * from "./initialData";
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,cAAc,CAAC;AAC7B,cAAc,kBAAkB,CAAC;AACjC,cAAc,kBAAkB,CAAC;AACjC,cAAc,yBAAyB,CAAC;AACxC,cAAc,eAAe,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Exportaciones del módulo de servicios mock para documentación
3
+ */
4
+ export * from "./interfaces";
5
+ export * from "./empresaService";
6
+ export * from "./personaService";
7
+ export * from "./personaEmpresaService";
8
+ export * from "./initialData";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Inicializa los datos de ejemplo en localStorage
3
+ * Crea 20 empresas, 20 personas y establece relaciones entre ellas
4
+ */
5
+ export declare const inicializarDatosEjemplo: () => Promise<void>;
6
+ //# sourceMappingURL=initialData.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialData.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/initialData.ts"],"names":[],"mappings":"AA+FA;;;GAGG;AACH,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAsD5D,CAAC"}
@@ -0,0 +1,132 @@
1
+ import { empresaService } from "./empresaService";
2
+ import { personaService } from "./personaService";
3
+ import { personaEmpresaService } from "./personaEmpresaService";
4
+ import dayjs from "dayjs";
5
+ /**
6
+ * Datos iniciales de ejemplo para empresas
7
+ */
8
+ const empresasEjemplo = [
9
+ { nombre: "TechSolutions S.A." },
10
+ { nombre: "Innovación Digital Ltda." },
11
+ { nombre: "Global Systems Inc." },
12
+ { nombre: "Nexus Technologies" },
13
+ { nombre: "CloudSoft Enterprise" },
14
+ { nombre: "DataDrive Solutions" },
15
+ { nombre: "CyberNet Corp." },
16
+ { nombre: "FutureSoft Industries" },
17
+ { nombre: "Quantum Innovations" },
18
+ { nombre: "SmartCode Systems" },
19
+ { nombre: "Metro Consulting Group" },
20
+ { nombre: "Digital Transformation Co." },
21
+ { nombre: "Agile Development Ltd." },
22
+ { nombre: "SecureNet Services" },
23
+ { nombre: "Apex Business Solutions" },
24
+ { nombre: "Vertex Software" },
25
+ { nombre: "Matrix Enterprises" },
26
+ { nombre: "PrimeTech Solutions" },
27
+ { nombre: "Infinity Tech Corp." },
28
+ { nombre: "Velocity Systems" },
29
+ ];
30
+ /**
31
+ * Genera una fecha aleatoria entre dos años
32
+ */
33
+ const generarFechaAleatoria = (anoInicio, anoFin) => {
34
+ const ano = Math.floor(Math.random() * (anoFin - anoInicio + 1)) + anoInicio;
35
+ const mes = Math.floor(Math.random() * 12); // 0-11
36
+ const diasEnMes = dayjs(`${ano}-${mes + 1}-01`).daysInMonth();
37
+ const dia = Math.floor(Math.random() * diasEnMes) + 1;
38
+ return dayjs(`${ano}-${String(mes + 1).padStart(2, "0")}-${String(dia).padStart(2, "0")}`);
39
+ };
40
+ /**
41
+ * Datos iniciales de ejemplo para personas
42
+ */
43
+ const personasEjemplo = [
44
+ { nombre: "Ana García", email: "ana.garcia@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
45
+ { nombre: "Carlos Martínez", email: "carlos.martinez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
46
+ { nombre: "Laura Fernández", email: "laura.fernandez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
47
+ { nombre: "Juan Rodríguez", email: "juan.rodriguez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
48
+ { nombre: "María López", email: "maria.lopez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
49
+ { nombre: "Pedro Sánchez", email: "pedro.sanchez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
50
+ { nombre: "Carmen Ruiz", email: "carmen.ruiz@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
51
+ { nombre: "Diego Torres", email: "diego.torres@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
52
+ { nombre: "Sofia Vargas", email: "sofia.vargas@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
53
+ { nombre: "Miguel Herrera", email: "miguel.herrera@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
54
+ { nombre: "Elena Jiménez", email: "elena.jimenez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
55
+ { nombre: "Roberto Díaz", email: "roberto.diaz@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
56
+ { nombre: "Patricia Moreno", email: "patricia.moreno@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
57
+ { nombre: "Javier Muñoz", email: "javier.munoz@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
58
+ { nombre: "Isabel Gutiérrez", email: "isabel.gutierrez@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
59
+ { nombre: "Fernando Castro", email: "fernando.castro@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
60
+ { nombre: "Lucía Ortega", email: "lucia.ortega@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
61
+ { nombre: "Alejandro Medina", email: "alejandro.medina@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
62
+ { nombre: "Marta Romero", email: "marta.romero@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
63
+ { nombre: "Ricardo Morales", email: "ricardo.morales@email.com", fechaNacimiento: generarFechaAleatoria(1946, 2006) },
64
+ ];
65
+ /**
66
+ * Cargos disponibles para las relaciones
67
+ */
68
+ const cargosEjemplo = [
69
+ "CEO",
70
+ "CTO",
71
+ "CFO",
72
+ "Director de Desarrollo",
73
+ "Gerente de Proyecto",
74
+ "Desarrollador Senior",
75
+ "Desarrollador Junior",
76
+ "Analista de Sistemas",
77
+ "Diseñador UX/UI",
78
+ "Product Manager",
79
+ "Scrum Master",
80
+ "QA Engineer",
81
+ "DevOps Engineer",
82
+ "Marketing Manager",
83
+ "Sales Manager",
84
+ "HR Manager",
85
+ "Contador",
86
+ "Asistente Administrativo",
87
+ "Consultor",
88
+ "Coordinador",
89
+ ];
90
+ /**
91
+ * Inicializa los datos de ejemplo en localStorage
92
+ * Crea 20 empresas, 20 personas y establece relaciones entre ellas
93
+ */
94
+ export const inicializarDatosEjemplo = async () => {
95
+ // Limpiar datos existentes
96
+ localStorage.removeItem("docMockServices_empresas");
97
+ localStorage.removeItem("docMockServices_personas");
98
+ localStorage.removeItem("docMockServices_personaEmpresas");
99
+ // Crear empresas (sin await para crear todas en paralelo, luego esperar)
100
+ const empresasPromesas = empresasEjemplo.map((emp) => empresaService.agregar(emp));
101
+ const empresasCreadas = await Promise.all(empresasPromesas);
102
+ // Crear personas (sin await para crear todas en paralelo, luego esperar)
103
+ const personasPromesas = personasEjemplo.map((per) => personaService.agregar(per));
104
+ const personasCreadas = await Promise.all(personasPromesas);
105
+ // Crear relaciones (cada persona tiene entre 1 y 3 trabajos)
106
+ const relaciones = [];
107
+ personasCreadas.forEach((persona, indexPersona) => {
108
+ // Cada persona trabaja en al menos 1 empresa y hasta 3 empresas
109
+ const numTrabajos = 1 + (indexPersona % 3); // Entre 1 y 3 trabajos
110
+ // Seleccionar empresas aleatorias sin repetir
111
+ const empresasSeleccionadas = [];
112
+ for (let i = 0; i < numTrabajos; i++) {
113
+ let empresaIndex;
114
+ do {
115
+ empresaIndex = Math.floor(Math.random() * empresasCreadas.length);
116
+ } while (empresasSeleccionadas.includes(empresaIndex));
117
+ empresasSeleccionadas.push(empresaIndex);
118
+ }
119
+ // Crear relaciones
120
+ empresasSeleccionadas.forEach((empresaIndex) => {
121
+ const cargo = cargosEjemplo[Math.floor(Math.random() * cargosEjemplo.length)];
122
+ relaciones.push({
123
+ idPersona: persona.id,
124
+ idEmpresa: empresasCreadas[empresaIndex].id,
125
+ cargo,
126
+ });
127
+ });
128
+ });
129
+ // Guardar todas las relaciones (en paralelo)
130
+ const relacionesPromesas = relaciones.map((rel) => personaEmpresaService.agregar(rel));
131
+ await Promise.all(relacionesPromesas);
132
+ };
@@ -0,0 +1,26 @@
1
+ import type { Dayjs } from "dayjs";
2
+ /**
3
+ * Interfaces para los servicios mock de documentación
4
+ */
5
+ export interface Empresa {
6
+ id: number;
7
+ nombre: string;
8
+ }
9
+ export interface Persona {
10
+ id: number;
11
+ nombre: string;
12
+ email: string;
13
+ fechaNacimiento: Dayjs;
14
+ }
15
+ /**
16
+ * Persona con sus empresas relacionadas
17
+ */
18
+ export interface PersonaConEmpresas extends Persona {
19
+ empresas: Empresa[];
20
+ }
21
+ export interface PersonaEmpresa {
22
+ idPersona: number;
23
+ idEmpresa: number;
24
+ cargo: string;
25
+ }
26
+ //# sourceMappingURL=interfaces.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC;;GAEG;AAEH,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,EAAE,KAAK,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAmB,SAAQ,OAAO;IACjD,QAAQ,EAAE,OAAO,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
1
+ import type { PersonaEmpresa } from "./interfaces";
2
+ /**
3
+ * Servicio mock para gestionar relaciones Persona-Empresa en localStorage
4
+ */
5
+ export declare const personaEmpresaService: {
6
+ /**
7
+ * Obtiene todas las relaciones
8
+ */
9
+ listar(): Promise<PersonaEmpresa[]>;
10
+ /**
11
+ * Busca relaciones por ID de persona
12
+ */
13
+ buscarPorPersona(idPersona: number): Promise<PersonaEmpresa[]>;
14
+ /**
15
+ * Busca relaciones por ID de empresa
16
+ */
17
+ buscarPorEmpresa(idEmpresa: number): Promise<PersonaEmpresa[]>;
18
+ /**
19
+ * Busca una relación específica por persona y empresa
20
+ */
21
+ buscarPorPersonaYEmpresa(idPersona: number, idEmpresa: number): Promise<PersonaEmpresa | undefined>;
22
+ /**
23
+ * Agrega una nueva relación
24
+ */
25
+ agregar(relacion: PersonaEmpresa): Promise<PersonaEmpresa>;
26
+ /**
27
+ * Edita una relación existente
28
+ */
29
+ editar(idPersona: number, idEmpresa: number, datos: Partial<Omit<PersonaEmpresa, "idPersona" | "idEmpresa">>): Promise<PersonaEmpresa | null>;
30
+ /**
31
+ * Elimina una relación por persona y empresa
32
+ */
33
+ eliminar(idPersona: number, idEmpresa: number): Promise<boolean>;
34
+ /**
35
+ * Elimina todas las relaciones de una persona
36
+ */
37
+ eliminarPorPersona(idPersona: number): Promise<number>;
38
+ /**
39
+ * Elimina todas las relaciones de una empresa
40
+ */
41
+ eliminarPorEmpresa(idEmpresa: number): Promise<number>;
42
+ };
43
+ //# sourceMappingURL=personaEmpresaService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personaEmpresaService.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/personaEmpresaService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAmBnD;;GAEG;AACH,eAAO,MAAM,qBAAqB;IAChC;;OAEG;cACa,OAAO,CAAC,cAAc,EAAE,CAAC;IAKzC;;OAEG;gCAC+B,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAMpE;;OAEG;gCAC+B,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAMpE;;OAEG;wCAEU,MAAM,aACN,MAAM,GAChB,OAAO,CAAC,cAAc,GAAG,SAAS,CAAC;IAQtC;;OAEG;sBACqB,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC;IAgBhE;;OAEG;sBAEU,MAAM,aACN,MAAM,SACV,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC,GAC9D,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAajC;;OAEG;wBACuB,MAAM,aAAa,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAatE;;OAEG;kCACiC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW5D;;OAEG;kCACiC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAU7D,CAAC"}
@@ -0,0 +1,113 @@
1
+ const STORAGE_KEY = "docMockServices_personaEmpresas";
2
+ /**
3
+ * Simula un delay de red para hacer más realista el mock
4
+ */
5
+ const simulateNetworkDelay = (ms = 500) => {
6
+ return new Promise((resolve) => setTimeout(resolve, ms));
7
+ };
8
+ /**
9
+ * Obtiene todas las relaciones del almacenamiento (método interno)
10
+ */
11
+ const _obtenerTodas = () => {
12
+ const data = localStorage.getItem(STORAGE_KEY);
13
+ return data ? JSON.parse(data) : [];
14
+ };
15
+ /**
16
+ * Servicio mock para gestionar relaciones Persona-Empresa en localStorage
17
+ */
18
+ export const personaEmpresaService = {
19
+ /**
20
+ * Obtiene todas las relaciones
21
+ */
22
+ async listar() {
23
+ await simulateNetworkDelay();
24
+ return _obtenerTodas();
25
+ },
26
+ /**
27
+ * Busca relaciones por ID de persona
28
+ */
29
+ async buscarPorPersona(idPersona) {
30
+ await simulateNetworkDelay();
31
+ const relaciones = _obtenerTodas();
32
+ return relaciones.filter((rel) => rel.idPersona === idPersona);
33
+ },
34
+ /**
35
+ * Busca relaciones por ID de empresa
36
+ */
37
+ async buscarPorEmpresa(idEmpresa) {
38
+ await simulateNetworkDelay();
39
+ const relaciones = _obtenerTodas();
40
+ return relaciones.filter((rel) => rel.idEmpresa === idEmpresa);
41
+ },
42
+ /**
43
+ * Busca una relación específica por persona y empresa
44
+ */
45
+ async buscarPorPersonaYEmpresa(idPersona, idEmpresa) {
46
+ await simulateNetworkDelay();
47
+ const relaciones = _obtenerTodas();
48
+ return relaciones.find((rel) => rel.idPersona === idPersona && rel.idEmpresa === idEmpresa);
49
+ },
50
+ /**
51
+ * Agrega una nueva relación
52
+ */
53
+ async agregar(relacion) {
54
+ await simulateNetworkDelay();
55
+ const relaciones = _obtenerTodas();
56
+ // Verificar que no exista ya la relación
57
+ const existe = relaciones.some((rel) => rel.idPersona === relacion.idPersona &&
58
+ rel.idEmpresa === relacion.idEmpresa);
59
+ if (!existe) {
60
+ relaciones.push(relacion);
61
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(relaciones));
62
+ }
63
+ return relacion;
64
+ },
65
+ /**
66
+ * Edita una relación existente
67
+ */
68
+ async editar(idPersona, idEmpresa, datos) {
69
+ await simulateNetworkDelay();
70
+ const relaciones = _obtenerTodas();
71
+ const index = relaciones.findIndex((rel) => rel.idPersona === idPersona && rel.idEmpresa === idEmpresa);
72
+ if (index === -1)
73
+ return null;
74
+ relaciones[index] = { ...relaciones[index], ...datos };
75
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(relaciones));
76
+ return relaciones[index];
77
+ },
78
+ /**
79
+ * Elimina una relación por persona y empresa
80
+ */
81
+ async eliminar(idPersona, idEmpresa) {
82
+ await simulateNetworkDelay();
83
+ const relaciones = _obtenerTodas();
84
+ const index = relaciones.findIndex((rel) => rel.idPersona === idPersona && rel.idEmpresa === idEmpresa);
85
+ if (index === -1)
86
+ return false;
87
+ relaciones.splice(index, 1);
88
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(relaciones));
89
+ return true;
90
+ },
91
+ /**
92
+ * Elimina todas las relaciones de una persona
93
+ */
94
+ async eliminarPorPersona(idPersona) {
95
+ await simulateNetworkDelay();
96
+ const relaciones = _obtenerTodas();
97
+ const inicialLength = relaciones.length;
98
+ const nuevasRelaciones = relaciones.filter((rel) => rel.idPersona !== idPersona);
99
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(nuevasRelaciones));
100
+ return inicialLength - nuevasRelaciones.length;
101
+ },
102
+ /**
103
+ * Elimina todas las relaciones de una empresa
104
+ */
105
+ async eliminarPorEmpresa(idEmpresa) {
106
+ await simulateNetworkDelay();
107
+ const relaciones = _obtenerTodas();
108
+ const inicialLength = relaciones.length;
109
+ const nuevasRelaciones = relaciones.filter((rel) => rel.idEmpresa !== idEmpresa);
110
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(nuevasRelaciones));
111
+ return inicialLength - nuevasRelaciones.length;
112
+ },
113
+ };
@@ -0,0 +1,39 @@
1
+ import type { Persona, PersonaConEmpresas } from "./interfaces";
2
+ import type { PaginationInterface } from "../../components/form-controls/Pagination";
3
+ /**
4
+ * Servicio mock para gestionar Personas en localStorage
5
+ */
6
+ export declare const personaService: {
7
+ /**
8
+ * Obtiene personas opcionalmente filtradas por nombre, con sus empresas relacionadas
9
+ */
10
+ listar(params?: {
11
+ filtro?: string;
12
+ }): Promise<PersonaConEmpresas[]>;
13
+ /**
14
+ * Obtiene personas paginadas opcionalmente filtradas por nombre y/o idEmpresa, con sus empresas relacionadas
15
+ */
16
+ listarPaginados(params?: {
17
+ filtro?: string;
18
+ pagina?: string;
19
+ limit?: string;
20
+ idEmpresa?: string;
21
+ }): Promise<PaginationInterface<PersonaConEmpresas>>;
22
+ /**
23
+ * Busca una persona por ID
24
+ */
25
+ buscarPorId(id: number): Promise<Persona | undefined>;
26
+ /**
27
+ * Agrega una nueva persona
28
+ */
29
+ agregar(persona: Omit<Persona, "id">): Promise<Persona>;
30
+ /**
31
+ * Edita una persona existente
32
+ */
33
+ editar(id: number, datos: Partial<Omit<Persona, "id">>): Promise<Persona | null>;
34
+ /**
35
+ * Elimina una persona por ID
36
+ */
37
+ eliminar(persona: Persona): Promise<void>;
38
+ };
39
+ //# sourceMappingURL=personaService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"personaService.d.ts","sourceRoot":"","sources":["../../../src/docs/docMockServices/personaService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAW,MAAM,cAAc,CAAC;AACzE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AA6DrF;;GAEG;AACH,eAAO,MAAM,cAAc;IACzB;;OAEG;oBACmB;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;IAuBzE;;OAEG;6BAC4B;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAoEpD;;OAEG;oBACmB,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IAM3D;;OAEG;qBACoB,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB7D;;OAEG;eAEG,MAAM,SACH,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,GAClC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAgB1B;;OAEG;sBACqB,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CAQhD,CAAC"}