iguazio.dashboard-react-controls 0.0.3 → 0.0.6

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.
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _reactDom = require("react-dom");
13
+
14
+ var _reactTransitionGroup = require("react-transition-group");
15
+
16
+ require("./Backdrop.scss");
17
+
18
+ var _jsxRuntime = require("react/jsx-runtime");
19
+
20
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
22
+ var Backdrop = function Backdrop(_ref) {
23
+ var _ref$duration = _ref.duration,
24
+ duration = _ref$duration === void 0 ? 300 : _ref$duration,
25
+ show = _ref.show,
26
+ onClose = _ref.onClose;
27
+ return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactTransitionGroup.CSSTransition, {
28
+ in: show,
29
+ timeout: duration,
30
+ classNames: "backdrop-transition",
31
+ mountOnEnter: true,
32
+ unmountOnExit: true,
33
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
34
+ className: "backdrop",
35
+ onClick: onClose
36
+ })
37
+ }), document.getElementById('overlay_container'));
38
+ };
39
+
40
+ Backdrop.defaultProps = {
41
+ duration: 300,
42
+ show: false
43
+ };
44
+ Backdrop.propTypes = {
45
+ show: _propTypes.default.bool.isRequired
46
+ };
47
+ var _default = Backdrop;
48
+ exports.default = _default;
@@ -0,0 +1,32 @@
1
+ @import '../../scss/colors';
2
+
3
+ .backdrop {
4
+ position: fixed;
5
+ top: 0;
6
+ left: 0;
7
+ width: 100vw;
8
+ height: 100vh;
9
+ background-color: $black;
10
+ z-index: 9;
11
+
12
+ &-transition {
13
+ &-enter {
14
+ opacity: 0;
15
+ }
16
+
17
+ &-enter-active,
18
+ &-enter-done {
19
+ opacity: 0.5;
20
+ transition: opacity 0.3s ease-in-out;
21
+ }
22
+
23
+ &-exit {
24
+ opacity: 0.5;
25
+ }
26
+
27
+ &-exit-active {
28
+ opacity: 0;
29
+ transition: opacity 0.3s ease-in-out;
30
+ }
31
+ }
32
+ }
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _Button = _interopRequireDefault(require("../Button/Button"));
15
+
16
+ var _PopUpDialog = _interopRequireDefault(require("../PopUpDialog/PopUpDialog"));
17
+
18
+ var _types = require("../../types");
19
+
20
+ require("./confirmDialog.scss");
21
+
22
+ var _jsxRuntime = require("react/jsx-runtime");
23
+
24
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
25
+
26
+ var ConfirmDialog = function ConfirmDialog(_ref) {
27
+ var cancelButton = _ref.cancelButton,
28
+ className = _ref.className,
29
+ closePopUp = _ref.closePopUp,
30
+ confirmButton = _ref.confirmButton,
31
+ customPosition = _ref.customPosition,
32
+ header = _ref.header,
33
+ isOpen = _ref.isOpen,
34
+ message = _ref.message,
35
+ messageOnly = _ref.messageOnly,
36
+ onResolve = _ref.onResolve;
37
+ var messageClassNames = (0, _classnames.default)('confirm-dialog__message', messageOnly && 'confirm-dialog__message-only');
38
+
39
+ var handleCancelDialog = function handleCancelDialog(event) {
40
+ onResolve && onResolve();
41
+ cancelButton.handler && cancelButton.handler(event);
42
+ };
43
+
44
+ var handleCloseDialog = function handleCloseDialog(event) {
45
+ onResolve && onResolve();
46
+ closePopUp && closePopUp(event);
47
+ };
48
+
49
+ var handleConfirmDialog = function handleConfirmDialog(event) {
50
+ onResolve && onResolve();
51
+ confirmButton.handler(event);
52
+ };
53
+
54
+ return isOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_PopUpDialog.default, {
55
+ className: className,
56
+ closePopUp: handleCloseDialog,
57
+ customPosition: customPosition,
58
+ headerText: header,
59
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
60
+ className: "confirm-dialog",
61
+ children: [message && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
62
+ className: messageClassNames,
63
+ children: message
64
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
65
+ className: "confirm-dialog__btn-container",
66
+ children: [cancelButton && /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
67
+ className: "pop-up-dialog__btn_cancel",
68
+ label: cancelButton.label,
69
+ onClick: handleCancelDialog,
70
+ variant: cancelButton.variant
71
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
72
+ label: confirmButton.label,
73
+ onClick: handleConfirmDialog,
74
+ variant: confirmButton.variant
75
+ })]
76
+ })]
77
+ })
78
+ });
79
+ };
80
+
81
+ ConfirmDialog.defaultProps = {
82
+ cancelButton: null,
83
+ className: '',
84
+ customPosition: {},
85
+ header: '',
86
+ message: '',
87
+ messageOnly: false
88
+ };
89
+ ConfirmDialog.propTypes = {
90
+ cancelButton: _types.CONFIRM_DIALOG_CANCEL_BUTTON,
91
+ className: _propTypes.default.string,
92
+ closePopUp: _propTypes.default.func,
93
+ confirmButton: _types.CONFIRM_DIALOG_SUBMIT_BUTTON.isRequired,
94
+ customPosition: _propTypes.default.object,
95
+ header: _propTypes.default.string,
96
+ message: _propTypes.default.string,
97
+ messageOnly: _propTypes.default.bool
98
+ };
99
+ var _default = ConfirmDialog;
100
+ exports.default = _default;
@@ -0,0 +1,19 @@
1
+ @import '../../scss/colors';
2
+
3
+ .confirm-dialog {
4
+ color: $primary;
5
+
6
+ &__message {
7
+ font-size: 15px;
8
+
9
+ &-only {
10
+ font-size: 22px;
11
+ }
12
+ }
13
+
14
+ &__btn-container {
15
+ display: flex;
16
+ justify-content: flex-end;
17
+ margin-top: 20px;
18
+ }
19
+ }
@@ -0,0 +1,119 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _reactDom = require("react-dom");
13
+
14
+ var _reactTransitionGroup = require("react-transition-group");
15
+
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
18
+ var _Backdrop = _interopRequireDefault(require("../Backdrop/Backdrop"));
19
+
20
+ var _components = require("igz-controls/components");
21
+
22
+ var _constants = require("../../constants");
23
+
24
+ var _types = require("../../types");
25
+
26
+ var _close = require("igz-controls/images/close.svg");
27
+
28
+ require("./Modal.scss");
29
+
30
+ var _jsxRuntime = require("react/jsx-runtime");
31
+
32
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
33
+
34
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
35
+
36
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
37
+
38
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
39
+
40
+ var JSX_MODAL = /*#__PURE__*/_react.default.forwardRef(function (_ref, ref) {
41
+ var actions = _ref.actions,
42
+ children = _ref.children,
43
+ className = _ref.className,
44
+ onClose = _ref.onClose,
45
+ size = _ref.size,
46
+ show = _ref.show,
47
+ title = _ref.title;
48
+ var modalClassNames = (0, _classnames.default)('modal', className, size && "modal-".concat(size));
49
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
50
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Backdrop.default, {
51
+ onClose: onClose,
52
+ show: show
53
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactTransitionGroup.CSSTransition, {
54
+ in: show,
55
+ timeout: 300,
56
+ classNames: "modal-transition",
57
+ unmountOnExit: true,
58
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
59
+ className: modalClassNames,
60
+ "data-testid": "modal",
61
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
62
+ className: "modal__header-button",
63
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_components.RoundedIcon, {
64
+ onClick: onClose,
65
+ tooltipText: "Close",
66
+ "data-testid": "pop-up-close-btn",
67
+ ref: ref,
68
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_close.ReactComponent, {})
69
+ })
70
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
71
+ className: "modal__content",
72
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
73
+ className: "modal__header",
74
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("h5", {
75
+ className: "modal__header-title",
76
+ children: title
77
+ })
78
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
79
+ className: "modal__body",
80
+ children: children
81
+ }), actions && actions.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
82
+ className: "modal__footer",
83
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
84
+ className: "modal__footer-actions",
85
+ children: actions.map(function (action, idx) {
86
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
87
+ children: action
88
+ }, idx);
89
+ })
90
+ })
91
+ })]
92
+ })]
93
+ })
94
+ })]
95
+ });
96
+ });
97
+
98
+ var Modal = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
99
+ return /*#__PURE__*/(0, _reactDom.createPortal)( /*#__PURE__*/(0, _jsxRuntime.jsx)(JSX_MODAL, _objectSpread(_objectSpread({}, props), {}, {
100
+ ref: ref
101
+ })), document.getElementById('overlay_container'));
102
+ });
103
+
104
+ Modal.defaultProps = {
105
+ actions: [],
106
+ show: false,
107
+ size: _constants.MODAL_MD,
108
+ title: ''
109
+ };
110
+ Modal.propTypes = {
111
+ actions: _propTypes.default.array,
112
+ children: _propTypes.default.oneOfType([_propTypes.default.element, _propTypes.default.object, _propTypes.default.node, _propTypes.default.string]).isRequired,
113
+ onClose: _propTypes.default.func.isRequired,
114
+ show: _propTypes.default.bool.isRequired,
115
+ size: _types.MODAL_SIZES,
116
+ title: _propTypes.default.string
117
+ };
118
+ var _default = Modal;
119
+ exports.default = _default;
@@ -0,0 +1,121 @@
1
+ @import '../../scss/variables';
2
+ @import '../../scss/colors';
3
+ @import '../../scss/borders';
4
+
5
+ .modal {
6
+ position: fixed;
7
+ top: 50%;
8
+ left: 50%;
9
+ width: 700px;
10
+ height: 660px;
11
+ max-width: 96%;
12
+ max-height: 96%;
13
+ outline: 0;
14
+ transform: translate(-50%, -50%);
15
+ z-index: 9;
16
+
17
+ @media screen and (min-width: 1200px) {
18
+ width: 1000px;
19
+
20
+ &-sm {
21
+ width: 700px;
22
+ }
23
+
24
+ &-lg {
25
+ width: 1400px;
26
+ }
27
+ }
28
+
29
+ &__content {
30
+ display: flex;
31
+ flex-flow: column nowrap;
32
+ position: relative;
33
+ padding-bottom: 1rem;
34
+ min-height: inherit;
35
+ height: 100%;
36
+ width: 100%;
37
+ max-height: 100%;
38
+ background-color: $white;
39
+ border-radius: $modalBorderRadius;
40
+ box-shadow: 0 6px 26px rgba($black, 0.2);
41
+ text-align: left;
42
+ }
43
+
44
+ &__header {
45
+ position: relative;
46
+ padding: 1.5rem 2rem;
47
+ display: flex;
48
+ flex-shrink: 0;
49
+ justify-content: center;
50
+ align-items: center;
51
+ border-bottom: $primaryBorder;
52
+
53
+ &-title {
54
+ color: $primary;
55
+ font-size: 2em;
56
+ font-weight: 400;
57
+ text-transform: capitalize;
58
+ margin: 0;
59
+ }
60
+
61
+ &-button {
62
+ position: absolute;
63
+ top: 10px;
64
+ right: 5px;
65
+ }
66
+ }
67
+
68
+ &__body {
69
+ overflow-y: auto;
70
+ overflow-x: hidden;
71
+ flex: 1 0;
72
+ flex-basis: 0;
73
+ padding: 1.5rem 2rem 0;
74
+ margin-bottom: 1rem;
75
+ }
76
+
77
+ &__footer {
78
+ display: flex;
79
+ flex-flow: row nowrap;
80
+ flex-shrink: 0;
81
+ justify-content: space-between;
82
+ padding: 0 2rem;
83
+ min-height: 50px;
84
+
85
+ &-actions {
86
+ display: flex;
87
+ flex: 1 0 auto;
88
+ justify-content: flex-end;
89
+ align-items: center;
90
+
91
+ & > *:not(:last-child) {
92
+ margin-right: 10px;
93
+ }
94
+ }
95
+ }
96
+
97
+ &-transition {
98
+ &-enter {
99
+ opacity: 0;
100
+ transform: translate(-50%, calc(100vh));
101
+ transition: all 0.3s ease-in-out;
102
+ }
103
+
104
+ &-enter-active,
105
+ &-enter-done {
106
+ opacity: 1;
107
+ transform: translate(-50%, -50%);
108
+ }
109
+
110
+ &-exit {
111
+ opacity: 1;
112
+ transform: translate(-50%, -50%);
113
+ }
114
+
115
+ &-exit-active {
116
+ opacity: 0;
117
+ transform: translate(-50%, -70%);
118
+ transition: all 0.3s ease-in-out;
119
+ }
120
+ }
121
+ }
@@ -59,7 +59,7 @@ var PopUpDialog = function PopUpDialog(_ref) {
59
59
  var popUpOverlayRef = (0, _react.useRef)(null);
60
60
  var popUpClassNames = (0, _classnames.default)(className, 'pop-up-dialog__overlay', customPosition.element && 'custom-position');
61
61
  var calculateCustomPopUpPosition = (0, _react.useCallback)(function () {
62
- if (customPosition.element) {
62
+ if (customPosition && customPosition.element) {
63
63
  var elementRect = customPosition.element.current.getBoundingClientRect();
64
64
  var popUpRect = popUpOverlayRef.current.getBoundingClientRect();
65
65
 
@@ -8,7 +8,7 @@
8
8
  padding: 20px;
9
9
  overflow-y: auto;
10
10
  background-color: $white;
11
- border-radius: $mainBorderRadius;
11
+ border-radius: $modalBorderRadius;
12
12
  box-shadow: 0 6px 26px rgba($black, 0.2);
13
13
 
14
14
  &__buttons_wrapper {
@@ -25,7 +25,7 @@
25
25
  width: 100%;
26
26
  height: 100%;
27
27
  background: $mineshaftTwo;
28
- z-index: 999;
28
+ z-index: 9;
29
29
 
30
30
  &.custom-position {
31
31
  width: auto;
@@ -40,7 +40,7 @@
40
40
  align-items: baseline;
41
41
  justify-content: space-between;
42
42
  min-height: 30px;
43
- margin-bottom: 20px;
43
+ margin-bottom: 15px;
44
44
 
45
45
  &-text {
46
46
  width: 100%;
@@ -5,5 +5,5 @@
5
5
  line-height: 1.4;
6
6
  display: flex;
7
7
  max-width: 400px;
8
- z-index: 999;
8
+ z-index: 9;
9
9
  }
@@ -0,0 +1,251 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.default = void 0;
9
+
10
+ var _react = _interopRequireWildcard(require("react"));
11
+
12
+ var _propTypes = _interopRequireDefault(require("prop-types"));
13
+
14
+ var _reactFinalForm = require("react-final-form");
15
+
16
+ var _classnames = _interopRequireDefault(require("classnames"));
17
+
18
+ var _Button = _interopRequireDefault(require("../Button/Button"));
19
+
20
+ var _ConfirmDialog = _interopRequireDefault(require("../ConfirmDialog/ConfirmDialog"));
21
+
22
+ var _Modal = _interopRequireDefault(require("../Modal/Modal"));
23
+
24
+ var _WizardSteps = _interopRequireDefault(require("./WizardSteps/WizardSteps"));
25
+
26
+ var _constants = require("../../constants");
27
+
28
+ var _types = require("../../types");
29
+
30
+ var _common = require("../../utils/common.util");
31
+
32
+ require("./Wizard.scss");
33
+
34
+ var _jsxRuntime = require("react/jsx-runtime");
35
+
36
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+
38
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
39
+
40
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
41
+
42
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
43
+
44
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
45
+
46
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47
+
48
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
49
+
50
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
51
+
52
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
53
+
54
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
55
+
56
+ function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
57
+
58
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
59
+
60
+ var Wizard = function Wizard(_ref) {
61
+ var children = _ref.children,
62
+ className = _ref.className,
63
+ confirmClose = _ref.confirmClose,
64
+ initialValues = _ref.initialValues,
65
+ isWizardOpen = _ref.isWizardOpen,
66
+ onWizardResolve = _ref.onWizardResolve,
67
+ onWizardSubmit = _ref.onWizardSubmit,
68
+ size = _ref.size,
69
+ title = _ref.title,
70
+ stepsConfig = _ref.stepsConfig,
71
+ submitButtonLabel = _ref.submitButtonLabel;
72
+
73
+ var _useState = (0, _react.useState)(0),
74
+ _useState2 = _slicedToArray(_useState, 2),
75
+ activeStepNumber = _useState2[0],
76
+ setActiveStepNumber = _useState2[1];
77
+
78
+ var activeStepTemplate = (0, _react.useMemo)(function () {
79
+ return _react.default.Children.toArray(children)[activeStepNumber];
80
+ }, [children, activeStepNumber]);
81
+ var totalSteps = (0, _react.useMemo)(function () {
82
+ return _react.default.Children.count(children) - 1 || 0;
83
+ }, [children]);
84
+ var hasSteps = (0, _react.useMemo)(function () {
85
+ return stepsConfig.some(function (step) {
86
+ return step.id;
87
+ });
88
+ }, [stepsConfig]);
89
+ var isLastStep = (0, _react.useMemo)(function () {
90
+ return activeStepNumber === totalSteps;
91
+ }, [activeStepNumber, totalSteps]);
92
+ var stepsMenu = (0, _react.useMemo)(function () {
93
+ return (stepsConfig === null || stepsConfig === void 0 ? void 0 : stepsConfig.map(function (step) {
94
+ return {
95
+ id: step.id,
96
+ label: step.label
97
+ };
98
+ })) || [];
99
+ }, [stepsConfig]);
100
+ var wizardClasses = (0, _classnames.default)('wizard-form', className, hasSteps && 'wizard-form__with-steps');
101
+
102
+ var goToNextStep = function goToNextStep() {
103
+ setActiveStepNumber(function (prevStep) {
104
+ return Math.min(++prevStep, totalSteps);
105
+ });
106
+ };
107
+
108
+ var goToPreviousStep = function goToPreviousStep() {
109
+ return setActiveStepNumber(function (prevStep) {
110
+ return Math.max(--prevStep, 0);
111
+ });
112
+ };
113
+
114
+ var jumpToStep = function jumpToStep(idx) {
115
+ return setActiveStepNumber(idx);
116
+ };
117
+
118
+ var _handleOnClose = function handleOnClose(FormState) {
119
+ if (confirmClose && FormState && FormState.dirty) {
120
+ (0, _common.openPopUp)(_ConfirmDialog.default, {
121
+ cancelButton: {
122
+ label: 'Cancel',
123
+ variant: _constants.TERTIARY_BUTTON
124
+ },
125
+ confirmButton: {
126
+ handler: onWizardResolve,
127
+ label: 'OK',
128
+ variant: _constants.SECONDARY_BUTTON
129
+ },
130
+ header: 'Are you sure?',
131
+ message: 'All changes will be lost'
132
+ });
133
+ } else {
134
+ onWizardResolve();
135
+ }
136
+ };
137
+
138
+ var handleSubmit = function handleSubmit(values) {
139
+ if (isLastStep) {
140
+ onWizardSubmit(values);
141
+ } else {
142
+ goToNextStep();
143
+ }
144
+ };
145
+
146
+ var getDefaultActions = function getDefaultActions(FormState) {
147
+ if (hasSteps) {
148
+ return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
149
+ onClick: goToPreviousStep,
150
+ disabled: activeStepNumber === 0,
151
+ label: "Back",
152
+ type: "button"
153
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
154
+ onClick: FormState.handleSubmit,
155
+ disabled: FormState.submitting,
156
+ label: isLastStep ? submitButtonLabel : 'Next',
157
+ type: "button",
158
+ variant: _constants.SECONDARY_BUTTON
159
+ })];
160
+ } else {
161
+ return [/*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
162
+ onClick: function onClick() {
163
+ return _handleOnClose(FormState);
164
+ },
165
+ label: "Cancel",
166
+ type: "button"
167
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
168
+ onClick: FormState.handleSubmit,
169
+ disabled: FormState.submitting,
170
+ label: submitButtonLabel,
171
+ type: "button",
172
+ variant: _constants.SECONDARY_BUTTON
173
+ })];
174
+ }
175
+ };
176
+
177
+ var renderModalActions = function renderModalActions(FormState) {
178
+ var _stepsConfig$activeSt;
179
+
180
+ if ((_stepsConfig$activeSt = stepsConfig[activeStepNumber]) !== null && _stepsConfig$activeSt !== void 0 && _stepsConfig$activeSt.getActions) {
181
+ return stepsConfig[activeStepNumber].getActions({
182
+ FormState: FormState,
183
+ goToNextStep: goToNextStep,
184
+ goToPreviousStep: goToPreviousStep,
185
+ handleOnClose: function handleOnClose() {
186
+ return _handleOnClose(FormState);
187
+ }
188
+ }).map(function (action) {
189
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, _objectSpread({}, action));
190
+ });
191
+ } else {
192
+ return getDefaultActions(FormState);
193
+ }
194
+ };
195
+
196
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
197
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactFinalForm.Form, {
198
+ initialValues: initialValues,
199
+ onSubmit: handleSubmit,
200
+ children: function children(FormState) {
201
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_Modal.default, {
202
+ actions: renderModalActions(FormState),
203
+ className: wizardClasses,
204
+ onClose: function onClose() {
205
+ return _handleOnClose(FormState);
206
+ },
207
+ show: isWizardOpen,
208
+ size: size,
209
+ title: title,
210
+ children: [hasSteps && /*#__PURE__*/(0, _jsxRuntime.jsx)(_WizardSteps.default, {
211
+ activeStepNumber: activeStepNumber,
212
+ jumpToStep: jumpToStep,
213
+ steps: stepsMenu
214
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
215
+ className: "wizard-form__content",
216
+ children: activeStepTemplate
217
+ })]
218
+ });
219
+ }
220
+ })
221
+ });
222
+ };
223
+
224
+ Wizard.defaultProps = {
225
+ className: '',
226
+ confirmClose: false,
227
+ initialValues: {},
228
+ size: _constants.MODAL_MD,
229
+ stepsConfig: [],
230
+ submitButtonLabel: 'Submit'
231
+ };
232
+ Wizard.propsTypes = {
233
+ className: _propTypes.default.string,
234
+ confirmClose: _propTypes.default.bool,
235
+ initialValues: _propTypes.default.object,
236
+ isOpen: _propTypes.default.bool.isRequired,
237
+ onResolve: _propTypes.default.func.isRequired,
238
+ onSubmit: _propTypes.default.func.isRequired,
239
+ size: _types.MODAL_SIZES,
240
+ title: _propTypes.default.string.isRequired,
241
+ stepsConfig: _types.WIZARD_STEPS_CONFIG,
242
+ submitButtonLabel: _propTypes.default.string
243
+ };
244
+
245
+ Wizard.Step = function (_ref2) {
246
+ var children = _ref2.children;
247
+ return children;
248
+ };
249
+
250
+ var _default = Wizard;
251
+ exports.default = _default;
@@ -0,0 +1,17 @@
1
+ .wizard-form {
2
+ &__with-steps {
3
+ .modal__body {
4
+ display: flex;
5
+ flex-flow: row nowrap;
6
+ overflow: hidden;
7
+ padding-right: 0;
8
+ }
9
+
10
+ .wizard-form__content {
11
+ overflow-y: auto;
12
+ height: 100%;
13
+ width: 100%;
14
+ padding-right: 2rem;
15
+ }
16
+ }
17
+ }
@@ -0,0 +1,65 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _react = _interopRequireDefault(require("react"));
9
+
10
+ var _propTypes = _interopRequireDefault(require("prop-types"));
11
+
12
+ var _classnames = _interopRequireDefault(require("classnames"));
13
+
14
+ var _Button = _interopRequireDefault(require("../../Button/Button"));
15
+
16
+ var _types = require("../../../types");
17
+
18
+ require("./WizardSteps.scss");
19
+
20
+ var _jsxRuntime = require("react/jsx-runtime");
21
+
22
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
+
24
+ var WizardSteps = function WizardSteps(_ref) {
25
+ var activeStepNumber = _ref.activeStepNumber,
26
+ jumpToStep = _ref.jumpToStep,
27
+ steps = _ref.steps;
28
+
29
+ var getStepClassNames = function getStepClassNames(idx) {
30
+ return (0, _classnames.default)('wizard-steps__item', idx === activeStepNumber && 'active', idx < activeStepNumber && 'valid');
31
+ };
32
+
33
+ var handleJumpToStep = function handleJumpToStep(event, idx) {
34
+ event.preventDefault();
35
+ jumpToStep(idx);
36
+ };
37
+
38
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
39
+ className: "wizard-steps",
40
+ children: steps.map(function (_ref2, idx) {
41
+ var id = _ref2.id,
42
+ label = _ref2.label;
43
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_Button.default, {
44
+ className: getStepClassNames(idx),
45
+ disabled: idx > activeStepNumber,
46
+ icon: /*#__PURE__*/(0, _jsxRuntime.jsx)("span", {
47
+ className: "wizard-steps__indicator",
48
+ children: idx + 1
49
+ }),
50
+ label: label,
51
+ onClick: function onClick(e) {
52
+ return handleJumpToStep(e, idx);
53
+ }
54
+ }, id);
55
+ })
56
+ });
57
+ };
58
+
59
+ WizardSteps.propTypes = {
60
+ activeStepNumber: _propTypes.default.number.isRequired,
61
+ jumpToStep: _propTypes.default.func.isRequired,
62
+ steps: _types.WIZARD_STEPS_CONFIG
63
+ };
64
+ var _default = WizardSteps;
65
+ exports.default = _default;
@@ -0,0 +1,67 @@
1
+ @import '../../../scss/variables';
2
+ @import '../../../scss/colors';
3
+ @import '../../../scss/borders';
4
+
5
+ .wizard-steps {
6
+ background-color: $white;
7
+ min-width: 260px;
8
+ margin-right: 1rem;
9
+
10
+ &__indicator {
11
+ display: inline-flex;
12
+ align-items: center;
13
+ justify-content: center;
14
+ border: 2px solid transparent;
15
+ border-radius: 50%;
16
+ padding: 10px;
17
+ width: 36px;
18
+ height: 36px;
19
+ }
20
+
21
+ &__item:not(:last-child) {
22
+ margin-bottom: 10px;
23
+ }
24
+
25
+ &__item {
26
+ justify-content: flex-start;
27
+ background-color: inherit;
28
+ border: 0;
29
+ border-radius: 8px;
30
+ font-size: 1em;
31
+ padding: 8px;
32
+ min-height: 52px;
33
+ width: 100%;
34
+
35
+ &.active {
36
+ background-color: $malibuTwo;
37
+ color: $cornflowerBlue;
38
+
39
+ .wizard-steps__indicator {
40
+ border-color: transparent;
41
+ color: $white;
42
+ background-color: $malibu;
43
+ }
44
+ }
45
+
46
+ &.valid {
47
+ color: $primary;
48
+
49
+ .wizard-steps__indicator {
50
+ border-color: $malibu;
51
+ color: $malibu;
52
+ background-color: inherit;
53
+ }
54
+ }
55
+
56
+ &:disabled {
57
+ border: 0;
58
+ color: $spunPearl;
59
+
60
+ .wizard-steps__indicator {
61
+ border-color: $spunPearl;
62
+ color: $spunPearl;
63
+ background-color: inherit;
64
+ }
65
+ }
66
+ }
67
+ }
@@ -9,6 +9,18 @@ Object.defineProperty(exports, "Button", {
9
9
  return _Button.default;
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "ConfirmDialog", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _ConfirmDialog.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "Modal", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _Modal.default;
22
+ }
23
+ });
12
24
  Object.defineProperty(exports, "PopUpDialog", {
13
25
  enumerable: true,
14
26
  get: function get() {
@@ -33,9 +45,19 @@ Object.defineProperty(exports, "Tooltip", {
33
45
  return _Tooltip.default;
34
46
  }
35
47
  });
48
+ Object.defineProperty(exports, "Wizard", {
49
+ enumerable: true,
50
+ get: function get() {
51
+ return _Wizard.default;
52
+ }
53
+ });
36
54
 
37
55
  var _Button = _interopRequireDefault(require("./Button/Button"));
38
56
 
57
+ var _ConfirmDialog = _interopRequireDefault(require("./ConfirmDialog/ConfirmDialog"));
58
+
59
+ var _Modal = _interopRequireDefault(require("./Modal/Modal"));
60
+
39
61
  var _PopUpDialog = _interopRequireDefault(require("./PopUpDialog/PopUpDialog"));
40
62
 
41
63
  var _RoundedIcon = _interopRequireDefault(require("./RoundedIcon/RoundedIcon"));
@@ -44,4 +66,6 @@ var _TextTooltipTemplate = _interopRequireDefault(require("./TooltipTemplate/Tex
44
66
 
45
67
  var _Tooltip = _interopRequireDefault(require("./Tooltip/Tooltip"));
46
68
 
69
+ var _Wizard = _interopRequireDefault(require("./Wizard/Wizard"));
70
+
47
71
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
package/dist/constants.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.TERTIARY_BUTTON = exports.SECONDARY_BUTTON = exports.PRIMARY_BUTTON = exports.LABEL_BUTTON = exports.INTERNAL_SERVER_ERROR_STATUS_CODE = exports.FORBIDDEN_ERROR_STATUS_CODE = exports.DANGER_BUTTON = exports.CONFLICT_ERROR_STATUS_CODE = void 0;
6
+ exports.TERTIARY_BUTTON = exports.SECONDARY_BUTTON = exports.PRIMARY_BUTTON = exports.MODAL_SM = exports.MODAL_MD = exports.MODAL_LG = exports.LABEL_BUTTON = exports.INTERNAL_SERVER_ERROR_STATUS_CODE = exports.FORBIDDEN_ERROR_STATUS_CODE = exports.DANGER_BUTTON = exports.CONFLICT_ERROR_STATUS_CODE = void 0;
7
7
 
8
8
  /*=========== BUTTONS =============*/
9
9
  var PRIMARY_BUTTON = 'primary';
@@ -23,4 +23,12 @@ exports.INTERNAL_SERVER_ERROR_STATUS_CODE = INTERNAL_SERVER_ERROR_STATUS_CODE;
23
23
  var CONFLICT_ERROR_STATUS_CODE = 409;
24
24
  exports.CONFLICT_ERROR_STATUS_CODE = CONFLICT_ERROR_STATUS_CODE;
25
25
  var FORBIDDEN_ERROR_STATUS_CODE = 403;
26
- exports.FORBIDDEN_ERROR_STATUS_CODE = FORBIDDEN_ERROR_STATUS_CODE;
26
+ /*=========== MODAL =============*/
27
+
28
+ exports.FORBIDDEN_ERROR_STATUS_CODE = FORBIDDEN_ERROR_STATUS_CODE;
29
+ var MODAL_SM = 'sm';
30
+ exports.MODAL_SM = MODAL_SM;
31
+ var MODAL_MD = 'md';
32
+ exports.MODAL_MD = MODAL_MD;
33
+ var MODAL_LG = 'lg';
34
+ exports.MODAL_LG = MODAL_LG;
@@ -0,0 +1,3 @@
1
+ <svg width="18" height="14" viewBox="0 0 18 14" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M18 1.99984L6 13.9998L0.5 8.49984L1.91 7.08984L6 11.1698L16.59 0.589844L18 1.99984Z" fill="#7F7989"/>
3
+ </svg>
@@ -33,6 +33,7 @@ $javaLight: #1fcc9e;
33
33
  $javaTwo: rgba($java, 0.24);
34
34
  $kimberly: #6d5e92;
35
35
  $malibu: #869cff;
36
+ $malibuTwo: rgba($malibu, 0.12);
36
37
  $maroonFlash: #bc2553;
37
38
  $mercury: #e7e7e7;
38
39
  $mineshaft: #333;
@@ -722,6 +722,11 @@
722
722
  }
723
723
  }
724
724
 
725
+ .disabled {
726
+ color: $doveGray;
727
+ cursor: not-allowed;
728
+ }
729
+
725
730
  .no-border {
726
731
  border-bottom: none;
727
732
 
@@ -3,6 +3,7 @@
3
3
  $heightRowTable: 55px;
4
4
  $leftRowOffset: 49px;
5
5
  $mainBorderRadius: 4px;
6
+ $modalBorderRadius: 8px;
6
7
 
7
8
  $navbarWidth: 245px;
8
9
  $navbarTogglerWidth: 35px;
package/dist/types.js CHANGED
@@ -3,7 +3,7 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.POP_UP_CUSTOM_POSITION = exports.BUTTON_VARIANTS = void 0;
6
+ exports.WIZARD_STEPS_CONFIG = exports.POP_UP_CUSTOM_POSITION = exports.MODAL_SIZES = exports.CONFIRM_DIALOG_SUBMIT_BUTTON = exports.CONFIRM_DIALOG_CANCEL_BUTTON = exports.BUTTON_VARIANTS = void 0;
7
7
 
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
 
@@ -20,4 +20,32 @@ var POP_UP_CUSTOM_POSITION = _propTypes.default.shape({
20
20
  position: _propTypes.default.oneOf(['top-left', 'top-right', 'bottom-left', 'bottom-right'])
21
21
  });
22
22
 
23
- exports.POP_UP_CUSTOM_POSITION = POP_UP_CUSTOM_POSITION;
23
+ exports.POP_UP_CUSTOM_POSITION = POP_UP_CUSTOM_POSITION;
24
+
25
+ var MODAL_SIZES = _propTypes.default.oneOf([_constants.MODAL_SM, _constants.MODAL_MD, _constants.MODAL_LG]);
26
+
27
+ exports.MODAL_SIZES = MODAL_SIZES;
28
+
29
+ var CONFIRM_DIALOG_CANCEL_BUTTON = _propTypes.default.shape({
30
+ handler: _propTypes.default.func,
31
+ label: _propTypes.default.string.isRequired,
32
+ variant: _propTypes.default.string.isRequired
33
+ });
34
+
35
+ exports.CONFIRM_DIALOG_CANCEL_BUTTON = CONFIRM_DIALOG_CANCEL_BUTTON;
36
+
37
+ var CONFIRM_DIALOG_SUBMIT_BUTTON = _propTypes.default.shape({
38
+ handler: _propTypes.default.func.isRequired,
39
+ label: _propTypes.default.string.isRequired,
40
+ variant: _propTypes.default.string.isRequired
41
+ });
42
+
43
+ exports.CONFIRM_DIALOG_SUBMIT_BUTTON = CONFIRM_DIALOG_SUBMIT_BUTTON;
44
+
45
+ var WIZARD_STEPS_CONFIG = _propTypes.default.arrayOf(_propTypes.default.shape({
46
+ id: _propTypes.default.string,
47
+ label: _propTypes.default.string,
48
+ getActions: _propTypes.default.func
49
+ }));
50
+
51
+ exports.WIZARD_STEPS_CONFIG = WIZARD_STEPS_CONFIG;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "iguazio.dashboard-react-controls",
3
- "version": "0.0.3",
3
+ "version": "0.0.6",
4
4
  "description": "Collection of resources (such as CSS styles, fonts and images) and ReactJS 17.x components to share among different Iguazio React repos.",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",
@@ -96,5 +96,8 @@
96
96
  "last 1 safari version"
97
97
  ]
98
98
  },
99
- "dependencies": {}
99
+ "dependencies": {
100
+ "final-form": "^4.20.7",
101
+ "react-final-form": "^6.5.9"
102
+ }
100
103
  }