iguazio.dashboard-react-controls 3.0.4 → 3.1.1

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 (178) hide show
  1. package/dist/components/ActionsMenu/ActionsMenu.d.ts +18 -0
  2. package/dist/components/ActionsMenu/ActionsMenu.d.ts.map +1 -0
  3. package/dist/components/ActionsMenu/ActionsMenu.mjs +126 -0
  4. package/dist/components/ActionsMenu/ActionsMenu.mjs.map +1 -0
  5. package/dist/components/BlockerSpy/BlockerSpy.d.ts +12 -0
  6. package/dist/components/BlockerSpy/BlockerSpy.d.ts.map +1 -0
  7. package/dist/components/BlockerSpy/BlockerSpy.mjs +18 -0
  8. package/dist/components/BlockerSpy/BlockerSpy.mjs.map +1 -0
  9. package/dist/components/Button/Button.mjs +21 -20
  10. package/dist/components/Button/Button.mjs.map +1 -1
  11. package/dist/components/Chip/Chip.d.ts +3 -0
  12. package/dist/components/Chip/Chip.d.ts.map +1 -0
  13. package/dist/components/Chip/Chip.mjs +153 -0
  14. package/dist/components/Chip/Chip.mjs.map +1 -0
  15. package/dist/components/Chip/Chip.stories.d.ts +26 -0
  16. package/dist/components/Chip/Chip.stories.d.ts.map +1 -0
  17. package/dist/components/ChipCell/ChipCell.d.ts +3 -0
  18. package/dist/components/ChipCell/ChipCell.d.ts.map +1 -0
  19. package/dist/components/ChipCell/ChipCell.mjs +212 -0
  20. package/dist/components/ChipCell/ChipCell.mjs.map +1 -0
  21. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.d.ts +15 -0
  22. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.d.ts.map +1 -0
  23. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.mjs +36 -0
  24. package/dist/components/ChipCell/ChipTooltip/ChipTooltip.mjs.map +1 -0
  25. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.d.ts +35 -0
  26. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.d.ts.map +1 -0
  27. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.mjs +73 -0
  28. package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.mjs.map +1 -0
  29. package/dist/components/ChipForm/ChipForm.d.ts +25 -0
  30. package/dist/components/ChipForm/ChipForm.d.ts.map +1 -0
  31. package/dist/components/ChipForm/ChipForm.mjs +184 -0
  32. package/dist/components/ChipForm/ChipForm.mjs.map +1 -0
  33. package/dist/components/CopyToClipboard/CopyToClipboard.d.ts +18 -0
  34. package/dist/components/CopyToClipboard/CopyToClipboard.d.ts.map +1 -0
  35. package/dist/components/CopyToClipboard/CopyToClipboard.mjs +51 -0
  36. package/dist/components/CopyToClipboard/CopyToClipboard.mjs.map +1 -0
  37. package/dist/components/ErrorMessage/ErrorMessage.d.ts +12 -0
  38. package/dist/components/ErrorMessage/ErrorMessage.d.ts.map +1 -0
  39. package/dist/components/ErrorMessage/ErrorMessage.mjs +23 -0
  40. package/dist/components/ErrorMessage/ErrorMessage.mjs.map +1 -0
  41. package/dist/components/FormChipCell/FormChipCellView.mjs +1 -1
  42. package/dist/components/LoadButton/LoadButton.d.ts +16 -0
  43. package/dist/components/LoadButton/LoadButton.d.ts.map +1 -0
  44. package/dist/components/LoadButton/LoadButton.mjs +22 -0
  45. package/dist/components/LoadButton/LoadButton.mjs.map +1 -0
  46. package/dist/components/LoadButton/LoadButton.stories.d.ts +10 -0
  47. package/dist/components/LoadButton/LoadButton.stories.d.ts.map +1 -0
  48. package/dist/components/Loader/Loader.d.ts +3 -0
  49. package/dist/components/Loader/Loader.d.ts.map +1 -0
  50. package/dist/components/Loader/Loader.mjs +24 -0
  51. package/dist/components/Loader/Loader.mjs.map +1 -0
  52. package/dist/components/Loader/LoaderForSuspenseFallback.d.ts +3 -0
  53. package/dist/components/Loader/LoaderForSuspenseFallback.d.ts.map +1 -0
  54. package/dist/components/Loader/LoaderForSuspenseFallback.mjs +13 -0
  55. package/dist/components/Loader/LoaderForSuspenseFallback.mjs.map +1 -0
  56. package/dist/components/TableCell/TableCell.d.ts +28 -0
  57. package/dist/components/TableCell/TableCell.d.ts.map +1 -0
  58. package/dist/components/TableCell/TableCell.mjs +104 -0
  59. package/dist/components/TableCell/TableCell.mjs.map +1 -0
  60. package/dist/components/TabsSlider/TabsSlider.d.ts +20 -0
  61. package/dist/components/TabsSlider/TabsSlider.d.ts.map +1 -0
  62. package/dist/components/TabsSlider/TabsSlider.mjs +133 -0
  63. package/dist/components/TabsSlider/TabsSlider.mjs.map +1 -0
  64. package/dist/components/index.d.ts +12 -1
  65. package/dist/components/index.d.ts.map +1 -1
  66. package/dist/components/index.mjs +60 -38
  67. package/dist/components/index.mjs.map +1 -1
  68. package/dist/constants.d.ts +8 -0
  69. package/dist/constants.d.ts.map +1 -1
  70. package/dist/constants.mjs +34 -26
  71. package/dist/constants.mjs.map +1 -1
  72. package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts +16 -0
  73. package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts.map +1 -0
  74. package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs +51 -0
  75. package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs.map +1 -0
  76. package/dist/elements/TableHead/TableHead.d.ts +20 -0
  77. package/dist/elements/TableHead/TableHead.d.ts.map +1 -0
  78. package/dist/elements/TableHead/TableHead.mjs +58 -0
  79. package/dist/elements/TableHead/TableHead.mjs.map +1 -0
  80. package/dist/elements/TableLinkCell/TableLinkCell.d.ts +24 -0
  81. package/dist/elements/TableLinkCell/TableLinkCell.d.ts.map +1 -0
  82. package/dist/elements/TableLinkCell/TableLinkCell.mjs +87 -0
  83. package/dist/elements/TableLinkCell/TableLinkCell.mjs.map +1 -0
  84. package/dist/elements/TableTypeCell/TableTypeCell.d.ts +12 -0
  85. package/dist/elements/TableTypeCell/TableTypeCell.d.ts.map +1 -0
  86. package/dist/elements/TableTypeCell/TableTypeCell.mjs +37 -0
  87. package/dist/elements/TableTypeCell/TableTypeCell.mjs.map +1 -0
  88. package/dist/elements/index.d.ts +5 -1
  89. package/dist/elements/index.d.ts.map +1 -1
  90. package/dist/elements/index.mjs +18 -10
  91. package/dist/elements/index.mjs.map +1 -1
  92. package/dist/hooks/index.d.ts +3 -0
  93. package/dist/hooks/index.mjs +14 -8
  94. package/dist/hooks/index.mjs.map +1 -1
  95. package/dist/hooks/useDetails.hook.d.ts +72 -0
  96. package/dist/hooks/useDetails.hook.d.ts.map +1 -0
  97. package/dist/hooks/useDetails.hook.mjs +204 -0
  98. package/dist/hooks/useDetails.hook.mjs.map +1 -0
  99. package/dist/hooks/useDetailsHeader.hook.d.ts +77 -0
  100. package/dist/hooks/useDetailsHeader.hook.d.ts.map +1 -0
  101. package/dist/hooks/useDetailsHeader.hook.mjs +219 -0
  102. package/dist/hooks/useDetailsHeader.hook.mjs.map +1 -0
  103. package/dist/hooks/useTable.hook.d.ts +60 -0
  104. package/dist/hooks/useTable.hook.d.ts.map +1 -0
  105. package/dist/hooks/useTable.hook.mjs +129 -0
  106. package/dist/hooks/useTable.hook.mjs.map +1 -0
  107. package/dist/images/add.svg.mjs +2 -3
  108. package/dist/images/add.svg.mjs.map +1 -1
  109. package/dist/images/add.svg2.mjs +6 -0
  110. package/dist/images/add.svg2.mjs.map +1 -0
  111. package/dist/images/cancel.svg +3 -0
  112. package/dist/images/copy-to-clipboard-icon.svg.mjs +6 -0
  113. package/dist/images/copy-to-clipboard-icon.svg.mjs.map +1 -0
  114. package/dist/images/elipsis.svg.mjs +6 -0
  115. package/dist/images/elipsis.svg.mjs.map +1 -0
  116. package/dist/images/history.svg.mjs +6 -0
  117. package/dist/images/history.svg.mjs.map +1 -0
  118. package/dist/images/ml-enlarge.svg.mjs +6 -0
  119. package/dist/images/ml-enlarge.svg.mjs.map +1 -0
  120. package/dist/images/ml-minimize.svg.mjs +6 -0
  121. package/dist/images/ml-minimize.svg.mjs.map +1 -0
  122. package/dist/images/refresh.svg.mjs +6 -0
  123. package/dist/images/refresh.svg.mjs.map +1 -0
  124. package/dist/images/unsuccess_alert.svg.mjs +6 -0
  125. package/dist/images/unsuccess_alert.svg.mjs.map +1 -0
  126. package/dist/index.css +1 -1
  127. package/dist/index.d.ts +2 -1
  128. package/dist/index.d.ts.map +1 -1
  129. package/dist/index.mjs +10 -8
  130. package/dist/index.mjs.map +1 -1
  131. package/dist/reducers/commonDetailsReducer.d.ts +12 -0
  132. package/dist/reducers/commonDetailsReducer.d.ts.map +1 -0
  133. package/dist/reducers/commonDetailsReducer.mjs +77 -0
  134. package/dist/reducers/commonDetailsReducer.mjs.map +1 -0
  135. package/dist/reducers/index.d.ts +3 -0
  136. package/dist/reducers/index.d.ts.map +1 -0
  137. package/dist/reducers/index.mjs +7 -0
  138. package/dist/reducers/index.mjs.map +1 -0
  139. package/dist/reducers/notificationReducer.d.ts +3 -0
  140. package/dist/reducers/notificationReducer.d.ts.map +1 -0
  141. package/dist/reducers/notificationReducer.mjs +21 -0
  142. package/dist/reducers/notificationReducer.mjs.map +1 -0
  143. package/dist/scss/common.scss +655 -0
  144. package/dist/scss/details.scss +376 -0
  145. package/dist/scss/mixins.scss +1 -1
  146. package/dist/scss/table.scss +283 -0
  147. package/dist/types.d.ts +6 -0
  148. package/dist/types.d.ts.map +1 -1
  149. package/dist/types.mjs +89 -45
  150. package/dist/types.mjs.map +1 -1
  151. package/dist/utils/chips.util.d.ts +30 -0
  152. package/dist/utils/chips.util.d.ts.map +1 -0
  153. package/dist/utils/chips.util.mjs +75 -0
  154. package/dist/utils/chips.util.mjs.map +1 -0
  155. package/dist/utils/common.util.d.ts +5 -0
  156. package/dist/utils/common.util.d.ts.map +1 -1
  157. package/dist/utils/common.util.mjs +80 -33
  158. package/dist/utils/common.util.mjs.map +1 -1
  159. package/dist/utils/datetime.util.d.ts +9 -0
  160. package/dist/utils/datetime.util.d.ts.map +1 -0
  161. package/dist/utils/datetime.util.mjs +53 -0
  162. package/dist/utils/datetime.util.mjs.map +1 -0
  163. package/dist/utils/filter.util.d.ts +5 -0
  164. package/dist/utils/filter.util.d.ts.map +1 -0
  165. package/dist/utils/filter.util.mjs +23 -0
  166. package/dist/utils/filter.util.mjs.map +1 -0
  167. package/dist/utils/index.d.ts +5 -0
  168. package/dist/utils/index.mjs +22 -12
  169. package/dist/utils/index.mjs.map +1 -1
  170. package/dist/utils/notification.util.d.ts +2 -0
  171. package/dist/utils/notification.util.d.ts.map +1 -0
  172. package/dist/utils/notification.util.mjs +17 -0
  173. package/dist/utils/notification.util.mjs.map +1 -0
  174. package/dist/utils/string.util.d.ts +6 -0
  175. package/dist/utils/string.util.d.ts.map +1 -0
  176. package/dist/utils/string.util.mjs +13 -0
  177. package/dist/utils/string.util.mjs.map +1 -0
  178. package/package.json +11 -1
@@ -0,0 +1,24 @@
1
+ export default TableLinkCell;
2
+ declare function TableLinkCell({ cellData, className, item, link, selectItem, selectedItem, showExpandButton, toggleRow }: {
3
+ cellData?: {};
4
+ className?: string;
5
+ item: any;
6
+ link: any;
7
+ selectItem: any;
8
+ selectedItem?: {};
9
+ showExpandButton?: boolean;
10
+ toggleRow?: any;
11
+ }): JSX.Element;
12
+ declare namespace TableLinkCell {
13
+ namespace propTypes {
14
+ let cellData: any;
15
+ let className: any;
16
+ let item: any;
17
+ let link: any;
18
+ let selectItem: any;
19
+ let selectedItem: any;
20
+ let showExpandButton: any;
21
+ let toggleRow: any;
22
+ }
23
+ }
24
+ //# sourceMappingURL=TableLinkCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableLinkCell.d.ts","sourceRoot":"","sources":["../../../src/lib/elements/TableLinkCell/TableLinkCell.jsx"],"names":[],"mappings":";AAkCA;;;;;;;;;gBAgGC"}
@@ -0,0 +1,87 @@
1
+ import { jsxs as o, jsx as s } from "react/jsx-runtime";
2
+ import "react";
3
+ import { Link as k } from "react-router-dom";
4
+ import a from "prop-types";
5
+ import u from "classnames";
6
+ import r from "../../components/Tooltip/Tooltip.mjs";
7
+ import i from "../../components/TooltipTemplate/TextTooltipTemplate.mjs";
8
+ import { formatDatetime as N } from "../../utils/datetime.util.mjs";
9
+ import { truncateUid as g } from "../../utils/string.util.mjs";
10
+ import T from "../../images/arrow.svg.mjs";
11
+ /* empty css */
12
+ const C = ({
13
+ cellData: e = {},
14
+ className: b = "",
15
+ item: t,
16
+ link: n,
17
+ selectItem: f,
18
+ selectedItem: m = {},
19
+ showExpandButton: x = !1,
20
+ toggleRow: p = null
21
+ }) => {
22
+ const v = u(
23
+ "table-body__cell",
24
+ e.className,
25
+ b,
26
+ e.bodyCellClassName
27
+ ), c = u("item-name"), { value: d, label: l, className: h } = t.state ?? {};
28
+ return /* @__PURE__ */ o("td", { "data-testid": e.headerId, className: v, children: [
29
+ e.linkIsExternal ? /* @__PURE__ */ s("span", { className: "data-ellipsis", children: /* @__PURE__ */ o("a", { href: n, className: "link", target: "blank", children: [
30
+ /* @__PURE__ */ s(
31
+ r,
32
+ {
33
+ className: c,
34
+ template: /* @__PURE__ */ s(i, { text: e.tooltip || e.value || "" }),
35
+ children: e.value
36
+ }
37
+ ),
38
+ e.showStatus && d && l && /* @__PURE__ */ s(r, { className: "status", template: /* @__PURE__ */ s(i, { text: l }), children: /* @__PURE__ */ s("i", { className: h }) })
39
+ ] }) }) : /* @__PURE__ */ o(k, { to: n, onClick: () => f(t), className: "data-ellipsis", children: [
40
+ /* @__PURE__ */ o("div", { className: "name-wrapper", children: [
41
+ /* @__PURE__ */ o("div", { className: "link", children: [
42
+ /* @__PURE__ */ s(
43
+ r,
44
+ {
45
+ className: c,
46
+ template: /* @__PURE__ */ s(i, { text: e.tooltip || e.value || "" }),
47
+ children: e.value
48
+ }
49
+ ),
50
+ e.showStatus && d && l && /* @__PURE__ */ s(r, { className: "status", template: /* @__PURE__ */ s(i, { text: l }), children: /* @__PURE__ */ s("i", { className: h }) })
51
+ ] }),
52
+ e.showTag && /* @__PURE__ */ s(r, { className: "item-tag", template: /* @__PURE__ */ s(i, { text: t.tag }), children: /* @__PURE__ */ s("span", { className: "link-subtext", children: t.tag }) })
53
+ ] }),
54
+ (e.showUid || e.showSelectedUid && Object.values(m).length !== 0) && /* @__PURE__ */ o("div", { className: "date-uid-row", children: [
55
+ (t.startTime || t.created || t.updated) && e.type !== "date" && (e.showDate || e.showUpdatedDate) && /* @__PURE__ */ s("span", { className: "link-subtext", children: e.showUpdatedDate ? N(t.updated, "N/A") : N(
56
+ t.startTime || t.created,
57
+ d === "aborted" ? "N/A" : "Not yet started"
58
+ ) }),
59
+ e.value !== t.uid && e.value !== t.hash && /* @__PURE__ */ s("span", { className: "link-subtext", children: g(t.uid || t.hash) })
60
+ ] }),
61
+ e.additionalInfo && Object.values(m).length !== 0 && /* @__PURE__ */ s("span", { className: "link-subtext", children: e.additionalInfo })
62
+ ] }),
63
+ x && /* @__PURE__ */ s(
64
+ T,
65
+ {
66
+ onClick: (w) => {
67
+ p && p(w, t);
68
+ },
69
+ className: "expand-arrow"
70
+ }
71
+ )
72
+ ] });
73
+ };
74
+ C.propTypes = {
75
+ cellData: a.object,
76
+ className: a.string,
77
+ item: a.object.isRequired,
78
+ link: a.string.isRequired,
79
+ selectItem: a.func.isRequired,
80
+ selectedItem: a.object,
81
+ showExpandButton: a.bool,
82
+ toggleRow: a.func
83
+ };
84
+ export {
85
+ C as default
86
+ };
87
+ //# sourceMappingURL=TableLinkCell.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableLinkCell.mjs","sources":["../../../src/lib/elements/TableLinkCell/TableLinkCell.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 from 'react'\nimport { Link } from 'react-router-dom'\nimport PropTypes from 'prop-types'\nimport classnames from 'classnames'\n\nimport Tooltip from '../../components/Tooltip/Tooltip'\nimport TextTooltipTemplate from '../../components/TooltipTemplate/TextTooltipTemplate'\n\nimport { formatDatetime } from '../../utils/datetime.util'\nimport { truncateUid } from '../../utils/string.util'\n\nimport Arrow from '../../images/arrow.svg?react'\n\nimport './tableLinkCell.scss'\n\nconst TableLinkCell = ({\n cellData = {},\n className = '',\n item,\n link,\n selectItem,\n selectedItem = {},\n showExpandButton = false,\n toggleRow = null\n}) => {\n const tableCellClassNames = classnames(\n 'table-body__cell',\n cellData.className,\n className,\n cellData.bodyCellClassName\n )\n const itemNameClassNames = classnames('item-name')\n const { value: stateValue, label: stateLabel, className: stateClassName } = item.state ?? {}\n\n return (\n <td data-testid={cellData.headerId} className={tableCellClassNames}>\n {cellData.linkIsExternal ? (\n <span className=\"data-ellipsis\">\n <a href={link} className=\"link\" target=\"blank\">\n <Tooltip\n className={itemNameClassNames}\n template={<TextTooltipTemplate text={cellData.tooltip || cellData.value || ''} />}\n >\n {cellData.value}\n </Tooltip>\n\n {cellData.showStatus && stateValue && stateLabel && (\n <Tooltip className=\"status\" template={<TextTooltipTemplate text={stateLabel} />}>\n <i className={stateClassName} />\n </Tooltip>\n )}\n </a>\n </span>\n ) : (\n <Link to={link} onClick={() => selectItem(item)} className=\"data-ellipsis\">\n <div className=\"name-wrapper\">\n <div className=\"link\">\n <Tooltip\n className={itemNameClassNames}\n template={<TextTooltipTemplate text={cellData.tooltip || cellData.value || ''} />}\n >\n {cellData.value}\n </Tooltip>\n\n {cellData.showStatus && stateValue && stateLabel && (\n <Tooltip className=\"status\" template={<TextTooltipTemplate text={stateLabel} />}>\n <i className={stateClassName} />\n </Tooltip>\n )}\n </div>\n {cellData.showTag && (\n <Tooltip className=\"item-tag\" template={<TextTooltipTemplate text={item.tag} />}>\n <span className=\"link-subtext\">{item.tag}</span>\n </Tooltip>\n )}\n </div>\n {(cellData.showUid ||\n (cellData.showSelectedUid && Object.values(selectedItem).length !== 0)) && (\n <div className=\"date-uid-row\">\n {(item.startTime || item.created || item.updated) &&\n cellData.type !== 'date' &&\n (cellData.showDate || cellData.showUpdatedDate) && (\n <span className=\"link-subtext\">\n {cellData.showUpdatedDate\n ? formatDatetime(item.updated, 'N/A')\n : formatDatetime(\n item.startTime || item.created,\n stateValue === 'aborted' ? 'N/A' : 'Not yet started'\n )}\n </span>\n )}\n {cellData.value !== item.uid && cellData.value !== item.hash && (\n <span className=\"link-subtext\">{truncateUid(item.uid || item.hash)}</span>\n )}\n </div>\n )}\n {cellData.additionalInfo && Object.values(selectedItem).length !== 0 && (\n <span className=\"link-subtext\">{cellData.additionalInfo}</span>\n )}\n </Link>\n )}\n {showExpandButton && (\n <Arrow\n onClick={e => {\n toggleRow && toggleRow(e, item)\n }}\n className=\"expand-arrow\"\n />\n )}\n </td>\n )\n}\n\nTableLinkCell.propTypes = {\n cellData: PropTypes.object,\n className: PropTypes.string,\n item: PropTypes.object.isRequired,\n link: PropTypes.string.isRequired,\n selectItem: PropTypes.func.isRequired,\n selectedItem: PropTypes.object,\n showExpandButton: PropTypes.bool,\n toggleRow: PropTypes.func\n}\n\nexport default TableLinkCell\n"],"names":["TableLinkCell","cellData","className","item","link","selectItem","selectedItem","showExpandButton","toggleRow","tableCellClassNames","classnames","itemNameClassNames","stateValue","stateLabel","stateClassName","jsx","jsxs","Tooltip","TextTooltipTemplate","Link","formatDatetime","truncateUid","Arrow","e","PropTypes"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export default TableTypeCell;
2
+ declare function TableTypeCell({ cellData, className }: {
3
+ cellData: any;
4
+ className?: string;
5
+ }): JSX.Element;
6
+ declare namespace TableTypeCell {
7
+ namespace propTypes {
8
+ let cellData: any;
9
+ let className: any;
10
+ }
11
+ }
12
+ //# sourceMappingURL=TableTypeCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableTypeCell.d.ts","sourceRoot":"","sources":["../../../src/lib/elements/TableTypeCell/TableTypeCell.jsx"],"names":[],"mappings":";AA2BA;;;gBAsBC"}
@@ -0,0 +1,37 @@
1
+ import { jsx as o } from "react/jsx-runtime";
2
+ import "react";
3
+ import p from "prop-types";
4
+ import { capitalize as l } from "lodash";
5
+ import d from "classnames";
6
+ import y from "../../components/Tooltip/Tooltip.mjs";
7
+ import b from "../../components/TooltipTemplate/TextTooltipTemplate.mjs";
8
+ const c = ({ cellData: e, className: i = "" }) => {
9
+ var s, t, r, m;
10
+ const a = d(
11
+ "table-body__cell",
12
+ e.className,
13
+ e.bodyCellClassName,
14
+ i
15
+ );
16
+ return /* @__PURE__ */ o("td", { "data-testid": e.headerId, className: a, children: /* @__PURE__ */ o(
17
+ y,
18
+ {
19
+ className: "table-body__cell_type",
20
+ template: /* @__PURE__ */ o(
21
+ b,
22
+ {
23
+ text: ((t = (s = e.types) == null ? void 0 : s[e.value]) == null ? void 0 : t.label) ?? l(e.value)
24
+ }
25
+ ),
26
+ children: ((m = (r = e.types) == null ? void 0 : r[e.value]) == null ? void 0 : m.icon) ?? l(e.value)
27
+ }
28
+ ) });
29
+ };
30
+ c.propTypes = {
31
+ cellData: p.object.isRequired,
32
+ className: p.string
33
+ };
34
+ export {
35
+ c as default
36
+ };
37
+ //# sourceMappingURL=TableTypeCell.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TableTypeCell.mjs","sources":["../../../src/lib/elements/TableTypeCell/TableTypeCell.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 from 'react'\nimport PropTypes from 'prop-types'\nimport { capitalize } from 'lodash'\nimport classnames from 'classnames'\n\nimport Tooltip from '../../components/Tooltip/Tooltip'\nimport TextTooltipTemplate from '../../components/TooltipTemplate/TextTooltipTemplate'\n\nconst TableTypeCell = ({ cellData, className = '' }) => {\n const cellClassNames = classnames(\n 'table-body__cell',\n cellData.className,\n cellData.bodyCellClassName,\n className\n )\n\n return (\n <td data-testid={cellData.headerId} className={cellClassNames}>\n <Tooltip\n className=\"table-body__cell_type\"\n template={\n <TextTooltipTemplate\n text={cellData.types?.[cellData.value]?.label ?? capitalize(cellData.value)}\n />\n }\n >\n {cellData.types?.[cellData.value]?.icon ?? capitalize(cellData.value)}\n </Tooltip>\n </td>\n )\n}\n\nTableTypeCell.propTypes = {\n cellData: PropTypes.object.isRequired,\n className: PropTypes.string\n}\n\nexport default TableTypeCell\n"],"names":["TableTypeCell","cellData","className","cellClassNames","classnames","jsx","Tooltip","TextTooltipTemplate","_b","_a","capitalize","_d","_c","PropTypes"],"mappings":";;;;;;;AA2BA,MAAMA,IAAgB,CAAC,EAAE,UAAAC,GAAU,WAAAC,IAAY,SAAS;;AACtD,QAAMC,IAAiBC;AAAA,IACrB;AAAA,IACAH,EAAS;AAAA,IACTA,EAAS;AAAA,IACTC;AAAA,EACF;AAEA,2BACG,MAAG,EAAA,eAAaD,EAAS,UAAU,WAAWE,GAC7C,UAAA,gBAAAE;AAAA,IAACC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,UACE,gBAAAD;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,QAAMC,KAAAC,IAAAR,EAAS,UAAT,gBAAAQ,EAAiBR,EAAS,WAA1B,gBAAAO,EAAkC,UAASE,EAAWT,EAAS,KAAK;AAAA,QAAA;AAAA,MAC5E;AAAA,MAGD,YAAAU,KAAAC,IAAAX,EAAS,UAAT,gBAAAW,EAAiBX,EAAS,WAA1B,gBAAAU,EAAkC,SAAQD,EAAWT,EAAS,KAAK;AAAA,IAAA;AAAA,EAAA,GAExE;AAEJ;AAEAD,EAAc,YAAY;AAAA,EACxB,UAAUa,EAAU,OAAO;AAAA,EAC3B,WAAWA,EAAU;AACvB;"}
@@ -1,7 +1,11 @@
1
+ import ActionsMenuItem from './ActionsMenuItem/ActionsMenuItem';
1
2
  import FormActionButton from './FormActionButton/FormActionButton';
2
3
  import FormRowActions from './FormRowActions/FormRowActions';
3
4
  import OptionsMenu from './OptionsMenu/OptionsMenu';
4
5
  import SelectOption from './SelectOption/SelectOption';
6
+ import TableHead from './TableHead/TableHead';
7
+ import TableLinkCell from './TableLinkCell/TableLinkCell';
8
+ import TableTypeCell from './TableTypeCell/TableTypeCell';
5
9
  import ValidationTemplate from './ValidationTemplate/ValidationTemplate';
6
- export { FormActionButton, FormRowActions, OptionsMenu, SelectOption, ValidationTemplate };
10
+ export { ActionsMenuItem, FormActionButton, FormRowActions, OptionsMenu, SelectOption, TableHead, TableLinkCell, TableTypeCell, ValidationTemplate };
7
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/elements/index.js"],"names":[],"mappings":"6BAiB6B,qCAAqC;2BACvC,iCAAiC;wBACpC,2BAA2B;yBAC1B,6BAA6B;+BACvB,yCAAyC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/lib/elements/index.js"],"names":[],"mappings":"4BAiB4B,mCAAmC;6BAClC,qCAAqC;2BACvC,iCAAiC;wBACpC,2BAA2B;yBAC1B,6BAA6B;sBAChC,uBAAuB;0BACnB,+BAA+B;0BAC/B,+BAA+B;+BAC1B,yCAAyC"}
@@ -1,13 +1,21 @@
1
- import { default as e } from "./FormActionButton/FormActionButton.mjs";
2
- import { default as r } from "./FormRowActions/FormRowActions.mjs";
3
- import { default as l } from "./OptionsMenu/OptionsMenu.mjs";
4
- import { default as p } from "./SelectOption/SelectOption.mjs";
5
- import { default as s } from "./ValidationTemplate/ValidationTemplate.mjs";
1
+ import { default as o } from "./ActionsMenuItem/ActionsMenuItem.mjs";
2
+ import { default as r } from "./FormActionButton/FormActionButton.mjs";
3
+ import { default as f } from "./FormRowActions/FormRowActions.mjs";
4
+ import { default as p } from "./OptionsMenu/OptionsMenu.mjs";
5
+ import { default as u } from "./SelectOption/SelectOption.mjs";
6
+ import { default as n } from "./TableHead/TableHead.mjs";
7
+ import { default as i } from "./TableLinkCell/TableLinkCell.mjs";
8
+ import { default as c } from "./TableTypeCell/TableTypeCell.mjs";
9
+ import { default as A } from "./ValidationTemplate/ValidationTemplate.mjs";
6
10
  export {
7
- e as FormActionButton,
8
- r as FormRowActions,
9
- l as OptionsMenu,
10
- p as SelectOption,
11
- s as ValidationTemplate
11
+ o as ActionsMenuItem,
12
+ r as FormActionButton,
13
+ f as FormRowActions,
14
+ p as OptionsMenu,
15
+ u as SelectOption,
16
+ n as TableHead,
17
+ i as TableLinkCell,
18
+ c as TableTypeCell,
19
+ A as ValidationTemplate
12
20
  };
13
21
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;"}
@@ -1,6 +1,9 @@
1
1
  export { useChipCell } from "./useChipCell.hook";
2
2
  export { useDebounce } from "./useDebounce.hook";
3
+ export { useDetails } from "./useDetails.hook";
4
+ export { useDetailsHeader } from "./useDetailsHeader.hook";
3
5
  export { useDetectOutsideClick } from "./useDetectOutsideClick.hook";
4
6
  export { useFormTable } from "./useFormTable.hook";
5
7
  export { useHiddenChipsBlock } from "./useHiddenChipsBlock.hook";
8
+ export { useTable } from "./useTable.hook";
6
9
  //# sourceMappingURL=index.d.ts.map
@@ -1,13 +1,19 @@
1
1
  import { useChipCell as r } from "./useChipCell.hook.mjs";
2
- import { useDebounce as p } from "./useDebounce.hook.mjs";
3
- import { useDetectOutsideClick as u } from "./useDetectOutsideClick.hook.mjs";
4
- import { useFormTable as f } from "./useFormTable.hook.mjs";
5
- import { useHiddenChipsBlock as l } from "./useHiddenChipsBlock.hook.mjs";
2
+ import { useDebounce as s } from "./useDebounce.hook.mjs";
3
+ import { useDetails as u } from "./useDetails.hook.mjs";
4
+ import { useDetailsHeader as f } from "./useDetailsHeader.hook.mjs";
5
+ import { useDetectOutsideClick as x } from "./useDetectOutsideClick.hook.mjs";
6
+ import { useFormTable as a } from "./useFormTable.hook.mjs";
7
+ import { useHiddenChipsBlock as d } from "./useHiddenChipsBlock.hook.mjs";
8
+ import { useTable as D } from "./useTable.hook.mjs";
6
9
  export {
7
10
  r as useChipCell,
8
- p as useDebounce,
9
- u as useDetectOutsideClick,
10
- f as useFormTable,
11
- l as useHiddenChipsBlock
11
+ s as useDebounce,
12
+ u as useDetails,
13
+ f as useDetailsHeader,
14
+ x as useDetectOutsideClick,
15
+ a as useFormTable,
16
+ d as useHiddenChipsBlock,
17
+ D as useTable
12
18
  };
13
19
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;"}
1
+ {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,72 @@
1
+ export function useDetails({ applyDetailsChanges, applyDetailsChangesCallback, formInitialValues, isDetailsPopUp, isDetailsScreen, selectedItem }: {
2
+ applyDetailsChanges: any;
3
+ applyDetailsChangesCallback: any;
4
+ formInitialValues: any;
5
+ isDetailsPopUp: any;
6
+ isDetailsScreen: any;
7
+ selectedItem: any;
8
+ }): {
9
+ DetailsContainer: {
10
+ ({ blocker, detailsMenu, detailsPanelClassNames, detailsPopUpSelectedTab, detailsRef, detailsStore, commonDetailsStore, doNotLeavePage, formRef, isDetailsPopUp, leavePage, params, renderHeader, renderTabsContent, setBlocker, setDetailsPopUpSelectedTab, shouldDetailsBlock, withActionMenu }: {
11
+ blocker: any;
12
+ detailsMenu: any;
13
+ detailsPanelClassNames: any;
14
+ detailsPopUpSelectedTab?: string;
15
+ detailsRef: any;
16
+ detailsStore: any;
17
+ commonDetailsStore: any;
18
+ doNotLeavePage: any;
19
+ formRef: any;
20
+ isDetailsPopUp?: any;
21
+ leavePage: any;
22
+ params: any;
23
+ renderHeader: any;
24
+ renderTabsContent: any;
25
+ setBlocker: any;
26
+ setDetailsPopUpSelectedTab?: any;
27
+ shouldDetailsBlock: any;
28
+ withActionMenu?: boolean;
29
+ }): JSX.Element;
30
+ propTypes: {
31
+ blocker: any;
32
+ detailsMenu: any;
33
+ detailsPanelClassNames: any;
34
+ detailsPopUpSelectedTab: any;
35
+ detailsRef: any;
36
+ detailsStore: any;
37
+ commonDetailsStore: any;
38
+ doNotLeavePage: any;
39
+ formRef: any;
40
+ isDetailsPopUp: any;
41
+ leavePage: any;
42
+ params: any;
43
+ renderHeader: any;
44
+ renderTabsContent: any;
45
+ setBlocker: any;
46
+ setDetailsPopUpSelectedTab: any;
47
+ shouldDetailsBlock: any;
48
+ withActionMenu: any;
49
+ };
50
+ };
51
+ applyChanges: () => void;
52
+ applyChangesRef: import("react").MutableRefObject<undefined>;
53
+ blocker: {};
54
+ cancelChanges: () => void;
55
+ detailsPanelClassNames: string;
56
+ detailsRef: import("react").MutableRefObject<undefined>;
57
+ commonDetailsStore: any;
58
+ doNotLeavePage: () => void;
59
+ formRef: import("react").MutableRefObject<import("final-form").FormApi<any, Partial<any>>>;
60
+ handleShowWarning: (show: any) => void;
61
+ leavePage: () => void;
62
+ location: any;
63
+ params: any;
64
+ removeDetailsInfo: any;
65
+ setBlocker: import("react").Dispatch<import("react").SetStateAction<{}>>;
66
+ setDetailsInfo: any;
67
+ shouldDetailsBlock: ({ currentLocation, nextLocation }: {
68
+ currentLocation: any;
69
+ nextLocation: any;
70
+ }) => boolean;
71
+ };
72
+ //# sourceMappingURL=useDetails.hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDetails.hook.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useDetails.hook.jsx"],"names":[],"mappings":"AAyIO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqLN"}
@@ -0,0 +1,204 @@
1
+ import { jsx as d, jsxs as W } from "react/jsx-runtime";
2
+ import { useState as G, useRef as w, useMemo as J, useEffect as C, useCallback as l } from "react";
3
+ import r from "prop-types";
4
+ import K from "final-form-arrays";
5
+ import Q from "classnames";
6
+ import { Form as X } from "react-final-form";
7
+ import { isEqual as Z, pickBy as y, cloneDeep as U } from "lodash";
8
+ import { createForm as V } from "final-form";
9
+ import { useDispatch as ee, useSelector as te } from "react-redux";
10
+ import { useParams as ne, useLocation as re } from "react-router-dom";
11
+ import se from "../components/BlockerSpy/BlockerSpy.mjs";
12
+ import oe from "../components/ErrorMessage/ErrorMessage.mjs";
13
+ import ae from "../components/Loader/Loader.mjs";
14
+ import ie from "../components/TabsSlider/TabsSlider.mjs";
15
+ import ce from "../components/ConfirmDialog/ConfirmDialog.mjs";
16
+ import { setDetailsPopUpInfoContent as me, removeDetailsPopUpInfoContent as ue, setInfoContent as de, removeInfoContent as le, resetChanges as j, showWarning as A, setFiltersWasHandled as D, setEditMode as he } from "../reducers/commonDetailsReducer.mjs";
17
+ import { PRIMARY_BUTTON as fe, TERTIARY_BUTTON as pe, VIEW_SEARCH_PARAMETER as x } from "../constants.mjs";
18
+ import { DETAILS_MENU as ge } from "../types.mjs";
19
+ import { setFieldState as Re } from "../utils/form.util.mjs";
20
+ const H = ({
21
+ blocker: p,
22
+ detailsMenu: g,
23
+ detailsPanelClassNames: o,
24
+ detailsPopUpSelectedTab: a = "",
25
+ detailsRef: E,
26
+ detailsStore: h,
27
+ commonDetailsStore: s,
28
+ doNotLeavePage: R,
29
+ formRef: q,
30
+ isDetailsPopUp: t = null,
31
+ leavePage: T,
32
+ params: f,
33
+ renderHeader: n,
34
+ renderTabsContent: c,
35
+ setBlocker: S,
36
+ setDetailsPopUpSelectedTab: b = null,
37
+ shouldDetailsBlock: v,
38
+ withActionMenu: k = !0
39
+ }) => /* @__PURE__ */ d(X, { form: q.current, onSubmit: () => {
40
+ }, children: (i) => /* @__PURE__ */ W("div", { className: o, ref: E, "data-testid": "detailsPanel", children: [
41
+ h.loadingCounter > 0 && /* @__PURE__ */ d(ae, {}),
42
+ h.error && /* @__PURE__ */ d(oe, { message: h.error.message }),
43
+ /* @__PURE__ */ W("div", { className: "item-header-wrapper", children: [
44
+ n(),
45
+ k && /* @__PURE__ */ d(
46
+ ie,
47
+ {
48
+ initialTab: t ? a : f.tab,
49
+ isDetailsPopUp: t,
50
+ onClick: (u) => b && b(u),
51
+ skipLink: t,
52
+ tabsList: g
53
+ }
54
+ )
55
+ ] }),
56
+ /* @__PURE__ */ d("div", { className: "item-info", children: c(i) }),
57
+ (p.state === "blocked" || s.showWarning) && /* @__PURE__ */ d(
58
+ ce,
59
+ {
60
+ cancelButton: {
61
+ handler: R,
62
+ label: "Cancel",
63
+ variant: pe
64
+ },
65
+ closePopUp: R,
66
+ confirmButton: {
67
+ handler: T,
68
+ label: "Yes",
69
+ variant: fe
70
+ },
71
+ header: "You have unsaved changes.",
72
+ isOpen: p.state === "blocked" || s.showWarning,
73
+ message: "Do you want to discard the changes?"
74
+ }
75
+ ),
76
+ !t && /* @__PURE__ */ d(se, { setBlocker: S, shouldBlock: v })
77
+ ] }) });
78
+ H.propTypes = {
79
+ blocker: r.object.isRequired,
80
+ detailsMenu: ge.isRequired,
81
+ detailsPanelClassNames: r.string.isRequired,
82
+ detailsPopUpSelectedTab: r.string,
83
+ detailsRef: r.object.isRequired,
84
+ detailsStore: r.object.isRequired,
85
+ commonDetailsStore: r.object.isRequired,
86
+ doNotLeavePage: r.func.isRequired,
87
+ formRef: r.object.isRequired,
88
+ isDetailsPopUp: r.bool,
89
+ leavePage: r.func.isRequired,
90
+ params: r.object.isRequired,
91
+ renderHeader: r.func.isRequired,
92
+ renderTabsContent: r.func.isRequired,
93
+ setBlocker: r.func.isRequired,
94
+ setDetailsPopUpSelectedTab: r.func,
95
+ shouldDetailsBlock: r.func.isRequired,
96
+ withActionMenu: r.bool
97
+ };
98
+ const De = ({
99
+ applyDetailsChanges: p,
100
+ applyDetailsChangesCallback: g,
101
+ formInitialValues: o,
102
+ isDetailsPopUp: a,
103
+ isDetailsScreen: E,
104
+ selectedItem: h
105
+ }) => {
106
+ const [s, R] = G({}), q = w(), t = ee(), T = w(), f = ne(), n = te((e) => e.commonDetailsStore), c = re(), [S, b] = J(() => a ? [me, ue] : [de, le], [a]), v = w(
107
+ c.pathname.substring(0, c.pathname.lastIndexOf(f.tab))
108
+ ), k = Q(
109
+ "table__item",
110
+ n.showWarning && "pop-up-dialog-opened",
111
+ E && "table__item_big",
112
+ a && "table__item-popup"
113
+ ), i = w(
114
+ V({
115
+ initialValues: o,
116
+ mutators: { ...K, setFieldState: Re },
117
+ onSubmit: () => {
118
+ }
119
+ })
120
+ );
121
+ C(() => () => {
122
+ a || t(j());
123
+ }, [t, a]);
124
+ const u = l(
125
+ (e) => {
126
+ t(A(e));
127
+ },
128
+ [t]
129
+ ), B = l(
130
+ (e) => {
131
+ var m;
132
+ n.changes.counter > 0 && ((m = document.getElementById("refresh")) != null && m.contains(e.target)) && (u(!0), t(D(!0)));
133
+ },
134
+ [n.changes.counter, t, u]
135
+ );
136
+ C(() => (window.addEventListener("click", B), () => {
137
+ window.removeEventListener("click", B);
138
+ }), [B]);
139
+ const I = l(
140
+ ({ currentLocation: e, nextLocation: m }) => {
141
+ var M, N;
142
+ const $ = (M = e.search.split(`${x}=`)) == null ? void 0 : M[1], z = (N = m.search.split(`${x}=`)) == null ? void 0 : N[1], P = e.pathname.split("/"), L = m.pathname.split("/");
143
+ return P.pop(), L.pop(), n.changes.counter > 0 && (P.join("/") !== L.join("/") || $ !== z);
144
+ },
145
+ [n.changes.counter]
146
+ );
147
+ C(() => {
148
+ var e, m;
149
+ i.current && n.changes.counter === 0 && !Z(y(o), y((e = i.current.getState()) == null ? void 0 : e.values)) && !((m = i.current.getState()) != null && m.active) && i.current.restart(o);
150
+ }, [o, n.changes.counter]), C(() => {
151
+ const e = c.pathname.substring(
152
+ 0,
153
+ c.pathname.lastIndexOf(f.tab)
154
+ );
155
+ v.current !== e && !a && (i.current.restart(o), t(he(!1)), v.current = e);
156
+ }, [t, o, a, c.pathname, f.tab]);
157
+ const O = l(() => {
158
+ p(n.changes).then(() => {
159
+ t(j());
160
+ const e = U(n.changes);
161
+ setTimeout(() => {
162
+ g(e, h);
163
+ });
164
+ });
165
+ }, [
166
+ p,
167
+ g,
168
+ n.changes,
169
+ t,
170
+ h
171
+ ]), _ = l(() => {
172
+ n.changes.counter > 0 && (t(j()), i.current.reset(o));
173
+ }, [n.changes.counter, t, o]), F = l(() => {
174
+ var e;
175
+ _(), u(!1), n.filtersWasHandled ? t(D(!1)) : (e = s.proceed) == null || e.call(s), window.dispatchEvent(new CustomEvent("discardChanges"));
176
+ }, [s, _, n.filtersWasHandled, t, u]), Y = l(() => {
177
+ var e;
178
+ (e = s.reset) == null || e.call(s), t(A(!1)), window.dispatchEvent(new CustomEvent("cancelLeave"));
179
+ }, [s, t]);
180
+ return {
181
+ DetailsContainer: H,
182
+ applyChanges: O,
183
+ applyChangesRef: q,
184
+ blocker: s,
185
+ cancelChanges: _,
186
+ detailsPanelClassNames: k,
187
+ detailsRef: T,
188
+ commonDetailsStore: n,
189
+ doNotLeavePage: Y,
190
+ formRef: i,
191
+ handleShowWarning: u,
192
+ leavePage: F,
193
+ location: c,
194
+ params: f,
195
+ removeDetailsInfo: b,
196
+ setBlocker: R,
197
+ setDetailsInfo: S,
198
+ shouldDetailsBlock: I
199
+ };
200
+ };
201
+ export {
202
+ De as useDetails
203
+ };
204
+ //# sourceMappingURL=useDetails.hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDetails.hook.mjs","sources":["../../src/lib/hooks/useDetails.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, useState } from 'react'\nimport PropTypes from 'prop-types'\nimport arrayMutators from 'final-form-arrays'\nimport classnames from 'classnames'\nimport { Form } from 'react-final-form'\nimport { cloneDeep, isEqual, pickBy } from 'lodash'\nimport { createForm } from 'final-form'\nimport { useDispatch, useSelector } from 'react-redux'\nimport { useLocation, useParams } from 'react-router-dom'\n\nimport BlockerSpy from '../components/BlockerSpy/BlockerSpy'\nimport ErrorMessage from '../components/ErrorMessage/ErrorMessage'\nimport Loader from '../components/Loader/Loader'\nimport TabsSlider from '../components/TabsSlider/TabsSlider'\nimport ConfirmDialog from '../components/ConfirmDialog/ConfirmDialog'\n\nimport {\n removeDetailsPopUpInfoContent,\n removeInfoContent,\n resetChanges,\n setDetailsPopUpInfoContent,\n setEditMode,\n setFiltersWasHandled,\n setInfoContent,\n showWarning\n} from '../reducers/commonDetailsReducer'\nimport { PRIMARY_BUTTON, TERTIARY_BUTTON } from '../constants'\nimport { VIEW_SEARCH_PARAMETER } from '../constants'\nimport { DETAILS_MENU } from '../types'\nimport { setFieldState } from '../utils/form.util'\n\nconst DetailsContainer = ({\n blocker,\n detailsMenu,\n detailsPanelClassNames,\n detailsPopUpSelectedTab = '',\n detailsRef,\n detailsStore,\n commonDetailsStore,\n doNotLeavePage,\n formRef,\n isDetailsPopUp = null,\n leavePage,\n params,\n renderHeader,\n renderTabsContent,\n setBlocker,\n setDetailsPopUpSelectedTab = null,\n shouldDetailsBlock,\n withActionMenu = true\n}) => {\n return (\n <Form form={formRef.current} onSubmit={() => {}}>\n {formState => (\n <div className={detailsPanelClassNames} ref={detailsRef} data-testid=\"detailsPanel\">\n {detailsStore.loadingCounter > 0 && <Loader />}\n {detailsStore.error && <ErrorMessage message={detailsStore.error.message} />}\n <div className=\"item-header-wrapper\">\n {renderHeader()}\n {withActionMenu && (\n <TabsSlider\n initialTab={isDetailsPopUp ? detailsPopUpSelectedTab : params.tab}\n isDetailsPopUp={isDetailsPopUp}\n onClick={newTab => setDetailsPopUpSelectedTab && setDetailsPopUpSelectedTab(newTab)}\n skipLink={isDetailsPopUp}\n tabsList={detailsMenu}\n />\n )}\n </div>\n <div className=\"item-info\">{renderTabsContent(formState)}</div>\n {(blocker.state === 'blocked' || commonDetailsStore.showWarning) && (\n <ConfirmDialog\n cancelButton={{\n handler: doNotLeavePage,\n label: 'Cancel',\n variant: TERTIARY_BUTTON\n }}\n closePopUp={doNotLeavePage}\n confirmButton={{\n handler: leavePage,\n label: 'Yes',\n variant: PRIMARY_BUTTON\n }}\n header=\"You have unsaved changes.\"\n isOpen={blocker.state === 'blocked' || commonDetailsStore.showWarning}\n message=\"Do you want to discard the changes?\"\n />\n )}\n {!isDetailsPopUp && (\n <BlockerSpy setBlocker={setBlocker} shouldBlock={shouldDetailsBlock} />\n )}\n </div>\n )}\n </Form>\n )\n}\n\nDetailsContainer.propTypes = {\n blocker: PropTypes.object.isRequired,\n detailsMenu: DETAILS_MENU.isRequired,\n detailsPanelClassNames: PropTypes.string.isRequired,\n detailsPopUpSelectedTab: PropTypes.string,\n detailsRef: PropTypes.object.isRequired,\n detailsStore: PropTypes.object.isRequired,\n commonDetailsStore: PropTypes.object.isRequired,\n doNotLeavePage: PropTypes.func.isRequired,\n formRef: PropTypes.object.isRequired,\n isDetailsPopUp: PropTypes.bool,\n leavePage: PropTypes.func.isRequired,\n params: PropTypes.object.isRequired,\n renderHeader: PropTypes.func.isRequired,\n renderTabsContent: PropTypes.func.isRequired,\n setBlocker: PropTypes.func.isRequired,\n setDetailsPopUpSelectedTab: PropTypes.func,\n shouldDetailsBlock: PropTypes.func.isRequired,\n withActionMenu: PropTypes.bool\n}\n\nexport const useDetails = ({\n applyDetailsChanges,\n applyDetailsChangesCallback,\n formInitialValues,\n isDetailsPopUp,\n isDetailsScreen,\n selectedItem\n}) => {\n const [blocker, setBlocker] = useState({})\n const applyChangesRef = useRef()\n const dispatch = useDispatch()\n const detailsRef = useRef()\n const params = useParams()\n const commonDetailsStore = useSelector(store => store.commonDetailsStore)\n const location = useLocation()\n const [setDetailsInfo, removeDetailsInfo] = useMemo(() => {\n return isDetailsPopUp\n ? [setDetailsPopUpInfoContent, removeDetailsPopUpInfoContent]\n : [setInfoContent, removeInfoContent]\n }, [isDetailsPopUp])\n const previousPathnameRef = useRef(\n location.pathname.substring(0, location.pathname.lastIndexOf(params.tab))\n )\n const detailsPanelClassNames = classnames(\n 'table__item',\n commonDetailsStore.showWarning && 'pop-up-dialog-opened',\n isDetailsScreen && 'table__item_big',\n isDetailsPopUp && 'table__item-popup'\n )\n\n const formRef = useRef(\n createForm({\n initialValues: formInitialValues,\n mutators: { ...arrayMutators, setFieldState },\n onSubmit: () => {}\n })\n )\n\n useEffect(() => {\n return () => {\n if (!isDetailsPopUp) {\n dispatch(resetChanges())\n }\n }\n }, [dispatch, isDetailsPopUp])\n\n const handleShowWarning = useCallback(\n show => {\n dispatch(showWarning(show))\n },\n [dispatch]\n )\n\n const handleRefreshClick = useCallback(\n event => {\n if (\n commonDetailsStore.changes.counter > 0 &&\n document.getElementById('refresh')?.contains(event.target)\n ) {\n handleShowWarning(true)\n dispatch(setFiltersWasHandled(true))\n }\n },\n [commonDetailsStore.changes.counter, dispatch, handleShowWarning]\n )\n\n useEffect(() => {\n window.addEventListener('click', handleRefreshClick)\n\n return () => {\n window.removeEventListener('click', handleRefreshClick)\n }\n }, [handleRefreshClick])\n\n const shouldDetailsBlock = useCallback(\n ({ currentLocation, nextLocation }) => {\n const currentDetailsView = currentLocation.search.split(`${VIEW_SEARCH_PARAMETER}=`)?.[1]\n const nextDetailsView = nextLocation.search.split(`${VIEW_SEARCH_PARAMETER}=`)?.[1]\n const currentLocationPathname = currentLocation.pathname.split('/')\n const nextLocationPathname = nextLocation.pathname.split('/')\n currentLocationPathname.pop()\n nextLocationPathname.pop()\n\n return (\n commonDetailsStore.changes.counter > 0 &&\n (currentLocationPathname.join('/') !== nextLocationPathname.join('/') ||\n currentDetailsView !== nextDetailsView)\n )\n },\n [commonDetailsStore.changes.counter]\n )\n\n useEffect(() => {\n if (\n formRef.current &&\n commonDetailsStore.changes.counter === 0 &&\n !isEqual(pickBy(formInitialValues), pickBy(formRef.current.getState()?.values)) &&\n !formRef.current.getState()?.active\n ) {\n formRef.current.restart(formInitialValues)\n }\n }, [formInitialValues, commonDetailsStore.changes.counter])\n\n useEffect(() => {\n const currentPathname = location.pathname.substring(\n 0,\n location.pathname.lastIndexOf(params.tab)\n )\n\n if (previousPathnameRef.current !== currentPathname && !isDetailsPopUp) {\n formRef.current.restart(formInitialValues)\n dispatch(setEditMode(false))\n previousPathnameRef.current = currentPathname\n }\n }, [dispatch, formInitialValues, isDetailsPopUp, location.pathname, params.tab])\n\n const applyChanges = useCallback(() => {\n applyDetailsChanges(commonDetailsStore.changes).then(() => {\n dispatch(resetChanges())\n\n const changes = cloneDeep(commonDetailsStore.changes)\n\n // todo [redux-toolkit] rework it after redux-toolkit will be added to the details store. Need to remove setTimeout and use a Promise that resolves after the state is updated.\n setTimeout(() => {\n applyDetailsChangesCallback(changes, selectedItem)\n })\n })\n }, [\n applyDetailsChanges,\n applyDetailsChangesCallback,\n commonDetailsStore.changes,\n dispatch,\n selectedItem\n ])\n\n const cancelChanges = useCallback(() => {\n if (commonDetailsStore.changes.counter > 0) {\n dispatch(resetChanges())\n formRef.current.reset(formInitialValues)\n }\n }, [commonDetailsStore.changes.counter, dispatch, formInitialValues])\n\n const leavePage = useCallback(() => {\n cancelChanges()\n handleShowWarning(false)\n\n if (commonDetailsStore.filtersWasHandled) {\n dispatch(setFiltersWasHandled(false))\n } else {\n blocker.proceed?.()\n }\n\n window.dispatchEvent(new CustomEvent('discardChanges'))\n }, [blocker, cancelChanges, commonDetailsStore.filtersWasHandled, dispatch, handleShowWarning])\n\n const doNotLeavePage = useCallback(() => {\n blocker.reset?.()\n dispatch(showWarning(false))\n window.dispatchEvent(new CustomEvent('cancelLeave'))\n }, [blocker, dispatch])\n\n return {\n DetailsContainer,\n applyChanges,\n applyChangesRef,\n blocker,\n cancelChanges,\n detailsPanelClassNames,\n detailsRef,\n commonDetailsStore,\n doNotLeavePage,\n formRef,\n handleShowWarning,\n leavePage,\n location,\n params,\n removeDetailsInfo,\n setBlocker,\n setDetailsInfo,\n shouldDetailsBlock\n }\n}\n"],"names":["DetailsContainer","blocker","detailsMenu","detailsPanelClassNames","detailsPopUpSelectedTab","detailsRef","detailsStore","commonDetailsStore","doNotLeavePage","formRef","isDetailsPopUp","leavePage","params","renderHeader","renderTabsContent","setBlocker","setDetailsPopUpSelectedTab","shouldDetailsBlock","withActionMenu","Form","jsxs","jsx","Loader","ErrorMessage","TabsSlider","newTab","formState","ConfirmDialog","TERTIARY_BUTTON","PRIMARY_BUTTON","BlockerSpy","PropTypes","DETAILS_MENU","useDetails","applyDetailsChanges","applyDetailsChangesCallback","formInitialValues","isDetailsScreen","selectedItem","useState","applyChangesRef","useRef","dispatch","useDispatch","useParams","useSelector","store","location","useLocation","setDetailsInfo","removeDetailsInfo","useMemo","setDetailsPopUpInfoContent","removeDetailsPopUpInfoContent","setInfoContent","removeInfoContent","previousPathnameRef","classnames","createForm","arrayMutators","setFieldState","useEffect","resetChanges","handleShowWarning","useCallback","show","showWarning","handleRefreshClick","event","_a","setFiltersWasHandled","currentLocation","nextLocation","currentDetailsView","VIEW_SEARCH_PARAMETER","nextDetailsView","_b","currentLocationPathname","nextLocationPathname","isEqual","pickBy","currentPathname","setEditMode","applyChanges","changes","cloneDeep","cancelChanges"],"mappings":"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"}