@alfalab/core-components-table 2.7.4 → 2.8.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 (74) hide show
  1. package/component.d.ts +12 -1
  2. package/components/pagination/Component.js +1 -1
  3. package/components/pagination/index.css +9 -9
  4. package/components/pagination/select-field/index.css +4 -4
  5. package/components/pagination/select-field/index.js +1 -1
  6. package/components/table/Component.js +1 -1
  7. package/components/table/index.css +7 -7
  8. package/components/tbody/Component.js +1 -1
  9. package/components/tbody/index.css +2 -2
  10. package/components/tcell/Component.js +1 -1
  11. package/components/tcell/index.css +6 -6
  12. package/components/texpandable-row/Component.d.ts +12 -1
  13. package/components/texpandable-row/Component.js +5 -4
  14. package/components/texpandable-row/index.css +5 -5
  15. package/components/thead/Component.js +1 -1
  16. package/components/thead/index.css +6 -6
  17. package/components/thead-cell/Component.js +1 -1
  18. package/components/thead-cell/index.css +9 -9
  19. package/components/trow/Component.js +1 -1
  20. package/components/trow/index.css +8 -8
  21. package/components/tsortable-head-cell/Component.js +1 -1
  22. package/components/tsortable-head-cell/index.css +8 -8
  23. package/cssm/component.d.ts +12 -1
  24. package/cssm/components/texpandable-row/Component.d.ts +12 -1
  25. package/cssm/components/texpandable-row/Component.js +4 -3
  26. package/esm/component.d.ts +12 -1
  27. package/esm/components/pagination/Component.js +1 -1
  28. package/esm/components/pagination/index.css +9 -9
  29. package/esm/components/pagination/select-field/index.css +4 -4
  30. package/esm/components/pagination/select-field/index.js +1 -1
  31. package/esm/components/table/Component.js +1 -1
  32. package/esm/components/table/index.css +7 -7
  33. package/esm/components/tbody/Component.js +1 -1
  34. package/esm/components/tbody/index.css +2 -2
  35. package/esm/components/tcell/Component.js +1 -1
  36. package/esm/components/tcell/index.css +6 -6
  37. package/esm/components/texpandable-row/Component.d.ts +12 -1
  38. package/esm/components/texpandable-row/Component.js +6 -5
  39. package/esm/components/texpandable-row/index.css +5 -5
  40. package/esm/components/thead/Component.js +1 -1
  41. package/esm/components/thead/index.css +6 -6
  42. package/esm/components/thead-cell/Component.js +1 -1
  43. package/esm/components/thead-cell/index.css +9 -9
  44. package/esm/components/trow/Component.js +1 -1
  45. package/esm/components/trow/index.css +8 -8
  46. package/esm/components/tsortable-head-cell/Component.js +1 -1
  47. package/esm/components/tsortable-head-cell/index.css +8 -8
  48. package/modern/component.d.ts +12 -1
  49. package/modern/components/pagination/Component.js +1 -1
  50. package/modern/components/pagination/index.css +9 -9
  51. package/modern/components/pagination/select-field/index.css +4 -4
  52. package/modern/components/pagination/select-field/index.js +1 -1
  53. package/modern/components/table/Component.js +1 -1
  54. package/modern/components/table/index.css +7 -7
  55. package/modern/components/tbody/Component.js +1 -1
  56. package/modern/components/tbody/index.css +2 -2
  57. package/modern/components/tcell/Component.js +1 -1
  58. package/modern/components/tcell/index.css +6 -6
  59. package/modern/components/texpandable-row/Component.d.ts +12 -1
  60. package/modern/components/texpandable-row/Component.js +6 -5
  61. package/modern/components/texpandable-row/index.css +5 -5
  62. package/modern/components/thead/Component.js +1 -1
  63. package/modern/components/thead/index.css +6 -6
  64. package/modern/components/thead-cell/Component.js +1 -1
  65. package/modern/components/thead-cell/index.css +9 -9
  66. package/modern/components/trow/Component.js +1 -1
  67. package/modern/components/trow/index.css +8 -8
  68. package/modern/components/tsortable-head-cell/Component.js +1 -1
  69. package/modern/components/tsortable-head-cell/index.css +8 -8
  70. package/moderncssm/component.d.ts +12 -1
  71. package/moderncssm/components/texpandable-row/Component.d.ts +12 -1
  72. package/moderncssm/components/texpandable-row/Component.js +5 -4
  73. package/package.json +6 -6
  74. package/src/components/texpandable-row/Component.tsx +49 -42
@@ -1,4 +1,4 @@
1
- import React, { ReactNode, useState } from 'react';
1
+ import React, { forwardRef, ReactNode, useState } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { TRow, TRowProps } from '../trow';
@@ -15,44 +15,51 @@ export type TExpandableRowProps = TRowProps & {
15
15
  renderContent: (expanded: boolean) => ReactNode;
16
16
  };
17
17
 
18
- export const TExpandableRow = ({
19
- className,
20
- selected,
21
- expanded,
22
- defaultExpanded = false,
23
- onToggle = () => null,
24
- renderContent = () => null,
25
- ...restProps
26
- }: TExpandableRowProps) => {
27
- const [expandedState, setExpandedState] = useState<boolean>(defaultExpanded);
28
-
29
- const uncontrolled = expanded === undefined;
30
-
31
- const isExpanded = (uncontrolled ? expandedState : expanded) as boolean;
32
-
33
- const handleToggle = () => {
34
- if (uncontrolled) {
35
- setExpandedState(!isExpanded);
36
- }
37
-
38
- onToggle(isExpanded);
39
- };
40
-
41
- return (
42
- <React.Fragment>
43
- <TRow
44
- className={cn(styles.row, className, {
45
- [styles.selected]: selected,
46
- [styles.expanded]: isExpanded,
47
- })}
48
- selected={selected}
49
- onClick={handleToggle}
50
- {...restProps}
51
- />
52
-
53
- <tr className={cn(styles.expandable, { [styles.expanded]: isExpanded })}>
54
- {renderContent(isExpanded)}
55
- </tr>
56
- </React.Fragment>
57
- );
58
- };
18
+ export const TExpandableRow = forwardRef<HTMLTableRowElement, TExpandableRowProps>(
19
+ (
20
+ {
21
+ className,
22
+ selected,
23
+ expanded,
24
+ defaultExpanded = false,
25
+ onToggle = () => null,
26
+ renderContent = () => null,
27
+ ...restProps
28
+ }: TExpandableRowProps,
29
+ ref,
30
+ ) => {
31
+ const [expandedState, setExpandedState] = useState<boolean>(defaultExpanded);
32
+
33
+ const uncontrolled = expanded === undefined;
34
+
35
+ const isExpanded = (uncontrolled ? expandedState : expanded) as boolean;
36
+
37
+ const handleToggle = () => {
38
+ if (uncontrolled) {
39
+ setExpandedState(!isExpanded);
40
+ }
41
+
42
+ onToggle(isExpanded);
43
+ };
44
+
45
+ return (
46
+ <React.Fragment>
47
+ <TRow
48
+ className={cn(styles.row, className, {
49
+ [styles.selected]: selected,
50
+ [styles.expanded]: isExpanded,
51
+ })}
52
+ selected={selected}
53
+ onClick={handleToggle}
54
+ {...restProps}
55
+ />
56
+
57
+ <tr ref={ref} className={cn(styles.expandable, { [styles.expanded]: isExpanded })}>
58
+ {renderContent(isExpanded)}
59
+ </tr>
60
+ </React.Fragment>
61
+ );
62
+ },
63
+ );
64
+
65
+ TExpandableRow.displayName = 'TExpandableRow';