jattac.libs.web.responsive-table 0.15.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/UI/DesktopView.d.ts +2 -0
- package/dist/UI/MobileView.d.ts +2 -0
- package/dist/UI/ResponsiveTable.d.ts +5 -0
- package/dist/UI/TableBodyRow.d.ts +2 -0
- package/dist/index.es.js +21 -36
- package/dist/index.es.js.map +1 -1
- package/dist/index.js +21 -36
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/UI/DesktopView.d.ts
CHANGED
|
@@ -10,6 +10,8 @@ interface DesktopViewProps {
|
|
|
10
10
|
}[];
|
|
11
11
|
renderPluginFooters: () => React.ReactNode;
|
|
12
12
|
onScroll?: (e: React.UIEvent<HTMLDivElement>) => void;
|
|
13
|
+
expandedIds: Set<string | number>;
|
|
14
|
+
toggleExpanded: (id: string | number) => void;
|
|
13
15
|
}
|
|
14
16
|
declare function DesktopView<TData>(props: DesktopViewProps): React.JSX.Element;
|
|
15
17
|
export default DesktopView;
|
package/dist/UI/MobileView.d.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
interface MobileViewProps {
|
|
3
3
|
mobileFooter: React.ReactNode;
|
|
4
|
+
expandedIds: Set<string | number>;
|
|
5
|
+
toggleExpanded: (id: string | number) => void;
|
|
4
6
|
}
|
|
5
7
|
declare function MobileView<TData>(props: MobileViewProps): React.JSX.Element;
|
|
6
8
|
export default MobileView;
|
|
@@ -9,6 +9,9 @@ export interface ResponsiveTableHandle<TData> {
|
|
|
9
9
|
loadNextPage: () => Promise<void>;
|
|
10
10
|
resetAndFetch: () => Promise<void>;
|
|
11
11
|
getState: () => DataSourceState<TData>;
|
|
12
|
+
expandRows(...ids: (string | number)[]): void;
|
|
13
|
+
collapseRows(...ids: (string | number)[]): void;
|
|
14
|
+
toggleRows(...ids: (string | number)[]): void;
|
|
12
15
|
}
|
|
13
16
|
interface ISortProps {
|
|
14
17
|
initialSortColumn?: string;
|
|
@@ -91,6 +94,8 @@ interface IProps<TData> {
|
|
|
91
94
|
expandRowRenderer?: (row: TData, rowIndex: number) => React.ReactNode;
|
|
92
95
|
/** Custom CSS class applied to the expand/collapse chevron icon span. Use to override color, size, or add custom styling. */
|
|
93
96
|
expandChevronClassName?: string;
|
|
97
|
+
/** Row IDs to expand on initial render. Passed once at mount; does not sync after mount. */
|
|
98
|
+
defaultExpandedIds?: (string | number)[];
|
|
94
99
|
}
|
|
95
100
|
declare const ResponsiveTable: <TData>(props: IProps<TData> & {
|
|
96
101
|
ref?: React.Ref<ResponsiveTableHandle<TData>>;
|
|
@@ -32,6 +32,8 @@ interface TableBodyRowProps<TData> {
|
|
|
32
32
|
isLoading?: boolean;
|
|
33
33
|
animateOnLoad?: boolean;
|
|
34
34
|
};
|
|
35
|
+
/** If true, row has expandable content (adds visual affordance) */
|
|
36
|
+
isExpandable?: boolean;
|
|
35
37
|
/** Optional expand chevron cell rendered as the first column */
|
|
36
38
|
expandCell?: React.ReactNode;
|
|
37
39
|
/** Mouse enter handler for hover tracking */
|
package/dist/index.es.js
CHANGED
|
@@ -29,8 +29,8 @@ function styleInject(css, ref) {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
var css_248z = ".ResponsiveTable-module_responsiveTable__4y-Od{--table-border-color:#e0e0e0;--table-header-bg:#f8f9fa;--table-row-hover-bg:#f1f3f5;--table-row-stripe-bg:#fafbfc;--card-bg:#fff;--card-border-color:#d1d5db;--card-shadow:0 2px 8px rgba(0,0,0,.06);--text-color:#212529;--text-color-muted:#6c757d;--interactive-color:#0056b3;--primary-color:#007bff;--rt-mobile-card-shadow:0 1px 2px rgba(0,0,0,.04),0 4px 12px rgba(0,0,0,.06),0 12px 32px rgba(0,0,0,.04);--rt-mobile-card-radius:16px;--rt-mobile-bg-wash:#f1f5f9;--rt-mobile-label-color:#475569;--rt-mobile-value-color:#1e293b}.ResponsiveTable-module_tableContainer__VjWjH{border:1px solid var(--table-border-color);border-radius:8px;overflow-x:auto;width:100%}.ResponsiveTable-module_responsiveTable__4y-Od{background-color:var(--card-bg);border-collapse:collapse;color:var(--text-color);width:100%}.ResponsiveTable-module_responsiveTable__4y-Od thead th{background-color:var(--table-header-bg);border-bottom:2px solid var(--table-border-color);color:var(--text-color-muted);font-size:.75rem;font-weight:600;letter-spacing:.05em;padding:1rem;text-align:left;text-transform:uppercase;z-index:1}.ResponsiveTable-module_responsiveTable__4y-Od td{border-bottom:1px solid var(--table-border-color);font-size:.9rem;padding:1rem;text-align:left}.ResponsiveTable-module_responsiveTable__4y-Od tr:last-child td{border-bottom:none}.ResponsiveTable-module_responsiveTable__4y-Od tr:nth-child(2n){background-color:var(--table-row-stripe-bg)}.ResponsiveTable-module_responsiveTable__4y-Od tr:hover{background-color:var(--table-row-hover-bg)}.ResponsiveTable-module_cardContainer__Het4h{background-color:var(--rt-mobile-bg-wash);border-radius:var(--rt-mobile-card-radius);display:flex;flex-direction:column;gap:1.25rem;padding:1rem}.ResponsiveTable-module_card__b-U2v{background-color:var(--card-bg);border:1px solid var(--card-border-color);border-bottom:3px solid var(--primary-color);border-radius:var(--rt-mobile-card-radius);box-shadow:var(--rt-mobile-card-shadow);overflow:hidden;padding:1rem;transition:box-shadow .2s ease-in-out,transform .2s ease-in-out}.ResponsiveTable-module_card__b-U2v:hover{box-shadow:0 2px 4px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.08),0 16px 48px rgba(0,0,0,.06);transform:translateY(-4px)}.ResponsiveTable-module_card-header__Ttk51{border-bottom:1px solid var(--table-border-color);margin-bottom:1rem;padding-bottom:.5rem}.ResponsiveTable-module_card-row__qvIUJ{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin:0 0 .75rem}.ResponsiveTable-module_card-row__qvIUJ.ResponsiveTable-module_stacked__FSaTB{align-items:stretch;flex-direction:column;gap:.25rem;margin-bottom:1rem}.ResponsiveTable-module_card-row__qvIUJ:last-child{margin-bottom:0}.ResponsiveTable-module_card-label__v9L71{color:var(--rt-mobile-label-color);font-size:.75rem;font-weight:600;text-transform:uppercase;white-space:nowrap}.ResponsiveTable-module_card-value__BO-c-{color:var(--rt-mobile-value-color);font-size:.95rem;text-align:right}.ResponsiveTable-module_card-row__qvIUJ.ResponsiveTable-module_stacked__FSaTB .ResponsiveTable-module_card-value__BO-c-{text-align:left}.ResponsiveTable-module_numberValue__-TLR1{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;text-align:right!important}.ResponsiveTable-module_dateValue__UMvqJ{color:var(--text-color-muted);font-size:.85rem}.ResponsiveTable-module_imageValue__wVb-p img{border-radius:8px;height:auto;max-width:100%;object-fit:cover}.ResponsiveTable-module_inputValue__CrGMx{margin-top:.5rem;width:100%}.ResponsiveTable-module_inputValue__CrGMx button,.ResponsiveTable-module_inputValue__CrGMx input[type=text],.ResponsiveTable-module_inputValue__CrGMx select,.ResponsiveTable-module_inputValue__CrGMx textarea{min-height:44px;width:100%!important}.ResponsiveTable-module_clickableRow__0kjWm{cursor:pointer}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr{transition:background-color .12s ease}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr.ResponsiveTable-module_clickableRow__0kjWm:active{background-color:var(--table-row-active-bg,#dde3ea);transition:background-color .08s ease}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr.ResponsiveTable-module_clickableRow__0kjWm:focus-visible{outline:2px solid var(--primary-color,#3b82f6);outline-offset:-2px}.ResponsiveTable-module_card__b-U2v.ResponsiveTable-module_clickableRow__0kjWm:active{box-shadow:0 1px 3px rgba(0,0,0,.08);transform:translateY(-1px);transition:transform .08s ease,box-shadow .08s ease}.ResponsiveTable-module_card__b-U2v.ResponsiveTable-module_clickableRow__0kjWm:focus-visible{outline:2px solid var(--primary-color,#3b82f6);outline-offset:-2px}.ResponsiveTable-module_clickableHeader__xHQhF{cursor:pointer;transition:color .2s}.ResponsiveTable-module_clickableHeader__xHQhF:hover{color:var(--interactive-color)}.ResponsiveTable-module_sortable__yvA60{cursor:pointer}.ResponsiveTable-module_sorted-asc__jzOIa,.ResponsiveTable-module_sorted-desc__7WCFK{background-color:#f0f7ff!important;color:var(--interactive-color)!important}.ResponsiveTable-module_headerInnerWrapper__3VAhD{align-items:center;display:flex;justify-content:space-between;width:100%}.ResponsiveTable-module_headerContent__ODMzS{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ResponsiveTable-module_sortIcon__A9WtD{background-position:50%;background-repeat:no-repeat;background-size:contain;flex-shrink:0;height:1rem;margin-left:.5rem;opacity:.3;width:1rem}.ResponsiveTable-module_sortable__yvA60:hover .ResponsiveTable-module_sortIcon__A9WtD{opacity:.8}.ResponsiveTable-module_sortable__yvA60 .ResponsiveTable-module_sortIcon__A9WtD{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236c757d'%3E%3Cpath d='M10 18h4v-2h-4v2zm-6-8v2h16V8H4zm3-6h10v2H7V2z'/%3E%3C/svg%3E\")}.ResponsiveTable-module_sorted-asc__jzOIa .ResponsiveTable-module_sortIcon__A9WtD{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230056b3'%3E%3Cpath d='m7 14 5-5 5 5z'/%3E%3C/svg%3E\");opacity:1}.ResponsiveTable-module_sorted-desc__7WCFK .ResponsiveTable-module_sortIcon__A9WtD{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230056b3'%3E%3Cpath d='m7 10 5 5 5-5z'/%3E%3C/svg%3E\");opacity:1}.ResponsiveTable-module_responsiveTable__4y-Od tfoot{background-color:var(--table-header-bg);border-top:2px solid var(--table-border-color)}.ResponsiveTable-module_footerCell__8H-uG{font-size:.9rem;font-weight:600;padding:1rem;text-align:right}.ResponsiveTable-module_clickableFooterCell__WB9Ss{color:var(--interactive-color);cursor:pointer}.ResponsiveTable-module_clickableFooterCell__WB9Ss:hover{text-decoration:underline}.ResponsiveTable-module_footerCard__-NE2M{background-color:var(--table-header-bg);border:1px solid var(--card-border-color);border-radius:12px;margin-top:1rem;overflow:hidden;padding:1.25rem}.ResponsiveTable-module_footer-card-row__Vv6Ur{display:flex;font-size:.9rem;font-weight:600;justify-content:space-between;margin:0 0 .75rem}.ResponsiveTable-module_selectedRow__-JyNW{background-color:#e7f1ff!important;transition:background-color .15s ease}.ResponsiveTable-module_card__b-U2v.ResponsiveTable-module_selectedRow__-JyNW{background-color:#e7f1ff;border-left:4px solid var(--primary-color)}.ResponsiveTable-module_animatedRow__SFjrJ{animation:ResponsiveTable-module_cardEntrance__6JjRV .5s cubic-bezier(.2,.8,.2,1) forwards;opacity:0}@keyframes ResponsiveTable-module_cardEntrance__6JjRV{0%{opacity:0;transform:translateY(15px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ResponsiveTable-module_fadeInUp__jMCS7{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ResponsiveTable-module_skeleton__XxsXW{background-color:#f0f0f0;border-radius:4px;overflow:hidden;position:relative}.ResponsiveTable-module_skeleton__XxsXW:after{animation:ResponsiveTable-module_shimmer__H8PhC 1.5s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.6),transparent);content:\"\";height:100%;left:-150%;position:absolute;top:0;width:150%}@keyframes ResponsiveTable-module_shimmer__H8PhC{0%{transform:translateX(0)}to{transform:translateX(100%)}}.ResponsiveTable-module_noDataWrapper__Rj-k3{align-items:center;background-color:var(--table-header-bg);border:2px dashed var(--table-border-color);border-radius:12px;color:var(--text-color-muted);display:flex;flex-direction:column;gap:1rem;justify-content:center;padding:4rem 2rem}.ResponsiveTable-module_noData__IpwNq{font-size:1.1rem;font-weight:500}.ResponsiveTable-module_spinner__Pn-3D{animation:ResponsiveTable-module_spin__i3NHn .8s linear infinite;border:3px solid rgba(0,0,0,.1);border-left:3px solid var(--primary-color);border-radius:50%;height:24px;width:24px}@keyframes ResponsiveTable-module_spin__i3NHn{to{transform:rotate(1turn)}}.ResponsiveTable-module_infoContainer__b9IF5{align-items:center;color:var(--text-color-muted);display:flex;font-size:.85rem;gap:.5rem;justify-content:center;padding:1.5rem}.ResponsiveTable-module_stickyHeader__-jjN- th{box-shadow:0 2px 4px rgba(0,0,0,.05);position:sticky;top:0}.ResponsiveTable-module_internalStickyHeader__idiJY th{position:sticky;top:0}.ResponsiveTable-module_expandColumn__yvwN-{border-bottom:1px solid var(--table-border-color);min-width:3rem;padding:0!important;text-align:center;vertical-align:middle;width:3rem}.ResponsiveTable-module_expandChevron__7JalN{align-items:center;border-radius:.25rem;color:var(--primary-color,#3b82f6);cursor:pointer;display:inline-flex;font-size:2rem;height:2.5rem;justify-content:center;opacity:.55;transform:rotate(-90deg);transition:opacity .15s ease,transform .25s ease;user-select:none;width:2.5rem}.ResponsiveTable-module_expandChevron__7JalN:focus-visible{outline:2px solid var(--primary-color,#3b82f6);outline-offset:2px}@keyframes ResponsiveTable-module_chevronGreeting__nLVUh{0%{opacity:0;transform:rotate(-90deg) scale(.6)}12%{opacity:1;transform:rotate(-90deg) scale(1.3)}22%{opacity:.65;transform:rotate(-90deg) scale(1)}32%{opacity:1;transform:rotate(-90deg) scale(1.15)}45%{opacity:.55;transform:rotate(-90deg) scale(1)}to{opacity:.55;transform:rotate(-90deg) scale(1)}}.ResponsiveTable-module_expandChevronGreeting__hu51J{animation:ResponsiveTable-module_chevronGreeting__nLVUh 2.2s ease-out forwards;animation-delay:calc(var(--row-idx, 0)*60ms)}.ResponsiveTable-module_expandChevronHovered__aNVCU{opacity:.85}.ResponsiveTable-module_expandChevronExpanded__iQ1bV{opacity:1;transform:rotate(0deg)}.ResponsiveTable-module_responsiveTable__4y-Od td.ResponsiveTable-module_detailCell__hb9C5{border-top:none;padding:0;transition:border-left .2s ease}.ResponsiveTable-module_responsiveTable__4y-Od td.ResponsiveTable-module_detailCellHasContent__F-DX5{padding-bottom:.5rem}.ResponsiveTable-module_responsiveTable__4y-Od td.ResponsiveTable-module_detailCellExpanded__Zr6UF{background:rgba(0,0,0,.012);border-left:2px solid var(--primary-color,#3b82f6)}.ResponsiveTable-module_detailContentWrapper__VzM29{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.ResponsiveTable-module_detailContentWrapperExpanded__bkiUb{grid-template-rows:1fr}.ResponsiveTable-module_detailContentInner__GWVaq{min-height:0;overflow:hidden;padding-left:1.5rem}.ResponsiveTable-module_mobileDetailOuter__gusle{overflow:hidden}.ResponsiveTable-module_mobileExpandRow__Fb0AP{align-items:center;border-bottom:1px solid var(--table-border-color);display:flex;justify-content:flex-start;margin-bottom:.25rem;padding:0 0 .25rem}";
|
|
33
|
-
var styles = {"responsiveTable":"ResponsiveTable-module_responsiveTable__4y-Od","tableContainer":"ResponsiveTable-module_tableContainer__VjWjH","cardContainer":"ResponsiveTable-module_cardContainer__Het4h","card":"ResponsiveTable-module_card__b-U2v","card-header":"ResponsiveTable-module_card-header__Ttk51","card-row":"ResponsiveTable-module_card-row__qvIUJ","stacked":"ResponsiveTable-module_stacked__FSaTB","card-label":"ResponsiveTable-module_card-label__v9L71","card-value":"ResponsiveTable-module_card-value__BO-c-","numberValue":"ResponsiveTable-module_numberValue__-TLR1","dateValue":"ResponsiveTable-module_dateValue__UMvqJ","imageValue":"ResponsiveTable-module_imageValue__wVb-p","inputValue":"ResponsiveTable-module_inputValue__CrGMx","clickableRow":"ResponsiveTable-module_clickableRow__0kjWm","clickableHeader":"ResponsiveTable-module_clickableHeader__xHQhF","sortable":"ResponsiveTable-module_sortable__yvA60","sorted-asc":"ResponsiveTable-module_sorted-asc__jzOIa","sorted-desc":"ResponsiveTable-module_sorted-desc__7WCFK","headerInnerWrapper":"ResponsiveTable-module_headerInnerWrapper__3VAhD","headerContent":"ResponsiveTable-module_headerContent__ODMzS","sortIcon":"ResponsiveTable-module_sortIcon__A9WtD","footerCell":"ResponsiveTable-module_footerCell__8H-uG","clickableFooterCell":"ResponsiveTable-module_clickableFooterCell__WB9Ss","footerCard":"ResponsiveTable-module_footerCard__-NE2M","footer-card-row":"ResponsiveTable-module_footer-card-row__Vv6Ur","selectedRow":"ResponsiveTable-module_selectedRow__-JyNW","animatedRow":"ResponsiveTable-module_animatedRow__SFjrJ","cardEntrance":"ResponsiveTable-module_cardEntrance__6JjRV","skeleton":"ResponsiveTable-module_skeleton__XxsXW","shimmer":"ResponsiveTable-module_shimmer__H8PhC","noDataWrapper":"ResponsiveTable-module_noDataWrapper__Rj-k3","noData":"ResponsiveTable-module_noData__IpwNq","spinner":"ResponsiveTable-module_spinner__Pn-3D","spin":"ResponsiveTable-module_spin__i3NHn","infoContainer":"ResponsiveTable-module_infoContainer__b9IF5","stickyHeader":"ResponsiveTable-module_stickyHeader__-jjN-","internalStickyHeader":"ResponsiveTable-module_internalStickyHeader__idiJY","expandColumn":"ResponsiveTable-module_expandColumn__yvwN-","expandChevron":"ResponsiveTable-module_expandChevron__7JalN","expandChevronGreeting":"ResponsiveTable-module_expandChevronGreeting__hu51J","chevronGreeting":"ResponsiveTable-module_chevronGreeting__nLVUh","expandChevronHovered":"ResponsiveTable-module_expandChevronHovered__aNVCU","expandChevronExpanded":"ResponsiveTable-module_expandChevronExpanded__iQ1bV","detailCell":"ResponsiveTable-module_detailCell__hb9C5","detailCellHasContent":"ResponsiveTable-module_detailCellHasContent__F-DX5","detailCellExpanded":"ResponsiveTable-module_detailCellExpanded__Zr6UF","detailContentWrapper":"ResponsiveTable-module_detailContentWrapper__VzM29","detailContentWrapperExpanded":"ResponsiveTable-module_detailContentWrapperExpanded__bkiUb","detailContentInner":"ResponsiveTable-module_detailContentInner__GWVaq","mobileDetailOuter":"ResponsiveTable-module_mobileDetailOuter__gusle","mobileExpandRow":"ResponsiveTable-module_mobileExpandRow__Fb0AP","fadeInUp":"ResponsiveTable-module_fadeInUp__jMCS7"};
|
|
32
|
+
var css_248z = ".ResponsiveTable-module_responsiveTable__4y-Od{--table-border-color:#e0e0e0;--table-header-bg:#f8f9fa;--table-row-hover-bg:#f1f3f5;--table-row-stripe-bg:#fafbfc;--card-bg:#fff;--card-border-color:#d1d5db;--card-shadow:0 2px 8px rgba(0,0,0,.06);--text-color:#212529;--text-color-muted:#6c757d;--interactive-color:#0056b3;--primary-color:#007bff;--rt-mobile-card-shadow:0 1px 2px rgba(0,0,0,.04),0 4px 12px rgba(0,0,0,.06),0 12px 32px rgba(0,0,0,.04);--rt-mobile-card-radius:16px;--rt-mobile-bg-wash:#f1f5f9;--rt-mobile-label-color:#475569;--rt-mobile-value-color:#1e293b}.ResponsiveTable-module_tableContainer__VjWjH{border:1px solid var(--table-border-color);border-radius:8px;overflow-x:auto;width:100%}.ResponsiveTable-module_responsiveTable__4y-Od{background-color:var(--card-bg);border-collapse:collapse;color:var(--text-color);width:100%}.ResponsiveTable-module_responsiveTable__4y-Od thead th{background-color:var(--table-header-bg);border-bottom:2px solid var(--table-border-color);color:var(--text-color-muted);font-size:.75rem;font-weight:600;letter-spacing:.05em;padding:1rem;text-align:left;text-transform:uppercase;z-index:1}.ResponsiveTable-module_responsiveTable__4y-Od td{border-bottom:1px solid var(--table-border-color);font-size:.9rem;padding:1rem;text-align:left}.ResponsiveTable-module_responsiveTable__4y-Od tr:last-child td{border-bottom:none}.ResponsiveTable-module_responsiveTable__4y-Od tr:nth-child(2n){background-color:var(--table-row-stripe-bg)}.ResponsiveTable-module_responsiveTable__4y-Od tr:hover{background-color:var(--table-row-hover-bg)}.ResponsiveTable-module_cardContainer__Het4h{background-color:var(--rt-mobile-bg-wash);border-radius:var(--rt-mobile-card-radius);display:flex;flex-direction:column;gap:1.25rem;padding:1rem}.ResponsiveTable-module_card__b-U2v{background-color:var(--card-bg);border:1px solid var(--card-border-color);border-bottom:3px solid var(--primary-color);border-radius:var(--rt-mobile-card-radius);box-shadow:var(--rt-mobile-card-shadow);overflow:hidden;padding:1rem;transition:box-shadow .2s ease-in-out,transform .2s ease-in-out}.ResponsiveTable-module_card__b-U2v:hover{box-shadow:0 2px 4px rgba(0,0,0,.06),0 8px 24px rgba(0,0,0,.08),0 16px 48px rgba(0,0,0,.06);transform:translateY(-4px)}.ResponsiveTable-module_card-header__Ttk51{border-bottom:1px solid var(--table-border-color);margin-bottom:1rem;padding-bottom:.5rem}.ResponsiveTable-module_card-row__qvIUJ{align-items:flex-start;display:flex;gap:1rem;justify-content:space-between;margin:0 0 .75rem}.ResponsiveTable-module_card-row__qvIUJ.ResponsiveTable-module_stacked__FSaTB{align-items:stretch;flex-direction:column;gap:.25rem;margin-bottom:1rem}.ResponsiveTable-module_card-row__qvIUJ:last-child{margin-bottom:0}.ResponsiveTable-module_card-label__v9L71{color:var(--rt-mobile-label-color);font-size:.75rem;font-weight:600;text-transform:uppercase;white-space:nowrap}.ResponsiveTable-module_card-value__BO-c-{color:var(--rt-mobile-value-color);font-size:.95rem;text-align:right}.ResponsiveTable-module_card-row__qvIUJ.ResponsiveTable-module_stacked__FSaTB .ResponsiveTable-module_card-value__BO-c-{text-align:left}.ResponsiveTable-module_numberValue__-TLR1{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;text-align:right!important}.ResponsiveTable-module_dateValue__UMvqJ{color:var(--text-color-muted);font-size:.85rem}.ResponsiveTable-module_imageValue__wVb-p img{border-radius:8px;height:auto;max-width:100%;object-fit:cover}.ResponsiveTable-module_inputValue__CrGMx{margin-top:.5rem;width:100%}.ResponsiveTable-module_inputValue__CrGMx button,.ResponsiveTable-module_inputValue__CrGMx input[type=text],.ResponsiveTable-module_inputValue__CrGMx select,.ResponsiveTable-module_inputValue__CrGMx textarea{min-height:44px;width:100%!important}.ResponsiveTable-module_clickableRow__0kjWm{cursor:pointer}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr{transition:background-color .12s ease}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr.ResponsiveTable-module_clickableRow__0kjWm:active{background-color:var(--table-row-active-bg,#dde3ea);transition:background-color .08s ease}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr.ResponsiveTable-module_clickableRow__0kjWm:focus-visible{outline:2px solid var(--primary-color,#3b82f6);outline-offset:-2px}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr.ResponsiveTable-module_expandableRow__v9885 td{border-bottom-color:color-mix(in srgb,var(--primary-color,#3b82f6) 18%,var(--table-border-color))}.ResponsiveTable-module_responsiveTable__4y-Od tbody tr.ResponsiveTable-module_expandableRow__v9885:hover td{border-bottom-color:color-mix(in srgb,var(--primary-color,#3b82f6) 35%,var(--table-border-color))}.ResponsiveTable-module_card__b-U2v.ResponsiveTable-module_clickableRow__0kjWm:active{box-shadow:0 1px 3px rgba(0,0,0,.08);transform:translateY(-1px);transition:transform .08s ease,box-shadow .08s ease}.ResponsiveTable-module_card__b-U2v.ResponsiveTable-module_clickableRow__0kjWm:focus-visible{outline:2px solid var(--primary-color,#3b82f6);outline-offset:-2px}.ResponsiveTable-module_clickableHeader__xHQhF{cursor:pointer;transition:color .2s}.ResponsiveTable-module_clickableHeader__xHQhF:hover{color:var(--interactive-color)}.ResponsiveTable-module_sortable__yvA60{cursor:pointer}.ResponsiveTable-module_sorted-asc__jzOIa,.ResponsiveTable-module_sorted-desc__7WCFK{background-color:#f0f7ff!important;color:var(--interactive-color)!important}.ResponsiveTable-module_headerInnerWrapper__3VAhD{align-items:center;display:flex;justify-content:space-between;width:100%}.ResponsiveTable-module_headerContent__ODMzS{flex-grow:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ResponsiveTable-module_sortIcon__A9WtD{background-position:50%;background-repeat:no-repeat;background-size:contain;flex-shrink:0;height:1rem;margin-left:.5rem;opacity:.3;width:1rem}.ResponsiveTable-module_sortable__yvA60:hover .ResponsiveTable-module_sortIcon__A9WtD{opacity:.8}.ResponsiveTable-module_sortable__yvA60 .ResponsiveTable-module_sortIcon__A9WtD{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%236c757d'%3E%3Cpath d='M10 18h4v-2h-4v2zm-6-8v2h16V8H4zm3-6h10v2H7V2z'/%3E%3C/svg%3E\")}.ResponsiveTable-module_sorted-asc__jzOIa .ResponsiveTable-module_sortIcon__A9WtD{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230056b3'%3E%3Cpath d='m7 14 5-5 5 5z'/%3E%3C/svg%3E\");opacity:1}.ResponsiveTable-module_sorted-desc__7WCFK .ResponsiveTable-module_sortIcon__A9WtD{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%230056b3'%3E%3Cpath d='m7 10 5 5 5-5z'/%3E%3C/svg%3E\");opacity:1}.ResponsiveTable-module_responsiveTable__4y-Od tfoot{background-color:var(--table-header-bg);border-top:2px solid var(--table-border-color)}.ResponsiveTable-module_footerCell__8H-uG{font-size:.9rem;font-weight:600;padding:1rem;text-align:right}.ResponsiveTable-module_clickableFooterCell__WB9Ss{color:var(--interactive-color);cursor:pointer}.ResponsiveTable-module_clickableFooterCell__WB9Ss:hover{text-decoration:underline}.ResponsiveTable-module_footerCard__-NE2M{background-color:var(--table-header-bg);border:1px solid var(--card-border-color);border-radius:12px;margin-top:1rem;overflow:hidden;padding:1.25rem}.ResponsiveTable-module_footer-card-row__Vv6Ur{display:flex;font-size:.9rem;font-weight:600;justify-content:space-between;margin:0 0 .75rem}.ResponsiveTable-module_selectedRow__-JyNW{background-color:#e7f1ff!important;transition:background-color .15s ease}.ResponsiveTable-module_card__b-U2v.ResponsiveTable-module_selectedRow__-JyNW{background-color:#e7f1ff;border-left:4px solid var(--primary-color)}.ResponsiveTable-module_animatedRow__SFjrJ{animation:ResponsiveTable-module_cardEntrance__6JjRV .5s cubic-bezier(.2,.8,.2,1) forwards;opacity:0}@keyframes ResponsiveTable-module_cardEntrance__6JjRV{0%{opacity:0;transform:translateY(15px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes ResponsiveTable-module_fadeInUp__jMCS7{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.ResponsiveTable-module_skeleton__XxsXW{background-color:#f0f0f0;border-radius:4px;overflow:hidden;position:relative}.ResponsiveTable-module_skeleton__XxsXW:after{animation:ResponsiveTable-module_shimmer__H8PhC 1.5s infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.6),transparent);content:\"\";height:100%;left:-150%;position:absolute;top:0;width:150%}@keyframes ResponsiveTable-module_shimmer__H8PhC{0%{transform:translateX(0)}to{transform:translateX(100%)}}.ResponsiveTable-module_noDataWrapper__Rj-k3{align-items:center;background-color:var(--table-header-bg);border:2px dashed var(--table-border-color);border-radius:12px;color:var(--text-color-muted);display:flex;flex-direction:column;gap:1rem;justify-content:center;padding:4rem 2rem}.ResponsiveTable-module_noData__IpwNq{font-size:1.1rem;font-weight:500}.ResponsiveTable-module_spinner__Pn-3D{animation:ResponsiveTable-module_spin__i3NHn .8s linear infinite;border:3px solid rgba(0,0,0,.1);border-left:3px solid var(--primary-color);border-radius:50%;height:24px;width:24px}@keyframes ResponsiveTable-module_spin__i3NHn{to{transform:rotate(1turn)}}.ResponsiveTable-module_infoContainer__b9IF5{align-items:center;color:var(--text-color-muted);display:flex;font-size:.85rem;gap:.5rem;justify-content:center;padding:1.5rem}.ResponsiveTable-module_stickyHeader__-jjN- th{box-shadow:0 2px 4px rgba(0,0,0,.05);position:sticky;top:0}.ResponsiveTable-module_internalStickyHeader__idiJY th{position:sticky;top:0}.ResponsiveTable-module_expandColumn__yvwN-{border-bottom:1px solid var(--table-border-color);min-width:3rem;padding:0!important;text-align:center;vertical-align:middle;width:3rem}.ResponsiveTable-module_expandChevron__7JalN{align-items:center;border-radius:.25rem;color:var(--primary-color,#3b82f6);cursor:pointer;display:inline-flex;font-size:2rem;height:2.5rem;justify-content:center;opacity:.55;transform:rotate(-90deg);transition:opacity .15s ease,transform .25s ease;user-select:none;width:2.5rem}.ResponsiveTable-module_expandChevron__7JalN:focus-visible{outline:2px solid var(--primary-color,#3b82f6);outline-offset:2px}@keyframes ResponsiveTable-module_chevronGreeting__nLVUh{0%{color:#ea580c;opacity:0;transform:rotate(-90deg) scale(.6)}12%{color:#ea580c;opacity:1;transform:rotate(-90deg) scale(1.3)}22%{color:#ea580c;opacity:.65;transform:rotate(-90deg) scale(1)}32%{color:#d97706;opacity:1;transform:rotate(-90deg) scale(1.15)}45%{color:var(--primary-color,#3b82f6);opacity:.55;transform:rotate(-90deg) scale(1)}to{color:var(--primary-color,#3b82f6);opacity:.55;transform:rotate(-90deg) scale(1)}}.ResponsiveTable-module_expandChevronGreeting__hu51J{animation:ResponsiveTable-module_chevronGreeting__nLVUh 2.2s ease-out forwards;animation-delay:calc(var(--row-idx, 0)*60ms)}.ResponsiveTable-module_expandChevronHovered__aNVCU{opacity:.85}.ResponsiveTable-module_expandChevronExpanded__iQ1bV{opacity:1;transform:rotate(0deg)}.ResponsiveTable-module_responsiveTable__4y-Od td.ResponsiveTable-module_detailCell__hb9C5{border-top:none;padding:0;transition:border-left .2s ease}.ResponsiveTable-module_responsiveTable__4y-Od td.ResponsiveTable-module_detailCellHasContent__F-DX5{padding-bottom:.5rem}.ResponsiveTable-module_responsiveTable__4y-Od td.ResponsiveTable-module_detailCellExpanded__Zr6UF{background:rgba(0,0,0,.012);border-left:2px solid var(--primary-color,#3b82f6)}.ResponsiveTable-module_detailContentWrapper__VzM29{display:grid;grid-template-rows:0fr;transition:grid-template-rows .3s ease}.ResponsiveTable-module_detailContentWrapperExpanded__bkiUb{grid-template-rows:1fr}.ResponsiveTable-module_detailContentInner__GWVaq{min-height:0;overflow:hidden;padding-left:1.5rem}.ResponsiveTable-module_mobileDetailOuter__gusle{overflow:hidden}.ResponsiveTable-module_mobileExpandRow__Fb0AP{align-items:center;border-bottom:1px solid var(--table-border-color);display:flex;justify-content:flex-start;margin-bottom:.25rem;padding:0 0 .25rem}";
|
|
33
|
+
var styles = {"responsiveTable":"ResponsiveTable-module_responsiveTable__4y-Od","tableContainer":"ResponsiveTable-module_tableContainer__VjWjH","cardContainer":"ResponsiveTable-module_cardContainer__Het4h","card":"ResponsiveTable-module_card__b-U2v","card-header":"ResponsiveTable-module_card-header__Ttk51","card-row":"ResponsiveTable-module_card-row__qvIUJ","stacked":"ResponsiveTable-module_stacked__FSaTB","card-label":"ResponsiveTable-module_card-label__v9L71","card-value":"ResponsiveTable-module_card-value__BO-c-","numberValue":"ResponsiveTable-module_numberValue__-TLR1","dateValue":"ResponsiveTable-module_dateValue__UMvqJ","imageValue":"ResponsiveTable-module_imageValue__wVb-p","inputValue":"ResponsiveTable-module_inputValue__CrGMx","clickableRow":"ResponsiveTable-module_clickableRow__0kjWm","expandableRow":"ResponsiveTable-module_expandableRow__v9885","clickableHeader":"ResponsiveTable-module_clickableHeader__xHQhF","sortable":"ResponsiveTable-module_sortable__yvA60","sorted-asc":"ResponsiveTable-module_sorted-asc__jzOIa","sorted-desc":"ResponsiveTable-module_sorted-desc__7WCFK","headerInnerWrapper":"ResponsiveTable-module_headerInnerWrapper__3VAhD","headerContent":"ResponsiveTable-module_headerContent__ODMzS","sortIcon":"ResponsiveTable-module_sortIcon__A9WtD","footerCell":"ResponsiveTable-module_footerCell__8H-uG","clickableFooterCell":"ResponsiveTable-module_clickableFooterCell__WB9Ss","footerCard":"ResponsiveTable-module_footerCard__-NE2M","footer-card-row":"ResponsiveTable-module_footer-card-row__Vv6Ur","selectedRow":"ResponsiveTable-module_selectedRow__-JyNW","animatedRow":"ResponsiveTable-module_animatedRow__SFjrJ","cardEntrance":"ResponsiveTable-module_cardEntrance__6JjRV","skeleton":"ResponsiveTable-module_skeleton__XxsXW","shimmer":"ResponsiveTable-module_shimmer__H8PhC","noDataWrapper":"ResponsiveTable-module_noDataWrapper__Rj-k3","noData":"ResponsiveTable-module_noData__IpwNq","spinner":"ResponsiveTable-module_spinner__Pn-3D","spin":"ResponsiveTable-module_spin__i3NHn","infoContainer":"ResponsiveTable-module_infoContainer__b9IF5","stickyHeader":"ResponsiveTable-module_stickyHeader__-jjN-","internalStickyHeader":"ResponsiveTable-module_internalStickyHeader__idiJY","expandColumn":"ResponsiveTable-module_expandColumn__yvwN-","expandChevron":"ResponsiveTable-module_expandChevron__7JalN","expandChevronGreeting":"ResponsiveTable-module_expandChevronGreeting__hu51J","chevronGreeting":"ResponsiveTable-module_chevronGreeting__nLVUh","expandChevronHovered":"ResponsiveTable-module_expandChevronHovered__aNVCU","expandChevronExpanded":"ResponsiveTable-module_expandChevronExpanded__iQ1bV","detailCell":"ResponsiveTable-module_detailCell__hb9C5","detailCellHasContent":"ResponsiveTable-module_detailCellHasContent__F-DX5","detailCellExpanded":"ResponsiveTable-module_detailCellExpanded__Zr6UF","detailContentWrapper":"ResponsiveTable-module_detailContentWrapper__VzM29","detailContentWrapperExpanded":"ResponsiveTable-module_detailContentWrapperExpanded__bkiUb","detailContentInner":"ResponsiveTable-module_detailContentInner__GWVaq","mobileDetailOuter":"ResponsiveTable-module_mobileDetailOuter__gusle","mobileExpandRow":"ResponsiveTable-module_mobileExpandRow__Fb0AP","fadeInUp":"ResponsiveTable-module_fadeInUp__jMCS7"};
|
|
34
34
|
styleInject(css_248z);
|
|
35
35
|
|
|
36
36
|
/******************************************************************************
|
|
@@ -210,12 +210,12 @@ function TableBodyCell(props) {
|
|
|
210
210
|
}
|
|
211
211
|
|
|
212
212
|
function TableBodyRow(props) {
|
|
213
|
-
const { row, rowIndex, columnDefinitions, onRowClick, selectionProps, animationProps, expandCell, onMouseEnter, onMouseLeave, } = props;
|
|
213
|
+
const { row, rowIndex, columnDefinitions, onRowClick, selectionProps, animationProps, isExpandable, expandCell, onMouseEnter, onMouseLeave, } = props;
|
|
214
214
|
const { getRowProps } = useTableContext();
|
|
215
215
|
const rowProps = getRowProps(row);
|
|
216
216
|
const isClickable = onRowClick || selectionProps;
|
|
217
217
|
const pluginOnClick = rowProps.onClick;
|
|
218
|
-
return (React.createElement("tr", { className: `${isClickable ? styles.clickableRow : ''} ${(animationProps === null || animationProps === void 0 ? void 0 : animationProps.animateOnLoad) ? styles.animatedRow : ''} ${rowProps.className || ''}`.trim(), style: { animationDelay: `${rowIndex * 0.05}s` }, tabIndex: isClickable ? 0 : undefined, "aria-selected": rowProps['aria-selected'], onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onClickCapture: (e) => {
|
|
218
|
+
return (React.createElement("tr", { className: `${isClickable ? styles.clickableRow : ''} ${isExpandable ? styles.expandableRow : ''} ${(animationProps === null || animationProps === void 0 ? void 0 : animationProps.animateOnLoad) ? styles.animatedRow : ''} ${rowProps.className || ''}`.trim(), style: { animationDelay: `${rowIndex * 0.05}s` }, tabIndex: isClickable ? 0 : undefined, "aria-selected": rowProps['aria-selected'], onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onClickCapture: (e) => {
|
|
219
219
|
// Capture Phase: Check for the ignore attribute BEFORE child handlers run.
|
|
220
220
|
// This prevents issues where child handlers trigger a re-render/unmount
|
|
221
221
|
// that detaches the target from the DOM before the bubbling phase.
|
|
@@ -285,27 +285,14 @@ const TableSentinel = ({ onIntersect, isLoading }) => {
|
|
|
285
285
|
};
|
|
286
286
|
|
|
287
287
|
function DesktopView(props) {
|
|
288
|
-
const { maxHeight, isHeaderSticky, tableContainerRef, headerRef, footerRows, renderPluginFooters, onScroll, } = props;
|
|
288
|
+
const { maxHeight, isHeaderSticky, tableContainerRef, headerRef, footerRows, renderPluginFooters, onScroll, expandedIds, toggleExpanded, } = props;
|
|
289
289
|
const { visibleColumns, originalColumnDefinitions, currentData, getRawColumnDefinition, onRowClick, selectionProps, animationProps, pagination, expandRowRenderer, expandChevronClassName, getRowId, } = useTableContext();
|
|
290
|
-
const [expandedIds, setExpandedIds] = useState(new Set());
|
|
291
290
|
const [hoveredRowId, setHoveredRowId] = useState(null);
|
|
292
291
|
const [greetingActive, setGreetingActive] = useState(true);
|
|
293
292
|
useEffect(() => {
|
|
294
293
|
const t = setTimeout(() => setGreetingActive(false), 3200);
|
|
295
294
|
return () => clearTimeout(t);
|
|
296
295
|
}, []);
|
|
297
|
-
const toggleExpanded = useCallback((id) => {
|
|
298
|
-
setExpandedIds(prev => {
|
|
299
|
-
const next = new Set(prev);
|
|
300
|
-
if (next.has(id)) {
|
|
301
|
-
next.delete(id);
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
next.add(id);
|
|
305
|
-
}
|
|
306
|
-
return next;
|
|
307
|
-
});
|
|
308
|
-
}, []);
|
|
309
296
|
const getEffectiveColSpan = useCallback((footerCol, startIndex) => {
|
|
310
297
|
const originalSpan = footerCol.colSpan || 1;
|
|
311
298
|
const endIndex = startIndex + originalSpan;
|
|
@@ -362,7 +349,7 @@ function DesktopView(props) {
|
|
|
362
349
|
expandChevronClassName !== null && expandChevronClassName !== void 0 ? expandChevronClassName : '',
|
|
363
350
|
].filter(Boolean).join(' ').trim();
|
|
364
351
|
return (React.createElement(React.Fragment, { key: rowId },
|
|
365
|
-
React.createElement(TableBodyRow, { row: row, rowIndex: rowIndex, columnDefinitions: visibleColumns, onRowClick: onRowClick, selectionProps: selectionProps, animationProps: animationProps, expandCell: expandRowRenderer ? (React.createElement("td", { className: styles.expandColumn, style: { '--row-idx': rowIndex } }, rowHasContent && (React.createElement("span", { className: chevronClasses, role: "button", tabIndex: 0, "aria-expanded": isExpanded, onClick: (e) => { e.stopPropagation(); toggleExpanded(rowId); }, onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ') {
|
|
352
|
+
React.createElement(TableBodyRow, { row: row, rowIndex: rowIndex, columnDefinitions: visibleColumns, onRowClick: onRowClick, selectionProps: selectionProps, animationProps: animationProps, isExpandable: !!(expandRowRenderer && rowHasContent), expandCell: expandRowRenderer ? (React.createElement("td", { className: styles.expandColumn, style: { '--row-idx': rowIndex } }, rowHasContent && (React.createElement("span", { className: chevronClasses, role: "button", tabIndex: 0, "aria-expanded": isExpanded, onClick: (e) => { e.stopPropagation(); toggleExpanded(rowId); }, onKeyDown: (e) => { if (e.key === 'Enter' || e.key === ' ') {
|
|
366
353
|
e.preventDefault();
|
|
367
354
|
toggleExpanded(rowId);
|
|
368
355
|
} }, "data-rt-ignore-row-click": true },
|
|
@@ -395,28 +382,15 @@ function MobileDetailSection({ row, rowIndex, expandRowRenderer, isExpanded }) {
|
|
|
395
382
|
React.createElement("div", { className: styles.detailContentInner }, everExpanded && content))));
|
|
396
383
|
}
|
|
397
384
|
function MobileView(props) {
|
|
398
|
-
const { mobileFooter } = props;
|
|
385
|
+
const { mobileFooter, expandedIds, toggleExpanded } = props;
|
|
399
386
|
const { currentData, visibleColumns, onRowClick, selectionProps, animationProps, getRowProps, getRowId, getColumnDefinition, onHeaderClickCallback, getClickableHeaderClassName, pagination, mobileCardClassName, expandRowRenderer, expandChevronClassName, } = useTableContext();
|
|
400
387
|
const isClickable = onRowClick || selectionProps;
|
|
401
|
-
const [expandedIds, setExpandedIds] = useState(new Set());
|
|
402
388
|
const [hoveredRowId, setHoveredRowId] = useState(null);
|
|
403
389
|
const [greetingActive, setGreetingActive] = useState(true);
|
|
404
390
|
useEffect(() => {
|
|
405
391
|
const t = setTimeout(() => setGreetingActive(false), 3200);
|
|
406
392
|
return () => clearTimeout(t);
|
|
407
393
|
}, []);
|
|
408
|
-
const toggleExpanded = useCallback((id) => {
|
|
409
|
-
setExpandedIds(prev => {
|
|
410
|
-
const next = new Set(prev);
|
|
411
|
-
if (next.has(id)) {
|
|
412
|
-
next.delete(id);
|
|
413
|
-
}
|
|
414
|
-
else {
|
|
415
|
-
next.add(id);
|
|
416
|
-
}
|
|
417
|
-
return next;
|
|
418
|
-
});
|
|
419
|
-
}, []);
|
|
420
394
|
const inferDataType = (colDef, value) => {
|
|
421
395
|
var _a;
|
|
422
396
|
if (colDef.dataType)
|
|
@@ -1101,7 +1075,7 @@ const useTableDataSource = (props) => {
|
|
|
1101
1075
|
* Supports static data or async data sources with built-in infinite scroll.
|
|
1102
1076
|
*/
|
|
1103
1077
|
function ResponsiveTableInner(props, ref) {
|
|
1104
|
-
const { columnDefinitions, data: initialData, dataSource, pageSize, noDataComponent, maxHeight, onRowClick, footerRows, mobileBreakpoint, plugins, enablePageLevelStickyHeader, filterProps, selectionProps, animationProps, sortProps, mobileCardClassName, onDataSourceStateChange, onPageChange, onDataSourceError, expandRowRenderer, expandChevronClassName, } = props;
|
|
1078
|
+
const { columnDefinitions, data: initialData, dataSource, pageSize, noDataComponent, maxHeight, onRowClick, footerRows, mobileBreakpoint, plugins, enablePageLevelStickyHeader, filterProps, selectionProps, animationProps, sortProps, mobileCardClassName, onDataSourceStateChange, onPageChange, onDataSourceError, expandRowRenderer, expandChevronClassName, defaultExpandedIds, } = props;
|
|
1105
1079
|
const tableContainerRef = useRef(null);
|
|
1106
1080
|
const headerRef = useRef(null);
|
|
1107
1081
|
const { isMobile, isHeaderSticky } = useResponsiveTable({
|
|
@@ -1119,6 +1093,14 @@ function ResponsiveTableInner(props, ref) {
|
|
|
1119
1093
|
const handleFilterChange = useCallback((text) => {
|
|
1120
1094
|
setActiveFilter(text);
|
|
1121
1095
|
}, []);
|
|
1096
|
+
const [expandedIds, setExpandedIds] = useState(() => new Set(defaultExpandedIds !== null && defaultExpandedIds !== void 0 ? defaultExpandedIds : []));
|
|
1097
|
+
const toggleExpanded = useCallback((id) => {
|
|
1098
|
+
setExpandedIds(prev => {
|
|
1099
|
+
const next = new Set(prev);
|
|
1100
|
+
next.has(id) ? next.delete(id) : next.add(id);
|
|
1101
|
+
return next;
|
|
1102
|
+
});
|
|
1103
|
+
}, []);
|
|
1122
1104
|
const isServerFilter = !!dataSource && !!(filterProps === null || filterProps === void 0 ? void 0 : filterProps.showFilter) && (filterProps === null || filterProps === void 0 ? void 0 : filterProps.mode) !== 'client';
|
|
1123
1105
|
const resolvedFilterProps = useMemo(() => {
|
|
1124
1106
|
var _a;
|
|
@@ -1150,6 +1132,9 @@ function ResponsiveTableInner(props, ref) {
|
|
|
1150
1132
|
isFetchingMore,
|
|
1151
1133
|
error,
|
|
1152
1134
|
}),
|
|
1135
|
+
expandRows: (...ids) => setExpandedIds(prev => new Set([...prev, ...ids])),
|
|
1136
|
+
collapseRows: (...ids) => setExpandedIds(prev => { const n = new Set(prev); ids.forEach(id => n.delete(id)); return n; }),
|
|
1137
|
+
toggleRows: (...ids) => setExpandedIds(prev => { const n = new Set(prev); ids.forEach(id => n.has(id) ? n.delete(id) : n.add(id)); return n; }),
|
|
1153
1138
|
}), [loadNextPage, resetAndFetch, sourceData, currentPage, hasMore, totalCount, isSourceLoading, isFetchingMore, error]);
|
|
1154
1139
|
const currentDataToProcess = dataSource ? sourceData : initialData;
|
|
1155
1140
|
const { processedData, activePlugins, visibleColumns } = useTablePlugins({
|
|
@@ -1308,8 +1293,8 @@ function ResponsiveTableInner(props, ref) {
|
|
|
1308
1293
|
React.createElement("div", null,
|
|
1309
1294
|
React.createElement("div", { style: { display: 'flex', justifyContent: 'flex-end' } }, renderPluginHeaders()),
|
|
1310
1295
|
!hasData && !isLoading && noDataComponentNode,
|
|
1311
|
-
(hasData || isLoading) && isMobile && (React.createElement(MobileView, { mobileFooter: mobileFooter })),
|
|
1312
|
-
(hasData || isLoading) && !isMobile && (React.createElement(DesktopView, { maxHeight: maxHeight, isHeaderSticky: isHeaderSticky, tableContainerRef: tableContainerRef, headerRef: headerRef, footerRows: footerRows, renderPluginFooters: renderPluginFooters })))));
|
|
1296
|
+
(hasData || isLoading) && isMobile && (React.createElement(MobileView, { mobileFooter: mobileFooter, expandedIds: expandedIds, toggleExpanded: toggleExpanded })),
|
|
1297
|
+
(hasData || isLoading) && !isMobile && (React.createElement(DesktopView, { maxHeight: maxHeight, isHeaderSticky: isHeaderSticky, tableContainerRef: tableContainerRef, headerRef: headerRef, footerRows: footerRows, renderPluginFooters: renderPluginFooters, expandedIds: expandedIds, toggleExpanded: toggleExpanded })))));
|
|
1313
1298
|
}
|
|
1314
1299
|
const ResponsiveTable = forwardRef(ResponsiveTableInner);
|
|
1315
1300
|
|