iguazio.dashboard-react-controls 3.0.3 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) 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/FormChip/FormChip.mjs +48 -45
  42. package/dist/components/FormChipCell/FormChip/FormChip.mjs.map +1 -1
  43. package/dist/components/FormChipCell/FormChipCellView.mjs +69 -68
  44. package/dist/components/FormChipCell/FormChipCellView.mjs.map +1 -1
  45. package/dist/components/FormCombobox/FormCombobox.d.ts.map +1 -1
  46. package/dist/components/FormCombobox/FormCombobox.mjs +65 -65
  47. package/dist/components/FormCombobox/FormCombobox.mjs.map +1 -1
  48. package/dist/components/LoadButton/LoadButton.d.ts +16 -0
  49. package/dist/components/LoadButton/LoadButton.d.ts.map +1 -0
  50. package/dist/components/LoadButton/LoadButton.mjs +22 -0
  51. package/dist/components/LoadButton/LoadButton.mjs.map +1 -0
  52. package/dist/components/LoadButton/LoadButton.stories.d.ts +10 -0
  53. package/dist/components/LoadButton/LoadButton.stories.d.ts.map +1 -0
  54. package/dist/components/Loader/Loader.d.ts +3 -0
  55. package/dist/components/Loader/Loader.d.ts.map +1 -0
  56. package/dist/components/Loader/Loader.mjs +24 -0
  57. package/dist/components/Loader/Loader.mjs.map +1 -0
  58. package/dist/components/Loader/LoaderForSuspenseFallback.d.ts +3 -0
  59. package/dist/components/Loader/LoaderForSuspenseFallback.d.ts.map +1 -0
  60. package/dist/components/Loader/LoaderForSuspenseFallback.mjs +13 -0
  61. package/dist/components/Loader/LoaderForSuspenseFallback.mjs.map +1 -0
  62. package/dist/components/TableCell/TableCell.d.ts +28 -0
  63. package/dist/components/TableCell/TableCell.d.ts.map +1 -0
  64. package/dist/components/TableCell/TableCell.mjs +113 -0
  65. package/dist/components/TableCell/TableCell.mjs.map +1 -0
  66. package/dist/components/TabsSlider/TabsSlider.d.ts +20 -0
  67. package/dist/components/TabsSlider/TabsSlider.d.ts.map +1 -0
  68. package/dist/components/TabsSlider/TabsSlider.mjs +133 -0
  69. package/dist/components/TabsSlider/TabsSlider.mjs.map +1 -0
  70. package/dist/components/index.d.ts +12 -1
  71. package/dist/components/index.d.ts.map +1 -1
  72. package/dist/components/index.mjs +60 -38
  73. package/dist/components/index.mjs.map +1 -1
  74. package/dist/constants.d.ts +9 -0
  75. package/dist/constants.d.ts.map +1 -1
  76. package/dist/constants.mjs +35 -26
  77. package/dist/constants.mjs.map +1 -1
  78. package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts +16 -0
  79. package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts.map +1 -0
  80. package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs +51 -0
  81. package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs.map +1 -0
  82. package/dist/elements/TableHead/TableHead.d.ts +20 -0
  83. package/dist/elements/TableHead/TableHead.d.ts.map +1 -0
  84. package/dist/elements/TableHead/TableHead.mjs +58 -0
  85. package/dist/elements/TableHead/TableHead.mjs.map +1 -0
  86. package/dist/elements/TableLinkCell/TableLinkCell.d.ts +24 -0
  87. package/dist/elements/TableLinkCell/TableLinkCell.d.ts.map +1 -0
  88. package/dist/elements/TableLinkCell/TableLinkCell.mjs +87 -0
  89. package/dist/elements/TableLinkCell/TableLinkCell.mjs.map +1 -0
  90. package/dist/elements/TableTypeCell/TableTypeCell.d.ts +12 -0
  91. package/dist/elements/TableTypeCell/TableTypeCell.d.ts.map +1 -0
  92. package/dist/elements/TableTypeCell/TableTypeCell.mjs +37 -0
  93. package/dist/elements/TableTypeCell/TableTypeCell.mjs.map +1 -0
  94. package/dist/elements/index.d.ts +5 -1
  95. package/dist/elements/index.d.ts.map +1 -1
  96. package/dist/elements/index.mjs +18 -10
  97. package/dist/elements/index.mjs.map +1 -1
  98. package/dist/hooks/index.d.ts +3 -0
  99. package/dist/hooks/index.mjs +14 -8
  100. package/dist/hooks/index.mjs.map +1 -1
  101. package/dist/hooks/useDetails.hook.d.ts +72 -0
  102. package/dist/hooks/useDetails.hook.d.ts.map +1 -0
  103. package/dist/hooks/useDetails.hook.mjs +204 -0
  104. package/dist/hooks/useDetails.hook.mjs.map +1 -0
  105. package/dist/hooks/useDetailsHeader.hook.d.ts +77 -0
  106. package/dist/hooks/useDetailsHeader.hook.d.ts.map +1 -0
  107. package/dist/hooks/useDetailsHeader.hook.mjs +219 -0
  108. package/dist/hooks/useDetailsHeader.hook.mjs.map +1 -0
  109. package/dist/hooks/useTable.hook.d.ts +60 -0
  110. package/dist/hooks/useTable.hook.d.ts.map +1 -0
  111. package/dist/hooks/useTable.hook.mjs +129 -0
  112. package/dist/hooks/useTable.hook.mjs.map +1 -0
  113. package/dist/images/add.svg.mjs +2 -3
  114. package/dist/images/add.svg.mjs.map +1 -1
  115. package/dist/images/add.svg2.mjs +6 -0
  116. package/dist/images/add.svg2.mjs.map +1 -0
  117. package/dist/images/cancel.svg +3 -0
  118. package/dist/images/copy-to-clipboard-icon.svg.mjs +6 -0
  119. package/dist/images/copy-to-clipboard-icon.svg.mjs.map +1 -0
  120. package/dist/images/elipsis.svg.mjs +6 -0
  121. package/dist/images/elipsis.svg.mjs.map +1 -0
  122. package/dist/images/history.svg.mjs +6 -0
  123. package/dist/images/history.svg.mjs.map +1 -0
  124. package/dist/images/ml-enlarge.svg.mjs +6 -0
  125. package/dist/images/ml-enlarge.svg.mjs.map +1 -0
  126. package/dist/images/ml-minimize.svg.mjs +6 -0
  127. package/dist/images/ml-minimize.svg.mjs.map +1 -0
  128. package/dist/images/refresh.svg.mjs +6 -0
  129. package/dist/images/refresh.svg.mjs.map +1 -0
  130. package/dist/images/unsuccess_alert.svg.mjs +6 -0
  131. package/dist/images/unsuccess_alert.svg.mjs.map +1 -0
  132. package/dist/index.css +1 -1
  133. package/dist/index.d.ts +2 -1
  134. package/dist/index.d.ts.map +1 -1
  135. package/dist/index.mjs +10 -8
  136. package/dist/index.mjs.map +1 -1
  137. package/dist/reducers/commonDetailsReducer.d.ts +12 -0
  138. package/dist/reducers/commonDetailsReducer.d.ts.map +1 -0
  139. package/dist/reducers/commonDetailsReducer.mjs +77 -0
  140. package/dist/reducers/commonDetailsReducer.mjs.map +1 -0
  141. package/dist/reducers/index.d.ts +3 -0
  142. package/dist/reducers/index.d.ts.map +1 -0
  143. package/dist/reducers/index.mjs +7 -0
  144. package/dist/reducers/index.mjs.map +1 -0
  145. package/dist/reducers/notificationReducer.d.ts +3 -0
  146. package/dist/reducers/notificationReducer.d.ts.map +1 -0
  147. package/dist/reducers/notificationReducer.mjs +21 -0
  148. package/dist/reducers/notificationReducer.mjs.map +1 -0
  149. package/dist/scss/common.scss +655 -0
  150. package/dist/scss/details.scss +376 -0
  151. package/dist/scss/mixins.scss +1 -1
  152. package/dist/scss/table.scss +283 -0
  153. package/dist/types.d.ts +6 -0
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/types.mjs +89 -45
  156. package/dist/types.mjs.map +1 -1
  157. package/dist/utils/chips.util.d.ts +30 -0
  158. package/dist/utils/chips.util.d.ts.map +1 -0
  159. package/dist/utils/chips.util.mjs +75 -0
  160. package/dist/utils/chips.util.mjs.map +1 -0
  161. package/dist/utils/common.util.d.ts +5 -0
  162. package/dist/utils/common.util.d.ts.map +1 -1
  163. package/dist/utils/common.util.mjs +80 -33
  164. package/dist/utils/common.util.mjs.map +1 -1
  165. package/dist/utils/datetime.util.d.ts +9 -0
  166. package/dist/utils/datetime.util.d.ts.map +1 -0
  167. package/dist/utils/datetime.util.mjs +53 -0
  168. package/dist/utils/datetime.util.mjs.map +1 -0
  169. package/dist/utils/filter.util.d.ts +5 -0
  170. package/dist/utils/filter.util.d.ts.map +1 -0
  171. package/dist/utils/filter.util.mjs +23 -0
  172. package/dist/utils/filter.util.mjs.map +1 -0
  173. package/dist/utils/index.d.ts +5 -0
  174. package/dist/utils/index.mjs +22 -12
  175. package/dist/utils/index.mjs.map +1 -1
  176. package/dist/utils/notification.util.d.ts +2 -0
  177. package/dist/utils/notification.util.d.ts.map +1 -0
  178. package/dist/utils/notification.util.mjs +17 -0
  179. package/dist/utils/notification.util.mjs.map +1 -0
  180. package/dist/utils/string.util.d.ts +6 -0
  181. package/dist/utils/string.util.d.ts.map +1 -0
  182. package/dist/utils/string.util.mjs +13 -0
  183. package/dist/utils/string.util.mjs.map +1 -0
  184. package/package.json +11 -1
@@ -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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"}
@@ -0,0 +1,77 @@
1
+ export function useDetailsHeader({ handleCancel, handleShowWarning, isDetailsPopUp, pageData }: {
2
+ handleCancel: any;
3
+ handleShowWarning: any;
4
+ isDetailsPopUp: any;
5
+ pageData: any;
6
+ }): {
7
+ DetailsHeaderContainer: {
8
+ ({ actionButton, actionsMenu, applyChanges, applyChangesRef, cancelChanges, commonDetailsStore, getCloseDetailsLink, getDefaultCloseDetailsLink, handleCancelClick, handleRefresh, headerRef, isDetailsPopUp, isDetailsScreen, location, navigate, pageData, params, renderCustomElements, renderStatus, renderTitle, selectedItem, showAllVersions, tab, viewMode, withActionMenu, withToggleViewBtn }: {
9
+ actionButton?: any;
10
+ actionsMenu: any;
11
+ applyChanges: any;
12
+ applyChangesRef: any;
13
+ cancelChanges: any;
14
+ commonDetailsStore: any;
15
+ getCloseDetailsLink?: any;
16
+ getDefaultCloseDetailsLink: any;
17
+ handleCancelClick: any;
18
+ handleRefresh?: any;
19
+ headerRef: any;
20
+ isDetailsPopUp?: boolean;
21
+ isDetailsScreen: any;
22
+ location: any;
23
+ navigate: any;
24
+ pageData: any;
25
+ params: any;
26
+ renderCustomElements?: any;
27
+ renderStatus?: any;
28
+ renderTitle: any;
29
+ selectedItem: any;
30
+ showAllVersions?: any;
31
+ tab?: string;
32
+ viewMode?: string;
33
+ withActionMenu?: boolean;
34
+ withToggleViewBtn?: boolean;
35
+ }): JSX.Element;
36
+ propTypes: {
37
+ actionButton: any;
38
+ actionsMenu: any;
39
+ applyChanges: any;
40
+ applyChangesRef: any;
41
+ cancelChanges: any;
42
+ commonDetailsStore: any;
43
+ getCloseDetailsLink: any;
44
+ getDefaultCloseDetailsLink: any;
45
+ handleCancelClick: any;
46
+ handleRefresh: any;
47
+ headerRef: any;
48
+ isDetailsPopUp: any;
49
+ isDetailsScreen: any;
50
+ location: any;
51
+ navigate: any;
52
+ pageData: any;
53
+ params: any;
54
+ renderCustomElements: any;
55
+ renderStatus: any;
56
+ renderTitle: any;
57
+ selectedItem: any;
58
+ showAllVersions: any;
59
+ tab: any;
60
+ viewMode: any;
61
+ withActionMenu: any;
62
+ withToggleViewBtn: any;
63
+ };
64
+ };
65
+ actionButton: any;
66
+ commonDetailsStore: any;
67
+ handleBackClick: () => void;
68
+ handleCancelClick: () => void;
69
+ headerRef: import("react").MutableRefObject<undefined>;
70
+ location: any;
71
+ navigate: any;
72
+ params: any;
73
+ showAllVersions: any;
74
+ viewMode: string;
75
+ withToggleViewBtn: any;
76
+ };
77
+ //# sourceMappingURL=useDetailsHeader.hook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDetailsHeader.hook.d.ts","sourceRoot":"","sources":["../../src/lib/hooks/useDetailsHeader.hook.jsx"],"names":[],"mappings":"AAsOO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCN"}
@@ -0,0 +1,219 @@
1
+ import { jsxs as l, jsx as i, Fragment as q } from "react/jsx-runtime";
2
+ import { useRef as L, useCallback as M } from "react";
3
+ import e from "prop-types";
4
+ import { useSelector as B } from "react-redux";
5
+ import { Link as O, useParams as F, useNavigate as H, useLocation as P } from "react-router-dom";
6
+ import U from "../components/ActionsMenu/ActionsMenu.mjs";
7
+ import x from "../components/Button/Button.mjs";
8
+ import z from "../components/LoadButton/LoadButton.mjs";
9
+ import s from "../components/RoundedIcon/RoundedIcon.mjs";
10
+ import D from "../components/TooltipTemplate/TextTooltipTemplate.mjs";
11
+ import W from "../components/Tooltip/Tooltip.mjs";
12
+ import { ACTIONS_MENU as Y, ACTION_BUTTON as G } from "../types.mjs";
13
+ import { TERTIARY_BUTTON as J, FULL_VIEW_MODE as A, VIEW_SEARCH_PARAMETER as j } from "../constants.mjs";
14
+ import { getFilteredSearchParams as K } from "../utils/filter.util.mjs";
15
+ import { getViewMode as Q } from "../utils/common.util.mjs";
16
+ import E from "../images/close.svg.mjs";
17
+ import X from "../images/ml-enlarge.svg.mjs";
18
+ import Z from "../images/history.svg.mjs";
19
+ import ee from "../images/ml-minimize.svg.mjs";
20
+ import ie from "../images/refresh.svg.mjs";
21
+ const y = ({
22
+ actionButton: t = null,
23
+ actionsMenu: a,
24
+ applyChanges: c,
25
+ applyChangesRef: g,
26
+ cancelChanges: r,
27
+ commonDetailsStore: o,
28
+ getCloseDetailsLink: d = null,
29
+ getDefaultCloseDetailsLink: b,
30
+ handleCancelClick: m,
31
+ handleRefresh: u = null,
32
+ headerRef: R,
33
+ isDetailsPopUp: n = !1,
34
+ isDetailsScreen: v,
35
+ location: h,
36
+ navigate: p,
37
+ pageData: f,
38
+ params: $,
39
+ renderCustomElements: C = null,
40
+ renderStatus: w = null,
41
+ renderTitle: _,
42
+ selectedItem: T,
43
+ showAllVersions: k = null,
44
+ tab: S = "",
45
+ viewMode: N = "",
46
+ withActionMenu: V = !0,
47
+ withToggleViewBtn: I = !1
48
+ }) => /* @__PURE__ */ l("div", { className: "item-header", ref: R, children: [
49
+ /* @__PURE__ */ l("div", { className: "item-header__data", children: [
50
+ /* @__PURE__ */ i("h3", { className: "item-header__title", children: _ && _() }),
51
+ /* @__PURE__ */ i("div", { className: "item-header__status", children: w && w() })
52
+ ] }),
53
+ /* @__PURE__ */ i("div", { className: "item-header__custom-elements", children: C && C() }),
54
+ /* @__PURE__ */ l("div", { className: "item-header__buttons", children: [
55
+ o.changes.counter > 0 && !n && /* @__PURE__ */ l(q, { children: [
56
+ /* @__PURE__ */ i(
57
+ x,
58
+ {
59
+ variant: J,
60
+ label: "Cancel",
61
+ onClick: r,
62
+ disabled: o.changes.counter === 0 || o.editMode
63
+ }
64
+ ),
65
+ /* @__PURE__ */ i(
66
+ W,
67
+ {
68
+ template: /* @__PURE__ */ i(
69
+ D,
70
+ {
71
+ text: `${o.changes.counter} ${o.changes.counter === 1 ? "change pending" : "changes pending"}`
72
+ }
73
+ ),
74
+ children: /* @__PURE__ */ i(
75
+ z,
76
+ {
77
+ ref: g,
78
+ variant: "primary",
79
+ label: "Apply Changes",
80
+ className: "btn_apply-changes",
81
+ onClick: c,
82
+ disabled: o.changes.counter === 0 || o.editMode
83
+ }
84
+ )
85
+ }
86
+ )
87
+ ] }),
88
+ t && !t.hidden && /* @__PURE__ */ i(
89
+ x,
90
+ {
91
+ disabled: t.disabled,
92
+ label: t.label,
93
+ onClick: t.onClick,
94
+ tooltip: t.tooltip,
95
+ variant: t.variant
96
+ }
97
+ ),
98
+ k && /* @__PURE__ */ i(
99
+ s,
100
+ {
101
+ id: "showAllVersions",
102
+ onClick: () => k(),
103
+ tooltipText: "Show all versions",
104
+ children: /* @__PURE__ */ i(Z, {})
105
+ }
106
+ ),
107
+ v && u && /* @__PURE__ */ i(
108
+ s,
109
+ {
110
+ id: "refresh",
111
+ onClick: () => u(T),
112
+ tooltipText: "Refresh",
113
+ children: /* @__PURE__ */ i(ie, {})
114
+ }
115
+ ),
116
+ V && /* @__PURE__ */ i(U, { dataItem: T, menu: a, time: 500 }),
117
+ /* @__PURE__ */ l("div", { className: "item-header__navigation-buttons", children: [
118
+ I && !n && /* @__PURE__ */ l(q, { children: [
119
+ N !== A && /* @__PURE__ */ i(
120
+ s,
121
+ {
122
+ onClick: () => {
123
+ p(
124
+ `${h.pathname}${window.location.search}${window.location.search ? "&" : "?"}${j}=full`
125
+ );
126
+ },
127
+ id: "full-view",
128
+ tooltipText: "Full view",
129
+ children: /* @__PURE__ */ i(X, {})
130
+ }
131
+ ),
132
+ N === A && /* @__PURE__ */ i(
133
+ s,
134
+ {
135
+ onClick: () => {
136
+ p(
137
+ `${h.pathname}${K(window.location.search, [j])}`
138
+ );
139
+ },
140
+ id: "table-view",
141
+ tooltipText: "Table view",
142
+ children: /* @__PURE__ */ i(ee, {})
143
+ }
144
+ )
145
+ ] }),
146
+ !f.details.hideBackBtn && (n ? /* @__PURE__ */ i(
147
+ "div",
148
+ {
149
+ className: "details-close-btn",
150
+ "data-testid": "details-close-btn",
151
+ onClick: m,
152
+ children: /* @__PURE__ */ i(s, { tooltipText: "Close", id: "details-close", children: /* @__PURE__ */ i(E, {}) })
153
+ }
154
+ ) : /* @__PURE__ */ i(
155
+ O,
156
+ {
157
+ className: "details-close-btn",
158
+ "data-testid": "details-close-btn",
159
+ to: d ? d(T.name) : b($, f.page, S),
160
+ onClick: m,
161
+ children: /* @__PURE__ */ i(s, { tooltipText: "Close", id: "details-close", children: /* @__PURE__ */ i(E, {}) })
162
+ }
163
+ ))
164
+ ] })
165
+ ] })
166
+ ] });
167
+ y.propTypes = {
168
+ actionButton: G,
169
+ actionsMenu: Y.isRequired,
170
+ applyChanges: e.func.isRequired,
171
+ applyChangesRef: e.object.isRequired,
172
+ cancelChanges: e.func.isRequired,
173
+ commonDetailsStore: e.object.isRequired,
174
+ getCloseDetailsLink: e.func,
175
+ getDefaultCloseDetailsLink: e.func.isRequired,
176
+ handleCancelClick: e.func.isRequired,
177
+ handleRefresh: e.func,
178
+ headerRef: e.object.isRequired,
179
+ isDetailsPopUp: e.bool,
180
+ isDetailsScreen: e.bool.isRequired,
181
+ location: e.object.isRequired,
182
+ navigate: e.func.isRequired,
183
+ pageData: e.object.isRequired,
184
+ params: e.object.isRequired,
185
+ renderCustomElements: e.func,
186
+ renderStatus: e.func,
187
+ renderTitle: e.func.isRequired,
188
+ selectedItem: e.object.isRequired,
189
+ showAllVersions: e.func,
190
+ tab: e.string,
191
+ viewMode: e.string,
192
+ withActionMenu: e.bool,
193
+ withToggleViewBtn: e.bool
194
+ };
195
+ const we = ({ handleCancel: t, handleShowWarning: a, isDetailsPopUp: c, pageData: g }) => {
196
+ const r = B((f) => f.commonDetailsStore), o = F(), d = H(), b = Q(window.location.search), { actionButton: m, withToggleViewBtn: u, showAllVersions: R } = g.details, n = L(), v = P(), h = M(() => {
197
+ r.changes.counter > 0 ? a(!0) : t && t();
198
+ }, [r.changes.counter, t, a]), p = M(() => {
199
+ t && (r.changes.counter === 0 || c) && t();
200
+ }, [r.changes.counter, t, c]);
201
+ return {
202
+ DetailsHeaderContainer: y,
203
+ actionButton: m,
204
+ commonDetailsStore: r,
205
+ handleBackClick: h,
206
+ handleCancelClick: p,
207
+ headerRef: n,
208
+ location: v,
209
+ navigate: d,
210
+ params: o,
211
+ showAllVersions: R,
212
+ viewMode: b,
213
+ withToggleViewBtn: u
214
+ };
215
+ };
216
+ export {
217
+ we as useDetailsHeader
218
+ };
219
+ //# sourceMappingURL=useDetailsHeader.hook.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useDetailsHeader.hook.mjs","sources":["../../src/lib/hooks/useDetailsHeader.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*/\n\nimport React, { useCallback, useRef } from 'react'\nimport PropTypes from 'prop-types'\nimport { useSelector } from 'react-redux'\nimport { Link, useLocation, useNavigate, useParams } from 'react-router-dom'\n\nimport ActionsMenu from '../components/ActionsMenu/ActionsMenu'\nimport Button from '../components/Button/Button'\nimport LoadButton from '../components/LoadButton/LoadButton'\nimport RoundedIcon from '../components/RoundedIcon/RoundedIcon'\nimport TextTooltipTemplate from '../components/TooltipTemplate/TextTooltipTemplate'\nimport Tooltip from '../components/Tooltip/Tooltip'\n\nimport { ACTION_BUTTON, ACTIONS_MENU } from '../types'\nimport { TERTIARY_BUTTON, VIEW_SEARCH_PARAMETER, FULL_VIEW_MODE } from '../constants'\nimport { getFilteredSearchParams } from '../utils/filter.util'\nimport { getViewMode } from '../utils/common.util'\n\nimport Close from '../images/close.svg?react'\nimport EnlargeIcon from '../images/ml-enlarge.svg?react'\nimport HistoryIcon from '../images/history.svg?react'\nimport MinimizeIcon from '../images/ml-minimize.svg?react'\nimport Refresh from '../images/refresh.svg?react'\n\nconst DetailsHeaderContainer = ({\n actionButton = null,\n actionsMenu,\n applyChanges,\n applyChangesRef,\n cancelChanges,\n commonDetailsStore,\n getCloseDetailsLink = null,\n getDefaultCloseDetailsLink,\n handleCancelClick,\n handleRefresh = null,\n headerRef,\n isDetailsPopUp = false,\n isDetailsScreen,\n location,\n navigate,\n pageData,\n params,\n renderCustomElements = null,\n renderStatus = null,\n renderTitle,\n selectedItem,\n showAllVersions = null,\n tab = '',\n viewMode = '',\n withActionMenu = true,\n withToggleViewBtn = false\n}) => {\n return (\n <div className=\"item-header\" ref={headerRef}>\n <div className=\"item-header__data\">\n <h3 className=\"item-header__title\">{renderTitle && renderTitle()}</h3>\n <div className=\"item-header__status\">{renderStatus && renderStatus()}</div>\n </div>\n <div className=\"item-header__custom-elements\">\n {renderCustomElements && renderCustomElements()}\n </div>\n <div className=\"item-header__buttons\">\n {commonDetailsStore.changes.counter > 0 && !isDetailsPopUp && (\n <>\n <Button\n variant={TERTIARY_BUTTON}\n label=\"Cancel\"\n onClick={cancelChanges}\n disabled={commonDetailsStore.changes.counter === 0 || commonDetailsStore.editMode}\n />\n <Tooltip\n template={\n <TextTooltipTemplate\n text={`${commonDetailsStore.changes.counter} ${\n commonDetailsStore.changes.counter === 1 ? 'change pending' : 'changes pending'\n }`}\n />\n }\n >\n <LoadButton\n ref={applyChangesRef}\n variant=\"primary\"\n label=\"Apply Changes\"\n className=\"btn_apply-changes\"\n onClick={applyChanges}\n disabled={commonDetailsStore.changes.counter === 0 || commonDetailsStore.editMode}\n />\n </Tooltip>\n </>\n )}\n {actionButton && !actionButton.hidden && (\n <Button\n disabled={actionButton.disabled}\n label={actionButton.label}\n onClick={actionButton.onClick}\n tooltip={actionButton.tooltip}\n variant={actionButton.variant}\n />\n )}\n {showAllVersions && (\n <RoundedIcon\n id=\"showAllVersions\"\n onClick={() => showAllVersions()}\n tooltipText=\"Show all versions\"\n >\n <HistoryIcon />\n </RoundedIcon>\n )}\n {isDetailsScreen && handleRefresh && (\n <RoundedIcon\n id=\"refresh\"\n onClick={() => handleRefresh(selectedItem)}\n tooltipText=\"Refresh\"\n >\n <Refresh />\n </RoundedIcon>\n )}\n {withActionMenu && <ActionsMenu dataItem={selectedItem} menu={actionsMenu} time={500} />}\n <div className=\"item-header__navigation-buttons\">\n {withToggleViewBtn && !isDetailsPopUp && (\n <>\n {viewMode !== FULL_VIEW_MODE && (\n <RoundedIcon\n onClick={() => {\n navigate(\n `${location.pathname}${window.location.search}${window.location.search ? '&' : '?'}${VIEW_SEARCH_PARAMETER}=full`\n )\n }}\n id=\"full-view\"\n tooltipText=\"Full view\"\n >\n <EnlargeIcon />\n </RoundedIcon>\n )}\n {viewMode === FULL_VIEW_MODE && (\n <RoundedIcon\n onClick={() => {\n navigate(\n `${location.pathname}${getFilteredSearchParams(window.location.search, [VIEW_SEARCH_PARAMETER])}`\n )\n }}\n id=\"table-view\"\n tooltipText=\"Table view\"\n >\n <MinimizeIcon />\n </RoundedIcon>\n )}\n </>\n )}\n {!pageData.details.hideBackBtn &&\n (isDetailsPopUp ? (\n <div\n className=\"details-close-btn\"\n data-testid=\"details-close-btn\"\n onClick={handleCancelClick}\n >\n <RoundedIcon tooltipText=\"Close\" id=\"details-close\">\n <Close />\n </RoundedIcon>\n </div>\n ) : (\n <Link\n className=\"details-close-btn\"\n data-testid=\"details-close-btn\"\n to={\n getCloseDetailsLink\n ? getCloseDetailsLink(selectedItem.name)\n : getDefaultCloseDetailsLink(params, pageData.page, tab)\n }\n onClick={handleCancelClick}\n >\n <RoundedIcon tooltipText=\"Close\" id=\"details-close\">\n <Close />\n </RoundedIcon>\n </Link>\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nDetailsHeaderContainer.propTypes = {\n actionButton: ACTION_BUTTON,\n actionsMenu: ACTIONS_MENU.isRequired,\n applyChanges: PropTypes.func.isRequired,\n applyChangesRef: PropTypes.object.isRequired,\n cancelChanges: PropTypes.func.isRequired,\n commonDetailsStore: PropTypes.object.isRequired,\n getCloseDetailsLink: PropTypes.func,\n getDefaultCloseDetailsLink: PropTypes.func.isRequired,\n handleCancelClick: PropTypes.func.isRequired,\n handleRefresh: PropTypes.func,\n headerRef: PropTypes.object.isRequired,\n isDetailsPopUp: PropTypes.bool,\n isDetailsScreen: PropTypes.bool.isRequired,\n location: PropTypes.object.isRequired,\n navigate: PropTypes.func.isRequired,\n pageData: PropTypes.object.isRequired,\n params: PropTypes.object.isRequired,\n renderCustomElements: PropTypes.func,\n renderStatus: PropTypes.func,\n renderTitle: PropTypes.func.isRequired,\n selectedItem: PropTypes.object.isRequired,\n showAllVersions: PropTypes.func,\n tab: PropTypes.string,\n viewMode: PropTypes.string,\n withActionMenu: PropTypes.bool,\n withToggleViewBtn: PropTypes.bool\n}\n\nexport const useDetailsHeader = ({ handleCancel, handleShowWarning, isDetailsPopUp, pageData }) => {\n const commonDetailsStore = useSelector(store => store.commonDetailsStore)\n const params = useParams()\n const navigate = useNavigate()\n const viewMode = getViewMode(window.location.search)\n const { actionButton, withToggleViewBtn, showAllVersions } = pageData.details\n const headerRef = useRef()\n const location = useLocation()\n\n const handleBackClick = useCallback(() => {\n if (commonDetailsStore.changes.counter > 0) {\n handleShowWarning(true)\n } else if (handleCancel) {\n handleCancel()\n }\n }, [commonDetailsStore.changes.counter, handleCancel, handleShowWarning])\n\n const handleCancelClick = useCallback(() => {\n if (handleCancel && (commonDetailsStore.changes.counter === 0 || isDetailsPopUp)) {\n handleCancel()\n }\n }, [commonDetailsStore.changes.counter, handleCancel, isDetailsPopUp])\n\n return {\n DetailsHeaderContainer,\n actionButton,\n commonDetailsStore,\n handleBackClick,\n handleCancelClick,\n headerRef,\n location,\n navigate,\n params,\n showAllVersions,\n viewMode,\n withToggleViewBtn\n }\n}\n"],"names":["DetailsHeaderContainer","actionButton","actionsMenu","applyChanges","applyChangesRef","cancelChanges","commonDetailsStore","getCloseDetailsLink","getDefaultCloseDetailsLink","handleCancelClick","handleRefresh","headerRef","isDetailsPopUp","isDetailsScreen","location","navigate","pageData","params","renderCustomElements","renderStatus","renderTitle","selectedItem","showAllVersions","tab","viewMode","withActionMenu","withToggleViewBtn","jsxs","jsx","Fragment","Button","TERTIARY_BUTTON","Tooltip","TextTooltipTemplate","LoadButton","RoundedIcon","HistoryIcon","Refresh","ActionsMenu","FULL_VIEW_MODE","VIEW_SEARCH_PARAMETER","EnlargeIcon","getFilteredSearchParams","MinimizeIcon","Close","Link","ACTION_BUTTON","ACTIONS_MENU","PropTypes","useDetailsHeader","handleCancel","handleShowWarning","useSelector","store","useParams","useNavigate","getViewMode","useRef","useLocation","handleBackClick","useCallback"],"mappings":"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"}