@imj_media/ui 1.11.4 → 1.12.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/CHANGELOG.md +29 -0
- package/README.md +1 -1
- package/catalog/design-index.json +199 -28
- package/catalog/install-registry.json +23 -2
- package/catalog/semantic-catalog.json +187 -0
- package/catalog/semantic-catalog.schema.json +130 -0
- package/dist/index.css +1 -1
- package/dist/index.esm.js +10657 -10191
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +30 -30
- package/dist/index.js.map +1 -1
- package/dist/modules/CatalogCard/components/organisms/CatalogCatalogCard.d.ts.map +1 -1
- package/dist/modules/CatalogCard/components/organisms/catalogCardMenuPanels.d.ts +2 -1
- package/dist/modules/CatalogCard/components/organisms/catalogCardMenuPanels.d.ts.map +1 -1
- package/dist/modules/CatalogCard/stories/CatalogCard.stories.d.ts +4 -0
- package/dist/modules/CatalogCard/stories/CatalogCard.stories.d.ts.map +1 -1
- package/dist/modules/CatalogCard/types/index.d.ts +42 -0
- package/dist/modules/CatalogCard/types/index.d.ts.map +1 -1
- package/dist/modules/CatalogCard/utils/catalogCardTagUtils.d.ts +6 -0
- package/dist/modules/CatalogCard/utils/catalogCardTagUtils.d.ts.map +1 -1
- package/dist/modules/CatalogCard/utils/mergeGroupedCatalogCardProps.d.ts.map +1 -1
- package/dist/modules/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/modules/DatePicker/hooks/useDatePicker.d.ts +5 -1
- package/dist/modules/DatePicker/hooks/useDatePicker.d.ts.map +1 -1
- package/dist/modules/DatePicker/hooks/usePortal.d.ts +2 -2
- package/dist/modules/DatePicker/hooks/usePortal.d.ts.map +1 -1
- package/dist/modules/DatePicker/organisms/DatePickerPortal.d.ts +2 -1
- package/dist/modules/DatePicker/organisms/DatePickerPortal.d.ts.map +1 -1
- package/dist/modules/DatePicker/utils/computePortalPosition.d.ts +31 -0
- package/dist/modules/DatePicker/utils/computePortalPosition.d.ts.map +1 -0
- package/dist/modules/DatePicker/utils/computePortalPosition.test.d.ts +2 -0
- package/dist/modules/DatePicker/utils/computePortalPosition.test.d.ts.map +1 -0
- package/dist/modules/Ghantt/components/molecules/GhanttBarLabel.d.ts +26 -0
- package/dist/modules/Ghantt/components/molecules/GhanttBarLabel.d.ts.map +1 -0
- package/dist/modules/Ghantt/components/molecules/ghanttBarLabelStyles.d.ts +43 -0
- package/dist/modules/Ghantt/components/molecules/ghanttBarLabelStyles.d.ts.map +1 -0
- package/dist/modules/Ghantt/index.d.ts +2 -0
- package/dist/modules/Ghantt/index.d.ts.map +1 -1
- package/dist/modules/Ghantt/stories/GhanttBarLabel.stories.d.ts +51 -0
- package/dist/modules/Ghantt/stories/GhanttBarLabel.stories.d.ts.map +1 -0
- package/dist/modules/Ghantt/types/ghanttBarLabel.d.ts +46 -0
- package/dist/modules/Ghantt/types/ghanttBarLabel.d.ts.map +1 -0
- package/dist/modules/Modal/Modal.d.ts.map +1 -1
- package/dist/modules/Modal/hooks/useModal.d.ts +3 -1
- package/dist/modules/Modal/hooks/useModal.d.ts.map +1 -1
- package/dist/modules/Popup/components/organisms/Popup.d.ts.map +1 -1
- package/dist/modules/Popup/hooks/popupGlobalRegistry.d.ts +5 -2
- package/dist/modules/Popup/hooks/popupGlobalRegistry.d.ts.map +1 -1
- package/dist/modules/Popup/hooks/popupGlobalRegistry.test.d.ts +2 -0
- package/dist/modules/Popup/hooks/popupGlobalRegistry.test.d.ts.map +1 -0
- package/dist/modules/Popup/hooks/usePopup.d.ts +5 -3
- package/dist/modules/Popup/hooks/usePopup.d.ts.map +1 -1
- package/dist/modules/Popup/hooks/usePopupExternalTrigger.d.ts +4 -2
- package/dist/modules/Popup/hooks/usePopupExternalTrigger.d.ts.map +1 -1
- package/dist/modules/Popup/hooks/usePopupPositioning.d.ts +1 -1
- package/dist/modules/Popup/hooks/usePopupPositioning.d.ts.map +1 -1
- package/dist/modules/Popup/stories/popup.stories.d.ts +7 -0
- package/dist/modules/Popup/stories/popup.stories.d.ts.map +1 -1
- package/dist/modules/Popup/utils/popupPosition.d.ts +7 -2
- package/dist/modules/Popup/utils/popupPosition.d.ts.map +1 -1
- package/dist/modules/Table/components/atoms/ActionsCell.d.ts.map +1 -1
- package/dist/modules/Table/stories/TableRutasExterno.stories.d.ts +23 -0
- package/dist/modules/Table/stories/TableRutasExterno.stories.d.ts.map +1 -0
- package/dist/modules/Tooltip/components/organisms/Tooltip.d.ts.map +1 -1
- package/dist/shared/hooks/useClickOutside.d.ts +1 -1
- package/dist/shared/hooks/useClickOutside.d.ts.map +1 -1
- package/dist/shared/types/popup.d.ts +11 -4
- package/dist/shared/types/popup.d.ts.map +1 -1
- package/dist/shared/types/table.d.ts +30 -3
- package/dist/shared/types/table.d.ts.map +1 -1
- package/dist/shared/utils/modalStack.d.ts +17 -0
- package/dist/shared/utils/modalStack.d.ts.map +1 -0
- package/dist/shared/utils/modalStack.test.d.ts +2 -0
- package/dist/shared/utils/modalStack.test.d.ts.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,35 @@ y este proyecto adhiere a [Semantic Versioning](https://semver.org/lang/es/).
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [1.12.0] - 2026-07-02
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Catálogo semántico Forge:** `semantic-catalog.json` (y esquema asociado) para mapeo entidad Forge → componentes UI; generado con el flujo de catálogo del paquete.
|
|
15
|
+
- **Integración `@imj_media/ds-mcp` (capa semántica):** herramientas MCP `list_components`, `resolve_entity_ui` y `validate_entity_mapping` para descubrir componentes y validar mapeos entidad→UI desde Forge.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- **`Modal`:** apilado correcto de modales anidados (`modalStack`).
|
|
20
|
+
- **`DatePicker`:** posicionamiento del portal dentro del viewport (`computePortalPosition`).
|
|
21
|
+
|
|
22
|
+
### Documentation
|
|
23
|
+
|
|
24
|
+
- Especificación **`docs/specs/ds-mcp-semantic-forge-v1.md`** (contrato Forge ↔ catálogo semántico y flujo ds-mcp).
|
|
25
|
+
|
|
26
|
+
## [1.11.5] - 2026-07-01
|
|
27
|
+
|
|
28
|
+
### Added
|
|
29
|
+
|
|
30
|
+
- **`GhanttBarLabel`:** componente de etiqueta para barras en el diagrama Gantt.
|
|
31
|
+
- **`CatalogCard`:** tags deshabilitables, ocultos en fila, badge en CTA primario y panel de tags.
|
|
32
|
+
- **`Popup`:** registro global de instancias, `closeOnClick`, triggers externos y utilidades de posicionamiento.
|
|
33
|
+
- **`Table`:** celda de acciones (`ActionsCell`) y story **TableRutasExterno** (rutas externas / OBP).
|
|
34
|
+
|
|
35
|
+
### Changed
|
|
36
|
+
|
|
37
|
+
- **`Tooltip`** y manejo **click-outside** alineados con Popup y overlays del design system.
|
|
38
|
+
|
|
10
39
|
## [1.11.4] - 2026-07-01
|
|
11
40
|
|
|
12
41
|
### Added
|
package/README.md
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
Biblioteca de componentes UI moderna y accesible para React, construida con TypeScript y Tailwind CSS.
|
|
6
6
|
|
|
7
|
-
> **Versión publicada:** `1.
|
|
7
|
+
> **Versión publicada:** `1.12.0` — actualizar este número y `CHANGELOG.md` antes de cada release (orden y scripts: regla **`imj-ui-obligations-release`**; atajo `npm run publish:patch|minor|major` o pasos `bump:*` → `release:git` → `release:publish`).
|
|
8
8
|
|
|
9
9
|
## 📦 Instalación
|
|
10
10
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"package": "@imj_media/ui",
|
|
4
|
-
"version": "1.
|
|
5
|
-
"indexedAt": "2026-07-
|
|
4
|
+
"version": "1.12.0",
|
|
5
|
+
"indexedAt": "2026-07-02T19:01:02.102Z",
|
|
6
6
|
"orbitTokensVersion": "1.3.1",
|
|
7
7
|
"modules": [
|
|
8
8
|
{
|
|
@@ -1497,6 +1497,18 @@
|
|
|
1497
1497
|
"name": "onPrimaryClick",
|
|
1498
1498
|
"type": "(context?: CatalogCardInteractionContext) => void",
|
|
1499
1499
|
"required": false
|
|
1500
|
+
},
|
|
1501
|
+
"primaryDisabled": {
|
|
1502
|
+
"name": "primaryDisabled",
|
|
1503
|
+
"type": "boolean",
|
|
1504
|
+
"required": false,
|
|
1505
|
+
"description": "Deshabilita solo el CTA principal (p. ej. ruta eliminada con badge Eliminado en el botón).\n No afecta el menú ⋯ ni `onClick` de la tarjeta."
|
|
1506
|
+
},
|
|
1507
|
+
"primaryBadge": {
|
|
1508
|
+
"name": "primaryBadge",
|
|
1509
|
+
"type": "ButtonBadgeConfig & { label: string }",
|
|
1510
|
+
"required": false,
|
|
1511
|
+
"description": "Badge dentro del CTA principal (misma API que `Button.badge` / `InnerButton.badge`).\n En botón con texto va tras la etiqueta; en solo icono, esquina superior derecha."
|
|
1500
1512
|
}
|
|
1501
1513
|
}
|
|
1502
1514
|
},
|
|
@@ -4143,6 +4155,108 @@
|
|
|
4143
4155
|
}
|
|
4144
4156
|
}
|
|
4145
4157
|
},
|
|
4158
|
+
{
|
|
4159
|
+
"name": "GhanttBarLabel",
|
|
4160
|
+
"kind": "component",
|
|
4161
|
+
"description": {
|
|
4162
|
+
"primary": "storybook",
|
|
4163
|
+
"storybook": "Tabla estándar con una columna Gantt. La API voluminosa va en el objeto",
|
|
4164
|
+
"jsdoc": "Etiqueta flotante de barra Gantt (Figma `Gantt Bar`, nodo `143:7108`).\nCubre variantes `Type` (timeline / progress), `Stage` y `Theme`.\nCon `interactive`, el hover es **CSS** (`:hover` en la tarjeta), no `stage=\"hover\"` en JS.\nEl estado Select se controla con `selected` (típicamente tras un clic).",
|
|
4165
|
+
"confidence": "high"
|
|
4166
|
+
},
|
|
4167
|
+
"examples": [
|
|
4168
|
+
"import { Ghantt, GhanttTimelineHeader } from '@/modules/Ghantt';\n\n<Ghantt\n columns={columns}\n rows={rows}\n borderable\n gantt={{\n column: {\n header: <GhanttTimelineHeader title=\"Plan\" />,\n width: 480,\n },\n data: { accessor: (row) => row.plan },\n timeline: { viewStart: '2026-04-01', viewEnd: '2026-04-22', scale: 'day' },\n events: {\n onBarClick: ({ bar, row }) => console.log(bar.id, row.id),\n },\n }}\n/>",
|
|
4169
|
+
"import { Ghantt, GhanttTimelineHeader } from '@/modules/Ghantt';\n\n<Ghantt\n columns={columns}\n rows={rows}\n borderable\n gantt={{\n column: {\n header: <GhanttTimelineHeader title=\"Plan\" />,\n width: 480,\n },\n data: { accessor: (row) => row.plan },\n timeline: { viewStart: '2026-04-01', viewEnd: '2026-04-22', scale: 'day' },\n events: {\n onBarClick: ({ bar, row }) => console.log(bar.id, row.id),\n },\n }}\n/>"
|
|
4170
|
+
],
|
|
4171
|
+
"props": {
|
|
4172
|
+
"groups": {
|
|
4173
|
+
"text": {
|
|
4174
|
+
"props": {
|
|
4175
|
+
"fieldLabel": {
|
|
4176
|
+
"name": "fieldLabel",
|
|
4177
|
+
"type": "string",
|
|
4178
|
+
"required": false,
|
|
4179
|
+
"description": "Etiqueta de campo sobre la tarjeta (Figma «Label»)."
|
|
4180
|
+
},
|
|
4181
|
+
"title": {
|
|
4182
|
+
"name": "title",
|
|
4183
|
+
"type": "string",
|
|
4184
|
+
"required": false,
|
|
4185
|
+
"description": "Título principal de la tarea."
|
|
4186
|
+
},
|
|
4187
|
+
"dateRange": {
|
|
4188
|
+
"name": "dateRange",
|
|
4189
|
+
"type": "string",
|
|
4190
|
+
"required": false,
|
|
4191
|
+
"description": "Rango de fechas secundario."
|
|
4192
|
+
}
|
|
4193
|
+
}
|
|
4194
|
+
}
|
|
4195
|
+
},
|
|
4196
|
+
"deprecatedRoot": [],
|
|
4197
|
+
"flat": {
|
|
4198
|
+
"type": {
|
|
4199
|
+
"name": "type",
|
|
4200
|
+
"type": "GhanttBarLabelType",
|
|
4201
|
+
"required": false,
|
|
4202
|
+
"description": "`timeline`: sin relleno de avance; `progress`: admite barra de progreso."
|
|
4203
|
+
},
|
|
4204
|
+
"stage": {
|
|
4205
|
+
"name": "stage",
|
|
4206
|
+
"type": "GhanttBarLabelStage",
|
|
4207
|
+
"required": false,
|
|
4208
|
+
"description": "Estado visual explícito (Figma `Stage`). En uso interactivo deja `default` y el hover\n lo resuelve CSS (`:hover`); `hover` solo para la matriz estática de Storybook."
|
|
4209
|
+
},
|
|
4210
|
+
"theme": {
|
|
4211
|
+
"name": "theme",
|
|
4212
|
+
"type": "GhanttBarLabelTheme",
|
|
4213
|
+
"required": false,
|
|
4214
|
+
"description": "Tema semántico (Figma `Theme`)."
|
|
4215
|
+
},
|
|
4216
|
+
"text": {
|
|
4217
|
+
"name": "text",
|
|
4218
|
+
"type": "GhanttBarLabelTextProps",
|
|
4219
|
+
"required": false,
|
|
4220
|
+
"description": "Textos mostrados."
|
|
4221
|
+
},
|
|
4222
|
+
"progress": {
|
|
4223
|
+
"name": "progress",
|
|
4224
|
+
"type": "number",
|
|
4225
|
+
"required": false,
|
|
4226
|
+
"description": "Avance 0–100. Si se define y `showPercentage` no es `false`, muestra el porcentaje\n y el relleno parcial (solo en `type=\"progress\"`)."
|
|
4227
|
+
},
|
|
4228
|
+
"showPercentage": {
|
|
4229
|
+
"name": "showPercentage",
|
|
4230
|
+
"type": "boolean",
|
|
4231
|
+
"required": false,
|
|
4232
|
+
"description": "Fuerza mostrar u ocultar el texto de porcentaje. Por defecto sigue a `progress`."
|
|
4233
|
+
},
|
|
4234
|
+
"interactive": {
|
|
4235
|
+
"name": "interactive",
|
|
4236
|
+
"type": "boolean",
|
|
4237
|
+
"required": false,
|
|
4238
|
+
"description": "La tarjeta responde a `:hover` vía CSS (sin `stage=\"hover\"` en JS).\n Compatible con `selected` para el estado Select tras clic."
|
|
4239
|
+
},
|
|
4240
|
+
"selected": {
|
|
4241
|
+
"name": "selected",
|
|
4242
|
+
"type": "boolean",
|
|
4243
|
+
"required": false,
|
|
4244
|
+
"description": "Estado Select (persistente hasta nuevo clic). Solo con `interactive`."
|
|
4245
|
+
},
|
|
4246
|
+
"onClick": {
|
|
4247
|
+
"name": "onClick",
|
|
4248
|
+
"type": "() => void",
|
|
4249
|
+
"required": false,
|
|
4250
|
+
"description": "Clic en la tarjeta (p. ej. alternar `selected`)."
|
|
4251
|
+
},
|
|
4252
|
+
"className": {
|
|
4253
|
+
"name": "className",
|
|
4254
|
+
"type": "string",
|
|
4255
|
+
"required": false
|
|
4256
|
+
}
|
|
4257
|
+
}
|
|
4258
|
+
}
|
|
4259
|
+
},
|
|
4146
4260
|
{
|
|
4147
4261
|
"name": "GhanttConfigProvider",
|
|
4148
4262
|
"kind": "component",
|
|
@@ -7073,10 +7187,16 @@
|
|
|
7073
7187
|
},
|
|
7074
7188
|
"triggerRef": {
|
|
7075
7189
|
"name": "triggerRef",
|
|
7076
|
-
"type": "RefObject<HTMLElement | null>",
|
|
7190
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
7077
7191
|
"required": false,
|
|
7078
7192
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
7079
7193
|
},
|
|
7194
|
+
"triggerRefInteraction": {
|
|
7195
|
+
"name": "triggerRefInteraction",
|
|
7196
|
+
"type": "boolean",
|
|
7197
|
+
"required": false,
|
|
7198
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
7199
|
+
},
|
|
7080
7200
|
"label": {
|
|
7081
7201
|
"name": "label",
|
|
7082
7202
|
"type": "ReactNode",
|
|
@@ -7156,7 +7276,7 @@
|
|
|
7156
7276
|
"name": "hoverAnchorFollowPointer",
|
|
7157
7277
|
"type": "boolean",
|
|
7158
7278
|
"required": false,
|
|
7159
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
7279
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
7160
7280
|
},
|
|
7161
7281
|
"openOnHoverAllowPanelPointer": {
|
|
7162
7282
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -7328,10 +7448,16 @@
|
|
|
7328
7448
|
},
|
|
7329
7449
|
"triggerRef": {
|
|
7330
7450
|
"name": "triggerRef",
|
|
7331
|
-
"type": "RefObject<HTMLElement | null>",
|
|
7451
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
7332
7452
|
"required": false,
|
|
7333
7453
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
7334
7454
|
},
|
|
7455
|
+
"triggerRefInteraction": {
|
|
7456
|
+
"name": "triggerRefInteraction",
|
|
7457
|
+
"type": "boolean",
|
|
7458
|
+
"required": false,
|
|
7459
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
7460
|
+
},
|
|
7335
7461
|
"label": {
|
|
7336
7462
|
"name": "label",
|
|
7337
7463
|
"type": "ReactNode",
|
|
@@ -7411,7 +7537,7 @@
|
|
|
7411
7537
|
"name": "hoverAnchorFollowPointer",
|
|
7412
7538
|
"type": "boolean",
|
|
7413
7539
|
"required": false,
|
|
7414
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
7540
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
7415
7541
|
},
|
|
7416
7542
|
"openOnHoverAllowPanelPointer": {
|
|
7417
7543
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -7584,10 +7710,16 @@
|
|
|
7584
7710
|
},
|
|
7585
7711
|
"triggerRef": {
|
|
7586
7712
|
"name": "triggerRef",
|
|
7587
|
-
"type": "RefObject<HTMLElement | null>",
|
|
7713
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
7588
7714
|
"required": false,
|
|
7589
7715
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
7590
7716
|
},
|
|
7717
|
+
"triggerRefInteraction": {
|
|
7718
|
+
"name": "triggerRefInteraction",
|
|
7719
|
+
"type": "boolean",
|
|
7720
|
+
"required": false,
|
|
7721
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
7722
|
+
},
|
|
7591
7723
|
"label": {
|
|
7592
7724
|
"name": "label",
|
|
7593
7725
|
"type": "ReactNode",
|
|
@@ -7667,7 +7799,7 @@
|
|
|
7667
7799
|
"name": "hoverAnchorFollowPointer",
|
|
7668
7800
|
"type": "boolean",
|
|
7669
7801
|
"required": false,
|
|
7670
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
7802
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
7671
7803
|
},
|
|
7672
7804
|
"openOnHoverAllowPanelPointer": {
|
|
7673
7805
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -7840,10 +7972,16 @@
|
|
|
7840
7972
|
},
|
|
7841
7973
|
"triggerRef": {
|
|
7842
7974
|
"name": "triggerRef",
|
|
7843
|
-
"type": "RefObject<HTMLElement | null>",
|
|
7975
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
7844
7976
|
"required": false,
|
|
7845
7977
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
7846
7978
|
},
|
|
7979
|
+
"triggerRefInteraction": {
|
|
7980
|
+
"name": "triggerRefInteraction",
|
|
7981
|
+
"type": "boolean",
|
|
7982
|
+
"required": false,
|
|
7983
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
7984
|
+
},
|
|
7847
7985
|
"label": {
|
|
7848
7986
|
"name": "label",
|
|
7849
7987
|
"type": "ReactNode",
|
|
@@ -7923,7 +8061,7 @@
|
|
|
7923
8061
|
"name": "hoverAnchorFollowPointer",
|
|
7924
8062
|
"type": "boolean",
|
|
7925
8063
|
"required": false,
|
|
7926
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
8064
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
7927
8065
|
},
|
|
7928
8066
|
"openOnHoverAllowPanelPointer": {
|
|
7929
8067
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -8096,10 +8234,16 @@
|
|
|
8096
8234
|
},
|
|
8097
8235
|
"triggerRef": {
|
|
8098
8236
|
"name": "triggerRef",
|
|
8099
|
-
"type": "RefObject<HTMLElement | null>",
|
|
8237
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
8100
8238
|
"required": false,
|
|
8101
8239
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
8102
8240
|
},
|
|
8241
|
+
"triggerRefInteraction": {
|
|
8242
|
+
"name": "triggerRefInteraction",
|
|
8243
|
+
"type": "boolean",
|
|
8244
|
+
"required": false,
|
|
8245
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
8246
|
+
},
|
|
8103
8247
|
"label": {
|
|
8104
8248
|
"name": "label",
|
|
8105
8249
|
"type": "ReactNode",
|
|
@@ -8179,7 +8323,7 @@
|
|
|
8179
8323
|
"name": "hoverAnchorFollowPointer",
|
|
8180
8324
|
"type": "boolean",
|
|
8181
8325
|
"required": false,
|
|
8182
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
8326
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
8183
8327
|
},
|
|
8184
8328
|
"openOnHoverAllowPanelPointer": {
|
|
8185
8329
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -8351,10 +8495,16 @@
|
|
|
8351
8495
|
},
|
|
8352
8496
|
"triggerRef": {
|
|
8353
8497
|
"name": "triggerRef",
|
|
8354
|
-
"type": "RefObject<HTMLElement | null>",
|
|
8498
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
8355
8499
|
"required": false,
|
|
8356
8500
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
8357
8501
|
},
|
|
8502
|
+
"triggerRefInteraction": {
|
|
8503
|
+
"name": "triggerRefInteraction",
|
|
8504
|
+
"type": "boolean",
|
|
8505
|
+
"required": false,
|
|
8506
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
8507
|
+
},
|
|
8358
8508
|
"label": {
|
|
8359
8509
|
"name": "label",
|
|
8360
8510
|
"type": "ReactNode",
|
|
@@ -8434,7 +8584,7 @@
|
|
|
8434
8584
|
"name": "hoverAnchorFollowPointer",
|
|
8435
8585
|
"type": "boolean",
|
|
8436
8586
|
"required": false,
|
|
8437
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
8587
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
8438
8588
|
},
|
|
8439
8589
|
"openOnHoverAllowPanelPointer": {
|
|
8440
8590
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -8607,10 +8757,16 @@
|
|
|
8607
8757
|
},
|
|
8608
8758
|
"triggerRef": {
|
|
8609
8759
|
"name": "triggerRef",
|
|
8610
|
-
"type": "RefObject<HTMLElement | null>",
|
|
8760
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
8611
8761
|
"required": false,
|
|
8612
8762
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
8613
8763
|
},
|
|
8764
|
+
"triggerRefInteraction": {
|
|
8765
|
+
"name": "triggerRefInteraction",
|
|
8766
|
+
"type": "boolean",
|
|
8767
|
+
"required": false,
|
|
8768
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
8769
|
+
},
|
|
8614
8770
|
"label": {
|
|
8615
8771
|
"name": "label",
|
|
8616
8772
|
"type": "ReactNode",
|
|
@@ -8690,7 +8846,7 @@
|
|
|
8690
8846
|
"name": "hoverAnchorFollowPointer",
|
|
8691
8847
|
"type": "boolean",
|
|
8692
8848
|
"required": false,
|
|
8693
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
8849
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
8694
8850
|
},
|
|
8695
8851
|
"openOnHoverAllowPanelPointer": {
|
|
8696
8852
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -8863,10 +9019,16 @@
|
|
|
8863
9019
|
},
|
|
8864
9020
|
"triggerRef": {
|
|
8865
9021
|
"name": "triggerRef",
|
|
8866
|
-
"type": "RefObject<HTMLElement | null>",
|
|
9022
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
8867
9023
|
"required": false,
|
|
8868
9024
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
8869
9025
|
},
|
|
9026
|
+
"triggerRefInteraction": {
|
|
9027
|
+
"name": "triggerRefInteraction",
|
|
9028
|
+
"type": "boolean",
|
|
9029
|
+
"required": false,
|
|
9030
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
9031
|
+
},
|
|
8870
9032
|
"label": {
|
|
8871
9033
|
"name": "label",
|
|
8872
9034
|
"type": "ReactNode",
|
|
@@ -8946,7 +9108,7 @@
|
|
|
8946
9108
|
"name": "hoverAnchorFollowPointer",
|
|
8947
9109
|
"type": "boolean",
|
|
8948
9110
|
"required": false,
|
|
8949
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
9111
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
8950
9112
|
},
|
|
8951
9113
|
"openOnHoverAllowPanelPointer": {
|
|
8952
9114
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -9119,10 +9281,16 @@
|
|
|
9119
9281
|
},
|
|
9120
9282
|
"triggerRef": {
|
|
9121
9283
|
"name": "triggerRef",
|
|
9122
|
-
"type": "RefObject<HTMLElement | null>",
|
|
9284
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
9123
9285
|
"required": false,
|
|
9124
9286
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
9125
9287
|
},
|
|
9288
|
+
"triggerRefInteraction": {
|
|
9289
|
+
"name": "triggerRefInteraction",
|
|
9290
|
+
"type": "boolean",
|
|
9291
|
+
"required": false,
|
|
9292
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
9293
|
+
},
|
|
9126
9294
|
"label": {
|
|
9127
9295
|
"name": "label",
|
|
9128
9296
|
"type": "ReactNode",
|
|
@@ -9202,7 +9370,7 @@
|
|
|
9202
9370
|
"name": "hoverAnchorFollowPointer",
|
|
9203
9371
|
"type": "boolean",
|
|
9204
9372
|
"required": false,
|
|
9205
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
9373
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
9206
9374
|
},
|
|
9207
9375
|
"openOnHoverAllowPanelPointer": {
|
|
9208
9376
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -9375,10 +9543,16 @@
|
|
|
9375
9543
|
},
|
|
9376
9544
|
"triggerRef": {
|
|
9377
9545
|
"name": "triggerRef",
|
|
9378
|
-
"type": "RefObject<HTMLElement | null>",
|
|
9546
|
+
"type": "RefObject<HTMLElement | SVGElement | null>",
|
|
9379
9547
|
"required": false,
|
|
9380
9548
|
"description": "Ref al elemento DOM que abre el panel y sirve de ancla (puede vivir fuera del `Popup`).\n Si se define, no se renderiza el `InnerButton` interno: enlazamos clic (toggle) y, si aplica,\n `openOnHover` en ese nodo. El panel sigue renderizándose en portal o `absolute` según props.\n Con `absolute={true}`, el ancla externa debería estar en el mismo subárbol posicionado que el\n portal del panel para que `offsetTop`/`offsetLeft` sean coherentes; si no, usa `absolute={false}`."
|
|
9381
9549
|
},
|
|
9550
|
+
"triggerRefInteraction": {
|
|
9551
|
+
"name": "triggerRefInteraction",
|
|
9552
|
+
"type": "boolean",
|
|
9553
|
+
"required": false,
|
|
9554
|
+
"description": "Con `triggerRef`, si es `false` el nodo externo solo sirve de ancla de posición;\n no se enlazan clic ni hover en ese nodo (abre/cierra con `PopupRef` o el botón interno).\n Por defecto `true` (comportamiento histórico: toggle al clic en el ancla externo)."
|
|
9555
|
+
},
|
|
9382
9556
|
"label": {
|
|
9383
9557
|
"name": "label",
|
|
9384
9558
|
"type": "ReactNode",
|
|
@@ -9458,7 +9632,7 @@
|
|
|
9458
9632
|
"name": "hoverAnchorFollowPointer",
|
|
9459
9633
|
"type": "boolean",
|
|
9460
9634
|
"required": false,
|
|
9461
|
-
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger (rectángulo 1×1
|
|
9635
|
+
"description": "Con `openOnHover` activo: el panel se ancla al puntero dentro del trigger mientras el ratón se\n mueve (rectángulo 1×1), actualizado en cada frame vía `requestAnimationFrame`.\n Sin `openOnHover`, si esta prop está activa el ancla al punto del clic en el trigger\n (útil en mapas o trazos SVG). Aplica al botón interno y a `triggerRef`."
|
|
9462
9636
|
},
|
|
9463
9637
|
"openOnHoverAllowPanelPointer": {
|
|
9464
9638
|
"name": "openOnHoverAllowPanelPointer",
|
|
@@ -11562,6 +11736,8 @@
|
|
|
11562
11736
|
"<Table\n columns={[\n { id: 'id', header: 'ID', accessor: 'id', lockable: true },\n { id: 'nombre', header: 'Nombre', accessor: 'nombre' },\n ]}\n columnsLockable={false}\n rows={rows}\n/>",
|
|
11563
11737
|
"import { Table } from '@/modules/Table';\n\n// Persistir columnas, orden, filtros y búsqueda en la misma key de localStorage\n<Table<Persona>\n columns={columnas}\n rows={filas}\n configKey=\"mi-tabla\"\n persistConfig={true}\n queryPersist={true}\n toolbar={{\n showSearch: true,\n searchPlaceholder: 'Buscar...',\n internalSearch: true,\n showFilters: true,\n internalFilters: true,\n showColumnConfig: true,\n }}\n onConfigChange={(config, changeType) => console.log(changeType, config)}\n striped\n hoverable\n resizable\n/>\n\n// queryPersist={false} → no se guardan ni restauran búsqueda ni filtros (solo columnas/orden)",
|
|
11564
11738
|
"import { Table } from '@/modules/Table';\n\n// Persistir columnas, orden, filtros y búsqueda en la misma key de localStorage\n<Table<Persona>\n columns={columnas}\n rows={filas}\n configKey=\"mi-tabla\"\n persistConfig={true}\n queryPersist={true}\n toolbar={{\n showSearch: true,\n searchPlaceholder: 'Buscar...',\n internalSearch: true,\n showFilters: true,\n internalFilters: true,\n showColumnConfig: true,\n }}\n onConfigChange={(config, changeType) => console.log(changeType, config)}\n striped\n hoverable\n resizable\n/>\n\n// queryPersist={false} → no se guardan ni restauran búsqueda ni filtros (solo columnas/orden)",
|
|
11739
|
+
"const popupAnchorRef = useRef<HTMLButtonElement | null>(null);\nconst popupRef = useRef<PopupRef>(null);\n\nconst columns: ColumnConfig<Ruta>[] = [\n // …columnas de datos…\n {\n id: 'acciones',\n type: 'actions',\n render: (_, row) => [\n {\n icon: faChartLine,\n tooltip: 'Formatos de exhibición en la ruta',\n badge: { label: '2/4', color: 'accent', show: true },\n onClick: (ruta, { triggerElement }) => {\n popupAnchorRef.current = triggerElement;\n setActiveRow(ruta);\n requestAnimationFrame(() => popupRef.current?.open());\n },\n },\n // editar, eliminar, desactivar…\n ],\n },\n];\n\n<Table\n columns={columns}\n rows={rows}\n toolbar={{\n primaryCustomAction: {\n label: 'Añadir Ruta',\n leftSlot: faPlus,\n requiresSelection: false,\n onClick: () => { /* toast / navegación — fuera de Table */ },\n },\n }}\n/>\n\n<Popup\n ref={popupRef}\n triggerRef={popupAnchorRef}\n triggerRefInteraction={false}\n closeOnClick={false}\n position=\"bottom-right\"\n>\n {FORMATOS.map((formato) => (\n <Checkbox\n key={formato.id}\n checked={selection.includes(formato.id)}\n onChange={(checked) =>\n onFormatoChange({\n rutaId: activeRow.id,\n formatoId: formato.id,\n checked,\n })\n }\n label={formato.label}\n />\n ))}\n <Button onClick={() => popupRef.current?.close()}>Cerrar</Button>\n</Popup>",
|
|
11740
|
+
"const popupAnchorRef = useRef<HTMLButtonElement | null>(null);\nconst popupRef = useRef<PopupRef>(null);\n\nconst columns: ColumnConfig<Ruta>[] = [\n // …columnas de datos…\n {\n id: 'acciones',\n type: 'actions',\n render: (_, row) => [\n {\n icon: faChartLine,\n tooltip: 'Formatos de exhibición en la ruta',\n badge: { label: '2/4', color: 'accent', show: true },\n onClick: (ruta, { triggerElement }) => {\n popupAnchorRef.current = triggerElement;\n setActiveRow(ruta);\n requestAnimationFrame(() => popupRef.current?.open());\n },\n },\n // editar, eliminar, desactivar…\n ],\n },\n];\n\n<Table\n columns={columns}\n rows={rows}\n toolbar={{\n primaryCustomAction: {\n label: 'Añadir Ruta',\n leftSlot: faPlus,\n requiresSelection: false,\n onClick: () => { /* toast / navegación — fuera de Table */ },\n },\n }}\n/>\n\n<Popup\n ref={popupRef}\n triggerRef={popupAnchorRef}\n triggerRefInteraction={false}\n closeOnClick={false}\n position=\"bottom-right\"\n>\n {FORMATOS.map((formato) => (\n <Checkbox\n key={formato.id}\n checked={selection.includes(formato.id)}\n onChange={(checked) =>\n onFormatoChange({\n rutaId: activeRow.id,\n formatoId: formato.id,\n checked,\n })\n }\n label={formato.label}\n />\n ))}\n <Button onClick={() => popupRef.current?.close()}>Cerrar</Button>\n</Popup>",
|
|
11565
11741
|
"<Table\n columns={columns}\n rows={pageRows}\n selection={{\n enabled: true,\n multiple: true,\n showSelectionBar: true,\n actions: [{ label: 'Eliminar', onClick: (ids) => { ... } }],\n }}\n pagination={{\n enabled: true,\n currentPage: page,\n pageSize,\n total: totalRowCount,\n onPageChange: setPage,\n onPageSizeChange: setPageSize,\n }}\n/>",
|
|
11566
11742
|
"<Table\n columns={columns}\n rows={pageRows}\n selection={{\n enabled: true,\n multiple: true,\n showSelectionBar: true,\n actions: [{ label: 'Eliminar', onClick: (ids) => { ... } }],\n }}\n pagination={{\n enabled: true,\n currentPage: page,\n pageSize,\n total: totalRowCount,\n onPageChange: setPage,\n onPageSizeChange: setPageSize,\n }}\n/>"
|
|
11567
11743
|
],
|
|
@@ -13985,12 +14161,7 @@
|
|
|
13985
14161
|
}
|
|
13986
14162
|
]
|
|
13987
14163
|
},
|
|
13988
|
-
"changelogRetirements": [
|
|
13989
|
-
{
|
|
13990
|
-
"version": "1.11.4",
|
|
13991
|
-
"note": "`CatalogCard` (layout catálogo):** prop agrupada `content.hideRating` para ocultar el bloque de calificación (estrella + valor) en variantes de catálogo; alias plano `hideRating` en API legacy (deprecated)."
|
|
13992
|
-
}
|
|
13993
|
-
],
|
|
14164
|
+
"changelogRetirements": [],
|
|
13994
14165
|
"consumerChecklist": [
|
|
13995
14166
|
{
|
|
13996
14167
|
"id": "tailwind-prefix",
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"consumerRoot": "../../ds-mcp/src/indexer/consumer",
|
|
4
|
-
"generatedAt": "2026-07-
|
|
5
|
-
"uiVersion": "1.
|
|
4
|
+
"generatedAt": "2026-07-02T19:01:02.192Z",
|
|
5
|
+
"uiVersion": "1.12.0",
|
|
6
6
|
"entries": {
|
|
7
7
|
"accordion": {
|
|
8
8
|
"name": "Accordion",
|
|
@@ -1129,6 +1129,11 @@
|
|
|
1129
1129
|
"source": "DatePicker/types/index.ts",
|
|
1130
1130
|
"sourceKind": "module"
|
|
1131
1131
|
},
|
|
1132
|
+
{
|
|
1133
|
+
"target": "modules/DatePicker/utils/computePortalPosition.ts",
|
|
1134
|
+
"source": "DatePicker/utils/computePortalPosition.ts",
|
|
1135
|
+
"sourceKind": "module"
|
|
1136
|
+
},
|
|
1132
1137
|
{
|
|
1133
1138
|
"target": "modules/DatePicker/utils/datetimeFormat.ts",
|
|
1134
1139
|
"source": "DatePicker/utils/datetimeFormat.ts",
|
|
@@ -1657,6 +1662,7 @@
|
|
|
1657
1662
|
"@fortawesome/free-brands-svg-icons"
|
|
1658
1663
|
],
|
|
1659
1664
|
"registryDependencies": [
|
|
1665
|
+
"icon",
|
|
1660
1666
|
"table",
|
|
1661
1667
|
"text"
|
|
1662
1668
|
],
|
|
@@ -1671,6 +1677,16 @@
|
|
|
1671
1677
|
"source": "Ghantt/GhanttTimelineHeader.tsx",
|
|
1672
1678
|
"sourceKind": "module"
|
|
1673
1679
|
},
|
|
1680
|
+
{
|
|
1681
|
+
"target": "modules/Ghantt/components/molecules/GhanttBarLabel.tsx",
|
|
1682
|
+
"source": "Ghantt/components/molecules/GhanttBarLabel.tsx",
|
|
1683
|
+
"sourceKind": "module"
|
|
1684
|
+
},
|
|
1685
|
+
{
|
|
1686
|
+
"target": "modules/Ghantt/components/molecules/ghanttBarLabelStyles.ts",
|
|
1687
|
+
"source": "Ghantt/components/molecules/ghanttBarLabelStyles.ts",
|
|
1688
|
+
"sourceKind": "module"
|
|
1689
|
+
},
|
|
1674
1690
|
{
|
|
1675
1691
|
"target": "modules/Ghantt/index.ts",
|
|
1676
1692
|
"source": "Ghantt/index.ts",
|
|
@@ -1681,6 +1697,11 @@
|
|
|
1681
1697
|
"source": "Ghantt/mergeGhanttColumns.ts",
|
|
1682
1698
|
"sourceKind": "module"
|
|
1683
1699
|
},
|
|
1700
|
+
{
|
|
1701
|
+
"target": "modules/Ghantt/types/ghanttBarLabel.ts",
|
|
1702
|
+
"source": "Ghantt/types/ghanttBarLabel.ts",
|
|
1703
|
+
"sourceKind": "module"
|
|
1704
|
+
},
|
|
1684
1705
|
{
|
|
1685
1706
|
"target": "shared/ghantt/index.ts",
|
|
1686
1707
|
"source": "ghantt/index.ts",
|