@apia/table 1.0.4 → 2.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.
Files changed (137) hide show
  1. package/dist/Cell.js +52 -0
  2. package/dist/Cell.js.map +1 -0
  3. package/dist/FilterCell.js +68 -0
  4. package/dist/FilterCell.js.map +1 -0
  5. package/dist/Header.js +171 -0
  6. package/dist/Header.js.map +1 -0
  7. package/dist/HeaderCell.js +223 -0
  8. package/dist/HeaderCell.js.map +1 -0
  9. package/dist/KeyHandler.js +28 -0
  10. package/dist/KeyHandler.js.map +1 -0
  11. package/dist/ResponsiveTable.d.ts +8 -0
  12. package/dist/ResponsiveTable.d.ts.map +1 -0
  13. package/dist/ResponsiveTable.js +29 -0
  14. package/dist/ResponsiveTable.js.map +1 -0
  15. package/dist/ResponsiveTableContext.d.ts +8 -0
  16. package/dist/ResponsiveTableContext.d.ts.map +1 -0
  17. package/dist/ResponsiveTableContext.js +140 -0
  18. package/dist/ResponsiveTableContext.js.map +1 -0
  19. package/dist/Row.js +230 -0
  20. package/dist/Row.js.map +1 -0
  21. package/dist/SeparatorCell.js +20 -0
  22. package/dist/SeparatorCell.js.map +1 -0
  23. package/dist/StateCell.js +19 -0
  24. package/dist/StateCell.js.map +1 -0
  25. package/dist/filters/RangeFilter.js +61 -0
  26. package/dist/filters/RangeFilter.js.map +1 -0
  27. package/dist/index.d.ts +25 -628
  28. package/dist/index.js +25 -3273
  29. package/dist/index.js.map +1 -1
  30. package/dist/renderers/AccordionCell.d.ts +15 -0
  31. package/dist/renderers/AccordionCell.d.ts.map +1 -0
  32. package/dist/renderers/AccordionCell.js +23 -0
  33. package/dist/renderers/AccordionCell.js.map +1 -0
  34. package/dist/renderers/AccordionDocNameCellRenderer.d.ts +11 -0
  35. package/dist/renderers/AccordionDocNameCellRenderer.d.ts.map +1 -0
  36. package/dist/renderers/AccordionDocNameCellRenderer.js +39 -0
  37. package/dist/renderers/AccordionDocNameCellRenderer.js.map +1 -0
  38. package/dist/renderers/AccordionElement.d.ts +11 -0
  39. package/dist/renderers/AccordionElement.d.ts.map +1 -0
  40. package/dist/renderers/AccordionElement.js +115 -0
  41. package/dist/renderers/AccordionElement.js.map +1 -0
  42. package/dist/renderers/AccordionHTMLCellRenderer.d.ts +8 -0
  43. package/dist/renderers/AccordionHTMLCellRenderer.d.ts.map +1 -0
  44. package/dist/renderers/AccordionHTMLCellRenderer.js +37 -0
  45. package/dist/renderers/AccordionHTMLCellRenderer.js.map +1 -0
  46. package/dist/renderers/AccordionRenderer.d.ts +6 -0
  47. package/dist/renderers/AccordionRenderer.d.ts.map +1 -0
  48. package/dist/renderers/AccordionRenderer.js +76 -0
  49. package/dist/renderers/AccordionRenderer.js.map +1 -0
  50. package/dist/renderers/AdditionalColumnDefaultRenderer.d.ts +7 -0
  51. package/dist/renderers/AdditionalColumnDefaultRenderer.d.ts.map +1 -0
  52. package/dist/renderers/AdditionalColumnDefaultRenderer.js +31 -0
  53. package/dist/renderers/AdditionalColumnDefaultRenderer.js.map +1 -0
  54. package/dist/renderers/DefaultCellRenderer.d.ts +11 -0
  55. package/dist/renderers/DefaultCellRenderer.d.ts.map +1 -0
  56. package/dist/renderers/DefaultCellRenderer.js +49 -0
  57. package/dist/renderers/DefaultCellRenderer.js.map +1 -0
  58. package/dist/renderers/DefaultRowRenderer.d.ts +6 -0
  59. package/dist/renderers/DefaultRowRenderer.d.ts.map +1 -0
  60. package/dist/renderers/DefaultRowRenderer.js +26 -0
  61. package/dist/renderers/DefaultRowRenderer.js.map +1 -0
  62. package/dist/renderers/DocNameCellRenderer.d.ts +10 -0
  63. package/dist/renderers/DocNameCellRenderer.d.ts.map +1 -0
  64. package/dist/renderers/DocNameCellRenderer.js +43 -0
  65. package/dist/renderers/DocNameCellRenderer.js.map +1 -0
  66. package/dist/renderers/HTMLCellRenderer.d.ts +8 -0
  67. package/dist/renderers/HTMLCellRenderer.d.ts.map +1 -0
  68. package/dist/renderers/HTMLCellRenderer.js +29 -0
  69. package/dist/renderers/HTMLCellRenderer.js.map +1 -0
  70. package/dist/renderers/IsLoadingRenderer.d.ts +6 -0
  71. package/dist/renderers/IsLoadingRenderer.d.ts.map +1 -0
  72. package/dist/renderers/IsLoadingRenderer.js +9 -0
  73. package/dist/renderers/IsLoadingRenderer.js.map +1 -0
  74. package/dist/renderers/NoRegistersRenderer.d.ts +6 -0
  75. package/dist/renderers/NoRegistersRenderer.d.ts.map +1 -0
  76. package/dist/renderers/NoRegistersRenderer.js +11 -0
  77. package/dist/renderers/NoRegistersRenderer.js.map +1 -0
  78. package/dist/renderers/PriorityAccordionRenderer.d.ts +6 -0
  79. package/dist/renderers/PriorityAccordionRenderer.d.ts.map +1 -0
  80. package/dist/renderers/PriorityAccordionRenderer.js +36 -0
  81. package/dist/renderers/PriorityAccordionRenderer.js.map +1 -0
  82. package/dist/renderers/PriorityRenderer.d.ts +9 -0
  83. package/dist/renderers/PriorityRenderer.d.ts.map +1 -0
  84. package/dist/renderers/PriorityRenderer.js +46 -0
  85. package/dist/renderers/PriorityRenderer.js.map +1 -0
  86. package/dist/renderers/RowStatesRenderer.d.ts +9 -0
  87. package/dist/renderers/RowStatesRenderer.d.ts.map +1 -0
  88. package/dist/renderers/RowStatesRenderer.js +34 -0
  89. package/dist/renderers/RowStatesRenderer.js.map +1 -0
  90. package/dist/renderers/StatusAccordionRenderer.d.ts +6 -0
  91. package/dist/renderers/StatusAccordionRenderer.d.ts.map +1 -0
  92. package/dist/renderers/StatusAccordionRenderer.js +23 -0
  93. package/dist/renderers/StatusAccordionRenderer.js.map +1 -0
  94. package/dist/renderers/StatusRenderer.d.ts +9 -0
  95. package/dist/renderers/StatusRenderer.d.ts.map +1 -0
  96. package/dist/renderers/StatusRenderer.js +54 -0
  97. package/dist/renderers/StatusRenderer.js.map +1 -0
  98. package/dist/renderers/TableRenderer.d.ts +6 -0
  99. package/dist/renderers/TableRenderer.d.ts.map +1 -0
  100. package/dist/renderers/TableRenderer.js +50 -0
  101. package/dist/renderers/TableRenderer.js.map +1 -0
  102. package/dist/renderers/makeAccordionAsyncRenderer.d.ts +9 -0
  103. package/dist/renderers/makeAccordionAsyncRenderer.d.ts.map +1 -0
  104. package/dist/renderers/makeAccordionAsyncRenderer.js +35 -0
  105. package/dist/renderers/makeAccordionAsyncRenderer.js.map +1 -0
  106. package/dist/renderers/makeAsyncRenderer.d.ts +10 -0
  107. package/dist/renderers/makeAsyncRenderer.d.ts.map +1 -0
  108. package/dist/renderers/makeAsyncRenderer.js +47 -0
  109. package/dist/renderers/makeAsyncRenderer.js.map +1 -0
  110. package/dist/store/index.d.ts +72 -0
  111. package/dist/store/index.d.ts.map +1 -0
  112. package/dist/store/index.js +131 -0
  113. package/dist/store/index.js.map +1 -0
  114. package/dist/store/selection/getInitialState.js +22 -0
  115. package/dist/store/selection/getInitialState.js.map +1 -0
  116. package/dist/store/selection/getReduxActions.js +42 -0
  117. package/dist/store/selection/getReduxActions.js.map +1 -0
  118. package/dist/store/selection/handleKey.js +143 -0
  119. package/dist/store/selection/handleKey.js.map +1 -0
  120. package/dist/store/selection/makeKeyHandler.js +336 -0
  121. package/dist/store/selection/makeKeyHandler.js.map +1 -0
  122. package/dist/store/selection/setNewFocused.js +101 -0
  123. package/dist/store/selection/setNewFocused.js.map +1 -0
  124. package/dist/store/selection/types.d.ts +150 -0
  125. package/dist/store/selection/types.d.ts.map +1 -0
  126. package/dist/store/selection/useDomProps.js +181 -0
  127. package/dist/store/selection/useDomProps.js.map +1 -0
  128. package/dist/store/types.d.ts +19 -0
  129. package/dist/store/types.d.ts.map +1 -0
  130. package/dist/types.d.ts +315 -0
  131. package/dist/types.d.ts.map +1 -0
  132. package/dist/types.js +6 -0
  133. package/dist/types.js.map +1 -0
  134. package/package.json +22 -34
  135. package/LICENSE.md +0 -21
  136. package/README.md +0 -28
  137. package/cleanDist.json +0 -3
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/types.ts","../src/store/selection/getInitialState.ts","../src/store/selection/setNewFocused.ts","../src/store/selection/handleKey.ts","../src/store/selection/makeKeyHandler.tsx","../src/store/selection/getReduxActions.ts","../src/store/index.ts","../src/ResponsiveTableContext.tsx","../src/KeyHandler.tsx","../src/store/selection/useDomProps.ts","../src/HeaderCell.tsx","../src/renderers/RowStatesRenderer.tsx","../src/StateCell.tsx","../src/filters/RangeFilter.tsx","../src/FilterCell.tsx","../src/Header.tsx","../src/renderers/AdditionalColumnDefaultRenderer.tsx","../src/SeparatorCell.tsx","../src/renderers/DefaultRowRenderer.tsx","../src/renderers/DefaultCellRenderer.tsx","../src/Cell.tsx","../src/Row.tsx","../src/renderers/NoRegistersRenderer.tsx","../src/renderers/TableRenderer.tsx","../src/renderers/AccordionCell.tsx","../src/renderers/AccordionElement.tsx","../src/renderers/AccordionRenderer.tsx","../src/ResponsiveTable.tsx","../src/renderers/DocNameCellRenderer.tsx","../src/renderers/AccordionDocNameCellRenderer.tsx","../src/renderers/AccordionHTMLCellRenderer.tsx","../src/renderers/HTMLCellRenderer.tsx","../src/renderers/IsLoadingRenderer.tsx","../src/renderers/makeAccordionAsyncRenderer.tsx","../src/renderers/makeAsyncRenderer.tsx","../src/renderers/PriorityRenderer.tsx","../src/renderers/PriorityAccordionRenderer.tsx","../src/renderers/StatusRenderer.tsx","../src/renderers/StatusAccordionRenderer.tsx"],"sourcesContent":["import { IconType } from '@meronex/icons';\nimport React from 'react';\nimport { TApiaFilter, TModify } from '@apia/util';\nimport { TAccordionCellRenderer } from './renderers/AccordionCell';\nimport { ISelectableState, TBasicRow } from './store/selection/types';\n\nexport type TColoredElement = {\n background?: string;\n color?: string;\n};\n\n/**\n * Se encontró en algunos casos particulares que\n * el servidor devuelve Up y Down para referirse\n * al orden actual de una columna.\n */\nexport type TResponsiveTableSortValue = null | 'A' | 'D' | 'Down' | 'Up';\n\n/**\n * Cada vez que se hace click en el botón del\n * cabezal de una columna, si la columna tiene\n * habilitado el ordenamiento, se emite un\n * evento de este tipo, informando cuál columna\n * emitió el evento, y cuál es el nuevo sortValue.\n */\nexport type TResponsiveTableSortChangeEvent = {\n name: string;\n column: TResponsiveTableColumn;\n columnIndex: number;\n /**\n * Es el orden que la columna debería tener\n * si no hay ningún motivo para evitar que\n * la acción de ordenamiento se lleve a cabo.\n *\n * Es importante notar que el componente\n * responsiveTable no realiza ninguna acción\n * de ordenamiento por defecto, sino que es\n * quien la usa, quien debe realizar las\n * acciones correspondientes e informarlo a\n * la tabla actualizando los registros y el\n * estado de la columna correspondiente.\n */\n sortValue: TResponsiveTableSortValue;\n};\n\n/**\n * Cada celda admite un renderer, que recibe\n * propiedades personalizadas. Este tipo define\n * cuál es la forma de esas propiedades.\n */\nexport type TResponsiveTableCellRendererProps<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n HTML = HTMLTableCellElement,\n> = {\n cell: TResponsiveTableCell<RendererPropsType>;\n column: TResponsiveTableColumn;\n row: TResponsiveTableRow;\n} & React.AllHTMLAttributes<HTML>;\n\nexport type TResponsiveTableCellRenderer<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = React.FunctionComponent<\n TResponsiveTableCellRendererProps<RendererPropsType>\n>;\n\n/**\n * Algunos elementos de la tabla admiten un\n * Renderer personalizado. Dichos elementos\n * extienden este tipo.\n */\nexport type TResponsiveTableWithRendererElement<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n /**\n * Si se desea, el elemento admite un componente\n * personalizado para encargarse del renderizado\n * del mismo en el modo responsivo. De esta forma, se puede proveer\n * de comportamiento específico a cualquier\n * elemento de la tabla.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n AccordionRenderer?: TAccordionCellRenderer<any>;\n /**\n * Son las propiedades que se desean pasar al\n * componente de renderizado personalizado que\n * se haya establecido.\n *\n * Estas props serán obviadas en caso de que\n * no haya componente de renderizado personalizado.\n */\n rendererProps?: RendererPropsType;\n /**\n * Si se desea, el elemento admite un componente\n * personalizado para encargarse del renderizado\n * del mismo. De esta forma, se puede proveer\n * de comportamiento específico a cualquier\n * elemento de la tabla.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Renderer?: TResponsiveTableCellRenderer<any>;\n};\n\nexport type TResponsiveTableCell<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n children?: number | string;\n} & TResponsiveTableWithRendererElement<RendererPropsType> &\n Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'className' | 'colSpan' | 'id' | 'rowSpan' | 'title'\n >\n > &\n TColoredElement;\n\n/**\n * Cada celda admite un renderer, que recibe\n * propiedades personalizadas. Este tipo define\n * cuál es la forma de esas propiedades.\n */\nexport type TResponsiveTableRowRendererProps<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = {\n row: TResponsiveTableRow<RendererPropsType>;\n rowIndex: number;\n} & React.AllHTMLAttributes<HTMLTableRowElement>;\n\nexport type TResponsiveTableRowRenderer<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = React.FunctionComponent<\n TResponsiveTableRowRendererProps<RendererPropsType>\n>;\n\nexport type TResponsiveTableRow<\n RendererPropsType extends Partial<\n Record<keyof RendererPropsType, unknown>\n > = Record<string, unknown>,\n> = TBasicRow &\n TColoredElement & {\n accordionButtonProps?: {\n rightButtons?: React.ReactNode;\n onUserPressEnter?: (ev: React.KeyboardEvent) => unknown;\n };\n cells: TResponsiveTableCell[];\n /**\n * Si se pasa en true, la fila se mostrará como un separador\n */\n separator?: boolean;\n initiallySelected?: boolean;\n\n renderer?: TResponsiveTableRowRenderer<RendererPropsType>;\n rendererProps?: RendererPropsType;\n /**\n * Permite pasar propiedades arbitrarias a un row y recuperarlas en los\n * eventos de onClick por ejemplo.\n */\n rowProps?: RendererPropsType;\n isHidden?: boolean;\n /**\n * Los estados de la fila agregan un ícono en la columna\n * especial que es la que se muestra a la izquierda y\n * contiene, cuando existe, el botón de más información.\n */\n states?: TResponsiveTableRowState[];\n } & Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'colSpan' | 'className' | 'rowSpan' | 'title'\n >\n >;\n\nexport type TResponsiveTableRowState = {\n /**\n * Es un className que se agregará al elemento <tr>\n */\n className?: string;\n Icon: IconType;\n color?: string;\n tooltip: string;\n};\n\nexport type TResponsiveTableColumn = TResponsiveTableWithRendererElement & {\n /** Con esta propiedad se puede pasar parámetros opcionales */\n additionalData?: Record<string, unknown>;\n /**\n * Determina si la columna admite ordenamiento.\n */\n allowSorting?: boolean;\n children?: React.ReactNode;\n /**\n * Cuando la columna admite ordenamiento, muestra\n * una flecha indicando el orden actual. Esta\n * propiedad establece si la flecha apunta hacia\n * arriba, abajo, o si la flecha es un guión.\n */\n currentSorting?: TResponsiveTableSortValue;\n /** *\n * Valor para decirle al server cuál columna se está ordenando\n */\n dataSortBy?: string;\n hidden?: boolean;\n /**\n * Normalmente, todas las columnas se van a mostrar\n * como renglones en el acordión, cuando este es\n * expandido.\n *\n * Si este flag es pasado en true, la columna\n * correspondiente no se va a mostrar en modo\n * responsivo.\n */\n hideFromAccordion?: boolean;\n /**\n * Elemento id del dom.\n */\n id?: string;\n /**\n * Es el texto que se mostrará en el cabezal.\n */\n label: string;\n maxWidth?: number | string;\n minWidth?: number | string;\n /**\n * El nombre de la columna debe ser único, se utiliza\n * para realizar la asosiación entre las columnas\n * y los filtros, así como con los eventos de orden.\n */\n name: string;\n /**\n * Si se pasa required: true, se pone un asterisco\n * rojo en el cabezal de la columna para señalar que\n * la columna es requerida.\n */\n required?: boolean;\n /**\n * Algunas columnas podrán mostrarse mediante un botón\n * \"mostrar más\", para ello deberán ser marcadas con\n * esta prop en true.\n */\n showAsAdditional?: boolean;\n /**\n * Cuando no se pasa esta propiedad en ninguna columna,\n * la aplicación encuentra la primera fila sin celdas\n * vacías y la utiliza como título.\n *\n * En cambio, si al menos una columna tiene este flag\n * en true, el título de cada fila del acordión estará\n * compuesto por los valores de estas columnas.\n */\n showInAccordionTitle?: boolean;\n /**\n * Elemento title de html (El tooltip).\n */\n title?: string;\n width?: number | string;\n} & Partial<\n Pick<\n HTMLTableCellElement,\n 'ariaLabel' | 'className' | 'colSpan' | 'rowSpan'\n >\n >;\n\nexport type TResponsiveTableStoreProps = {\n /**\n * Habla sobre el orden de las filas en función de\n * las columnas. Esta propiedad habilita/deshabilita\n * el ordenado de las columnas al hacer click en los\n * cabezales.\n *\n * La tabla admite ordenamiento por defecto, a menos\n * que esta prop venga en false. En caso de que se\n * pase false no importa qué digan las columnas,\n * el ordenamiento no estará habilitado.\n */\n allowSorting?: boolean;\n\n // Composition\n columns: TResponsiveTableColumn[];\n filters?: TApiaFilter[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n rows: TResponsiveTableRow<any>[];\n\n /**\n * Por defecto, la tabla permitirá seleccionar\n * múltiples valores, a menos que esta prop venga\n * en false.\n */\n isMultiple?: boolean;\n\n label?: string;\n\n /**\n * Es normal que una tabla tenga paginación y que en cada página haya una\n * cantidad distinta de estados. Si se quiere mantener consistencia en el\n * tamaño de las páginas, es posible reservar un tamaño para una cantidad\n * definida de estados con este parámetro.\n */\n reserveColumnsForStates?: number;\n};\n\nexport type TResponsiveTableRowsSelectionEvent = {\n index: number;\n row: TResponsiveTableRow;\n}[];\n\nexport type TResponsiveTableContextProps = TResponsiveTableStoreProps &\n Pick<\n ISelectableState,\n 'allowRowsKeyboardSorting' | 'allowEdition' | 'allowSelection'\n > & {\n /**\n * Cuando se actualiza el array de rows de la tabla\n * desde las props del ResponsiveTableContext, se\n * reinicia el estado de selección de acuerdo a cómo\n * viene definido en el prop. **Si esta prop se pasa\n * en true**, este comportamiento es deshabilitado.\n */\n avoidReparseSelectionOnRowChange?: boolean;\n children?: React.ReactNode;\n className?: string;\n /**\n * Permite redefinir el comportamiento de los breakpoints pasando un índice\n * personalizado. Cuando es pasado, deja de prestar atención al breakpoint\n * de la pantalla y comienza a prestar atención a este índice.\n */\n currentBreakPoint?: number;\n customLabels?: typeof defaultLabels;\n /**\n * Se puede utilizar este booleano para que la tabla\n * deshabilite las opciones de filtrado y ordenado mientras\n * se está ejecutando una acción ajax.\n */\n isLoading?: boolean;\n /**\n * La tabla debe tener un nombre único que será usado para\n * acceder a las propiedades de la misma en el store. En caso\n * de que no se pase ninguno, la tabla lo generará\n * automaticamente.\n */\n name?: string;\n\n // Filtering\n onFilterChange?: (ev: TApiaFilter) => void | Promise<boolean>;\n onFilterBlur?: (ev: TApiaFilter) => unknown;\n onFilterPressEnter?: (ev: TApiaFilter) => unknown;\n\n // Selection\n onChangeSelection?: (ev: TResponsiveTableRowsSelectionEvent) => unknown;\n /**\n * Este evento será llamado cada vez que el usuario esté\n * haciendo foco en la tabla, tenga una selección de\n * filas no vacía y presione la tecla Enter.\n */\n onSelectRows?: (\n ev: TResponsiveTableRowsSelectionEvent,\n focusedRowIndex: number,\n ) => unknown;\n\n // Sorting\n /**\n * Es llamado cada vez que el usuario hace click en el botón\n * del cabezal de la columna. **Importante:** la tabla no\n * realizará ninguna acción de ordenamiento, sino solamente\n * avisar de que el usuario desea que las filas sean ordenadas\n * por alguna columna en particular.\n */\n onSortChange?: (ev: TResponsiveTableSortChangeEvent) => unknown;\n variant?: string;\n };\n\n/**\n * Los callbacks del responsiveTable estarán\n * disponibles a través de un contexto, de\n * forma que cualquier elemento activo que\n * desee informar de un evento en particular\n * pueda hacerlo en forma sencilla.\n */\nexport type TResponsiveTableContext = TModify<\n Pick<\n TResponsiveTableContextProps,\n | 'currentBreakPoint'\n | 'name'\n | 'onChangeSelection'\n | 'onFilterBlur'\n | 'onFilterChange'\n | 'onFilterPressEnter'\n | 'onSelectRows'\n | 'onSortChange'\n | 'label'\n >,\n { labels: typeof defaultLabels; name: string }\n>;\n\ndeclare global {\n interface Window {\n FINDER_NO_DATA: string;\n }\n}\n\nexport const defaultLabels = {\n noRegisters: window.FINDER_NO_DATA,\n};\n","import { TApiaFilter } from '@apia/util';\nimport { ISelectableState, TBasicRow } from './types';\n\nexport function getInitialState<\n ColumnsType extends { name: string },\n RowsType extends TBasicRow | string,\n>(): ISelectableState<ColumnsType, TApiaFilter, RowsType> {\n return {\n allowEdition: false,\n allowSelection: true,\n columns: [],\n expandedRows: [],\n isEditionMode: false,\n isFocused: false,\n filters: [],\n focusedColumn: 0,\n focusedRow: 0,\n hasNonAdditionalFilters: false,\n isMultiple: true,\n nonAdditionalColumnsCount: 0,\n rows: [],\n selectedRows: [],\n statesColumns: 0,\n };\n}\n","import { addBoundary } from '@apia/util';\nimport { Draft } from '@apia/store';\nimport { INewFocus, ISelectableState, TBasicRow } from './types';\n\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una fila, evitando\n * que se haga foco en filas inexistentes.\n */\nexport function addRowBoundary(newRow: number, state: ISelectableState) {\n const hasFiltersRow = !!state.filters.find(\n (current) =>\n !!state.columns.find((search) => search.name === current.column),\n );\n return addBoundary({\n number: newRow,\n min: hasFiltersRow ? -2 : -1,\n max: Math.max(0, state.rows.length - 1),\n });\n}\n/**\n * Este método conoce las interfaces necesarias\n * para aplicar las restricciones correspondientes\n * a la hora de hacer foco en una columna, evitando\n * que se haga foco en columnas inexistentes.\n */\nexport function addColumnBoundary(newColumn: number, state: ISelectableState) {\n return addBoundary({\n number: newColumn,\n min: 0,\n max:\n state.nonAdditionalColumnsCount +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n });\n}\n\nfunction isBasicRow(row: unknown): row is TBasicRow {\n return typeof row === 'object' && !!row && 'forbidSelection' in row;\n}\n\nfunction filterNonSellectableRows(\n state: Draft<ISelectableState>,\n newSelection: number[],\n) {\n let expandedRowsBefore = 0;\n return newSelection.filter((selectedRowIndex) => {\n const row = state.rows[selectedRowIndex + expandedRowsBefore];\n if (state.expandedRows.includes(selectedRowIndex)) expandedRowsBefore += 1;\n return !(isBasicRow(row) && row.forbidSelection);\n });\n}\n\n/**\n * Normalmente, este método será llamado desde un\n * action de Redux, para eso fue diseñado. Su\n * utilidad es la de tomar el estado y alterarlo\n * dependiendo de los parámetros pasados y la lógica\n * de selección de filas y columnas en una grilla,\n * devolviendo un estado coherente que represente\n * las acciones de un usuario en la grilla.\n */\nexport function setNewFocused(\n state: Draft<ISelectableState>,\n {\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n ctrlKey,\n /**\n * Propiedad proveniente del evento click o keydown.\n */\n shiftKey,\n newFocusedColumn,\n newFocusedRow,\n /**\n * Con este método se puede seleccionar cuál celda\n * va a recibir el foco y la selección, o solamente\n * el foco si esta propiedad es pasada en false.\n */\n shouldSelectNewFocused,\n }: INewFocus,\n) {\n let actualNewFocusedRow =\n Math.round(\n addRowBoundary(newFocusedRow ?? state.focusedRow ?? 0, state) * 2,\n ) / 2;\n const actualNewFocusedColumn = addColumnBoundary(\n newFocusedColumn ?? state.focusedColumn,\n state,\n );\n\n state.focusedColumn = actualNewFocusedColumn;\n state.focusedRow = actualNewFocusedRow;\n state.isFocused = shouldSelectNewFocused ?? false;\n\n if (shouldSelectNewFocused === false || actualNewFocusedRow < 0) return;\n\n if (Math.round(actualNewFocusedRow) - actualNewFocusedRow !== 0)\n actualNewFocusedRow = Math.floor(actualNewFocusedRow);\n\n const isDeselectingWithCtrl =\n ctrlKey && state.selectedRows.includes(actualNewFocusedRow);\n\n if (state.allowSelection !== false)\n if (\n (!ctrlKey && !shiftKey) ||\n (state.isMultiple === false && !isDeselectingWithCtrl)\n )\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n else if ((ctrlKey && state.isMultiple) || isDeselectingWithCtrl) {\n state.selectedRows = filterNonSellectableRows(\n state,\n state.selectedRows.includes(actualNewFocusedRow)\n ? state.selectedRows.filter(\n (current) => current !== actualNewFocusedRow,\n )\n : [...state.selectedRows, actualNewFocusedRow],\n );\n } else if (shiftKey && state.isMultiple) {\n const sortedSelectedRows = [...state.selectedRows].sort((a, b) => a - b);\n let minSelectedRow = sortedSelectedRows[0];\n let maxSelectedRow = sortedSelectedRows[sortedSelectedRows.length - 1];\n\n if (minSelectedRow === undefined) {\n state.selectedRows = filterNonSellectableRows(state, [\n actualNewFocusedRow,\n ]);\n return;\n }\n\n if (actualNewFocusedRow < minSelectedRow)\n minSelectedRow = actualNewFocusedRow;\n if (actualNewFocusedRow > maxSelectedRow)\n maxSelectedRow = actualNewFocusedRow;\n\n const newSelectedRows = filterNonSellectableRows(\n state,\n new Array(maxSelectedRow - minSelectedRow + 1)\n .fill('')\n .map((_, i) => i + (minSelectedRow ?? 0)),\n );\n\n state.selectedRows = filterNonSellectableRows(state, newSelectedRows);\n }\n}\n","import { Draft } from '@apia/store';\nimport React from 'react';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\n/**\n * Este método es de uso interno y normalmente\n * no será necesario fuera de este documento,\n * su utilidad es la de determinar si un evento\n * de teclado será controlado por el keyHandler.\n */\nexport function willHandleKey(\n ev: React.KeyboardEvent,\n state: ISelectableState,\n) {\n const actualKey = ev.key.toLowerCase();\n if (state.isEditionMode) return false;\n\n if (actualKey === ' ' && ev.ctrlKey) return true;\n if (actualKey === 'a' && ev.ctrlKey) return true;\n if (actualKey === 'm' && ev.ctrlKey) return true;\n if (state.draggingRow !== undefined) {\n return ['Escape', 'Enter'].includes(ev.key);\n }\n return [\n 'arrowup',\n 'arrowdown',\n 'arrowleft',\n 'arrowright',\n 'end',\n 'enter',\n 'home',\n 'pageup',\n 'pagedown',\n ].includes(ev.key.toLowerCase());\n}\n\n/**\n * Este método será llamado normalmente desde un action\n * de Redux. Su utilidad es la de evaluar qué tecla\n * se presionó y decidir qué alteración se debe producir\n * en base a eso.\n */\nexport function handleKey(state: Draft<ISelectableState>, { ev }: THandleKey) {\n const {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n key,\n shiftKey: isShiftPressed,\n } = ev;\n if (willHandleKey(ev, state)) ev.preventDefault();\n const actualKey = key.toLowerCase();\n const setFocus = ({\n newFocusedColumn,\n newFocusedRow,\n ...rest\n }: Partial<INewFocus>) =>\n setNewFocused(state, {\n altKey: isAltPressed,\n ctrlKey: isCtrlPressed,\n shiftKey: isShiftPressed,\n newFocusedColumn,\n newFocusedRow,\n ...rest,\n });\n\n if (!state.isEditionMode) {\n if (\n actualKey === 'enter' &&\n (state.allowEdition === true || state.focusedRow < 0)\n )\n state.isEditionMode = true;\n else\n switch (actualKey) {\n case 'arrowup': {\n let sumRate = state.expandedRows.includes(state.focusedRow - 1)\n ? 0.6\n : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow - sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowdown': {\n let sumRate = state.expandedRows.includes(state.focusedRow) ? 0.6 : 1;\n if (Math.round(state.focusedRow) - state.focusedRow !== 0)\n sumRate = 0.5;\n setFocus({\n newFocusedRow: state.focusedRow + sumRate,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'arrowleft':\n case 'arrowright': {\n setFocus({\n newFocusedColumn:\n state.focusedColumn + (actualKey === 'arrowleft' ? -1 : 1),\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'home': {\n if (isCtrlPressed)\n setFocus({ newFocusedColumn: 0, newFocusedRow: 0, ctrlKey: false });\n else setFocus({ newFocusedColumn: 0 });\n break;\n }\n case 'end': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: Number.POSITIVE_INFINITY,\n newFocusedColumn: Number.POSITIVE_INFINITY,\n ctrlKey: false,\n });\n else\n setFocus({\n newFocusedColumn: Number.POSITIVE_INFINITY,\n });\n break;\n }\n case 'pageup': {\n setFocus({\n newFocusedRow: state.focusedRow - 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case 'pagedown': {\n setFocus({\n newFocusedRow: state.focusedRow + 5,\n shouldSelectNewFocused: !isCtrlPressed,\n });\n break;\n }\n case ' ': {\n if (isCtrlPressed)\n setFocus({\n newFocusedRow: state.focusedRow,\n });\n break;\n }\n case 'a': {\n if (isCtrlPressed && state.allowSelection)\n state.selectedRows = state.rows.map((_, i) => i);\n break;\n }\n default:\n break;\n }\n } else\n switch (actualKey) {\n case 'escape':\n case 'enter': {\n if (state.isEditionMode) state.isEditionMode = false;\n ev.stopPropagation();\n break;\n }\n default:\n break;\n }\n}\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box, BoxProps } from '@apia/theme';\nimport {\n autoDisconnectMutationObserver,\n customEvents,\n getFocusSelector,\n getSpecificParent,\n globalFocus,\n isChild,\n cantFocusSelector,\n scrollParentIntoElement,\n useLatest,\n useUpdateEffect,\n} from '@apia/util';\nimport { ThrottleOptions } from 'ahooks/lib/useThrottle/throttleOptions';\nimport { useThrottleFn } from 'ahooks';\nimport { TUpdateByClickPayload } from './getReduxActions';\nimport { willHandleKey } from './handleKey';\nimport { INewFocus, ISelectableState, THandleKey, TUseDomProps } from './types';\nimport {\n TResponsiveTableRow,\n TResponsiveTableRowsSelectionEvent,\n} from '../../types';\nimport { responsiveTableStore, useResponsiveTable } from '..';\n\nexport function shoutKeyhandlerLive(\n liveType: 'reset' | 'howToStartDrag' | 'howToEndDrag' | 'whichIsTheNewIndex',\n additionalData?: {\n newIndex: number;\n },\n) {\n console.warn('Not implemented arialiveemitter', additionalData);\n switch (liveType) {\n /* case 'howToEndDrag':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_END_DRAG,\n });\n break;\n case 'whichIsTheNewIndex':\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n * message:\n * formatMessage(window.ARIA_HOW_TO_WHICH_IS_THE_NEW_POSITION, {\n TOK1: String(additionalData?.newIndex ?? 0),\n }),\n });\n break;\n case 'reset':\n AriaLiveEmitter.emit('live', {\n type: 'reset',\n message: '',\n });\n break;\n default:\n AriaLiveEmitter.emit('live', {\n type: 'assertive',\n message: window.ARIA_HOW_TO_START_DRAG,\n }); */\n default:\n }\n}\n\nlet scrollTimeout: number;\n/**\n * Devuelve un elemento KeyHandler que puede usarse como\n * en el ejemplo.\n *\n * Su función es la de manejar los eventos de teclado y\n * ejecutar las acciones necesarias en el estado de la\n * grilla de acuerdo a la funcionalidad estándar de\n * usabilidad de grillas.\n *\n * @example\n *\n <KeyHandler>\n <table ... />\n </KeyHandler>\n */\nexport function makeKeyHandler(\n actions: {\n handleKey: (payload: THandleKey & { id: string }) => {\n payload: THandleKey & { id: string };\n type: string;\n };\n selectionStateUpdate: (\n payload: Partial<ISelectableState> & { id: string },\n ) => {\n payload: Partial<ISelectableState> & { id: string };\n type: string;\n };\n setNewFocused: (payload: INewFocus & { id: string }) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n swapFocusedRow?: (\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n },\n ) => {\n payload: {\n newIndex: number;\n } & {\n tableName: string;\n };\n type: string;\n };\n updateByClick: (payload: TUpdateByClickPayload['payload']) => {\n payload: INewFocus & { id: string };\n type: string;\n };\n },\n id: string,\n config: { throttleOptions?: ThrottleOptions; stateSelector: TUseDomProps },\n) {\n return function KeyHandler({\n children,\n onChangeSelection,\n onSelectRows,\n ...props\n }: BoxProps & {\n /**\n * Se emite un evento cada vez que el usuario modifica\n * la selección actual.\n */\n onChangeSelection?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n ) => unknown;\n onSelectRows?: (\n newRows: TResponsiveTableRowsSelectionEvent,\n focusedIndex: number,\n ) => unknown;\n }) {\n const { run: keyHandler } = useThrottleFn<\n React.KeyboardEventHandler<HTMLDivElement>\n >((ev) => {\n if (!['shift', 'alt', 'control'].includes(ev.key.toLowerCase())) {\n responsiveTableStore.dispatch(actions.handleKey({ id, ev }));\n }\n }, config?.throttleOptions ?? { wait: 100 });\n\n const [ref, setRef] = React.useState<HTMLElement | null>(null);\n\n const selectedRows = useResponsiveTable(\n (global) => {\n const state = config.stateSelector(global);\n return (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n },\n (a, b) =>\n shallowEqual(\n a.map((current) => current.index),\n b.map((current) => current.index),\n ),\n );\n const selectedRowsRef = useLatest(selectedRows);\n const focusedRow = useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return state?.focusedRow ?? -1;\n });\n const { allowKeyboardSorting, focusedCell, isEditionMode, isFocused } =\n useResponsiveTable((global) => {\n const state = config.stateSelector(global);\n return {\n focusedCell:\n state?.focusedRow !== undefined\n ? `${state?.focusedRow}_${state?.focusedColumn}`\n : undefined,\n isEditionMode: state?.isEditionMode,\n rows: state?.rows,\n isFocused: state?.isFocused,\n allowKeyboardSorting: state?.allowRowsKeyboardSorting,\n };\n }, shallowEqual);\n useUpdateEffect(() => {\n if (onChangeSelection) onChangeSelection(selectedRows);\n }, [onChangeSelection, selectedRows]);\n\n const handleClick = React.useCallback(\n (ev: MouseEvent | FocusEvent | Event) => {\n if ((ev.target as HTMLElement).closest('.moreInformationButton'))\n return;\n\n if ((ev as MouseEvent).shiftKey) {\n document.getSelection()?.removeAllRanges();\n }\n const parentRow = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('tr')) {\n return true;\n }\n return false;\n },\n );\n const parentCell = getSpecificParent(\n ev.target as HTMLElement,\n (current) => {\n if (current.tagName.toLowerCase() === 'table') return null;\n if (current.matches('td,th')) {\n return true;\n }\n return false;\n },\n );\n if (parentCell && parentRow) {\n responsiveTableStore.dispatch(\n actions.updateByClick({\n altKey: (ev as MouseEvent).altKey,\n id,\n ctrlKey: (ev as MouseEvent).ctrlKey,\n ariaColIndex: Number(parentCell.getAttribute('aria-colindex')),\n rowIndex: Number(parentRow.getAttribute('data-focusindex')),\n shiftKey: (ev as MouseEvent).shiftKey,\n }),\n );\n }\n },\n [],\n );\n const handleDoubleClick = React.useCallback(\n (ev: MouseEvent) => {\n if (\n isChild(\n ev.target as HTMLElement,\n (current) => current.tagName === 'THEAD',\n )\n )\n return;\n ev.preventDefault();\n if (onSelectRows)\n onSelectRows(\n selectedRowsRef.current,\n config.stateSelector(responsiveTableStore.getState()).focusedRow,\n );\n },\n [onSelectRows, selectedRowsRef],\n );\n\n const initialized = React.useRef(true);\n\n const running = React.useRef(false);\n const doFocusThings = React.useCallback(() => {\n if (!running.current) {\n running.current = true;\n if (focusedCell === undefined) {\n running.current = false;\n return () => {};\n }\n\n if (ref) {\n const disconnectObserver = autoDisconnectMutationObserver(\n ref,\n () => {\n scrollTimeout = setTimeout(() => {\n const focusedElement = ref.querySelector(\n '[data-focused=\"true\"]',\n );\n\n let tableCellElement: HTMLElement | null = null;\n let tableCellWidget: HTMLElement | null = null;\n\n if (\n ['td', 'th'].includes(\n focusedElement?.tagName.toLowerCase() ?? '',\n )\n ) {\n tableCellElement = focusedElement as HTMLElement;\n tableCellWidget = focusedElement?.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement;\n }\n\n if (focusedElement?.tagName.toLowerCase() === 'tr') {\n tableCellElement = focusedElement.querySelector('td,th');\n tableCellWidget =\n (focusedElement.querySelector(\n getFocusSelector(':not(.debug_info__button)'),\n ) as HTMLElement) || tableCellElement;\n }\n\n if (tableCellWidget) {\n tableCellElement?.setAttribute('tabIndex', '-1');\n tableCellWidget.setAttribute('tabIndex', '0');\n } else tableCellElement?.setAttribute('tabIndex', '0');\n\n if (!isEditionMode) {\n const allFocusableElements = ref?.querySelectorAll(\n getFocusSelector(\n `${cantFocusSelector}:not([data-focused=\"true\"])`,\n ),\n );\n allFocusableElements?.forEach((current) => {\n if (current !== tableCellWidget) {\n current.setAttribute('tabIndex', '-1');\n }\n if (tableCellWidget?.tagName === 'BUTTON')\n tableCellWidget.setAttribute('role', 'gridcell');\n });\n } else {\n const focusableElements =\n tableCellElement?.querySelectorAll('[tabindex=\"-1\"]');\n\n focusableElements?.forEach((current) =>\n current.setAttribute('tabIndex', '0'),\n );\n }\n\n const focusElement = tableCellWidget ?? tableCellElement;\n const row = getSpecificParent(\n focusElement,\n (current) => current.tagName === 'TR',\n );\n\n if (\n focusElement &&\n initialized.current &&\n config.stateSelector(responsiveTableStore.getState())\n .isFocused\n ) {\n globalFocus.focus = focusElement;\n\n focusElement.focus();\n }\n\n if (row) {\n scrollParentIntoElement(row, 55, 2, 100, 'makeKeyHandler');\n }\n\n if (!initialized.current) {\n initialized.current = true;\n }\n }, 0) as unknown as number;\n },\n { timeout: 5000 },\n );\n\n running.current = false;\n return () => {\n disconnectObserver();\n clearTimeout(scrollTimeout);\n };\n }\n running.current = false;\n }\n return () => {};\n }, [focusedCell, ref, isEditionMode]);\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n React.useLayoutEffect(doFocusThings, [\n focusedCell,\n isFocused,\n isEditionMode,\n ]);\n React.useEffect(() => {\n function handleFocus(ev: FocusEvent) {\n const targetTable = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n const relatedTargetTable = getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current.tagName.toLowerCase() === 'table',\n );\n\n if (!relatedTargetTable || relatedTargetTable !== targetTable)\n handleClick(ev);\n }\n\n ref?.addEventListener('dblclick', handleDoubleClick);\n ref?.addEventListener('mousedown', handleClick);\n ref?.addEventListener('focusin', handleFocus);\n ref?.addEventListener(customEvents.focus, handleClick);\n return () => {\n ref?.removeEventListener('mousedown', handleClick);\n ref?.removeEventListener('dblclick', handleDoubleClick);\n ref?.removeEventListener('focusin', handleFocus);\n ref?.removeEventListener(customEvents.focus, handleClick);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [ref]);\n\n const isDragging = React.useRef(false);\n const isFocusedRef = React.useRef(false);\n\n return (\n <Box\n ref={setRef}\n {...props}\n className={`selection__keyHandler ${props.className ?? ''}`}\n onBlur={React.useCallback(\n (ev: React.FocusEvent) => {\n if (\n !ev.relatedTarget ||\n !getSpecificParent(\n ev.relatedTarget as HTMLElement,\n (current) => current === ref,\n )\n ) {\n responsiveTableStore.dispatch(\n actions.selectionStateUpdate({ id, isFocused: false }),\n );\n shoutKeyhandlerLive('reset');\n isFocusedRef.current = false;\n }\n },\n [ref],\n )}\n onFocus={React.useCallback(() => {\n if (!isFocusedRef.current) shoutKeyhandlerLive('howToStartDrag');\n isFocusedRef.current = true;\n }, [])}\n sx={React.useMemo(\n () => ({ overflow: 'auto', position: 'relative' }),\n [],\n )}\n onKeyDown={React.useCallback<\n React.KeyboardEventHandler<HTMLDivElement>\n >(\n (ev) => {\n const state = config.stateSelector(responsiveTableStore.getState());\n\n if (\n willHandleKey(\n ev,\n config.stateSelector(responsiveTableStore.getState()),\n )\n ) {\n ev.preventDefault();\n ev.stopPropagation();\n }\n if (\n actions.swapFocusedRow &&\n isDragging.current &&\n allowKeyboardSorting\n ) {\n if (\n (ev.key === 'Enter' || ev.key === 'Escape') &&\n isDragging.current\n ) {\n shoutKeyhandlerLive('howToStartDrag');\n isDragging.current = false;\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else if (['ArrowDown', 'ArrowUp'].includes(ev.key)) {\n if (ev.key === 'ArrowDown') {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow + 1,\n }),\n );\n } else {\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow - 1,\n }),\n );\n }\n }\n } else if (\n ev.key === 'm' &&\n ev.ctrlKey &&\n !isDragging.current &&\n state.focusedRow >= 0 &&\n actions.swapFocusedRow\n ) {\n isDragging.current = true;\n shoutKeyhandlerLive('howToEndDrag');\n responsiveTableStore.dispatch(\n actions.swapFocusedRow({\n tableName: id,\n newIndex: state.focusedRow,\n }),\n );\n } else {\n const currentSelectedRows = (state?.selectedRows ?? []).map<\n TResponsiveTableRowsSelectionEvent[0]\n >((current) => ({\n index: current,\n row: state.rows[current] as TResponsiveTableRow,\n }));\n if (props.onKeyDown) props.onKeyDown(ev);\n if (ev.key === 'Enter' && onSelectRows && state.focusedRow >= 0) {\n onSelectRows(currentSelectedRows, state.focusedRow);\n }\n keyHandler(ev);\n }\n },\n [allowKeyboardSorting, keyHandler, onSelectRows, props],\n )}\n >\n {children}\n </Box>\n );\n };\n}\n","import type { Draft, PayloadAction } from '@apia/store';\nimport type { TRequireOnlyOne } from '@apia/util';\nimport { handleKey } from './handleKey';\nimport { setNewFocused } from './setNewFocused';\nimport { THandleKey, INewFocus, ISelectableState } from './types';\n\ntype TState = Draft<Record<string, ISelectableState>>;\n\nexport type TPayloadWithId<\n P = Record<string, unknown>,\n T extends string = string,\n M = never,\n E = never,\n> = PayloadAction<P & { id: string }, T, M, E>;\n\nexport type THandleKeyPayload = TPayloadWithId<THandleKey>;\nexport type TSelectionStateUpdatePayload = TPayloadWithId<\n Partial<ISelectableState>\n>;\nexport type TSetNewFocusedPayload = TPayloadWithId<INewFocus>;\nexport type TUpdateByClickPayload = TPayloadWithId<\n TRequireOnlyOne<{ ariaRowIndex: number; rowIndex: number }> &\n TRequireOnlyOne<{ ariaColIndex?: number; colIndex: number }> &\n Pick<INewFocus, 'altKey' | 'ctrlKey' | 'shiftKey' | 'isFocused'>\n>;\n\nexport function getReduxActions() {\n return {\n handleKey(state: TState, { payload }: THandleKeyPayload) {\n handleKey(state[payload.id], payload);\n },\n selectionStateUpdate(\n state: TState,\n { payload: { id, ...payload } }: TSelectionStateUpdatePayload,\n ) {\n state[id] = { ...state[id], ...payload };\n },\n setNewFocused(\n state: TState,\n { payload: { id, ...payload } }: TSetNewFocusedPayload,\n ) {\n setNewFocused(state[id], payload);\n },\n updateByClick(\n state: TState,\n {\n payload: {\n id,\n colIndex,\n rowIndex,\n ariaColIndex,\n ariaRowIndex,\n isFocused,\n ...payload\n },\n }: TUpdateByClickPayload,\n ) {\n const hasFiltersRow = state[id].hasNonAdditionalFilters;\n state[id].isEditionMode = false;\n\n const newFocusedColumn = colIndex ?? ariaColIndex ?? 1;\n const newFocusedRow =\n ariaRowIndex !== undefined\n ? ariaRowIndex\n : (rowIndex ?? 0) - (1 + (hasFiltersRow ? 2 : 1));\n\n setNewFocused(state[id], {\n ...payload,\n newFocusedColumn,\n newFocusedRow,\n });\n\n if (isFocused !== undefined) state[id].isFocused = isFocused;\n },\n };\n}\n","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { createSlice, injectReducers } from '@apia/store';\nimport {\n TResponsiveTableAction,\n TResponsiveTableIndexColumns,\n TResponsiveTableSlice,\n TResponsiveTableState,\n} from './types';\nimport { getInitialState as selectionGetInitialState } from './selection/getInitialState';\nimport { setNewFocused } from './selection/setNewFocused';\nimport { TResponsiveTableRow } from '../types';\nimport { shoutKeyhandlerLive } from './selection/makeKeyHandler';\nimport { getReduxActions } from './selection/getReduxActions';\n\nfunction getInitialState(): TResponsiveTableState {\n const newState: TResponsiveTableState = {\n ...selectionGetInitialState(),\n allowSelection: true,\n allowSorting: true,\n filters: [],\n isLoading: false,\n isMultiple: true,\n accordionIndexColumns: {} as TResponsiveTableIndexColumns,\n expandedRows: [],\n };\n\n return newState;\n}\n\nconst responsiveTableSlice = createSlice({\n name: 'responsiveTableSlice',\n initialState: {} as TResponsiveTableSlice,\n reducers: {\n update(\n state,\n {\n payload: { tableName, ...rest },\n }: TResponsiveTableAction<\n Partial<TResponsiveTableState> & { isFocused?: boolean }\n >,\n ) {\n if (!state[tableName]) state[tableName] = getInitialState();\n state[tableName] = { ...state[tableName], ...rest };\n setNewFocused(state[tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: rest.isFocused ?? state[tableName].isFocused,\n });\n\n if (rest.columns) {\n state[tableName].nonAdditionalColumnsCount = rest.columns.filter(\n (current) => !current.showAsAdditional,\n ).length;\n }\n\n if (rest.rows) {\n state[tableName].statesColumns = Math.max(\n state[tableName]?.reserveColumnsForStates ?? 0,\n ...(state[tableName]?.rows?.map(\n (current) => current.states?.length ?? 0,\n ) ?? [0]),\n );\n }\n\n if (rest.filters) {\n state[tableName].hasNonAdditionalFilters =\n rest.filters.filter(\n (current) =>\n !current.asAdditional &&\n (rest.columns ?? state[tableName].columns)?.find(\n (search) => search.name === current.column,\n ),\n ).length > 0;\n }\n },\n addRows(\n state,\n { payload }: TResponsiveTableAction<{ newRows: TResponsiveTableRow[] }>,\n ) {\n if (!state[payload.tableName])\n state[payload.tableName] = getInitialState();\n state[payload.tableName].rows = state[payload.tableName].rows.concat(\n ...payload.newRows,\n );\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: state[payload.tableName].rows.length,\n });\n },\n deleteRows(\n state,\n { payload }: TResponsiveTableAction<{ rowIndices: number[] }>,\n ) {\n const table = state[payload.tableName];\n const minIndex = payload.rowIndices.reduce((min, current) => {\n return current < min ? current : min;\n }, Infinity);\n table.rows = table.rows.filter(\n (_, index) => !payload.rowIndices.includes(index),\n );\n\n setNewFocused(state[payload.tableName], {\n altKey: false,\n ctrlKey: false,\n shiftKey: false,\n shouldSelectNewFocused: true,\n newFocusedRow: minIndex,\n });\n state[payload.tableName].isFocused = false;\n },\n destroy(state, { payload: { tableName } }: TResponsiveTableAction) {\n delete state[tableName];\n },\n swapFocusedRow(\n state,\n {\n payload: { newIndex, tableName },\n }: TResponsiveTableAction<{ newIndex: number }>,\n ) {\n const tableState = state[tableName];\n const focusedIndex = tableState.focusedRow;\n\n if (\n focusedIndex === undefined ||\n newIndex < 0 ||\n newIndex >= tableState.rows.length\n )\n return;\n\n if (focusedIndex === newIndex) {\n if (tableState.draggingRow === newIndex)\n tableState.draggingRow = undefined;\n else tableState.draggingRow = newIndex;\n return;\n }\n\n shoutKeyhandlerLive('whichIsTheNewIndex', { newIndex });\n\n const isSelected = tableState.selectedRows.includes(focusedIndex);\n\n if (isSelected) {\n tableState.selectedRows = [\n ...tableState.selectedRows.filter(\n (current) => current !== focusedIndex,\n ),\n newIndex,\n ];\n }\n\n const aux = tableState.rows[newIndex];\n tableState.rows[newIndex] = tableState.rows[focusedIndex];\n tableState.rows[focusedIndex] = aux;\n\n tableState.focusedRow = newIndex;\n tableState.draggingRow = newIndex;\n },\n\n // Rows selection\n ...getReduxActions(),\n },\n});\n\nexport const { store: responsiveTableStore, useSelector: useResponsiveTable } =\n injectReducers({\n responsiveTableSlice: responsiveTableSlice.reducer,\n });\n\nexport const responsiveTableActions = responsiveTableSlice.actions;\n","import { useMount, useUnmount, useUpdateEffect } from 'ahooks';\nimport { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n defaultLabels,\n TResponsiveTableContext,\n TResponsiveTableContextProps,\n} from './types';\nimport { responsiveTableActions, responsiveTableStore } from './store';\nimport { ResponsiveTable } from './ResponsiveTable';\nimport { getVariant } from '@apia/theme';\n\nexport const ResponsiveTableReactContext =\n React.createContext<TResponsiveTableContext>({} as TResponsiveTableContext);\n\nexport function useResponsiveTableContext() {\n const context = React.useContext(ResponsiveTableReactContext);\n if (!context) throw new Error('There is no ResponsiveTableContext');\n return context;\n}\n\n/**\n * Este contexto busca facilitar la tarea de centralizar las\n * propiedades y callbacks asociados a la tabla, de forma de\n * evitar la necesidad de distribuir comportamientos.\n *\n * **MUY IMPORTANTE**\n * Asegurarse de memoizar las propiedades rows, filters y\n * columns, ya que en caso contrario eso va a disparar\n * actualizaciones en el responsiveTableStore cada vez que el padre del\n * contexto renderice.\n *\n */\nconst NoMemoResponsiveTableContext = ({\n allowEdition,\n allowRowsKeyboardSorting,\n allowSelection,\n allowSorting,\n avoidReparseSelectionOnRowChange,\n children = <ResponsiveTable />,\n className,\n currentBreakPoint,\n customLabels,\n columns,\n filters,\n rows,\n label,\n isMultiple,\n name,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n reserveColumnsForStates,\n variant,\n}: TResponsiveTableContextProps) => {\n const actualName = React.useMemo(\n () => name ?? uniqueId('responsiveTable'),\n [name],\n );\n const labels = React.useMemo(\n () => ({ ...defaultLabels, ...customLabels }),\n [customLabels],\n );\n const contextValue = React.useMemo<TResponsiveTableContext>(\n () => ({\n currentBreakPoint,\n label,\n labels,\n name: actualName,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n }),\n [\n actualName,\n currentBreakPoint,\n label,\n labels,\n onChangeSelection,\n onFilterBlur,\n onFilterChange,\n onFilterPressEnter,\n onSelectRows,\n onSortChange,\n ],\n );\n\n useMount(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n allowEdition,\n allowRowsKeyboardSorting,\n allowSelection,\n allowSorting,\n columns,\n filters: filters ?? [],\n rows,\n isMultiple,\n tableName: actualName,\n reserveColumnsForStates,\n }),\n );\n });\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n columns,\n }),\n );\n }, [columns]);\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n rows,\n }),\n );\n if (avoidReparseSelectionOnRowChange !== true) {\n const selected = rows\n .map((current, i) => ({ ...current, i }))\n .filter((current) => current.initiallySelected);\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n selectedRows: selected.map((current) => current.i),\n }),\n );\n }\n }, [rows]);\n\n useUpdateEffect(() => {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: actualName,\n filters,\n }),\n );\n }, [filters]);\n\n useUnmount(() => {\n /* responsiveTableStore.dispatch(\n responsiveTableActions.destroy({ tableName: actualName }),\n ); */\n });\n\n return (\n <ResponsiveTableReactContext.Provider value={contextValue}>\n <Box\n id={name}\n className={`responsiveTableContext__wrapper ${className ?? ''}`}\n {...(variant ? getVariant(variant) : null)}\n >\n {children}\n </Box>\n </ResponsiveTableReactContext.Provider>\n );\n};\n\nexport const ResponsiveTableContext = React.memo(NoMemoResponsiveTableContext);\n","import React from 'react';\nimport { BoxProps } from '@apia/theme';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { makeKeyHandler } from './store/selection/makeKeyHandler';\nimport { responsiveTableActions } from './store';\n\nexport interface IKeyHandler {\n children: React.ReactNode;\n}\n\nconst NoMemoKeyHandler = (props: BoxProps) => {\n const { name, onChangeSelection, onSelectRows } = useResponsiveTableContext();\n\n const Handler = React.useMemo(\n () =>\n makeKeyHandler(responsiveTableActions, name, {\n throttleOptions: { wait: 50 },\n stateSelector: (global) => global.responsiveTableSlice[name],\n }),\n [name],\n );\n\n return (\n <Handler\n onChangeSelection={onChangeSelection}\n onSelectRows={onSelectRows}\n {...props}\n />\n );\n};\n\nexport const KeyHandler = React.memo(NoMemoKeyHandler);\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { addBoundary } from '@apia/util';\nimport { TDomProps, IRequiredDomProps, TUseDomProps } from './types';\nimport { useResponsiveTable } from '..';\n\n/**\n * Este hook extrae según el estado de la tabla actual\n * y el nombre del elemento al que se le desean calcular\n * los atributos que deben mostrarse en el dom para\n * cumplir con las reglas de accesibilidad.\n *\n * @param element Es el nombre del elemento\n *\n * @param elementProps Las propiedades necesarias que se\n * deben suministrar para lograr un cálculo apropiado de\n * las propiedades que deben mostrarse.\n *\n * @param stateSelector Es una función que acepta el estado\n * global de la aplicación y devuelve el estado de la tabla\n * actual. Este método es necesario ya que el useDomProps\n * no sabe contra qué slice va a trabajar.\n *\n * @returns un objeto que contiene las propiedades\n * del DOM que deben destructurarse en el elemento html.\n */\nexport function useDomProps<ElementType extends keyof IRequiredDomProps>(\n element: ElementType,\n elementProps: IRequiredDomProps[typeof element],\n stateSelector: TUseDomProps,\n): TDomProps {\n const state = useResponsiveTable((globalState) => {\n const tableState = stateSelector(globalState);\n const hasNonAdditionalFilters = tableState?.hasNonAdditionalFilters;\n const startDataRowIndex = hasNonAdditionalFilters ? 2 : 1;\n\n const statesColumns = tableState?.statesColumns ?? 0;\n\n let expandedBeforeThisRow = 0;\n\n if (element === 'tr')\n expandedBeforeThisRow = tableState?.expandedRows.filter(\n (current) =>\n current < (elementProps as IRequiredDomProps['td']).rowIndex,\n ).length;\n\n let isFocused = false;\n let isSelected = false;\n switch (element) {\n case 'filterTd': {\n const castedProps = elementProps as IRequiredDomProps['filterTd'];\n isFocused =\n tableState?.focusedRow === 1 - startDataRowIndex &&\n addBoundary(tableState?.focusedColumn ?? 0, 0) - statesColumns ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'tr': {\n const castedProps = elementProps as IRequiredDomProps['tr'];\n isFocused = !tableState\n ? false\n : (tableState.focusedRow === castedProps.rowIndex &&\n tableState?.focusedColumn === 0) ||\n (Math.floor(tableState?.focusedRow) === castedProps.rowIndex &&\n Math.round(tableState?.focusedRow) - tableState.focusedRow !==\n 0 &&\n !!castedProps.isTheExpandedRow);\n isSelected =\n !castedProps.isTheExpandedRow &&\n tableState?.selectedRows.includes(castedProps.rowIndex);\n break;\n }\n case 'stateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'additionalTd': {\n const castedProps = elementProps as IRequiredDomProps['additionalTd'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) === 1;\n break;\n }\n case 'td': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow === castedProps.rowIndex &&\n (tableState?.focusedColumn ?? 0) - statesColumns ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'headerStateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n isFocused =\n tableState?.focusedRow ===\n castedProps.rowIndex - 1 - startDataRowIndex &&\n addBoundary(tableState?.focusedColumn, 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'th': {\n const castedProps = elementProps as IRequiredDomProps['th'];\n isFocused =\n tableState?.focusedRow === 0 - startDataRowIndex &&\n addBoundary((tableState?.focusedColumn ?? 0) - statesColumns, 0) ===\n castedProps.columnIndex + 1 + (hasNonAdditionalFilters ? 1 : 0);\n break;\n }\n case 'separator': {\n const castedProps = elementProps as IRequiredDomProps['separator'];\n isFocused = !tableState\n ? false\n : tableState.focusedRow === castedProps.rowIndex;\n break;\n }\n default:\n break;\n }\n\n return {\n columns: tableState?.columns ?? [],\n expandedBeforeThisRow,\n isEditionMode: tableState?.isEditionMode,\n hasNonAdditionalFilters,\n rowsLength: element === 'table' ? tableState?.rows.length : '',\n isSelected,\n isFocused,\n startDataRowIndex,\n statesColumns: tableState?.statesColumns,\n };\n }, shallowEqual);\n\n let returnObject: Omit<TDomProps, 'ref'> = React.useMemo(() => ({}), []);\n\n switch (element) {\n case 'filterTd': {\n const castedProps = elementProps as IRequiredDomProps['filterTd'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': 2,\n };\n break;\n }\n case 'separator': {\n const castedProps = elementProps as IRequiredDomProps['separator'];\n returnObject = {\n 'aria-rowindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n state.expandedBeforeThisRow,\n 'data-focusindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n 'aria-selected': state.isSelected,\n 'data-focused': state.isFocused,\n 'aria-expanded': false,\n };\n break;\n }\n case 'table': {\n returnObject = {\n role: 'treegrid',\n 'aria-colcount': state.columns.length,\n 'aria-rowcount': state.rowsLength,\n };\n break;\n }\n case 'tr': {\n const castedProps = elementProps as IRequiredDomProps['tr'];\n returnObject = {\n 'aria-rowindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n state.expandedBeforeThisRow +\n (castedProps.isTheExpandedRow ? 1 : 0),\n 'data-focusindex':\n castedProps.rowIndex +\n state.startDataRowIndex +\n 1 +\n (castedProps.isTheExpandedRow ? 0.5 : 0),\n 'aria-selected': state.isSelected,\n 'data-focused': state.isFocused,\n 'aria-expanded': castedProps.isThisRowExpanded,\n tabIndex: state.isFocused ? 0 : -1,\n };\n break;\n }\n case 'td': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'additionalTd': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex': 1,\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'stateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex + 1 + (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex + state.startDataRowIndex + 1,\n };\n break;\n }\n case 'headerStateCell': {\n const castedProps = elementProps as IRequiredDomProps['td'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex + 1 + (state.hasNonAdditionalFilters ? 1 : 0),\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': castedProps.rowIndex,\n };\n break;\n }\n case 'th': {\n const castedProps = elementProps as IRequiredDomProps['th'];\n returnObject = {\n 'aria-colindex':\n castedProps.columnIndex +\n 1 +\n state.statesColumns +\n (state.hasNonAdditionalFilters ? 1 : 0),\n 'aria-sort': ['ascending', 'descending', undefined][\n ['Asc', 'Desc', null].findIndex(\n (current) =>\n current === state.columns[castedProps.columnIndex].currentSorting,\n )\n ] as 'none' | 'ascending' | 'descending' | 'other' | undefined,\n 'data-editionmode': state.isEditionMode && state.isFocused,\n 'data-focused': state.isFocused,\n tabIndex: state.isFocused ? 0 : -1,\n 'data-rowindex': 1,\n };\n break;\n }\n default:\n break;\n }\n\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return React.useMemo(() => returnObject, Object.values(returnObject));\n}\n","/* eslint-disable @typescript-eslint/no-dynamic-delete */\nimport { FaSortUp, FaSortDown, FaSort } from '@meronex/icons/fa';\nimport React, { CSSProperties } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport {\n EventEmitter,\n TMap,\n debugDispatcher,\n getSpecificParent,\n isChild,\n persistentStorage,\n} from '@apia/util';\nimport { AutoEllipsis, useOtherTagButton } from '@apia/components';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { TResponsiveTableSortValue } from './types';\nimport { useResponsiveTable } from './store';\nimport { useDomProps } from './store/selection/useDomProps';\n\ninterface IHeaderCell {\n /**\n * Para ordenar en Apia se usa un índice de columna, que se\n * corresponde con su posición en base 0, sin tomar en cuenta\n * las columnas adicionales.\n */\n apiaColumnIndex: number;\n columnIndex: number;\n inTableColumnIndex: number;\n}\n\nconst widthStorageName = 'tablesWidths';\n\n/**\n * Calcula el ancho de la columna dependiendo del valor establecido,\n * si el valor es numérico o un string que contiene un número sin\n * unidad, devuelve el doble de ese número para establecer una\n * relatividad con los tamaños de las columnas actuales en Apia.\n *\n * Es decir, como todo en Apia era más chico, los tamaños que se\n * establecían antes no quedan visualmente agradables con los\n * tamaños actuales, por eso se magnifican multiplicando por 2.\n */\nfunction getColumnWidth(width?: string | number) {\n if (typeof width === 'string') {\n if (width.match(/(%|px|vw|vh|vmin|vmax|cm|mm|in|pt|pc)/)) return width;\n if (width === '') return 'auto';\n const numberValue = Number.parseInt(width, 10);\n if (isNaN(numberValue)) return 'auto';\n return numberValue;\n }\n if (typeof width === 'number') return width;\n return width;\n}\ndebugDispatcher.on(\n 'cleanTableSizes',\n ([tableName]) => {\n const currentWidths = persistentStorage[widthStorageName] as TMap<unknown>;\n delete currentWidths[tableName as string];\n persistentStorage[widthStorageName] = currentWidths;\n },\n 'Se usa para borrar el estado de una tabla. Uso: dd.cleanTableSizes(\"TableName\")',\n);\nfunction makeColumnName(tableName: string, columnName: string): string {\n return `${tableName}${columnName}`;\n}\n\nconst thWidthEmitter = new (class ThWidthEmitter extends EventEmitter<{\n resize: { name: string; width: number };\n}> {})();\n\nconst NoMemoHeaderCell = ({\n apiaColumnIndex,\n columnIndex,\n inTableColumnIndex,\n}: IHeaderCell) => {\n const { name, onSortChange } = useResponsiveTableContext();\n const uniqueId =\n (window.location.href.match(/busEntId=(\\d+)/)?.[1] as string) ??\n (window.location.href.match(/query=(\\d+)/)?.[1] as string) ??\n '';\n const isGlobal = window.isGlobal ? 'isGlobal' : 'notGlobal';\n const actualName = name + uniqueId + String(isGlobal);\n const column = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns[columnIndex];\n }, shallowEqual);\n const storedWidth = (\n (persistentStorage[widthStorageName] as TMap<unknown>)?.[\n actualName\n ] as TMap<unknown>\n )?.[column.name] as number;\n\n const [width, setWidth] = React.useState(storedWidth ?? 200);\n const [isResize, setIsResize] = React.useState(storedWidth !== undefined);\n\n React.useEffect(() => {\n return void thWidthEmitter.on('resize', (ev) => {\n if (ev.name === makeColumnName(actualName, column.name)) {\n setIsResize(true);\n setWidth(ev.width);\n }\n });\n }, [column.name, actualName]);\n\n const isFilterRequired = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n const columnFilter = tableState?.filters.find(\n (current) => current.column === column.title,\n );\n return columnFilter?.required;\n }, shallowEqual);\n\n const isSortingAllowed = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.allowSorting;\n });\n\n const domProps = useDomProps(\n 'th',\n {\n columnIndex: inTableColumnIndex,\n },\n domPropsSelector(name),\n );\n\n const sx: CSSProperties = React.useMemo(\n () =>\n !isResize\n ? {\n minWidth: getColumnWidth(column.minWidth ?? column.width),\n maxWidth:\n column.maxWidth !== undefined\n ? getColumnWidth(column.maxWidth)\n : undefined,\n width: getColumnWidth(column.width),\n position: 'relative',\n }\n : {\n width: `${width}px`,\n minWidth: `${width}px`,\n position: 'relative',\n },\n [column.maxWidth, column.minWidth, column.width, isResize, width],\n );\n\n const buttonProps = useOtherTagButton(\n React.useMemo(\n () => ({\n className: 'headButton',\n onClick: (ev) => {\n if (\n isChild(ev.target as HTMLElement, (current) =>\n current.classList.contains('headButton__resizer'),\n )\n )\n return;\n\n console.warn('Buttons slice is not defined');\n /* if (\n responsiveTableStore\n .getState()\n .buttonsSlice.performingActions.includes('disableTable')\n )\n return; */\n if (\n onSortChange &&\n column.allowSorting !== false &&\n isSortingAllowed !== false\n )\n onSortChange({\n column,\n columnIndex: apiaColumnIndex,\n name: column.name,\n sortValue: ['Asc', 'Desc'][\n column.currentSorting !== 'A' ? 0 : 1\n ] as TResponsiveTableSortValue,\n });\n },\n }),\n [apiaColumnIndex, column, isSortingAllowed, onSortChange],\n ),\n );\n return (\n <Box\n as=\"th\"\n style={sx}\n data-columnname={column.name}\n title={column.title ?? column.label ?? column.name}\n {...buttonProps}\n {...domProps}\n role=\"rowheader\"\n className={`${\n isFilterRequired && window.SHOW_REQUIRED_POSITION\n ? 'requiredFilterColumn'\n : ''\n }`}\n >\n <Box as=\"span\" className=\"headButton__container\">\n <Box\n as=\"span\"\n className={`${\n isFilterRequired ? 'requiredFilter__Column' : ''\n } headButton__label`}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const th = el.closest('th') as HTMLElement;\n return {\n width: `${Math.max(\n 100,\n Number.parseInt(window.getComputedStyle(th).width),\n )}px`,\n };\n }}\n >\n {column.label}\n </AutoEllipsis>\n </Box>\n <Box as=\"span\" className=\"headButton__sortIcon\">\n {column.allowSorting !== false && column.currentSorting === 'A' && (\n <FaSortUp />\n )}\n {column.allowSorting !== false && column.currentSorting === 'D' && (\n <FaSortDown />\n )}\n {column.allowSorting !== false && !column.currentSorting && (\n <FaSort />\n )}\n </Box>\n <Box\n // sx={{ display: 'none' }}\n className=\"headButton__resizer\"\n onMouseDown={(ev) => {\n if (!isResize) {\n const trElement = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TR',\n );\n\n trElement?.querySelectorAll('th').forEach((current) => {\n thWidthEmitter.emit('resize', {\n name: makeColumnName(\n actualName,\n current.dataset.columnname as string,\n ),\n width: (current as HTMLElement).clientWidth,\n });\n });\n\n setIsResize(true);\n }\n\n const th = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TH',\n );\n if (!th) throw new Error('There is no th');\n\n const initialX = ev.clientX;\n const initialWidth = th.clientWidth;\n\n const resize = (mousemoveEv: MouseEvent) => {\n const dif = mousemoveEv.clientX - initialX;\n\n setWidth(initialWidth + dif);\n };\n const unsuscribe = () => {\n const trElement = getSpecificParent(\n ev.target as HTMLElement,\n (current) => current.tagName === 'TR',\n );\n trElement?.querySelectorAll('th').forEach((current) => {\n persistentStorage[widthStorageName] = {\n ...(persistentStorage[widthStorageName] as TMap<unknown>),\n [actualName]: {\n ...((\n persistentStorage[widthStorageName] as TMap<unknown>\n )?.[actualName] as TMap<unknown>),\n [current.dataset.columnname as string]: (\n current as HTMLElement\n ).clientWidth,\n },\n };\n });\n document.removeEventListener('mousemove', resize);\n document.removeEventListener('mouseup', unsuscribe);\n };\n\n document.addEventListener('mousemove', resize);\n document.addEventListener('mouseup', unsuscribe);\n\n return false;\n }}\n />\n </Box>\n </Box>\n );\n};\n\nexport const HeaderCell = React.memo(NoMemoHeaderCell);\n","import React from 'react';\nimport { getVariant } from '@apia/theme';\nimport { TResponsiveTableRowState } from '../types';\n\nconst NoMemoRowStatesRenderer = ({\n state,\n}: {\n state: TResponsiveTableRowState;\n}) => {\n const { Icon } = state;\n return (\n <Icon\n {...getVariant('inherit')}\n title={state.tooltip}\n className={`${state.className ?? 'state'}_icon state_icon`}\n sx={React.useMemo(\n () => ({\n '&, svg, path': {\n color: state.color ?? '',\n },\n }),\n [state.color],\n )}\n />\n );\n};\n\nexport const RowStatesRenderer = React.memo(NoMemoRowStatesRenderer);\n","import { domPropsSelector } from './ResponsiveTable';\nimport { RowStatesRenderer } from './renderers/RowStatesRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { TResponsiveTableRowState } from './types';\nimport { Box } from '@apia/theme';\n\ninterface IStateCell {\n index: number;\n isHeader?: boolean;\n rowIndex: number;\n state?: TResponsiveTableRowState;\n}\n\nexport const StateCell = ({ index, rowIndex, state, isHeader }: IStateCell) => {\n const { name } = useResponsiveTableContext();\n const domProps = useDomProps(\n isHeader ? 'headerStateCell' : 'stateCell',\n { columnIndex: index, rowIndex },\n domPropsSelector(name),\n );\n return (\n <Box as=\"td\" className=\"stateCell\" {...domProps}>\n {state ? <RowStatesRenderer state={state} /> : ''}\n </Box>\n );\n};\n","import { Box } from '@apia/theme';\nimport { TApiaFilter } from '@apia/util';\nimport { ApiaFilter } from '@apia/components';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nconst NoMemoRangeFilter = ({ filter }: { filter: TApiaFilter }) => {\n const { onFilterBlur, onFilterChange, onFilterPressEnter } =\n useResponsiveTableContext();\n const filterLow: TApiaFilter = {\n id: filter.id,\n currentValue: filter.currentValue,\n type: 'number',\n };\n const filterHigh: TApiaFilter = {\n id: filter.filterToId ?? '',\n currentValue: filter.filterToValue ?? '',\n type: 'number',\n };\n return (\n <Box className=\"ApiaFilter__Range\">\n <Box className=\"ApiaFilter__Range__Low\">\n <ApiaFilter\n filter={filterLow}\n onChange={(currentValue) => {\n if (onFilterChange)\n void onFilterChange({ ...filterLow, currentValue });\n }}\n onBlur={(currentValue) => {\n if (onFilterBlur) void onFilterBlur({ ...filterLow, currentValue });\n }}\n onPressEnter={(currentValue) => {\n if (onFilterPressEnter)\n void onFilterPressEnter({ ...filterLow, currentValue });\n }}\n />\n </Box>\n {' - '}\n <Box className=\"ApiaFilter__Range__High\">\n <ApiaFilter\n filter={filterHigh}\n onChange={(currentValue) => {\n if (onFilterChange)\n void onFilterChange({ ...filterHigh, currentValue });\n }}\n onBlur={(currentValue) => {\n if (onFilterBlur)\n void onFilterBlur({ ...filterHigh, currentValue });\n }}\n onPressEnter={(currentValue) => {\n if (onFilterPressEnter)\n void onFilterPressEnter({ ...filterHigh, currentValue });\n }}\n />\n </Box>\n </Box>\n );\n};\n\nexport const RangeFilter = NoMemoRangeFilter;\n","import { Input } from '@apia/theme';\nimport React from 'react';\nimport { TApiaFilter, TApiaFilterValue } from '@apia/util';\nimport { ApiaFilter } from '@apia/components';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { RangeFilter } from './filters/RangeFilter';\nimport { useDomProps } from './store/selection/useDomProps';\n\ninterface IFilterCell {\n columnIndex: number;\n filter?: TApiaFilter;\n}\n\nexport const FilterCell = ({ columnIndex, filter }: IFilterCell) => {\n const { name, onFilterBlur, onFilterChange, onFilterPressEnter } =\n useResponsiveTableContext();\n const domProps = useDomProps(\n 'filterTd',\n {\n columnIndex,\n },\n domPropsSelector(name),\n );\n\n const handleOnBlur = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterBlur) onFilterBlur({ ...filter, currentValue });\n },\n [filter, onFilterBlur],\n );\n\n const handleOnChange = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterChange)\n return onFilterChange({ ...filter, currentValue });\n return true;\n },\n [filter, onFilterChange],\n );\n\n const handleOnPressEnter = React.useCallback(\n (currentValue: TApiaFilterValue) => {\n if (filter && onFilterPressEnter)\n onFilterPressEnter({ ...filter, currentValue });\n },\n [filter, onFilterPressEnter],\n );\n\n function findFilter() {\n if (filter?.isRange) {\n return <RangeFilter filter={filter} />;\n }\n if (filter && !(filter.asAdditional || !filter.column || filter.isRange)) {\n return (\n <ApiaFilter\n onBlur={handleOnBlur}\n onChange={handleOnChange}\n onPressEnter={handleOnPressEnter}\n filter={filter}\n />\n );\n }\n\n let label: string;\n if (filter && (filter.asAdditional || !filter.column || filter.isRange)) {\n label = window.LBL_ADDITIONAL_FILTER;\n } else {\n label = window.LBL_NO_COLUMN_FILTER;\n }\n\n return <Input aria-label={label} disabled />;\n }\n return <td {...domProps}>{findFilter()}</td>;\n};\n","import { useUpdateEffect } from 'ahooks';\nimport { uniqueId } from 'lodash-es';\nimport React, { useState } from 'react';\nimport {\n customEvents,\n getLabel,\n persistentStorage,\n TApiaFilter,\n} from '@apia/util';\nimport { shallowEqual } from '@apia/store';\nimport { useOtherTagButton } from '@apia/components';\nimport { Icon } from '@apia/icons';\nimport { HeaderCell } from './HeaderCell';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useResponsiveTable } from './store';\nimport { StateCell } from './StateCell';\nimport { FilterCell } from './FilterCell';\n\ndeclare global {\n interface Window {\n focusedRow: number;\n focusedColumn: number;\n hasNonAdditionalFilters: boolean;\n }\n}\n\nconst NoMemoHeader = () => {\n const { name } = useResponsiveTableContext();\n const { columns, hasNonAdditionalFilters, focusedColumn, focusedRow } =\n useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n window.focusedRow = tableState?.focusedRow;\n window.focusedColumn = tableState?.focusedColumn;\n window.hasNonAdditionalFilters =\n tableState?.hasNonAdditionalFilters || false;\n return {\n columns: tableState?.columns ?? [],\n focusedColumn: tableState?.focusedColumn,\n focusedRow: tableState?.focusedRow,\n hasNonAdditionalFilters: tableState?.hasNonAdditionalFilters,\n };\n }, shallowEqual);\n\n const filters = useResponsiveTable<\n {\n columnIndex: number;\n definition: TApiaFilter;\n }[]\n >(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n const returnObject = (tableState?.filters ?? [])\n .map((current) => ({\n columnIndex: tableState.columns.findIndex(\n (search) => search.name === current.column,\n ),\n definition: current,\n }))\n .filter((current) => current.columnIndex >= 0);\n\n return returnObject;\n },\n (a, b) => {\n return (\n a.length === b.length &&\n a.reduce<boolean>((result, current, index) => {\n return (\n result && shallowEqual(current.definition, b[index].definition)\n );\n }, true)\n );\n },\n );\n\n const statesCount = useResponsiveTable((globalState) => {\n const state = globalState.responsiveTableSlice[name];\n return state?.statesColumns ?? 0;\n }, shallowEqual);\n\n const additionalColumns = React.useMemo(\n () =>\n columns.reduce(\n (count, column) => count + (column.showAsAdditional ? 1 : 0),\n 0,\n ),\n [columns],\n );\n\n const statesIds = React.useMemo(() => {\n return Array(statesCount)\n .fill('')\n .map(() => uniqueId());\n }, [statesCount]);\n\n const [isFiltersRowVisible, setIsFiltersRowVisible] = React.useState<boolean>(\n /* (persistentStorage.showResponsiveTableFilters as boolean) ?? */ false,\n );\n React.useEffect(() => {\n persistentStorage.showResponsiveTableFilters = isFiltersRowVisible;\n }, [isFiltersRowVisible]);\n\n const buttonProps = useOtherTagButton(\n React.useMemo(\n () => ({\n className: 'additionalColumn',\n onClick: () => setIsFiltersRowVisible((current) => !current),\n }),\n [],\n ),\n );\n\n const [ref, setRef] = useState<HTMLTableRowElement | null>(null);\n\n useUpdateEffect(() => {\n const handleFocus = (ev: Event) => {\n ev.stopPropagation();\n setIsFiltersRowVisible(true);\n };\n ref?.addEventListener(customEvents.focus, handleFocus);\n return () => {\n ref?.removeEventListener(customEvents.focus, handleFocus);\n };\n }, [ref]);\n\n return (\n <thead>\n <tr data-focusindex={1}>\n {(additionalColumns > 0 || hasNonAdditionalFilters) && (\n <th\n aria-colindex={1}\n aria-rowindex={1}\n data-focused={\n focusedColumn === 1 &&\n focusedRow === -1 - (hasNonAdditionalFilters ? 1 : 0)\n }\n {...buttonProps}\n tabIndex={\n focusedColumn === 1 &&\n focusedRow === -1 - (hasNonAdditionalFilters ? 1 : 0)\n ? 0\n : -1\n }\n aria-label={\n isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text\n }\n role=\"rowheader\"\n >\n {hasNonAdditionalFilters ? (\n <Icon\n className=\"filterButton\"\n name=\"Filter\"\n title={\n isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text\n }\n aria-label={\n isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text\n }\n />\n ) : (\n <>\n <span style={{ display: 'none' }}>\n {isFiltersRowVisible\n ? getLabel('lblHideFilters').text\n : getLabel('lblShowFilters').text}\n </span>\n <span>&nbsp;</span>\n </>\n )}\n </th>\n )}\n {statesIds.map((id, i) => (\n <StateCell isHeader key={id} index={i} rowIndex={1} />\n ))}\n {columns\n .map((current, actualColumnIndex) => ({\n ...current,\n actualTableColumnIndex: actualColumnIndex,\n }))\n .filter((current) => !current.showAsAdditional)\n .map((current, columnIndex) => {\n if (current.hidden) return null;\n\n return (\n <HeaderCell\n apiaColumnIndex={current.actualTableColumnIndex}\n columnIndex={current.actualTableColumnIndex}\n inTableColumnIndex={columnIndex}\n key={current.name}\n />\n );\n })}\n </tr>\n {filters.length > 0 && (\n <tr\n ref={setRef}\n data-focusindex={2}\n className={`responsiveTable__filters__row ${\n isFiltersRowVisible ? '' : 'hidden'\n }`}\n >\n {(additionalColumns > 0 || hasNonAdditionalFilters) && (\n <td\n className=\"noFilter\"\n aria-colindex={1}\n aria-rowindex={2}\n tabIndex={focusedColumn === 1 && focusedRow === -1 ? 0 : -1}\n data-focused={focusedColumn === 1 && focusedRow === -1}\n >\n &nbsp;\n </td>\n )}\n {statesIds.map((id, i) => (\n <StateCell isHeader key={id} index={i} rowIndex={2} />\n ))}\n {columns\n .filter((current) => !current.showAsAdditional)\n .map((current, columnIndex) => {\n const filter = filters.find(\n (search) => search.definition.column === current.name,\n );\n\n return current.showAsAdditional ? null : (\n <FilterCell\n key={current.name}\n columnIndex={columnIndex}\n filter={filter?.definition}\n />\n );\n })}\n </tr>\n )}\n </thead>\n );\n};\n\nexport const Header = React.memo(NoMemoHeader);\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\n\nconst NoMemoAdditionalColumnDefaultRenderer = ({\n column,\n cell,\n}: TResponsiveTableCellRendererProps) => {\n return (\n <Box\n className={`${cell.className ?? ''} responsiveTable__additionalInfoItem`}\n id={cell.id}\n title={cell.title}\n >\n <Box as=\"strong\">{column.name}:</Box> {cell.children}\n </Box>\n );\n};\n\nexport const AdditionalColumnDefaultRenderer = React.memo(\n NoMemoAdditionalColumnDefaultRenderer,\n);\n","import { domPropsSelector } from './ResponsiveTable';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\n\nexport const SeparatorCell = ({\n colSpan,\n rowIndex,\n}: {\n colSpan: number;\n rowIndex: number;\n}) => {\n const { name } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'separator',\n { rowIndex },\n domPropsSelector(name),\n );\n return (\n <td className=\"row__separator__cell\" colSpan={colSpan} {...domProps} />\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TResponsiveTableRowRenderer,\n TResponsiveTableRowRendererProps,\n} from '../types';\n\nconst NoMemoDefaultRowRenderer: TResponsiveTableRowRenderer = React.forwardRef<\n HTMLTableRowElement,\n TResponsiveTableRowRendererProps\n>(({ row, rowIndex, ...props }, currentRef) => (\n <Box\n as={'tr' as any}\n sx={useMemo(\n () => ({\n '&.colored, & > *': {\n color: row.color,\n background: row.background,\n },\n }),\n [row.background, row.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableRowElement>}\n {...props}\n />\n));\n\nNoMemoDefaultRowRenderer.displayName = 'DefaultRowRenderer';\n\nexport const DefaultRowRenderer = NoMemoDefaultRowRenderer;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useMemo } from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { AutoEllipsis } from '@apia/components';\n\nconst NoMemoDefaultCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps\n>(\n (\n {\n cell: { Renderer, rendererProps, AccordionRenderer, ariaLabel, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <Box\n as={'td' as any}\n sx={useMemo(\n () => ({\n '&.colored': {\n background: cell.background,\n color: cell.color,\n fontWeight: 'bold',\n },\n }),\n [cell.background, cell.color],\n )}\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n aria-label={ariaLabel as string}\n >\n <AutoEllipsis\n overrideStyles={(el) => {\n const td = el.closest('td') as HTMLElement;\n\n return {\n width: window.getComputedStyle(td).width,\n };\n }}\n >\n {props.children ?? cell.children}\n </AutoEllipsis>\n </Box>\n ),\n);\nNoMemoDefaultCellRenderer.displayName = 'DefaultCellRenderer';\nexport const DefaultCellRenderer = NoMemoDefaultCellRenderer;\n","import React, { FC } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { DefaultCellRenderer } from './renderers/DefaultCellRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { useResponsiveTable } from './store';\n\ninterface ICell {\n columnIndex: number;\n inTableColumnIndex: number;\n rowIndex: number;\n}\n\nconst NoMemoCell: FC<ICell> = ({\n columnIndex,\n inTableColumnIndex,\n rowIndex,\n}) => {\n const { name } = useResponsiveTableContext();\n\n const domProps = useDomProps(\n 'td',\n { columnIndex: inTableColumnIndex, rowIndex },\n domPropsSelector(name),\n );\n\n const cell = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n\n return tableState?.rows[rowIndex]?.cells[columnIndex];\n }, shallowEqual);\n\n const column = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns[columnIndex];\n }, shallowEqual);\n\n const row = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.rows[rowIndex];\n }, shallowEqual);\n\n const Renderer = React.useMemo(\n () => cell?.Renderer ?? column.Renderer ?? DefaultCellRenderer,\n [cell?.Renderer, column.Renderer],\n );\n\n if (!Renderer || !cell)\n return row.separator ? <div className=\"separator\"></div> : null;\n\n return (\n <Renderer\n {...(domProps as Omit<React.HTMLProps<HTMLTableCellElement>, 'ref'>)}\n cell={cell}\n column={column}\n row={row}\n />\n );\n};\n\nexport const Cell = React.memo(NoMemoCell);\n","import { uniqueId } from 'lodash-es';\nimport React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { MdKeyboardArrowRight, MdKeyboardArrowDown } from '@meronex/icons/md/';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { getVariant } from '@apia/theme';\nimport { domPropsSelector } from './ResponsiveTable';\nimport { TResponsiveTableCell, TResponsiveTableColumn } from './types';\nimport { AdditionalColumnDefaultRenderer } from './renderers/AdditionalColumnDefaultRenderer';\nimport { SeparatorCell } from './SeparatorCell';\nimport { DefaultRowRenderer } from './renderers/DefaultRowRenderer';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\nimport {\n responsiveTableActions,\n responsiveTableStore,\n useResponsiveTable,\n} from './store';\nimport { useDomProps } from './store/selection/useDomProps';\nimport { StateCell } from './StateCell';\nimport { Cell } from './Cell';\nimport { getLabel } from '@apia/util';\n\ninterface IRow {\n rowIndex: number;\n}\n\ntype TAdditionalCell = {\n cell: TResponsiveTableCell;\n column: TResponsiveTableColumn;\n columnIndex: number;\n};\n\nconst NoMemoRow = ({ rowIndex }: IRow) => {\n const { name } = useResponsiveTableContext();\n\n const { columns, hasNonAdditionalFilters } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n columns: tableState?.columns ?? [],\n hasNonAdditionalFilters: tableState?.hasNonAdditionalFilters,\n };\n }, shallowEqual);\n const row = useResponsiveTable(\n (global) => global.responsiveTableSlice[name].rows[rowIndex],\n shallowEqual,\n );\n const additionalCells: TAdditionalCell[] = useResponsiveTable(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState.columns\n .map((current, index) =>\n current.showAsAdditional\n ? {\n index,\n column: current,\n }\n : null,\n )\n .filter(\n (\n current,\n ): current is {\n index: number;\n column: TResponsiveTableColumn;\n } => !!current,\n )\n .map((current) => {\n return {\n cell: tableState.rows[rowIndex]?.cells[current.index],\n column: current.column,\n columnIndex: current.index,\n };\n });\n },\n (currentValue, newValue) => {\n return currentValue.reduce<boolean>(\n (accumulatedBoolean, currentCell, cellIndex) => {\n return (\n accumulatedBoolean && shallowEqual(currentCell, newValue[cellIndex])\n );\n },\n true,\n );\n },\n );\n const { isDragging, isExpanded, shouldForbidSelection } = useResponsiveTable(\n (global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n isExpanded: tableState.expandedRows.includes(rowIndex),\n isDragging: tableState.draggingRow === rowIndex,\n shouldForbidSelection: tableState.rows[rowIndex]?.forbidSelection,\n };\n },\n shallowEqual,\n );\n\n const domProps = useDomProps(\n 'tr',\n {\n isThisRowExpanded: isExpanded,\n rowIndex,\n },\n domPropsSelector(name),\n );\n\n const expandedRowDomProps = useDomProps(\n 'tr',\n {\n isTheExpandedRow: true,\n rowIndex,\n },\n domPropsSelector(name),\n );\n\n const handleExpandedState = React.useCallback(\n (ev: boolean | React.MouseEvent) => {\n const willBeExpanded = typeof ev === 'boolean' ? ev : !isExpanded;\n if (!willBeExpanded)\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n expandedRows: responsiveTableStore\n .getState()\n .responsiveTableSlice[name].expandedRows.filter(\n (current) => current !== rowIndex,\n ),\n }),\n );\n else\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n expandedRows: [\n ...responsiveTableStore.getState().responsiveTableSlice[name]\n .expandedRows,\n rowIndex,\n ],\n }),\n );\n },\n [isExpanded, name, rowIndex],\n );\n\n const statesCount = useResponsiveTable((globalState) => {\n const state = globalState.responsiveTableSlice[name];\n return state?.statesColumns ?? 0;\n }, shallowEqual);\n\n const states = React.useMemo(\n () => (row.states ?? []).map((current) => ({ ...current, id: uniqueId() })),\n [row.states],\n );\n\n const { ref, ...additionalCellDomProps } = useDomProps(\n 'additionalTd',\n { rowIndex },\n domPropsSelector(name),\n );\n\n const Renderer = React.useMemo(\n () => row.renderer ?? DefaultRowRenderer,\n [row.renderer],\n );\n\n return (\n <>\n <Renderer\n {...domProps}\n row={row}\n rowIndex={rowIndex}\n className={`responsiveTable__row ${row.isHidden ? 'hidden' : ''} ${\n domProps['aria-selected'] ? 'selected' : ''\n } ${shouldForbidSelection ? 'non-selectable' : ''} ${states\n .map((current) => current.className)\n .join(' ')} ${row.className ?? ''} ${\n row.separator ? 'row__separator' : ''\n } ${isDragging ? 'draggingRow' : ''}`}\n onKeyDown={React.useCallback(\n (ev: React.KeyboardEvent) => {\n if (ev.key.toLowerCase() === 'arrowleft' && ev.ctrlKey) {\n ev.preventDefault();\n ev.stopPropagation();\n handleExpandedState(false);\n }\n if (ev.key.toLowerCase() === 'arrowright' && ev.ctrlKey) {\n ev.preventDefault();\n ev.stopPropagation();\n handleExpandedState(true);\n }\n },\n [handleExpandedState],\n )}\n >\n {row.separator ? (\n <SeparatorCell\n colSpan={\n (additionalCells.length > 0 || hasNonAdditionalFilters ? 1 : 0) +\n statesCount +\n columns.filter((current) => !current.showAsAdditional).length\n }\n rowIndex={rowIndex}\n />\n ) : (\n <>\n {(additionalCells.length > 0 || hasNonAdditionalFilters) && (\n <td className=\"additionalInfo__cell\" {...additionalCellDomProps}>\n {additionalCells.length > 0 && (\n <IconButton\n size={'Lg'}\n {...getVariant('icon-outline')}\n icon={\n isExpanded ? MdKeyboardArrowDown : MdKeyboardArrowRight\n }\n aria-label={\n isExpanded\n ? getLabel('lblCollapseRow').text\n : getLabel('lblExpandRow').text\n }\n className=\"moreInformationButton\"\n onClick={handleExpandedState}\n />\n )}\n </td>\n )}\n {Array(statesCount)\n .fill('')\n .map((_, i) => {\n return (\n <StateCell\n key={states[i]?.id ?? i}\n index={i}\n state={states[i]}\n rowIndex={rowIndex}\n />\n );\n })}\n {columns\n .map((current, actualColumnIndex) => ({\n ...current,\n actualColumnIndex,\n }))\n .filter((current) => !current.showAsAdditional)\n .map((current, inTableColumnIndex) => {\n if (current.hidden) return null;\n return (\n <Cell\n key={current.name}\n columnIndex={current.actualColumnIndex}\n rowIndex={rowIndex}\n inTableColumnIndex={inTableColumnIndex}\n />\n );\n })}\n </>\n )}\n </Renderer>\n {isExpanded && (\n <tr className=\"expandedRow\" {...expandedRowDomProps}>\n <td\n colSpan={\n columns.length - additionalCells.length + states.length + 1\n }\n >\n <Box className=\"responsiveTable__additionalInfoContainer\">\n {additionalCells.map((current) => {\n const { Renderer: ColumnRenderer } = current.column;\n if (ColumnRenderer)\n return (\n <ColumnRenderer\n key={current.column.name}\n cell={current.cell}\n column={current.column}\n row={row}\n />\n );\n return (\n <AdditionalColumnDefaultRenderer\n key={current.column.name}\n cell={current.cell}\n column={current.column}\n row={row}\n />\n );\n })}\n </Box>\n </td>\n </tr>\n )}\n </>\n );\n};\n\nexport const Row = React.memo(NoMemoRow);\n","import { Box } from '@apia/theme';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\n\nexport const NoRegistersRenderer = () => {\n const { labels } = useResponsiveTableContext();\n return <Box className=\"no__registers\">{labels.noRegisters}</Box>;\n};\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { Box } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { Header } from '../Header';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { Row } from '../Row';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport { useDomProps } from '../store/selection/useDomProps';\nimport { useResponsiveTable } from '../store';\n\nconst NoMemoTableRenderer = () => {\n const { name, label } = useResponsiveTableContext();\n const domProps = useDomProps(\n 'table',\n {},\n (global) => global.responsiveTableSlice[name],\n );\n\n const rows = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return (tableState?.rows ?? []).map((current) => current.id);\n }, shallowEqual);\n\n const { columnsCount, rowsCount } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n rowsCount: tableState?.rows.length ?? 0,\n columnsCount:\n (tableState?.nonAdditionalColumnsCount ?? 0) +\n (tableState?.hasNonAdditionalFilters ? 1 : 0) +\n (tableState?.statesColumns ?? 0) +\n (tableState?.columns.find((current) => current.showAsAdditional)\n ? 1\n : 0),\n };\n }, shallowEqual);\n\n return (\n <Box\n {...domProps}\n as=\"table\"\n className=\"responsiveTable__table\"\n {...getVariant('layout.common.tables.primary')}\n aria-label={label}\n >\n <Header />\n <tbody>\n {rowsCount > 0 ? (\n rows.map((row, index) => {\n return (\n <Row key={row ?? `${row as string}-${index}`} rowIndex={index} />\n );\n })\n ) : (\n <tr>\n <td colSpan={columnsCount}>\n <NoRegistersRenderer />\n </td>\n </tr>\n )}\n </tbody>\n </Box>\n );\n};\n\nexport const TableRenderer = React.memo(NoMemoTableRenderer);\n","import { Box } from '@apia/theme';\nimport { FunctionComponent } from 'react';\nimport {\n TResponsiveTableCell,\n TResponsiveTableColumn,\n TResponsiveTableRow,\n} from '../types';\n\nexport type TAccordionCellRendererProps<CellProps = Record<string, unknown>> = {\n cell: TResponsiveTableCell<CellProps>;\n column: TResponsiveTableColumn;\n columnIndex: number;\n row: TResponsiveTableRow;\n rowIndex: number;\n};\n\nexport type TAccordionCellRenderer<CellProps = Record<string, unknown>> =\n FunctionComponent<TAccordionCellRendererProps<CellProps>>;\n\nconst NoMemoAccordionCell: TAccordionCellRenderer = ({ cell, column }) => {\n return (\n <Box\n key={column.name}\n className={`responsiveTable__accordionElement__column ${\n cell.className ?? ''\n }`}\n >\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" sx={{ color: cell.color, background: cell.background }}>\n {cell?.children}\n </Box>\n </Box>\n );\n};\n\nexport const AccordionCell = NoMemoAccordionCell;\n","import React, { memo, useMemo } from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { TResponsiveTableRow } from '../types';\nimport { AccordionCell } from './AccordionCell';\nimport {\n responsiveTableActions,\n responsiveTableStore,\n useResponsiveTable,\n} from '../store';\nimport { AccordionItem, IAccordionItemButton } from '@apia/components';\n\nexport interface IAccordionElement {\n row: TResponsiveTableRow;\n rowIndex: number;\n}\n\nconst NoMemoAccordionElement = ({ row, rowIndex }: IAccordionElement) => {\n const { name } = useResponsiveTableContext();\n\n const indexColumns = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.accordionIndexColumns;\n }, shallowEqual);\n const columns = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return tableState?.columns;\n }, shallowEqual);\n\n const title = React.useMemo(() => {\n if (row.title) return row.title;\n if (Array.isArray(indexColumns))\n return indexColumns\n .map(\n (current) =>\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n row.cells[current.index].title ||\n (row.cells[current.index].children as string),\n )\n .join(' | ');\n return row.cells[0].title ?? (row.cells[0].children as string);\n }, [indexColumns, row.cells, row.title]);\n const isSelected = useResponsiveTable((global) =>\n global.responsiveTableSlice[name].allowSelection !== false\n ? global.responsiveTableSlice[name].selectedRows.includes(rowIndex)\n : undefined,\n );\n const isFocused = useResponsiveTable(\n (global) => global.responsiveTableSlice[name].focusedRow === rowIndex,\n );\n const buttonProps = useMemo<IAccordionItemButton>(\n () => ({\n title,\n ariaLabel: title,\n label: title,\n checked: isSelected,\n onChange: (isChecked: boolean) => {\n const isMultiple =\n responsiveTableStore.getState().responsiveTableSlice[name].isMultiple;\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n selectedRows: isMultiple\n ? isChecked\n ? [\n ...responsiveTableStore.getState().responsiveTableSlice[\n name\n ].selectedRows,\n rowIndex,\n ]\n : responsiveTableStore\n .getState()\n .responsiveTableSlice[name].selectedRows.filter(\n (current) => current !== rowIndex,\n )\n : [rowIndex],\n }),\n );\n },\n tabIndex: isFocused ? 0 : -1,\n rightButtons: row.accordionButtonProps?.rightButtons,\n onUserPressEnter: row.accordionButtonProps?.onUserPressEnter,\n domButtonProps: {\n buttonSx: {\n '&.accordion__item__button .accordion__item__button__label': {\n color: row.color,\n },\n },\n },\n }),\n [\n isFocused,\n isSelected,\n name,\n row.accordionButtonProps?.onUserPressEnter,\n row.accordionButtonProps?.rightButtons,\n row.color,\n rowIndex,\n title,\n ],\n );\n\n if (!Array.isArray(indexColumns) || !columns) return null;\n\n return (\n <AccordionItem id={row.id} buttonProps={buttonProps}>\n {columns.map((currentColumn, columnIndex) => {\n const Renderer =\n row.cells[columnIndex].AccordionRenderer ??\n currentColumn.AccordionRenderer ??\n AccordionCell;\n\n return currentColumn.hideFromAccordion ||\n currentColumn.showAsAdditional ? null : (\n <Renderer\n cell={row.cells[columnIndex]}\n column={currentColumn}\n columnIndex={columnIndex}\n key={currentColumn.name}\n row={row}\n rowIndex={rowIndex}\n />\n );\n })}\n\n {columns\n .filter((current) => !!current.showAsAdditional)\n .map((currentColumn, columnIndex) => {\n const Renderer =\n row.cells[columnIndex].AccordionRenderer ??\n currentColumn.AccordionRenderer ??\n AccordionCell;\n\n return currentColumn.hideFromAccordion ? null : (\n <Renderer\n cell={row.cells[columnIndex]}\n column={currentColumn}\n columnIndex={columnIndex}\n key={currentColumn.name}\n row={row}\n rowIndex={rowIndex}\n />\n );\n })}\n </AccordionItem>\n );\n};\n\nexport const AccordionElement = memo(NoMemoAccordionElement);\n","import React from 'react';\nimport { shallowEqual } from 'react-redux';\nimport { useResponsiveTableContext } from '../ResponsiveTableContext';\nimport { TResponsiveTableColumn } from '../types';\nimport { AccordionElement } from './AccordionElement';\nimport { NoRegistersRenderer } from './NoRegistersRenderer';\nimport {\n responsiveTableActions,\n useResponsiveTable,\n responsiveTableStore,\n} from '../store';\nimport { TResponsiveTableIndexColumns } from '../store/types';\nimport { Accordion } from '@apia/components';\n\nconst NoMemoAccordionRenderer = () => {\n const { name } = useResponsiveTableContext();\n\n const { columns, rows } = useResponsiveTable((global) => {\n const tableState = global.responsiveTableSlice[name];\n return {\n columns: tableState?.columns,\n rows: tableState?.rows,\n };\n }, shallowEqual);\n\n React.useEffect(() => {\n /**\n * Método para seleccionar qué columnas se utilizarán\n * como cabezal en cada fila.\n *\n * - Si existe al menos una columna marcada con showInAccordionTitle,\n * todas las columnas que estén marcadas con esta propiedad serán\n * mostradas como parte del título.\n *\n * - Si no existe ninguna, se busca cuál es la primera columna\n * que no tiene ninguna entrada vacía y se utiliza como título\n * del acordión.\n *\n * - Si ninguna columna no tiene ninguna fila vacía, entonces se\n * utiliza la primera columna.\n */\n\n if (columns && rows) {\n /**\n * Buscar columnas marcadas\n */\n const markedAsTitleColumns: TResponsiveTableIndexColumns = [];\n columns.forEach((column, index) => {\n if (column.showInAccordionTitle)\n markedAsTitleColumns.push({ column, index });\n });\n if (markedAsTitleColumns.length > 0) {\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n accordionIndexColumns: markedAsTitleColumns,\n }),\n );\n } else {\n /**\n * No se encontró ninguna columna marcada, se busca la primera sin\n * entradas vacías.\n */\n const columnsLength = columns.length;\n let indexColumn: TResponsiveTableColumn | null = null;\n let currentIndex = 0;\n\n while (!indexColumn && currentIndex < columns.length) {\n let isAnyEmptyRow = false;\n // eslint-disable-next-line no-restricted-syntax\n for (const row of rows) {\n if (!row.cells[currentIndex].children) {\n isAnyEmptyRow = true;\n break;\n }\n }\n if (!isAnyEmptyRow && columns[currentIndex]) {\n indexColumn = columns[currentIndex];\n } else {\n currentIndex += 1;\n if (currentIndex === columnsLength) break;\n }\n }\n if (!indexColumn) {\n /**\n * No hay ninguna sin ninguna entrada vacía,\n * se usa la primera columna.\n */\n [indexColumn] = columns;\n currentIndex = 0;\n }\n responsiveTableStore.dispatch(\n responsiveTableActions.update({\n tableName: name,\n accordionIndexColumns: [\n { column: indexColumn, index: currentIndex },\n ],\n }),\n );\n }\n }\n }, [columns, name, rows]);\n\n return (\n <Accordion>\n {!rows || (rows.length === 0 && <NoRegistersRenderer />)}\n {rows?.map((current, rowIndex) => (\n <AccordionElement row={current} rowIndex={rowIndex} key={current.id} />\n ))}\n </Accordion>\n );\n};\n\nexport const AccordionRenderer = React.memo(NoMemoAccordionRenderer);\n","import React from 'react';\nimport { Box, BoxProps, useBreakpointIndex } from '@apia/theme';\nimport { getVariant } from '@apia/theme';\nimport { KeyHandler } from './KeyHandler';\nimport { TableRenderer } from './renderers/TableRenderer';\nimport { AccordionRenderer } from './renderers/AccordionRenderer';\nimport { TUseDomProps } from './store/selection/types';\nimport { responsiveTableStore } from './store';\nimport { useResponsiveTableContext } from './ResponsiveTableContext';\n\ntype TResponsiveTable = BoxProps;\n\n/**\n * Este objeto determina qué partes de la tabla deben\n * ser 'debugueadas'. Sobre todo para conocer el\n * impacto en el performance de la misma.\n */\nexport const rtDebug = {\n cell: false,\n context: false,\n filterCell: false,\n filters: {\n additional: false,\n grouped: false,\n inner: false,\n responsive: false,\n sort: false,\n },\n header: false,\n headerCell: false,\n index: false,\n keyHandler: false,\n row: false,\n tableRenderer: false,\n};\n\nexport const domPropsSelector: (name: string) => TUseDomProps =\n (name: string) =>\n (global: ReturnType<typeof responsiveTableStore.getState>) =>\n global.responsiveTableSlice[name];\n\n/**\n * El ResponsiveTable renderiza una tabla en base a la\n * información provista por ResponsiveTableContext, quien\n * debe ser ancestro de este elemento. La finalidad última\n * de este componente es lograr responsividad y performance.\n *\n * Las props pasadas sarán colocadas directamente en el\n * wrapper de la tabla. Con esta estructura se busca que\n * a la hora de dar estilos a este componente, se pueda pasar\n * un variant al Wrapper, sin afectar los estilos por defecto\n * de la tabla ni del acordión en modo responsivo. Esto no limita\n * en ningún concepto la posibilidad de cambiar el variant a\n * la tabla o al acordión, ya que eso puede hacerse desde un\n * variante personalizado con la estructura mostrada en el\n * ejemplo.\n *\n * Además, de esta manera es posible aplicar estilo a algunos\n * componentes nada más, sin la necesidad de cambiar el layout\n * que usa la tabla por defecto. Por ejemplo, con esta estructura\n * se puede utilizar un variant personalizado para definir\n * el ancho de las columnas de la tabla.\n *\n * @example\n * 'customVariant': {\n * '.responsiveTable__accordion': {\n * variant: 'layout.tables.otherAccordion'\n * }\n * '.responsiveTable__table': {\n * variant: 'layout.tables.otherTable'\n * }\n * }\n */\nconst NoMemoResponsiveTable = React.forwardRef<\n HTMLDivElement,\n TResponsiveTable\n>(({ className, ...props }, ref) => {\n const breakpoint = useBreakpointIndex({ defaultIndex: 3 });\n const { currentBreakPoint } = useResponsiveTableContext();\n\n const actualBreakpoint = currentBreakPoint ?? breakpoint;\n\n return (\n <Box\n {...props}\n {...getVariant('layout.common.tables.responsive')}\n className={`responsiveTable__wrapper ${className ?? ''}`}\n ref={ref}\n >\n {actualBreakpoint >= 3 ? (\n <KeyHandler>\n <TableRenderer />\n </KeyHandler>\n ) : (\n <AccordionRenderer />\n )}\n </Box>\n );\n});\n\nNoMemoResponsiveTable.displayName = 'ResponsiveTable';\n\nexport const ResponsiveTable = React.memo(NoMemoResponsiveTable);\n","import React from 'react';\nimport { Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TResponsiveTableCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoDocNameCellRenderer: TResponsiveTableCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLTableCellElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n >\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </td>\n ),\n );\n\nNoMemoDocNameCellRenderer.displayName = 'DocNameCellRenderer';\n\nexport const DocNameCellRenderer = NoMemoDocNameCellRenderer;\n","import React from 'react';\nimport { Box, Link } from '@apia/theme';\nimport { downloadUrl } from '@apia/util';\nimport { Icon } from '@apia/icons';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\n\nexport type TDocNameCellRendererProps = {\n docName: string;\n docUrl: string;\n};\n\nexport type TDocNameCellRenderer =\n TAccordionCellRendererProps<TDocNameCellRendererProps>;\n\nconst NoMemoAccordionDocNameCellRenderer: TAccordionCellRenderer<TDocNameCellRendererProps> =\n React.forwardRef<HTMLElement, TDocNameCellRenderer>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n },\n currentRef,\n ) => (\n <Box ref={currentRef as React.RefObject<HTMLElement>} {...cell}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Link\n className=\"cell__download__document\"\n title={rendererProps?.docName}\n href={rendererProps?.docUrl}\n onClick={(ev) => {\n ev.preventDefault();\n if (rendererProps?.docUrl) void downloadUrl(rendererProps?.docUrl);\n }}\n >\n <Icon title=\"\" name=\"Download\" />\n {rendererProps?.docName}\n </Link>\n </Box>\n ),\n );\n\nNoMemoAccordionDocNameCellRenderer.displayName = 'AccordionDocNameCellRenderer';\n\nexport const AccordionDocNameCellRenderer = NoMemoAccordionDocNameCellRenderer;\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport { TResponsiveTableCellRendererProps } from '../types';\nimport { TAccordionCellRenderer } from './AccordionCell';\n\nconst NoMemoAccordionHTMLCellRenderer: TAccordionCellRenderer<{\n html: string;\n}> = React.forwardRef<\n HTMLSpanElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n>(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n /**\n * Aca falta el title de la columna\n */\n <Box\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n className=\"accordion__cell__renderer\"\n dangerouslySetInnerHTML={{\n __html: String(rendererProps?.html ?? children ?? '').replaceAll(\n /<TOK(\\d+)/g,\n '&lt;TOK$1',\n ),\n }}\n as=\"span\"\n />\n ),\n);\n\nNoMemoAccordionHTMLCellRenderer.displayName = 'AccordionHTMLCellRenderer';\n\nexport const AccordionHTMLCellRenderer = NoMemoAccordionHTMLCellRenderer;\n","import React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nconst NoMemoHTMLCellRenderer: TResponsiveTableCellRenderer<{ html: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ html: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => (\n <td\n ref={currentRef as React.RefObject<HTMLTableCellElement>}\n {...props}\n {...cell}\n dangerouslySetInnerHTML={{\n __html: String(rendererProps?.html ?? children ?? '').replaceAll(\n /<TOK(\\d+)/g,\n '&lt;TOK$1',\n ),\n }}\n />\n ),\n );\n\nNoMemoHTMLCellRenderer.displayName = 'HTMLCellRenderer';\n\nexport const HTMLCellRenderer = NoMemoHTMLCellRenderer;\n","import { Box, Spinner } from '@apia/theme';\n\nexport const IsLoadingRenderer = () => {\n return (\n <Box className=\"responsiveTable__isLoading\">\n <Spinner />\n </Box>\n );\n};\n","import { forwardRef, useCallback, useState } from 'react';\nimport { Box } from '@apia/theme';\nimport { IconButton } from '@apia/components';\nimport { arrayOrArray } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAccordionAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n }[]\n | null\n >(null);\n const loadMore = useCallback(async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n }, [row]);\n\n return (\n <>\n {moreInfo ? (\n <>\n <IconButton icon=\"Minus\" onClick={() => setMoreInfo(null)} />\n {arrayOrArray(moreInfo).map(\n (dataCell: { label?: string; name: string }) => {\n return (\n <Box key={dataCell.name} ref={ref} as=\"div\">\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </Box>\n );\n },\n )}\n </>\n ) : (\n <IconButton icon=\"Plus\" onClick={() => void loadMore()} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAccordionAsyncRenderer';\n\n return InnerRender;\n}\n","import { uniqueId } from 'lodash-es';\nimport { forwardRef, useState } from 'react';\nimport { Box, Spinner } from '@apia/theme';\nimport { arrayOrArray, useMount } from '@apia/util';\nimport {\n TResponsiveTableRow,\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function makeAsyncRenderer(\n additionalInfoGetter: (row: TResponsiveTableRow) => Promise<\n {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n >,\n) {\n const InnerRender: TResponsiveTableCellRenderer = forwardRef<\n HTMLElement,\n TResponsiveTableCellRendererProps\n >(({ row }, ref) => {\n const [moreInfo, setMoreInfo] = useState<\n | {\n label?: string;\n name: string;\n newline?: boolean;\n }[]\n | null\n >(null);\n useMount(() => {\n void (async () => {\n const result = await additionalInfoGetter(row);\n setMoreInfo(result);\n })();\n });\n\n return (\n <>\n {moreInfo ? (\n arrayOrArray(moreInfo).map((dataCell) => {\n return (\n <Box\n key={`${dataCell.name}-${uniqueId()}`}\n ref={ref}\n className={`responsiveTable__additionalInfoItem ${\n dataCell.newline ? 'separator' : ''\n }`}\n >\n {dataCell.newline ? (\n <>\n <Box sx={{ height: '20px' }} as=\"strong\">\n {dataCell.name}:\n </Box>{' '}\n {dataCell.label}\n </>\n ) : (\n <>\n <Box as=\"strong\">{dataCell.name}:</Box> {dataCell.label}\n </>\n )}\n </Box>\n );\n })\n ) : (\n <Spinner size={15} />\n )}\n </>\n );\n });\n\n InnerRender.displayName = 'MakeAsyncRenderer';\n\n return InnerRender;\n}\n","import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getPriorityHandler(priority: string | undefined) {\n let prio;\n if (priority?.includes('priority0')) prio = 'priorityNone';\n if (priority?.includes('priority1')) prio = 'priorityLow';\n if (priority?.includes('priority2')) prio = 'priorityNormal';\n if (priority?.includes('priority3')) prio = 'priorityHigh';\n if (priority?.includes('priority4')) prio = 'priorityUrgent';\n return prio;\n}\nconst NoMemoPriorityRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskPriorityColor = getPriorityHandler(rendererProps?.src);\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </td>\n );\n },\n );\nNoMemoPriorityRenderer.displayName = 'PriorityRenderer';\nexport const PriorityRenderer = NoMemoPriorityRenderer;\n","import { FaSquare } from '@meronex/icons/fa';\nimport React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getPriorityHandler } from './PriorityRenderer';\n\nconst NoMemoPriorityAccordionRenderer: TAccordionCellRenderer =\n React.forwardRef<HTMLTableCellElement, TAccordionCellRendererProps>(\n ({ cell, column }, currentRef) => {\n const taskPriorityColor = getPriorityHandler(\n cell.rendererProps?.src as string,\n );\n const title = column.label ?? column.name;\n return (\n <Box ref={currentRef} className=\"priority_container\">\n {title && <Box as=\"strong\">{column.label ?? column.name}: </Box>}\n <Box\n as=\"span\"\n className=\"priority\"\n sx={{\n color: taskPriorityColor,\n }}\n >\n <FaSquare />\n </Box>\n </Box>\n );\n },\n );\n\nNoMemoPriorityAccordionRenderer.displayName = 'PriorityAccordionRenderer';\n\nexport const PriorityAccordionRenderer = NoMemoPriorityAccordionRenderer;\n","import dayjs from 'dayjs';\nimport React from 'react';\nimport { TDateFormat, getDateFormat } from '@apia/util';\nimport {\n TResponsiveTableCellRenderer,\n TResponsiveTableCellRendererProps,\n} from '../types';\n\nexport function getStatusRendererClassName(\n cellValue: string,\n columnName: string,\n) {\n if (cellValue === undefined) return '';\n\n const cellValueDate = cellValue.split(' ')[0];\n const cellValueHour = cellValue.split(' ')[1] ?? '00:00:00';\n\n const dateFormat: TDateFormat = getDateFormat();\n const currentDate = dayjs();\n const currentHour = Number(dayjs().format('HHmm'));\n const queriedDate = dayjs(cellValueDate, dateFormat);\n const queriedHour = Number(dayjs(cellValueHour, dateFormat));\n let statusClassName = '';\n\n if (currentDate >= queriedDate) {\n statusClassName = columnName;\n }\n if (!queriedHour) return statusClassName;\n\n if (currentDate <= queriedDate && currentHour < queriedHour) {\n statusClassName = columnName;\n }\n return statusClassName;\n}\n\nconst NoMemoStatusRenderer: TResponsiveTableCellRenderer<{ src: string }> =\n React.forwardRef<\n HTMLTableCellElement,\n TResponsiveTableCellRendererProps<{ src: string }>\n >(\n (\n {\n cell: { children, Renderer, rendererProps, AccordionRenderer, ...cell },\n column,\n row,\n ...props\n },\n currentRef,\n ) => {\n const taskStatusClassName = getStatusRendererClassName(\n children as string,\n column.name,\n );\n\n return (\n <td\n {...props}\n {...cell}\n ref={currentRef}\n className={taskStatusClassName}\n >\n {children}\n </td>\n );\n },\n );\n\nNoMemoStatusRenderer.displayName = 'StatusRenderer';\n\nexport const StatusRenderer = NoMemoStatusRenderer;\n","import React from 'react';\nimport { Box } from '@apia/theme';\nimport {\n TAccordionCellRenderer,\n TAccordionCellRendererProps,\n} from './AccordionCell';\nimport { getStatusRendererClassName } from './StatusRenderer';\n\nconst NoMemoStatusAccordionRenderer: TAccordionCellRenderer = React.forwardRef<\n HTMLTableCellElement,\n TAccordionCellRendererProps\n>(({ cell, column }, currentRef) => {\n const taskStatusClassName = getStatusRendererClassName(\n cell.children as string,\n column.name,\n );\n\n return (\n <Box ref={currentRef}>\n <Box as=\"strong\">{column.label ?? column.name}: </Box>\n <Box as=\"span\" className={taskStatusClassName}>\n {cell.children}\n </Box>\n </Box>\n );\n});\n\nNoMemoStatusAccordionRenderer.displayName = 'StatusAccordionRenderer';\n\nexport const StatusAccordionRenderer = NoMemoStatusAccordionRenderer;\n"],"names":["getInitialState","__objRest","__spreadValues","_a","_b","__spreadProps","selectionGetInitialState","_c","useUpdateEffect","shallowEqual","__async","useMount"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,15 @@
1
+ import { FunctionComponent } from 'react';
2
+ import { TResponsiveTableCell, TResponsiveTableColumn, TResponsiveTableRow } from '../types.js';
3
+
4
+ type TAccordionCellRendererProps<CellProps = Record<string, unknown>> = {
5
+ cell: TResponsiveTableCell<CellProps>;
6
+ column: TResponsiveTableColumn;
7
+ columnIndex: number;
8
+ row: TResponsiveTableRow;
9
+ rowIndex: number;
10
+ };
11
+ type TAccordionCellRenderer<CellProps = Record<string, unknown>> = FunctionComponent<TAccordionCellRendererProps<CellProps>>;
12
+ declare const AccordionCell: TAccordionCellRenderer<Record<string, unknown>>;
13
+
14
+ export { AccordionCell, type TAccordionCellRenderer, type TAccordionCellRendererProps };
15
+ //# sourceMappingURL=AccordionCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AccordionCell.d.ts","sources":[],"sourcesContent":[],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { jsxs, jsx } from '@apia/theme/jsx-runtime';
2
+ import { Box } from '@apia/theme';
3
+
4
+ const NoMemoAccordionCell = ({ cell, column }) => {
5
+ return /* @__PURE__ */ jsxs(
6
+ Box,
7
+ {
8
+ className: `responsiveTable__accordionElement__column ${cell.className ?? ""}`,
9
+ children: [
10
+ /* @__PURE__ */ jsxs(Box, { as: "strong", children: [
11
+ column.label ?? column.name,
12
+ ": "
13
+ ] }),
14
+ /* @__PURE__ */ jsx(Box, { as: "span", sx: { color: cell.color, background: cell.background }, children: cell?.children })
15
+ ]
16
+ },
17
+ column.name
18
+ );
19
+ };
20
+ const AccordionCell = NoMemoAccordionCell;
21
+
22
+ export { AccordionCell };
23
+ //# sourceMappingURL=AccordionCell.js.map