iguazio.dashboard-react-controls 3.1.6 → 3.1.8
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/hooks/useTable.hook.d.ts +6 -0
- package/dist/hooks/useTable.hook.d.ts.map +1 -1
- package/dist/hooks/useTable.hook.mjs +124 -78
- package/dist/hooks/useTable.hook.mjs.map +1 -1
- package/dist/scss/common.scss +25 -21
- package/dist/utils/form.util.d.ts +1 -0
- package/dist/utils/form.util.d.ts.map +1 -1
- package/dist/utils/form.util.mjs +10 -9
- package/dist/utils/form.util.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -57,4 +57,10 @@ export function useTable({ ref, selectedItem, skipTableWrapper, tableClassName }
|
|
|
57
57
|
tableStore: any;
|
|
58
58
|
tableWrapperClass: string;
|
|
59
59
|
};
|
|
60
|
+
export function useTableScroll({ content, selectedItem, isAllVersions, tableId }: {
|
|
61
|
+
content: any;
|
|
62
|
+
selectedItem: any;
|
|
63
|
+
isAllVersions: any;
|
|
64
|
+
tableId?: string;
|
|
65
|
+
}): void;
|
|
60
66
|
//# sourceMappingURL=useTable.hook.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.hook.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useTable.hook.jsx"],"names":[],"mappings":"AAoHO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EN"}
|
|
1
|
+
{"version":3,"file":"useTable.hook.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useTable.hook.jsx"],"names":[],"mappings":"AAoHO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4EN;AAEM;;;;;SA8EN"}
|
|
@@ -1,81 +1,81 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { useRef as
|
|
1
|
+
import { jsx as w, jsxs as C } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as T, useEffect as _, useCallback as v, useMemo as I } from "react";
|
|
3
3
|
import e from "prop-types";
|
|
4
|
-
import
|
|
5
|
-
import { useSelector as
|
|
6
|
-
import { isEmpty as
|
|
7
|
-
import
|
|
8
|
-
import { MAIN_TABLE_BODY_ID as
|
|
9
|
-
import { VIRTUALIZATION_CONFIG as
|
|
10
|
-
const
|
|
11
|
-
children:
|
|
12
|
-
hideActionsMenu:
|
|
13
|
-
mainRowItemsCount:
|
|
14
|
-
pageData:
|
|
15
|
-
renderDetails:
|
|
16
|
-
selectedItem:
|
|
17
|
-
sortProps:
|
|
18
|
-
tableBodyRef:
|
|
19
|
-
tableClass:
|
|
20
|
-
tableContentRef:
|
|
21
|
-
tableHeadRef:
|
|
22
|
-
tableHeaders:
|
|
23
|
-
tablePanelRef:
|
|
24
|
-
tableRef:
|
|
25
|
-
tableStore:
|
|
26
|
-
tableWrapperClass:
|
|
27
|
-
virtualizationConfig:
|
|
4
|
+
import B from "classnames";
|
|
5
|
+
import { useSelector as N } from "react-redux";
|
|
6
|
+
import { isEmpty as P } from "lodash";
|
|
7
|
+
import S from "../elements/TableHead/TableHead.mjs";
|
|
8
|
+
import { MAIN_TABLE_BODY_ID as x, MAIN_TABLE_ID as E } from "../constants.mjs";
|
|
9
|
+
import { VIRTUALIZATION_CONFIG as O, SORT_PROPS as A } from "../types.mjs";
|
|
10
|
+
const L = ({
|
|
11
|
+
children: n,
|
|
12
|
+
hideActionsMenu: s = !1,
|
|
13
|
+
mainRowItemsCount: p = 1,
|
|
14
|
+
pageData: u = null,
|
|
15
|
+
renderDetails: l = null,
|
|
16
|
+
selectedItem: f = {},
|
|
17
|
+
sortProps: c = null,
|
|
18
|
+
tableBodyRef: m,
|
|
19
|
+
tableClass: t,
|
|
20
|
+
tableContentRef: d,
|
|
21
|
+
tableHeadRef: r,
|
|
22
|
+
tableHeaders: a,
|
|
23
|
+
tablePanelRef: i,
|
|
24
|
+
tableRef: h,
|
|
25
|
+
tableStore: b = null,
|
|
26
|
+
tableWrapperClass: o,
|
|
27
|
+
virtualizationConfig: g = {
|
|
28
28
|
tableBodyPaddingTop: 0,
|
|
29
29
|
startIndex: -1,
|
|
30
30
|
endIndex: -1
|
|
31
31
|
}
|
|
32
|
-
}) => /* @__PURE__ */
|
|
33
|
-
/* @__PURE__ */
|
|
34
|
-
/* @__PURE__ */
|
|
32
|
+
}) => /* @__PURE__ */ w("div", { className: "table__flex", children: /* @__PURE__ */ C("div", { className: "table__content", id: "table-content", ref: d, children: [
|
|
33
|
+
/* @__PURE__ */ C("div", { className: o, children: [
|
|
34
|
+
/* @__PURE__ */ C(
|
|
35
35
|
"table",
|
|
36
36
|
{
|
|
37
|
-
id:
|
|
38
|
-
className:
|
|
37
|
+
id: E,
|
|
38
|
+
className: t,
|
|
39
39
|
cellPadding: "0",
|
|
40
40
|
cellSpacing: "0",
|
|
41
|
-
ref:
|
|
41
|
+
ref: h,
|
|
42
42
|
children: [
|
|
43
|
-
(
|
|
44
|
-
|
|
43
|
+
(a == null ? void 0 : a.length) > 0 && /* @__PURE__ */ w(
|
|
44
|
+
S,
|
|
45
45
|
{
|
|
46
|
-
content:
|
|
47
|
-
hideActionsMenu:
|
|
48
|
-
mainRowItemsCount:
|
|
49
|
-
ref:
|
|
50
|
-
selectedItem:
|
|
51
|
-
sortProps:
|
|
46
|
+
content: a,
|
|
47
|
+
hideActionsMenu: s,
|
|
48
|
+
mainRowItemsCount: p,
|
|
49
|
+
ref: r,
|
|
50
|
+
selectedItem: f,
|
|
51
|
+
sortProps: c
|
|
52
52
|
}
|
|
53
53
|
),
|
|
54
|
-
/* @__PURE__ */
|
|
54
|
+
/* @__PURE__ */ w(
|
|
55
55
|
"tbody",
|
|
56
56
|
{
|
|
57
57
|
className: "table-body",
|
|
58
|
-
id:
|
|
59
|
-
style: { paddingTop:
|
|
60
|
-
ref:
|
|
61
|
-
children:
|
|
58
|
+
id: x,
|
|
59
|
+
style: { paddingTop: g.tableBodyPaddingTop },
|
|
60
|
+
ref: m,
|
|
61
|
+
children: n
|
|
62
62
|
}
|
|
63
63
|
)
|
|
64
64
|
]
|
|
65
65
|
}
|
|
66
66
|
),
|
|
67
|
-
(
|
|
67
|
+
(b == null ? void 0 : b.isTablePanelOpen) && (u == null ? void 0 : u.tablePanel) && /* @__PURE__ */ w("div", { className: "table__panel-container", ref: i, children: /* @__PURE__ */ w("div", { className: "table__panel", children: u.tablePanel }) })
|
|
68
68
|
] }),
|
|
69
|
-
|
|
69
|
+
l && l()
|
|
70
70
|
] }) });
|
|
71
|
-
|
|
71
|
+
L.propTypes = {
|
|
72
72
|
children: e.node.isRequired,
|
|
73
73
|
hideActionsMenu: e.bool,
|
|
74
74
|
mainRowItemsCount: e.number,
|
|
75
75
|
pageData: e.object,
|
|
76
76
|
renderDetails: e.func,
|
|
77
77
|
selectedItem: e.object,
|
|
78
|
-
sortProps:
|
|
78
|
+
sortProps: A,
|
|
79
79
|
tableBodyRef: e.object.isRequired,
|
|
80
80
|
tableClass: e.string.isRequired,
|
|
81
81
|
tableContentRef: e.object.isRequired,
|
|
@@ -85,45 +85,91 @@ P.propTypes = {
|
|
|
85
85
|
tableRef: e.object.isRequired,
|
|
86
86
|
tableStore: e.object,
|
|
87
87
|
tableWrapperClass: e.string.isRequired,
|
|
88
|
-
virtualizationConfig:
|
|
88
|
+
virtualizationConfig: O
|
|
89
89
|
};
|
|
90
|
-
const
|
|
91
|
-
const
|
|
90
|
+
const K = ({ ref: n, selectedItem: s, skipTableWrapper: p = !1, tableClassName: u = "" }) => {
|
|
91
|
+
const l = T(null), f = T(null), c = (n == null ? void 0 : n.tableRef) ?? l, m = (n == null ? void 0 : n.tableBodyRef) ?? f, t = T(null), d = T(null), r = T(null), a = N((o) => o.tableStore) ?? {}, i = B(
|
|
92
92
|
"table",
|
|
93
93
|
"table-main",
|
|
94
|
-
!
|
|
95
|
-
|
|
96
|
-
),
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
if (
|
|
100
|
-
const
|
|
101
|
-
|
|
94
|
+
!P(s) && "table-with-details",
|
|
95
|
+
u && u
|
|
96
|
+
), h = B(!p && "table__wrapper");
|
|
97
|
+
_(() => {
|
|
98
|
+
const o = () => {
|
|
99
|
+
if (r != null && r.current && (t != null && t.current) && (d != null && d.current)) {
|
|
100
|
+
const g = t.current.getBoundingClientRect().height, y = r.current.getBoundingClientRect(), R = window.innerHeight - y.top;
|
|
101
|
+
d.current.style.height = g > R ? `${R}px` : `${R - (R - g)}px`;
|
|
102
102
|
}
|
|
103
103
|
};
|
|
104
|
-
return
|
|
105
|
-
window.removeEventListener("scroll",
|
|
104
|
+
return a.isTablePanelOpen && d.current && (o(), document.getElementById("main-wrapper").addEventListener("scroll", o), window.addEventListener("resize", o)), () => {
|
|
105
|
+
window.removeEventListener("scroll", o), window.removeEventListener("resize", o);
|
|
106
106
|
};
|
|
107
|
-
}, [
|
|
108
|
-
const
|
|
109
|
-
(
|
|
110
|
-
|
|
107
|
+
}, [a.isTablePanelOpen]);
|
|
108
|
+
const b = v(
|
|
109
|
+
(o) => {
|
|
110
|
+
c.current && (o.target.scrollLeft > 0 ? c.current.classList.add("table__scrolled") : c.current.classList.remove("table__scrolled"));
|
|
111
111
|
},
|
|
112
|
-
[
|
|
112
|
+
[c]
|
|
113
113
|
);
|
|
114
|
-
return
|
|
115
|
-
TableContainer:
|
|
116
|
-
tableBodyRef:
|
|
117
|
-
tableClass:
|
|
118
|
-
tableContentRef:
|
|
119
|
-
tableHeadRef:
|
|
120
|
-
tablePanelRef:
|
|
121
|
-
tableRef:
|
|
122
|
-
tableStore:
|
|
123
|
-
tableWrapperClass:
|
|
114
|
+
return _(() => (window.addEventListener("scroll", b, !0), () => window.removeEventListener("scroll", b, !0)), [b]), {
|
|
115
|
+
TableContainer: L,
|
|
116
|
+
tableBodyRef: m,
|
|
117
|
+
tableClass: i,
|
|
118
|
+
tableContentRef: t,
|
|
119
|
+
tableHeadRef: r,
|
|
120
|
+
tablePanelRef: d,
|
|
121
|
+
tableRef: c,
|
|
122
|
+
tableStore: a,
|
|
123
|
+
tableWrapperClass: h
|
|
124
124
|
};
|
|
125
|
+
}, Z = ({
|
|
126
|
+
content: n,
|
|
127
|
+
selectedItem: s,
|
|
128
|
+
isAllVersions: p,
|
|
129
|
+
tableId: u = E
|
|
130
|
+
}) => {
|
|
131
|
+
const l = T(null), f = I(
|
|
132
|
+
() => p ? "identifierUnique" : "identifier",
|
|
133
|
+
[p]
|
|
134
|
+
), c = v(
|
|
135
|
+
(m, t, d = !1) => {
|
|
136
|
+
const r = t == null ? void 0 : t.findIndex(
|
|
137
|
+
(i) => {
|
|
138
|
+
var h;
|
|
139
|
+
return ((h = i == null ? void 0 : i.ui) == null ? void 0 : h[f]) === m;
|
|
140
|
+
}
|
|
141
|
+
), a = () => {
|
|
142
|
+
var h;
|
|
143
|
+
const i = document.getElementById(u);
|
|
144
|
+
if (r && i) {
|
|
145
|
+
const b = i.getElementsByTagName("tr");
|
|
146
|
+
if (r <= b.length) {
|
|
147
|
+
const o = ((h = i.querySelector("thead")) == null ? void 0 : h.getBoundingClientRect().height) ?? 0, g = b[r].getBoundingClientRect(), y = i.getBoundingClientRect(), R = g.height / 2, q = (y.height - o) / 2, j = g.height * (r + 1) - R - q;
|
|
148
|
+
i.scrollTo({
|
|
149
|
+
top: j
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
r >= 0 && (d ? requestAnimationFrame(() => {
|
|
155
|
+
a();
|
|
156
|
+
}) : a());
|
|
157
|
+
},
|
|
158
|
+
[f, u]
|
|
159
|
+
);
|
|
160
|
+
_(() => {
|
|
161
|
+
var m, t;
|
|
162
|
+
try {
|
|
163
|
+
P(s) ? l.current && (c((t = l.current) == null ? void 0 : t[f], n), l.current = null) : l.current ? l.current = s.ui : (l.current = s.ui, c((m = s == null ? void 0 : s.ui) == null ? void 0 : m[f], n, !0));
|
|
164
|
+
} catch {
|
|
165
|
+
l.current = null;
|
|
166
|
+
}
|
|
167
|
+
}, [s, n, c, f]), _(() => () => {
|
|
168
|
+
l.current = null;
|
|
169
|
+
}, [n]);
|
|
125
170
|
};
|
|
126
171
|
export {
|
|
127
|
-
|
|
172
|
+
K as useTable,
|
|
173
|
+
Z as useTableScroll
|
|
128
174
|
};
|
|
129
175
|
//# sourceMappingURL=useTable.hook.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTable.hook.mjs","sources":["../../src/lib/hooks/useTable.hook.jsx"],"sourcesContent":["/*\nCopyright 2019 Iguazio Systems Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\n\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { useSelector } from 'react-redux'\nimport { isEmpty } from 'lodash'\n\nimport TableHead from '../elements/TableHead/TableHead'\n\nimport { MAIN_TABLE_BODY_ID, MAIN_TABLE_ID } from '../constants'\nimport { SORT_PROPS } from '../types'\nimport { VIRTUALIZATION_CONFIG } from '../types'\n\nconst TableContainer = ({\n children,\n hideActionsMenu = false,\n mainRowItemsCount = 1,\n pageData = null,\n renderDetails = null,\n selectedItem = {},\n sortProps = null,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tableHeaders,\n tablePanelRef,\n tableRef,\n tableStore = null,\n tableWrapperClass,\n virtualizationConfig = {\n tableBodyPaddingTop: 0,\n startIndex: -1,\n endIndex: -1\n }\n}) => {\n return (\n <div className=\"table__flex\">\n <div className=\"table__content\" id=\"table-content\" ref={tableContentRef}>\n <div className={tableWrapperClass}>\n <table\n id={MAIN_TABLE_ID}\n className={tableClass}\n cellPadding=\"0\"\n cellSpacing=\"0\"\n ref={tableRef}\n >\n {tableHeaders?.length > 0 && (\n <TableHead\n content={tableHeaders}\n hideActionsMenu={hideActionsMenu}\n mainRowItemsCount={mainRowItemsCount}\n ref={tableHeadRef}\n selectedItem={selectedItem}\n sortProps={sortProps}\n />\n )}\n <tbody\n className=\"table-body\"\n id={MAIN_TABLE_BODY_ID}\n style={{ paddingTop: virtualizationConfig.tableBodyPaddingTop }}\n ref={tableBodyRef}\n >\n {children}\n </tbody>\n </table>\n {tableStore?.isTablePanelOpen && pageData?.tablePanel && (\n <div className=\"table__panel-container\" ref={tablePanelRef}>\n <div className=\"table__panel\">{pageData.tablePanel}</div>\n </div>\n )}\n </div>\n {renderDetails && renderDetails()}\n </div>\n </div>\n )\n}\n\nTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n hideActionsMenu: PropTypes.bool,\n mainRowItemsCount: PropTypes.number,\n pageData: PropTypes.object,\n renderDetails: PropTypes.func,\n selectedItem: PropTypes.object,\n sortProps: SORT_PROPS,\n tableBodyRef: PropTypes.object.isRequired,\n tableClass: PropTypes.string.isRequired,\n tableContentRef: PropTypes.object.isRequired,\n tableHeadRef: PropTypes.object.isRequired,\n tableHeaders: PropTypes.arrayOf(PropTypes.object).isRequired,\n tablePanelRef: PropTypes.object.isRequired,\n tableRef: PropTypes.object.isRequired,\n tableStore: PropTypes.object,\n tableWrapperClass: PropTypes.string.isRequired,\n virtualizationConfig: VIRTUALIZATION_CONFIG\n}\n\nexport const useTable = ({ ref, selectedItem, skipTableWrapper = false, tableClassName = '' }) => {\n const tableRefLocal = useRef(null)\n const tableBodyRefLocal = useRef(null)\n const tableRef = ref?.tableRef ?? tableRefLocal\n const tableBodyRef = ref?.tableBodyRef ?? tableBodyRefLocal\n const tableContentRef = useRef(null)\n const tablePanelRef = useRef(null)\n const tableHeadRef = useRef(null)\n const tableStore = useSelector(store => store.tableStore) ?? {}\n\n const tableClass = classnames(\n 'table',\n 'table-main',\n !isEmpty(selectedItem) && 'table-with-details',\n tableClassName && tableClassName\n )\n const tableWrapperClass = classnames(!skipTableWrapper && 'table__wrapper')\n\n useEffect(() => {\n const calculatePanelHeight = () => {\n if (tableHeadRef?.current && tableContentRef?.current && tablePanelRef?.current) {\n const tableContentHeight = tableContentRef.current.getBoundingClientRect().height\n const tableHeadCords = tableHeadRef.current.getBoundingClientRect()\n const panelHeight = window.innerHeight - tableHeadCords.top\n\n tablePanelRef.current.style.height =\n tableContentHeight > panelHeight\n ? `${panelHeight}px`\n : `${panelHeight - (panelHeight - tableContentHeight)}px`\n }\n }\n\n if (tableStore.isTablePanelOpen && tablePanelRef.current) {\n calculatePanelHeight()\n\n document.getElementById('main-wrapper').addEventListener('scroll', calculatePanelHeight)\n window.addEventListener('resize', calculatePanelHeight)\n }\n return () => {\n window.removeEventListener('scroll', calculatePanelHeight)\n window.removeEventListener('resize', calculatePanelHeight)\n }\n }, [tableStore.isTablePanelOpen])\n\n const handleTableHScroll = useCallback(\n e => {\n if (tableRef.current) {\n const tableScrollPosition = e.target.scrollLeft\n\n if (tableScrollPosition > 0) {\n tableRef.current.classList.add('table__scrolled')\n } else {\n tableRef.current.classList.remove('table__scrolled')\n }\n }\n },\n [tableRef]\n )\n\n useEffect(() => {\n window.addEventListener('scroll', handleTableHScroll, true)\n\n return () => window.removeEventListener('scroll', handleTableHScroll, true)\n }, [handleTableHScroll])\n\n return {\n TableContainer,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tablePanelRef,\n tableRef,\n tableStore,\n tableWrapperClass\n }\n}\n"],"names":["TableContainer","children","hideActionsMenu","mainRowItemsCount","pageData","renderDetails","selectedItem","sortProps","tableBodyRef","tableClass","tableContentRef","tableHeadRef","tableHeaders","tablePanelRef","tableRef","tableStore","tableWrapperClass","virtualizationConfig","jsx","jsxs","MAIN_TABLE_ID","TableHead","MAIN_TABLE_BODY_ID","PropTypes","SORT_PROPS","VIRTUALIZATION_CONFIG","useTable","ref","skipTableWrapper","tableClassName","tableRefLocal","useRef","tableBodyRefLocal","useSelector","store","classnames","isEmpty","useEffect","calculatePanelHeight","tableContentHeight","tableHeadCords","panelHeight","handleTableHScroll","useCallback","e"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useTable.hook.mjs","sources":["../../src/lib/hooks/useTable.hook.jsx"],"sourcesContent":["/*\nCopyright 2019 Iguazio Systems Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\n\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport React, { useCallback, useEffect, useMemo, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\nimport { useSelector } from 'react-redux'\nimport { isEmpty } from 'lodash'\n\nimport TableHead from '../elements/TableHead/TableHead'\n\nimport { MAIN_TABLE_BODY_ID, MAIN_TABLE_ID } from '../constants'\nimport { SORT_PROPS } from '../types'\nimport { VIRTUALIZATION_CONFIG } from '../types'\n\nconst TableContainer = ({\n children,\n hideActionsMenu = false,\n mainRowItemsCount = 1,\n pageData = null,\n renderDetails = null,\n selectedItem = {},\n sortProps = null,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tableHeaders,\n tablePanelRef,\n tableRef,\n tableStore = null,\n tableWrapperClass,\n virtualizationConfig = {\n tableBodyPaddingTop: 0,\n startIndex: -1,\n endIndex: -1\n }\n}) => {\n return (\n <div className=\"table__flex\">\n <div className=\"table__content\" id=\"table-content\" ref={tableContentRef}>\n <div className={tableWrapperClass}>\n <table\n id={MAIN_TABLE_ID}\n className={tableClass}\n cellPadding=\"0\"\n cellSpacing=\"0\"\n ref={tableRef}\n >\n {tableHeaders?.length > 0 && (\n <TableHead\n content={tableHeaders}\n hideActionsMenu={hideActionsMenu}\n mainRowItemsCount={mainRowItemsCount}\n ref={tableHeadRef}\n selectedItem={selectedItem}\n sortProps={sortProps}\n />\n )}\n <tbody\n className=\"table-body\"\n id={MAIN_TABLE_BODY_ID}\n style={{ paddingTop: virtualizationConfig.tableBodyPaddingTop }}\n ref={tableBodyRef}\n >\n {children}\n </tbody>\n </table>\n {tableStore?.isTablePanelOpen && pageData?.tablePanel && (\n <div className=\"table__panel-container\" ref={tablePanelRef}>\n <div className=\"table__panel\">{pageData.tablePanel}</div>\n </div>\n )}\n </div>\n {renderDetails && renderDetails()}\n </div>\n </div>\n )\n}\n\nTableContainer.propTypes = {\n children: PropTypes.node.isRequired,\n hideActionsMenu: PropTypes.bool,\n mainRowItemsCount: PropTypes.number,\n pageData: PropTypes.object,\n renderDetails: PropTypes.func,\n selectedItem: PropTypes.object,\n sortProps: SORT_PROPS,\n tableBodyRef: PropTypes.object.isRequired,\n tableClass: PropTypes.string.isRequired,\n tableContentRef: PropTypes.object.isRequired,\n tableHeadRef: PropTypes.object.isRequired,\n tableHeaders: PropTypes.arrayOf(PropTypes.object).isRequired,\n tablePanelRef: PropTypes.object.isRequired,\n tableRef: PropTypes.object.isRequired,\n tableStore: PropTypes.object,\n tableWrapperClass: PropTypes.string.isRequired,\n virtualizationConfig: VIRTUALIZATION_CONFIG\n}\n\nexport const useTable = ({ ref, selectedItem, skipTableWrapper = false, tableClassName = '' }) => {\n const tableRefLocal = useRef(null)\n const tableBodyRefLocal = useRef(null)\n const tableRef = ref?.tableRef ?? tableRefLocal\n const tableBodyRef = ref?.tableBodyRef ?? tableBodyRefLocal\n const tableContentRef = useRef(null)\n const tablePanelRef = useRef(null)\n const tableHeadRef = useRef(null)\n const tableStore = useSelector(store => store.tableStore) ?? {}\n\n const tableClass = classnames(\n 'table',\n 'table-main',\n !isEmpty(selectedItem) && 'table-with-details',\n tableClassName && tableClassName\n )\n const tableWrapperClass = classnames(!skipTableWrapper && 'table__wrapper')\n\n useEffect(() => {\n const calculatePanelHeight = () => {\n if (tableHeadRef?.current && tableContentRef?.current && tablePanelRef?.current) {\n const tableContentHeight = tableContentRef.current.getBoundingClientRect().height\n const tableHeadCords = tableHeadRef.current.getBoundingClientRect()\n const panelHeight = window.innerHeight - tableHeadCords.top\n\n tablePanelRef.current.style.height =\n tableContentHeight > panelHeight\n ? `${panelHeight}px`\n : `${panelHeight - (panelHeight - tableContentHeight)}px`\n }\n }\n\n if (tableStore.isTablePanelOpen && tablePanelRef.current) {\n calculatePanelHeight()\n\n document.getElementById('main-wrapper').addEventListener('scroll', calculatePanelHeight)\n window.addEventListener('resize', calculatePanelHeight)\n }\n return () => {\n window.removeEventListener('scroll', calculatePanelHeight)\n window.removeEventListener('resize', calculatePanelHeight)\n }\n }, [tableStore.isTablePanelOpen])\n\n const handleTableHScroll = useCallback(\n e => {\n if (tableRef.current) {\n const tableScrollPosition = e.target.scrollLeft\n\n if (tableScrollPosition > 0) {\n tableRef.current.classList.add('table__scrolled')\n } else {\n tableRef.current.classList.remove('table__scrolled')\n }\n }\n },\n [tableRef]\n )\n\n useEffect(() => {\n window.addEventListener('scroll', handleTableHScroll, true)\n\n return () => window.removeEventListener('scroll', handleTableHScroll, true)\n }, [handleTableHScroll])\n\n return {\n TableContainer,\n tableBodyRef,\n tableClass,\n tableContentRef,\n tableHeadRef,\n tablePanelRef,\n tableRef,\n tableStore,\n tableWrapperClass\n }\n}\n\nexport const useTableScroll = ({\n content,\n selectedItem,\n isAllVersions,\n tableId = MAIN_TABLE_ID\n}) => {\n const lastSelectedItemDataRef = useRef(null)\n const itemIdentifierKey = useMemo(\n () => (isAllVersions ? 'identifierUnique' : 'identifier'),\n [isAllVersions]\n )\n\n const handleSelectItemChanges = useCallback(\n (identifier, content, async = false) => {\n const selectedItemIndex = content?.findIndex(\n item => item?.ui?.[itemIdentifierKey] === identifier\n )\n\n const triggerScroll = () => {\n const tableElement = document.getElementById(tableId)\n\n if (selectedItemIndex && tableElement) {\n const rows = tableElement.getElementsByTagName('tr')\n\n if (selectedItemIndex <= rows.length) {\n const theadHeight =\n tableElement.querySelector('thead')?.getBoundingClientRect().height ?? 0\n const rowRect = rows[selectedItemIndex].getBoundingClientRect()\n const tableRect = tableElement.getBoundingClientRect()\n const rowCenterY = rowRect.height / 2\n const tableCenterY = (tableRect.height - theadHeight) / 2\n const heightToRow = rowRect.height * (selectedItemIndex + 1)\n const scrollY = heightToRow - rowCenterY - tableCenterY\n\n tableElement.scrollTo({\n top: scrollY\n })\n }\n }\n }\n\n if (selectedItemIndex >= 0) {\n if (async) {\n requestAnimationFrame(() => {\n triggerScroll()\n })\n } else {\n triggerScroll()\n }\n }\n },\n [itemIdentifierKey, tableId]\n )\n\n useEffect(() => {\n try {\n if (!isEmpty(selectedItem)) {\n if (!lastSelectedItemDataRef.current) {\n lastSelectedItemDataRef.current = selectedItem.ui\n handleSelectItemChanges(selectedItem?.ui?.[itemIdentifierKey], content, true)\n } else {\n lastSelectedItemDataRef.current = selectedItem.ui\n }\n } else if (lastSelectedItemDataRef.current) {\n handleSelectItemChanges(lastSelectedItemDataRef.current?.[itemIdentifierKey], content)\n\n lastSelectedItemDataRef.current = null\n }\n } catch {\n lastSelectedItemDataRef.current = null\n }\n }, [selectedItem, content, handleSelectItemChanges, itemIdentifierKey])\n\n useEffect(() => {\n return () => {\n lastSelectedItemDataRef.current = null\n }\n }, [content])\n}\n"],"names":["TableContainer","children","hideActionsMenu","mainRowItemsCount","pageData","renderDetails","selectedItem","sortProps","tableBodyRef","tableClass","tableContentRef","tableHeadRef","tableHeaders","tablePanelRef","tableRef","tableStore","tableWrapperClass","virtualizationConfig","jsx","jsxs","MAIN_TABLE_ID","TableHead","MAIN_TABLE_BODY_ID","PropTypes","SORT_PROPS","VIRTUALIZATION_CONFIG","useTable","ref","skipTableWrapper","tableClassName","tableRefLocal","useRef","tableBodyRefLocal","useSelector","store","classnames","isEmpty","useEffect","calculatePanelHeight","tableContentHeight","tableHeadCords","panelHeight","handleTableHScroll","useCallback","e","useTableScroll","content","isAllVersions","tableId","lastSelectedItemDataRef","itemIdentifierKey","useMemo","handleSelectItemChanges","identifier","async","selectedItemIndex","item","_a","triggerScroll","tableElement","rows","theadHeight","rowRect","tableRect","rowCenterY","tableCenterY","scrollY","_b"],"mappings":"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"}
|
package/dist/scss/common.scss
CHANGED
|
@@ -221,6 +221,8 @@ a {
|
|
|
221
221
|
min-width: 800px;
|
|
222
222
|
padding: 15px 24px 10px;
|
|
223
223
|
background-color: colors.$white;
|
|
224
|
+
overflow: auto;
|
|
225
|
+
min-height: 0;
|
|
224
226
|
|
|
225
227
|
@include mixins.displayFlex;
|
|
226
228
|
|
|
@@ -263,12 +265,14 @@ a {
|
|
|
263
265
|
flex: 1 1;
|
|
264
266
|
flex-direction: column;
|
|
265
267
|
min-width: 100%;
|
|
268
|
+
min-height: 0;
|
|
266
269
|
}
|
|
267
270
|
|
|
268
271
|
&__action-bar-wrapper {
|
|
269
272
|
display: flex;
|
|
270
273
|
flex-flow: row wrap;
|
|
271
274
|
align-items: center;
|
|
275
|
+
background-color: colors.$white;
|
|
272
276
|
|
|
273
277
|
&_hidden {
|
|
274
278
|
display: none;
|
|
@@ -283,27 +287,6 @@ a {
|
|
|
283
287
|
white-space: nowrap;
|
|
284
288
|
}
|
|
285
289
|
}
|
|
286
|
-
|
|
287
|
-
.action-bar {
|
|
288
|
-
display: flex;
|
|
289
|
-
flex: 1;
|
|
290
|
-
align-items: flex-start;
|
|
291
|
-
justify-content: flex-end;
|
|
292
|
-
width: 100%;
|
|
293
|
-
margin-bottom: 15px;
|
|
294
|
-
|
|
295
|
-
&_hidden {
|
|
296
|
-
display: none;
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
&__filters {
|
|
300
|
-
&-item {
|
|
301
|
-
&:not(:last-child) {
|
|
302
|
-
margin: 0 15px 0 0;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
290
|
}
|
|
308
291
|
|
|
309
292
|
&__history-back-link-wrapper {
|
|
@@ -313,6 +296,27 @@ a {
|
|
|
313
296
|
max-width: 100%;
|
|
314
297
|
}
|
|
315
298
|
}
|
|
299
|
+
|
|
300
|
+
.action-bar {
|
|
301
|
+
display: flex;
|
|
302
|
+
flex: 1;
|
|
303
|
+
align-items: flex-start;
|
|
304
|
+
justify-content: flex-end;
|
|
305
|
+
width: 100%;
|
|
306
|
+
margin-bottom: 15px;
|
|
307
|
+
|
|
308
|
+
&_hidden {
|
|
309
|
+
display: none;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
&__filters {
|
|
313
|
+
&-item {
|
|
314
|
+
&:not(:last-child) {
|
|
315
|
+
margin: 0 15px 0 0;
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
}
|
|
316
320
|
}
|
|
317
321
|
|
|
318
322
|
/* =========== CONTENT MENU ============= */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.util.d.ts","sourceRoot":"","sources":["../../src/lib/utils/form.util.js"],"names":[],"mappings":"AAkBO,2DAUN;AAEM,+EAaN;AAEM,sEAMN;AAEM;;;;;IASN;AAEM,sDAEN"}
|
|
1
|
+
{"version":3,"file":"form.util.d.ts","sourceRoot":"","sources":["../../src/lib/utils/form.util.js"],"names":[],"mappings":"AAkBO,2DAUN;AAEM,+EAaN;AAEM,sEAMN;AAEM;;;;;IASN;AAEM,sDAEN;AAUM,sEAIN"}
|
package/dist/utils/form.util.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { set as u, isEqual as l, mapValues as
|
|
2
|
-
const
|
|
1
|
+
import { set as u, isEqual as l, mapValues as m, some as c, get as d, isNil as o, isEmpty as y } from "lodash";
|
|
2
|
+
const b = (e, t) => {
|
|
3
3
|
let r = e[0], i = e[1], n = t.fields[r];
|
|
4
4
|
if (n)
|
|
5
5
|
for (let s in i)
|
|
6
6
|
u(n, s, i[s]);
|
|
7
|
-
},
|
|
7
|
+
}, O = (e, t) => {
|
|
8
8
|
const r = (i, n) => {
|
|
9
9
|
if (n !== "")
|
|
10
10
|
return n;
|
|
@@ -13,17 +13,18 @@ const p = (e, t) => {
|
|
|
13
13
|
JSON.stringify(a(e), r),
|
|
14
14
|
JSON.stringify(a(t), r)
|
|
15
15
|
);
|
|
16
|
-
},
|
|
16
|
+
}, F = (e = []) => e.reduce((t, r) => (t[r.data.key] = r.data.value, t), {}), g = (e = {}) => Object.entries(e).map(([t, r]) => ({
|
|
17
17
|
data: {
|
|
18
18
|
key: t,
|
|
19
19
|
value: r
|
|
20
20
|
}
|
|
21
|
-
})),
|
|
21
|
+
})), E = (e) => e.submitting || e.invalid && e.submitFailed, a = (e = {}) => m(e, (t) => Array.isArray(t) ? f(t) : t), f = (e = []) => e.filter((t) => c(d(t, "data", t), (r) => !o(r) && !y(r)));
|
|
22
22
|
export {
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
F as
|
|
23
|
+
O as areFormValuesChanged,
|
|
24
|
+
f as clearArrayFromEmptyObjectElements,
|
|
25
|
+
F as generateObjectFromKeyValue,
|
|
26
|
+
E as isSubmitDisabled,
|
|
26
27
|
g as parseObjectToKeyValue,
|
|
27
|
-
|
|
28
|
+
b as setFieldState
|
|
28
29
|
};
|
|
29
30
|
//# sourceMappingURL=form.util.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form.util.mjs","sources":["../../src/lib/utils/form.util.js"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport { get, isEmpty, isEqual, isNil, mapValues, set, some } from 'lodash'\n\nexport const setFieldState = (args, state) => {\n let fieldName = args[0]\n let states = args[1]\n let field = state.fields[fieldName]\n\n if (field) {\n for (let stateName in states) {\n set(field, stateName, states[stateName])\n }\n }\n}\n\nexport const areFormValuesChanged = (initialValues, values) => {\n const replacer = (key, value) => {\n if (value === '') {\n return undefined\n }\n\n return value\n }\n\n return !isEqual(\n JSON.stringify(clearObjectFromEmptyArrayElements(initialValues), replacer),\n JSON.stringify(clearObjectFromEmptyArrayElements(values), replacer)\n )\n}\n\nexport const generateObjectFromKeyValue = (keyValueList = []) => {\n return keyValueList.reduce((acc, keyValue) => {\n acc[keyValue.data.key] = keyValue.data.value\n\n return acc\n }, {})\n}\n\nexport const parseObjectToKeyValue = (object = {}) => {\n return Object.entries(object).map(([key, value]) => {\n return {\n data: {\n key,\n value\n }\n }\n })\n}\n\nexport const isSubmitDisabled = formState => {\n return formState.submitting || (formState.invalid && formState.submitFailed)\n}\n\nconst clearObjectFromEmptyArrayElements = (obj = {}) => {\n return mapValues(obj, objValue => {\n if (!Array.isArray(objValue)) return objValue\n\n return objValue.filter(arrayElement => {\n
|
|
1
|
+
{"version":3,"file":"form.util.mjs","sources":["../../src/lib/utils/form.util.js"],"sourcesContent":["/*\nCopyright 2022 Iguazio Systems Ltd.\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport { get, isEmpty, isEqual, isNil, mapValues, set, some } from 'lodash'\n\nexport const setFieldState = (args, state) => {\n let fieldName = args[0]\n let states = args[1]\n let field = state.fields[fieldName]\n\n if (field) {\n for (let stateName in states) {\n set(field, stateName, states[stateName])\n }\n }\n}\n\nexport const areFormValuesChanged = (initialValues, values) => {\n const replacer = (key, value) => {\n if (value === '') {\n return undefined\n }\n\n return value\n }\n\n return !isEqual(\n JSON.stringify(clearObjectFromEmptyArrayElements(initialValues), replacer),\n JSON.stringify(clearObjectFromEmptyArrayElements(values), replacer)\n )\n}\n\nexport const generateObjectFromKeyValue = (keyValueList = []) => {\n return keyValueList.reduce((acc, keyValue) => {\n acc[keyValue.data.key] = keyValue.data.value\n\n return acc\n }, {})\n}\n\nexport const parseObjectToKeyValue = (object = {}) => {\n return Object.entries(object).map(([key, value]) => {\n return {\n data: {\n key,\n value\n }\n }\n })\n}\n\nexport const isSubmitDisabled = formState => {\n return formState.submitting || (formState.invalid && formState.submitFailed)\n}\n\nconst clearObjectFromEmptyArrayElements = (obj = {}) => {\n return mapValues(obj, objValue => {\n if (!Array.isArray(objValue)) return objValue\n\n return clearArrayFromEmptyObjectElements(objValue)\n })\n}\n\nexport const clearArrayFromEmptyObjectElements = (arr = []) => {\n return arr.filter(arrayElement => {\n return some(get(arrayElement, 'data', arrayElement), val => !isNil(val) && !isEmpty(val))\n })\n}\n"],"names":["setFieldState","args","state","fieldName","states","field","stateName","set","areFormValuesChanged","initialValues","values","replacer","key","value","isEqual","clearObjectFromEmptyArrayElements","generateObjectFromKeyValue","keyValueList","acc","keyValue","parseObjectToKeyValue","object","isSubmitDisabled","formState","obj","mapValues","objValue","clearArrayFromEmptyObjectElements","arr","arrayElement","some","get","val","isNil","isEmpty"],"mappings":";AAkBY,MAACA,IAAgB,CAACC,GAAMC,MAAU;AAC5C,MAAIC,IAAYF,EAAK,CAAC,GAClBG,IAASH,EAAK,CAAC,GACfI,IAAQH,EAAM,OAAOC,CAAS;AAElC,MAAIE;AACF,aAASC,KAAaF;AACpB,MAAAG,EAAIF,GAAOC,GAAWF,EAAOE,CAAS,CAAC;AAG7C,GAEaE,IAAuB,CAACC,GAAeC,MAAW;AAC7D,QAAMC,IAAW,CAACC,GAAKC,MAAU;AAC/B,QAAIA,MAAU;AAId,aAAOA;AAAA,EACX;AAEE,SAAO,CAACC;AAAA,IACN,KAAK,UAAUC,EAAkCN,CAAa,GAAGE,CAAQ;AAAA,IACzE,KAAK,UAAUI,EAAkCL,CAAM,GAAGC,CAAQ;AAAA,EACtE;AACA,GAEaK,IAA6B,CAACC,IAAe,OACjDA,EAAa,OAAO,CAACC,GAAKC,OAC/BD,EAAIC,EAAS,KAAK,GAAG,IAAIA,EAAS,KAAK,OAEhCD,IACN,CAAE,CAAA,GAGME,IAAwB,CAACC,IAAS,OACtC,OAAO,QAAQA,CAAM,EAAE,IAAI,CAAC,CAACT,GAAKC,CAAK,OACrC;AAAA,EACL,MAAM;AAAA,IACJ,KAAAD;AAAA,IACA,OAAAC;AAAA,EACR;AACA,EACG,GAGUS,IAAmB,CAAAC,MACvBA,EAAU,cAAeA,EAAU,WAAWA,EAAU,cAG3DR,IAAoC,CAACS,IAAM,OACxCC,EAAUD,GAAK,CAAAE,MACf,MAAM,QAAQA,CAAQ,IAEpBC,EAAkCD,CAAQ,IAFZA,CAGtC,GAGUC,IAAoC,CAACC,IAAM,OAC/CA,EAAI,OAAO,CAAAC,MACTC,EAAKC,EAAIF,GAAc,QAAQA,CAAY,GAAG,CAAAG,MAAO,CAACC,EAAMD,CAAG,KAAK,CAACE,EAAQF,CAAG,CAAC,CACzF;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "iguazio.dashboard-react-controls",
|
|
3
|
-
"version": "3.1.
|
|
3
|
+
"version": "3.1.8",
|
|
4
4
|
"description": "Collection of resources (such as CSS styles, fonts and images) and ReactJS 17.x components to share among different Iguazio React repos.",
|
|
5
5
|
"module": "./dist/index.mjs",
|
|
6
6
|
"main": "./dist/index.mjs",
|