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.
- package/dist/components/ActionsMenu/ActionsMenu.d.ts +18 -0
- package/dist/components/ActionsMenu/ActionsMenu.d.ts.map +1 -0
- package/dist/components/ActionsMenu/ActionsMenu.mjs +126 -0
- package/dist/components/ActionsMenu/ActionsMenu.mjs.map +1 -0
- package/dist/components/BlockerSpy/BlockerSpy.d.ts +12 -0
- package/dist/components/BlockerSpy/BlockerSpy.d.ts.map +1 -0
- package/dist/components/BlockerSpy/BlockerSpy.mjs +18 -0
- package/dist/components/BlockerSpy/BlockerSpy.mjs.map +1 -0
- package/dist/components/Button/Button.mjs +21 -20
- package/dist/components/Button/Button.mjs.map +1 -1
- package/dist/components/Chip/Chip.d.ts +3 -0
- package/dist/components/Chip/Chip.d.ts.map +1 -0
- package/dist/components/Chip/Chip.mjs +153 -0
- package/dist/components/Chip/Chip.mjs.map +1 -0
- package/dist/components/Chip/Chip.stories.d.ts +26 -0
- package/dist/components/Chip/Chip.stories.d.ts.map +1 -0
- package/dist/components/ChipCell/ChipCell.d.ts +3 -0
- package/dist/components/ChipCell/ChipCell.d.ts.map +1 -0
- package/dist/components/ChipCell/ChipCell.mjs +212 -0
- package/dist/components/ChipCell/ChipCell.mjs.map +1 -0
- package/dist/components/ChipCell/ChipTooltip/ChipTooltip.d.ts +15 -0
- package/dist/components/ChipCell/ChipTooltip/ChipTooltip.d.ts.map +1 -0
- package/dist/components/ChipCell/ChipTooltip/ChipTooltip.mjs +36 -0
- package/dist/components/ChipCell/ChipTooltip/ChipTooltip.mjs.map +1 -0
- package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.d.ts +35 -0
- package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.d.ts.map +1 -0
- package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.mjs +73 -0
- package/dist/components/ChipCell/HiddenChipsBlock/HiddenChipsBlock.mjs.map +1 -0
- package/dist/components/ChipForm/ChipForm.d.ts +25 -0
- package/dist/components/ChipForm/ChipForm.d.ts.map +1 -0
- package/dist/components/ChipForm/ChipForm.mjs +184 -0
- package/dist/components/ChipForm/ChipForm.mjs.map +1 -0
- package/dist/components/CopyToClipboard/CopyToClipboard.d.ts +18 -0
- package/dist/components/CopyToClipboard/CopyToClipboard.d.ts.map +1 -0
- package/dist/components/CopyToClipboard/CopyToClipboard.mjs +51 -0
- package/dist/components/CopyToClipboard/CopyToClipboard.mjs.map +1 -0
- package/dist/components/ErrorMessage/ErrorMessage.d.ts +12 -0
- package/dist/components/ErrorMessage/ErrorMessage.d.ts.map +1 -0
- package/dist/components/ErrorMessage/ErrorMessage.mjs +23 -0
- package/dist/components/ErrorMessage/ErrorMessage.mjs.map +1 -0
- package/dist/components/FormChipCell/FormChip/FormChip.mjs +48 -45
- package/dist/components/FormChipCell/FormChip/FormChip.mjs.map +1 -1
- package/dist/components/FormChipCell/FormChipCellView.mjs +69 -68
- package/dist/components/FormChipCell/FormChipCellView.mjs.map +1 -1
- package/dist/components/FormCombobox/FormCombobox.d.ts.map +1 -1
- package/dist/components/FormCombobox/FormCombobox.mjs +65 -65
- package/dist/components/FormCombobox/FormCombobox.mjs.map +1 -1
- package/dist/components/LoadButton/LoadButton.d.ts +16 -0
- package/dist/components/LoadButton/LoadButton.d.ts.map +1 -0
- package/dist/components/LoadButton/LoadButton.mjs +22 -0
- package/dist/components/LoadButton/LoadButton.mjs.map +1 -0
- package/dist/components/LoadButton/LoadButton.stories.d.ts +10 -0
- package/dist/components/LoadButton/LoadButton.stories.d.ts.map +1 -0
- package/dist/components/Loader/Loader.d.ts +3 -0
- package/dist/components/Loader/Loader.d.ts.map +1 -0
- package/dist/components/Loader/Loader.mjs +24 -0
- package/dist/components/Loader/Loader.mjs.map +1 -0
- package/dist/components/Loader/LoaderForSuspenseFallback.d.ts +3 -0
- package/dist/components/Loader/LoaderForSuspenseFallback.d.ts.map +1 -0
- package/dist/components/Loader/LoaderForSuspenseFallback.mjs +13 -0
- package/dist/components/Loader/LoaderForSuspenseFallback.mjs.map +1 -0
- package/dist/components/TableCell/TableCell.d.ts +28 -0
- package/dist/components/TableCell/TableCell.d.ts.map +1 -0
- package/dist/components/TableCell/TableCell.mjs +113 -0
- package/dist/components/TableCell/TableCell.mjs.map +1 -0
- package/dist/components/TabsSlider/TabsSlider.d.ts +20 -0
- package/dist/components/TabsSlider/TabsSlider.d.ts.map +1 -0
- package/dist/components/TabsSlider/TabsSlider.mjs +133 -0
- package/dist/components/TabsSlider/TabsSlider.mjs.map +1 -0
- package/dist/components/index.d.ts +12 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/index.mjs +60 -38
- package/dist/components/index.mjs.map +1 -1
- package/dist/constants.d.ts +9 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.mjs +35 -26
- package/dist/constants.mjs.map +1 -1
- package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts +16 -0
- package/dist/elements/ActionsMenuItem/ActionsMenuItem.d.ts.map +1 -0
- package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs +51 -0
- package/dist/elements/ActionsMenuItem/ActionsMenuItem.mjs.map +1 -0
- package/dist/elements/TableHead/TableHead.d.ts +20 -0
- package/dist/elements/TableHead/TableHead.d.ts.map +1 -0
- package/dist/elements/TableHead/TableHead.mjs +58 -0
- package/dist/elements/TableHead/TableHead.mjs.map +1 -0
- package/dist/elements/TableLinkCell/TableLinkCell.d.ts +24 -0
- package/dist/elements/TableLinkCell/TableLinkCell.d.ts.map +1 -0
- package/dist/elements/TableLinkCell/TableLinkCell.mjs +87 -0
- package/dist/elements/TableLinkCell/TableLinkCell.mjs.map +1 -0
- package/dist/elements/TableTypeCell/TableTypeCell.d.ts +12 -0
- package/dist/elements/TableTypeCell/TableTypeCell.d.ts.map +1 -0
- package/dist/elements/TableTypeCell/TableTypeCell.mjs +37 -0
- package/dist/elements/TableTypeCell/TableTypeCell.mjs.map +1 -0
- package/dist/elements/index.d.ts +5 -1
- package/dist/elements/index.d.ts.map +1 -1
- package/dist/elements/index.mjs +18 -10
- package/dist/elements/index.mjs.map +1 -1
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.mjs +14 -8
- package/dist/hooks/index.mjs.map +1 -1
- package/dist/hooks/useDetails.hook.d.ts +72 -0
- package/dist/hooks/useDetails.hook.d.ts.map +1 -0
- package/dist/hooks/useDetails.hook.mjs +204 -0
- package/dist/hooks/useDetails.hook.mjs.map +1 -0
- package/dist/hooks/useDetailsHeader.hook.d.ts +77 -0
- package/dist/hooks/useDetailsHeader.hook.d.ts.map +1 -0
- package/dist/hooks/useDetailsHeader.hook.mjs +219 -0
- package/dist/hooks/useDetailsHeader.hook.mjs.map +1 -0
- package/dist/hooks/useTable.hook.d.ts +60 -0
- package/dist/hooks/useTable.hook.d.ts.map +1 -0
- package/dist/hooks/useTable.hook.mjs +129 -0
- package/dist/hooks/useTable.hook.mjs.map +1 -0
- package/dist/images/add.svg.mjs +2 -3
- package/dist/images/add.svg.mjs.map +1 -1
- package/dist/images/add.svg2.mjs +6 -0
- package/dist/images/add.svg2.mjs.map +1 -0
- package/dist/images/cancel.svg +3 -0
- package/dist/images/copy-to-clipboard-icon.svg.mjs +6 -0
- package/dist/images/copy-to-clipboard-icon.svg.mjs.map +1 -0
- package/dist/images/elipsis.svg.mjs +6 -0
- package/dist/images/elipsis.svg.mjs.map +1 -0
- package/dist/images/history.svg.mjs +6 -0
- package/dist/images/history.svg.mjs.map +1 -0
- package/dist/images/ml-enlarge.svg.mjs +6 -0
- package/dist/images/ml-enlarge.svg.mjs.map +1 -0
- package/dist/images/ml-minimize.svg.mjs +6 -0
- package/dist/images/ml-minimize.svg.mjs.map +1 -0
- package/dist/images/refresh.svg.mjs +6 -0
- package/dist/images/refresh.svg.mjs.map +1 -0
- package/dist/images/unsuccess_alert.svg.mjs +6 -0
- package/dist/images/unsuccess_alert.svg.mjs.map +1 -0
- package/dist/index.css +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +10 -8
- package/dist/index.mjs.map +1 -1
- package/dist/reducers/commonDetailsReducer.d.ts +12 -0
- package/dist/reducers/commonDetailsReducer.d.ts.map +1 -0
- package/dist/reducers/commonDetailsReducer.mjs +77 -0
- package/dist/reducers/commonDetailsReducer.mjs.map +1 -0
- package/dist/reducers/index.d.ts +3 -0
- package/dist/reducers/index.d.ts.map +1 -0
- package/dist/reducers/index.mjs +7 -0
- package/dist/reducers/index.mjs.map +1 -0
- package/dist/reducers/notificationReducer.d.ts +3 -0
- package/dist/reducers/notificationReducer.d.ts.map +1 -0
- package/dist/reducers/notificationReducer.mjs +21 -0
- package/dist/reducers/notificationReducer.mjs.map +1 -0
- package/dist/scss/common.scss +655 -0
- package/dist/scss/details.scss +376 -0
- package/dist/scss/mixins.scss +1 -1
- package/dist/scss/table.scss +283 -0
- package/dist/types.d.ts +6 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.mjs +89 -45
- package/dist/types.mjs.map +1 -1
- package/dist/utils/chips.util.d.ts +30 -0
- package/dist/utils/chips.util.d.ts.map +1 -0
- package/dist/utils/chips.util.mjs +75 -0
- package/dist/utils/chips.util.mjs.map +1 -0
- package/dist/utils/common.util.d.ts +5 -0
- package/dist/utils/common.util.d.ts.map +1 -1
- package/dist/utils/common.util.mjs +80 -33
- package/dist/utils/common.util.mjs.map +1 -1
- package/dist/utils/datetime.util.d.ts +9 -0
- package/dist/utils/datetime.util.d.ts.map +1 -0
- package/dist/utils/datetime.util.mjs +53 -0
- package/dist/utils/datetime.util.mjs.map +1 -0
- package/dist/utils/filter.util.d.ts +5 -0
- package/dist/utils/filter.util.d.ts.map +1 -0
- package/dist/utils/filter.util.mjs +23 -0
- package/dist/utils/filter.util.mjs.map +1 -0
- package/dist/utils/index.d.ts +5 -0
- package/dist/utils/index.mjs +22 -12
- package/dist/utils/index.mjs.map +1 -1
- package/dist/utils/notification.util.d.ts +2 -0
- package/dist/utils/notification.util.d.ts.map +1 -0
- package/dist/utils/notification.util.mjs +17 -0
- package/dist/utils/notification.util.mjs.map +1 -0
- package/dist/utils/string.util.d.ts +6 -0
- package/dist/utils/string.util.d.ts.map +1 -0
- package/dist/utils/string.util.mjs +13 -0
- package/dist/utils/string.util.mjs.map +1 -0
- 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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"}
|