@deviceinsight/ng-ui-basic-components 7.3.0 → 7.5.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/index.cjs +909 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +608 -457
- package/dist/index.js.map +1 -1
- package/dist/style.css +244 -1
- package/dist/types/components/popup/Popup.d.ts.map +1 -1
- package/dist/types/components/popup/Popup.stories.d.ts +1 -0
- package/dist/types/components/popup/Popup.stories.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,49 +1,59 @@
|
|
|
1
|
-
import { jsx
|
|
2
|
-
import * as
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import { withTranslation
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import { useFloating
|
|
9
|
-
class
|
|
1
|
+
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import React__default, { useRef, useEffect, useState, createContext, useContext } from "react";
|
|
4
|
+
import cx from "classnames";
|
|
5
|
+
import { withTranslation, Trans, useTranslation } from "react-i18next";
|
|
6
|
+
import ReactDOM from "react-dom";
|
|
7
|
+
import Draggable from "react-draggable";
|
|
8
|
+
import { useFloating, autoUpdate, offset, flip, shift, size, arrow, useClick, useHover, safePolygon, useFocus, useDismiss, useInteractions, FloatingPortal } from "@floating-ui/react";
|
|
9
|
+
class Accordion extends React.Component {
|
|
10
10
|
state = {
|
|
11
11
|
currentPageIndex: -1
|
|
12
12
|
};
|
|
13
13
|
componentDidMount() {
|
|
14
|
-
const { defaultOpenPageIndex
|
|
15
|
-
|
|
14
|
+
const { defaultOpenPageIndex } = this.props;
|
|
15
|
+
if (defaultOpenPageIndex !== null && defaultOpenPageIndex !== void 0) {
|
|
16
|
+
this.handleAccordionToggle(defaultOpenPageIndex);
|
|
17
|
+
}
|
|
16
18
|
}
|
|
17
|
-
handleAccordionToggle = (
|
|
18
|
-
const { onPageChange
|
|
19
|
+
handleAccordionToggle = (index) => {
|
|
20
|
+
const { onPageChange } = this.props;
|
|
21
|
+
const newPageIndex = this.state.currentPageIndex !== index ? index : -1;
|
|
19
22
|
this.setState({
|
|
20
|
-
currentPageIndex:
|
|
21
|
-
})
|
|
23
|
+
currentPageIndex: newPageIndex
|
|
24
|
+
});
|
|
25
|
+
if (onPageChange) {
|
|
26
|
+
onPageChange(newPageIndex);
|
|
27
|
+
}
|
|
22
28
|
};
|
|
23
29
|
render() {
|
|
24
|
-
const { children
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
30
|
+
const { children, accordionClass } = this.props;
|
|
31
|
+
const { currentPageIndex } = this.state;
|
|
32
|
+
return /* @__PURE__ */ jsx("div", { className: accordionClass ? `di accordion ${accordionClass}` : "di accordion", children: children && children.map(
|
|
33
|
+
(child, index) => child ? /* @__PURE__ */ jsx(
|
|
34
|
+
child.type,
|
|
28
35
|
{
|
|
29
|
-
index
|
|
30
|
-
isOpen:
|
|
31
|
-
toggle: () => this.handleAccordionToggle(
|
|
32
|
-
...
|
|
36
|
+
index,
|
|
37
|
+
isOpen: currentPageIndex === index,
|
|
38
|
+
toggle: () => this.handleAccordionToggle(index),
|
|
39
|
+
...child.props
|
|
33
40
|
},
|
|
34
|
-
|
|
41
|
+
index
|
|
35
42
|
) : null
|
|
36
43
|
) });
|
|
37
44
|
}
|
|
38
45
|
}
|
|
39
|
-
class
|
|
46
|
+
class AccordionItem extends React.PureComponent {
|
|
40
47
|
render() {
|
|
41
|
-
const { badge
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
const { badge, children, isOpen, info1, itemClasses, title, titleTooltip, toggle, tools, ...rest } = this.props;
|
|
49
|
+
const accordionItemClasses = ["item"];
|
|
50
|
+
if (itemClasses) accordionItemClasses.push(itemClasses);
|
|
51
|
+
if (isOpen) accordionItemClasses.push("open");
|
|
52
|
+
return /* @__PURE__ */ jsxs("div", { className: accordionItemClasses.join(" "), children: [
|
|
53
|
+
/* @__PURE__ */ jsxs("div", { className: "head", children: [
|
|
54
|
+
/* @__PURE__ */ jsxs("span", { className: "title", onClick: toggle, "data-testid": rest["data-testid"], children: [
|
|
55
|
+
/* @__PURE__ */ jsx("h1", { title: titleTooltip, children: title }),
|
|
56
|
+
badge && /* @__PURE__ */ jsx(
|
|
47
57
|
"span",
|
|
48
58
|
{
|
|
49
59
|
className: "di label",
|
|
@@ -52,110 +62,146 @@ class Ge extends y.PureComponent {
|
|
|
52
62
|
backgroundColor: "#ddd",
|
|
53
63
|
borderColor: "transparent"
|
|
54
64
|
},
|
|
55
|
-
children:
|
|
65
|
+
children: badge
|
|
56
66
|
}
|
|
57
67
|
),
|
|
58
|
-
|
|
68
|
+
info1 && /* @__PURE__ */ jsx("span", { style: info1.cssStyle, children: info1.text })
|
|
59
69
|
] }),
|
|
60
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ jsx("span", { className: "tools", children: tools && tools.map((toolComponent, index) => /* @__PURE__ */ jsx("span", { className: "tool", children: toolComponent }, index)) })
|
|
61
71
|
] }),
|
|
62
|
-
/* @__PURE__ */
|
|
72
|
+
/* @__PURE__ */ jsx("div", { className: "cont", children })
|
|
63
73
|
] });
|
|
64
74
|
}
|
|
65
75
|
}
|
|
66
|
-
function
|
|
67
|
-
children
|
|
68
|
-
title
|
|
69
|
-
type
|
|
70
|
-
disabled
|
|
71
|
-
onClick
|
|
72
|
-
style
|
|
73
|
-
tabIndex
|
|
74
|
-
t
|
|
75
|
-
primary
|
|
76
|
-
danger
|
|
77
|
-
naked
|
|
78
|
-
className
|
|
79
|
-
small
|
|
80
|
-
...
|
|
76
|
+
function Button({
|
|
77
|
+
children,
|
|
78
|
+
title,
|
|
79
|
+
type,
|
|
80
|
+
disabled,
|
|
81
|
+
onClick,
|
|
82
|
+
style,
|
|
83
|
+
tabIndex,
|
|
84
|
+
t,
|
|
85
|
+
primary,
|
|
86
|
+
danger,
|
|
87
|
+
naked,
|
|
88
|
+
className,
|
|
89
|
+
small,
|
|
90
|
+
...rest
|
|
81
91
|
}) {
|
|
82
|
-
let
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
92
|
+
let btnTitle = title;
|
|
93
|
+
if (title && typeof title !== "string") {
|
|
94
|
+
btnTitle = t(title.id, {
|
|
95
|
+
defaultValue: title.defaultValue
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
return /* @__PURE__ */ jsx(
|
|
86
99
|
"button",
|
|
87
100
|
{
|
|
88
|
-
"data-testid":
|
|
89
|
-
type:
|
|
90
|
-
className:
|
|
91
|
-
title: typeof
|
|
92
|
-
disabled
|
|
93
|
-
onClick
|
|
94
|
-
style
|
|
95
|
-
tabIndex
|
|
96
|
-
children
|
|
101
|
+
"data-testid": rest["data-testid"],
|
|
102
|
+
type: type || "button",
|
|
103
|
+
className: cx("di button", className, { small, primary, danger, link: naked }),
|
|
104
|
+
title: typeof btnTitle === "string" ? btnTitle : void 0,
|
|
105
|
+
disabled,
|
|
106
|
+
onClick,
|
|
107
|
+
style,
|
|
108
|
+
tabIndex,
|
|
109
|
+
children
|
|
97
110
|
}
|
|
98
111
|
);
|
|
99
112
|
}
|
|
100
|
-
const
|
|
101
|
-
|
|
102
|
-
|
|
113
|
+
const Button$1 = withTranslation()(Button);
|
|
114
|
+
const ButtonRow = ({ children, dividing, className, style }) => /* @__PURE__ */ jsx("div", { style, className: `di button-row ${dividing ? "dividing" : ""} ${className || ""}`, children });
|
|
115
|
+
ButtonRow.defaultProps = {
|
|
116
|
+
dividing: false
|
|
117
|
+
};
|
|
118
|
+
const isTouchEvent = (event) => {
|
|
119
|
+
return !!event.touches;
|
|
103
120
|
};
|
|
104
|
-
const
|
|
105
|
-
const
|
|
106
|
-
let
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
121
|
+
const isInsideBoundingRect = (element, event) => {
|
|
122
|
+
const rect = element.getBoundingClientRect();
|
|
123
|
+
let x, y;
|
|
124
|
+
if (isTouchEvent(event)) {
|
|
125
|
+
x = event.touches[0].pageX;
|
|
126
|
+
y = event.touches[0].pageY;
|
|
127
|
+
} else {
|
|
128
|
+
x = event.pageX;
|
|
129
|
+
y = event.pageY;
|
|
130
|
+
}
|
|
131
|
+
return rect.left <= x && rect.right >= x && rect.top <= y && rect.bottom >= y;
|
|
132
|
+
};
|
|
133
|
+
const useOutsideClick = (elements, callback) => {
|
|
134
|
+
const callbackRef = useRef(callback);
|
|
135
|
+
useEffect(() => {
|
|
136
|
+
callbackRef.current = callback;
|
|
137
|
+
}, [callback]);
|
|
138
|
+
useEffect(() => {
|
|
139
|
+
const listener = (event) => {
|
|
140
|
+
const elementsNonNull = elements.filter((element) => element != null);
|
|
141
|
+
if (elementsNonNull.every(
|
|
142
|
+
(element) => element !== event.target && !element.contains(event.target) && !isInsideBoundingRect(element, event)
|
|
143
|
+
)) {
|
|
144
|
+
callbackRef.current(event);
|
|
145
|
+
}
|
|
117
146
|
};
|
|
118
|
-
|
|
119
|
-
|
|
147
|
+
document.addEventListener("mousedown", listener, true);
|
|
148
|
+
document.addEventListener("touchstart", listener, true);
|
|
149
|
+
return () => {
|
|
150
|
+
document.removeEventListener("mousedown", listener, true);
|
|
151
|
+
document.removeEventListener("touchstart", listener, true);
|
|
120
152
|
};
|
|
121
|
-
}, [
|
|
153
|
+
}, [elements]);
|
|
122
154
|
};
|
|
123
|
-
function
|
|
124
|
-
const
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
155
|
+
function ModalWindow({ className, width, header, content, footer, onOutsideClick }) {
|
|
156
|
+
const ref = useRef(null);
|
|
157
|
+
const [rootElement, setRootElement] = useState(null);
|
|
158
|
+
useEffect(() => {
|
|
159
|
+
setRootElement(ref.current);
|
|
160
|
+
}, []);
|
|
161
|
+
useOutsideClick([rootElement], () => {
|
|
162
|
+
if (onOutsideClick) onOutsideClick();
|
|
163
|
+
});
|
|
164
|
+
return /* @__PURE__ */ jsx(Draggable, { handle: ".modal-header", nodeRef: ref, children: /* @__PURE__ */ jsxs(
|
|
130
165
|
"div",
|
|
131
166
|
{
|
|
132
|
-
ref
|
|
133
|
-
className: `modal-window ${
|
|
167
|
+
ref,
|
|
168
|
+
className: `modal-window ${className || ""}`,
|
|
134
169
|
style: {
|
|
135
|
-
maxWidth:
|
|
170
|
+
maxWidth: width
|
|
136
171
|
},
|
|
137
172
|
children: [
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
173
|
+
header && /* @__PURE__ */ jsx("div", { className: "modal-header", children: header }),
|
|
174
|
+
content && /* @__PURE__ */ jsx("div", { className: "modal-content", children: content }),
|
|
175
|
+
footer && /* @__PURE__ */ jsx("div", { className: "modal-footer", children: footer })
|
|
141
176
|
]
|
|
142
177
|
}
|
|
143
178
|
) });
|
|
144
179
|
}
|
|
145
|
-
class
|
|
180
|
+
class Modal extends React__default.Component {
|
|
146
181
|
static defaultProps = {
|
|
147
182
|
width: "60%"
|
|
148
183
|
};
|
|
149
184
|
container;
|
|
150
185
|
modalRoot;
|
|
151
186
|
timeoutId;
|
|
152
|
-
constructor(
|
|
153
|
-
super(
|
|
187
|
+
constructor(props) {
|
|
188
|
+
super(props);
|
|
189
|
+
this.state = {
|
|
154
190
|
className: "di modal"
|
|
155
191
|
};
|
|
156
192
|
}
|
|
157
193
|
componentDidMount() {
|
|
158
|
-
this.container = document.createElement("div")
|
|
194
|
+
this.container = document.createElement("div");
|
|
195
|
+
this.modalRoot = document.getElementById("modal-root");
|
|
196
|
+
if (this.modalRoot) {
|
|
197
|
+
this.modalRoot.appendChild(this.container);
|
|
198
|
+
} else if (document.body) {
|
|
199
|
+
document.body.appendChild(this.container);
|
|
200
|
+
}
|
|
201
|
+
if (this.props.onOutsideClick) {
|
|
202
|
+
window.addEventListener("keydown", this.keyEventHandler);
|
|
203
|
+
}
|
|
204
|
+
this.timeoutId = setTimeout(
|
|
159
205
|
() => this.setState({
|
|
160
206
|
className: `di modal show ${this.props.className || ""}`
|
|
161
207
|
}),
|
|
@@ -163,177 +209,210 @@ class ye extends P.Component {
|
|
|
163
209
|
);
|
|
164
210
|
}
|
|
165
211
|
componentWillUnmount() {
|
|
166
|
-
|
|
212
|
+
if (this.container) {
|
|
213
|
+
if (this.modalRoot) {
|
|
214
|
+
this.modalRoot.removeChild(this.container);
|
|
215
|
+
} else if (document.body) {
|
|
216
|
+
document.body.removeChild(this.container);
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
if (this.props.onOutsideClick) {
|
|
220
|
+
window.removeEventListener("keydown", this.keyEventHandler);
|
|
221
|
+
}
|
|
222
|
+
if (this.timeoutId) {
|
|
223
|
+
clearTimeout(this.timeoutId);
|
|
224
|
+
}
|
|
167
225
|
}
|
|
168
|
-
keyEventHandler = (
|
|
169
|
-
|
|
226
|
+
keyEventHandler = (event) => {
|
|
227
|
+
if (event.key === "Escape" && this.props.onOutsideClick) {
|
|
228
|
+
this.props.onOutsideClick(event);
|
|
229
|
+
}
|
|
170
230
|
};
|
|
171
231
|
render() {
|
|
172
|
-
|
|
173
|
-
|
|
232
|
+
if (!this.container) {
|
|
233
|
+
return null;
|
|
234
|
+
}
|
|
235
|
+
return ReactDOM.createPortal(
|
|
236
|
+
/* @__PURE__ */ jsx("div", { className: this.state.className, onMouseDown: this.props.onMouseDown, children: /* @__PURE__ */ jsx(ModalWindow, { ...this.props }) }),
|
|
174
237
|
this.container
|
|
175
|
-
)
|
|
238
|
+
);
|
|
176
239
|
}
|
|
177
240
|
}
|
|
178
|
-
class
|
|
241
|
+
class ModalContainer extends React__default.PureComponent {
|
|
179
242
|
render() {
|
|
180
|
-
return /* @__PURE__ */
|
|
243
|
+
return /* @__PURE__ */ jsx("div", { id: "modal-root" });
|
|
181
244
|
}
|
|
182
245
|
}
|
|
183
|
-
class
|
|
246
|
+
class Spinner extends React__default.Component {
|
|
184
247
|
static defaultProps = {
|
|
185
248
|
size: 56,
|
|
186
|
-
center:
|
|
249
|
+
center: false
|
|
187
250
|
};
|
|
188
251
|
render() {
|
|
189
|
-
const { size:
|
|
190
|
-
let
|
|
191
|
-
width:
|
|
192
|
-
height:
|
|
252
|
+
const { size: size2 = 56, center, ...dataAttrs } = this.props;
|
|
253
|
+
let style = {
|
|
254
|
+
width: size2,
|
|
255
|
+
height: size2
|
|
193
256
|
};
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
257
|
+
if (center) {
|
|
258
|
+
style = {
|
|
259
|
+
...style,
|
|
260
|
+
position: "absolute",
|
|
261
|
+
top: "50%",
|
|
262
|
+
left: "50%",
|
|
263
|
+
marginTop: -size2 / 2,
|
|
264
|
+
marginLeft: -size2 / 2
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
return /* @__PURE__ */ jsx("div", { className: "di spinner", style, ...dataAttrs });
|
|
202
268
|
}
|
|
203
269
|
}
|
|
204
|
-
class
|
|
270
|
+
class SpinnerContainer extends React__default.Component {
|
|
205
271
|
static defaultProps = {
|
|
206
272
|
size: 56
|
|
207
273
|
};
|
|
208
274
|
render() {
|
|
209
|
-
const { show
|
|
210
|
-
|
|
211
|
-
|
|
275
|
+
const { show, size: size2, children, className } = this.props;
|
|
276
|
+
const classNames = `di spinner-wrapper ${className ? className : ""}`;
|
|
277
|
+
return /* @__PURE__ */ jsxs("div", { className: classNames, children: [
|
|
278
|
+
/* @__PURE__ */ jsx(
|
|
212
279
|
"div",
|
|
213
280
|
{
|
|
214
|
-
className: `di spinner-container ${
|
|
281
|
+
className: `di spinner-container ${show ? "visible" : ""}`,
|
|
215
282
|
"data-testid": this.props["data-testid"],
|
|
216
|
-
children: /* @__PURE__ */
|
|
283
|
+
children: /* @__PURE__ */ jsx(Spinner, { size: size2, center: true })
|
|
217
284
|
}
|
|
218
285
|
),
|
|
219
|
-
|
|
286
|
+
children
|
|
220
287
|
] });
|
|
221
288
|
}
|
|
222
289
|
}
|
|
223
|
-
const
|
|
224
|
-
switch (
|
|
290
|
+
const getWrapperClassName = (type, small) => {
|
|
291
|
+
switch (type) {
|
|
225
292
|
case "checkbox":
|
|
226
293
|
case "radio":
|
|
227
294
|
return "di checkbox";
|
|
228
295
|
case "toggle":
|
|
229
|
-
return
|
|
296
|
+
return small ? "di toggle toggle-small" : "di toggle";
|
|
230
297
|
default:
|
|
231
|
-
throw Error(`type not support: ${
|
|
298
|
+
throw Error(`type not support: ${type}`);
|
|
232
299
|
}
|
|
233
|
-
}
|
|
234
|
-
|
|
300
|
+
};
|
|
301
|
+
const getCheckboxClassName = (type, small) => {
|
|
302
|
+
switch (type) {
|
|
235
303
|
case "checkbox":
|
|
236
304
|
return "box";
|
|
237
305
|
case "radio":
|
|
238
306
|
return "radio";
|
|
239
307
|
case "toggle":
|
|
240
|
-
return
|
|
308
|
+
return small ? "switch switch-small" : "switch";
|
|
241
309
|
default:
|
|
242
|
-
throw Error(`type not support: ${
|
|
310
|
+
throw Error(`type not support: ${type}`);
|
|
243
311
|
}
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
312
|
+
};
|
|
313
|
+
const Checkbox = ({
|
|
314
|
+
type = "checkbox",
|
|
315
|
+
value,
|
|
316
|
+
onChange,
|
|
317
|
+
title,
|
|
318
|
+
label,
|
|
319
|
+
disabled = false,
|
|
320
|
+
toggleSmall = false,
|
|
321
|
+
toggleColor = "#259b23",
|
|
322
|
+
t,
|
|
323
|
+
...other
|
|
255
324
|
}) => {
|
|
256
|
-
const
|
|
257
|
-
backgroundColor:
|
|
258
|
-
} : {}
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
325
|
+
const style = type === "toggle" ? {
|
|
326
|
+
backgroundColor: value ? toggleColor : "gray"
|
|
327
|
+
} : {};
|
|
328
|
+
const tooltip = title ? t(title.id, {
|
|
329
|
+
defaultValue: title.defaultValue
|
|
330
|
+
}) : void 0;
|
|
331
|
+
const labelText = label ? t(label.id, {
|
|
332
|
+
defaultValue: label.defaultValue
|
|
262
333
|
}) : null;
|
|
263
|
-
return /* @__PURE__ */
|
|
334
|
+
return /* @__PURE__ */ jsxs(
|
|
264
335
|
"label",
|
|
265
336
|
{
|
|
266
|
-
title:
|
|
267
|
-
className:
|
|
268
|
-
"data-testid":
|
|
337
|
+
title: tooltip,
|
|
338
|
+
className: getWrapperClassName(type, toggleSmall),
|
|
339
|
+
"data-testid": other["wrapper-data-testid"],
|
|
269
340
|
children: [
|
|
270
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ jsx(
|
|
271
342
|
"input",
|
|
272
343
|
{
|
|
273
344
|
type: "checkbox",
|
|
274
|
-
checked:
|
|
275
|
-
disabled
|
|
276
|
-
onChange: () =>
|
|
277
|
-
"data-testid":
|
|
345
|
+
checked: value,
|
|
346
|
+
disabled,
|
|
347
|
+
onChange: () => onChange(!value),
|
|
348
|
+
"data-testid": other["data-testid"]
|
|
278
349
|
}
|
|
279
350
|
),
|
|
280
|
-
/* @__PURE__ */
|
|
351
|
+
/* @__PURE__ */ jsx(
|
|
281
352
|
"div",
|
|
282
353
|
{
|
|
283
|
-
className:
|
|
284
|
-
style
|
|
285
|
-
"data-testid":
|
|
354
|
+
className: getCheckboxClassName(type, toggleSmall),
|
|
355
|
+
style,
|
|
356
|
+
"data-testid": other["innerdiv-data-testid"]
|
|
286
357
|
}
|
|
287
358
|
),
|
|
288
|
-
|
|
359
|
+
label && /* @__PURE__ */ jsx("span", { className: "textlabel", children: labelText })
|
|
289
360
|
]
|
|
290
361
|
}
|
|
291
362
|
);
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
363
|
+
};
|
|
364
|
+
const Checkbox_default = withTranslation()(Checkbox);
|
|
365
|
+
function isTranslationDescriptor(arg) {
|
|
366
|
+
const result = typeof arg === "object" && typeof arg.id === "string" && typeof arg.defaultValue === "string";
|
|
367
|
+
if (result) {
|
|
368
|
+
console.warn(
|
|
369
|
+
"Please use strings instead of TranslationDescriptors to initialize the Confirm modal, because TranslationDescriptors are deprecated"
|
|
370
|
+
);
|
|
371
|
+
}
|
|
372
|
+
return result;
|
|
298
373
|
}
|
|
299
|
-
function
|
|
300
|
-
|
|
374
|
+
function transformTextToElement(message) {
|
|
375
|
+
if (isTranslationDescriptor(message)) {
|
|
376
|
+
return /* @__PURE__ */ jsx(Trans, { i18nKey: message.id, children: message.defaultValue });
|
|
377
|
+
}
|
|
378
|
+
return message;
|
|
301
379
|
}
|
|
302
|
-
function
|
|
303
|
-
title
|
|
304
|
-
message
|
|
305
|
-
onAccept
|
|
306
|
-
onDecline
|
|
307
|
-
acceptButtonLabel
|
|
308
|
-
declineButtonLabel
|
|
309
|
-
acceptButtonStyle
|
|
380
|
+
function Confirm({
|
|
381
|
+
title,
|
|
382
|
+
message,
|
|
383
|
+
onAccept,
|
|
384
|
+
onDecline,
|
|
385
|
+
acceptButtonLabel,
|
|
386
|
+
declineButtonLabel,
|
|
387
|
+
acceptButtonStyle = "primary"
|
|
310
388
|
}) {
|
|
311
|
-
return /* @__PURE__ */
|
|
312
|
-
|
|
389
|
+
return /* @__PURE__ */ jsx(
|
|
390
|
+
Modal,
|
|
313
391
|
{
|
|
314
|
-
header:
|
|
315
|
-
content:
|
|
316
|
-
footer: /* @__PURE__ */
|
|
317
|
-
/* @__PURE__ */
|
|
318
|
-
|
|
392
|
+
header: transformTextToElement(title),
|
|
393
|
+
content: transformTextToElement(message),
|
|
394
|
+
footer: /* @__PURE__ */ jsxs("div", { children: [
|
|
395
|
+
/* @__PURE__ */ jsx(
|
|
396
|
+
Button$1,
|
|
319
397
|
{
|
|
320
|
-
primary:
|
|
321
|
-
danger:
|
|
322
|
-
onClick:
|
|
323
|
-
children:
|
|
398
|
+
primary: acceptButtonStyle === "primary",
|
|
399
|
+
danger: acceptButtonStyle === "danger",
|
|
400
|
+
onClick: onAccept,
|
|
401
|
+
children: acceptButtonLabel ? transformTextToElement(acceptButtonLabel) : /* @__PURE__ */ jsx(Trans, { i18nKey: "form.accept", children: "Accept" })
|
|
324
402
|
}
|
|
325
403
|
),
|
|
326
|
-
/* @__PURE__ */
|
|
404
|
+
/* @__PURE__ */ jsx(Button$1, { onClick: onDecline, children: declineButtonLabel ? transformTextToElement(declineButtonLabel) : /* @__PURE__ */ jsx(Trans, { i18nKey: "form.decline", children: "Decline" }) })
|
|
327
405
|
] }),
|
|
328
406
|
width: 500
|
|
329
407
|
}
|
|
330
408
|
);
|
|
331
409
|
}
|
|
332
|
-
const
|
|
410
|
+
const ConfirmContext = createContext({
|
|
333
411
|
confirm: () => Promise.reject(new Error("ConfirmProvider is missing!"))
|
|
334
412
|
});
|
|
335
|
-
function
|
|
336
|
-
const [
|
|
413
|
+
function ConfirmProvider({ children }) {
|
|
414
|
+
const [visible, setVisible] = useState(false);
|
|
415
|
+
const [confirmProps, setConfirmProps] = useState({
|
|
337
416
|
title: "",
|
|
338
417
|
message: "",
|
|
339
418
|
onAccept: () => {
|
|
@@ -341,370 +420,442 @@ function Ae({ children: n }) {
|
|
|
341
420
|
onDecline: () => {
|
|
342
421
|
}
|
|
343
422
|
});
|
|
344
|
-
async function
|
|
345
|
-
return new Promise((
|
|
346
|
-
|
|
347
|
-
|
|
423
|
+
async function confirm(options) {
|
|
424
|
+
return new Promise((resolve) => {
|
|
425
|
+
setVisible(true);
|
|
426
|
+
setConfirmProps({
|
|
427
|
+
...options,
|
|
348
428
|
onAccept: () => {
|
|
349
|
-
|
|
429
|
+
setVisible(false);
|
|
430
|
+
resolve(true);
|
|
350
431
|
},
|
|
351
432
|
onDecline: () => {
|
|
352
|
-
|
|
433
|
+
setVisible(false);
|
|
434
|
+
resolve(false);
|
|
353
435
|
}
|
|
354
436
|
});
|
|
355
437
|
});
|
|
356
438
|
}
|
|
357
|
-
return /* @__PURE__ */
|
|
358
|
-
|
|
359
|
-
|
|
439
|
+
return /* @__PURE__ */ jsxs(ConfirmContext.Provider, { value: { confirm }, children: [
|
|
440
|
+
children,
|
|
441
|
+
visible && /* @__PURE__ */ jsx(Confirm, { ...confirmProps })
|
|
360
442
|
] });
|
|
361
443
|
}
|
|
362
|
-
function
|
|
363
|
-
const
|
|
364
|
-
if (!
|
|
444
|
+
function useConfirm() {
|
|
445
|
+
const context = useContext(ConfirmContext);
|
|
446
|
+
if (!context) {
|
|
365
447
|
throw new Error("ConfirmProvider is missing");
|
|
366
|
-
|
|
367
|
-
|
|
448
|
+
}
|
|
449
|
+
const { confirm } = context;
|
|
450
|
+
return confirm;
|
|
368
451
|
}
|
|
369
|
-
function
|
|
370
|
-
function
|
|
371
|
-
const
|
|
372
|
-
|
|
373
|
-
|
|
452
|
+
function withConfirm(WrappedComponent) {
|
|
453
|
+
function WithConfirm(props) {
|
|
454
|
+
const confirm = useConfirm();
|
|
455
|
+
const { t } = useTranslation();
|
|
456
|
+
function trans(arg) {
|
|
457
|
+
if (isTranslationDescriptor(arg)) {
|
|
458
|
+
return t(arg.id, { defaultValue: arg.defaultValue });
|
|
459
|
+
}
|
|
460
|
+
return arg;
|
|
374
461
|
}
|
|
375
|
-
async function
|
|
376
|
-
const
|
|
377
|
-
title:
|
|
378
|
-
message:
|
|
379
|
-
acceptButtonLabel:
|
|
380
|
-
declineButtonLabel:
|
|
381
|
-
acceptButtonStyle
|
|
462
|
+
async function deprecatedConfirm(title, message, acceptButtonLabel, declineButtonLabel, resolveWithConfirmation, acceptButtonStyle) {
|
|
463
|
+
const accepted = await confirm({
|
|
464
|
+
title: trans(title),
|
|
465
|
+
message: isTranslationDescriptor(message) ? trans(message) : message,
|
|
466
|
+
acceptButtonLabel: acceptButtonLabel ? trans(acceptButtonLabel) : void 0,
|
|
467
|
+
declineButtonLabel: declineButtonLabel ? trans(declineButtonLabel) : void 0,
|
|
468
|
+
acceptButtonStyle
|
|
382
469
|
});
|
|
383
|
-
if (
|
|
384
|
-
return
|
|
385
|
-
if (!
|
|
470
|
+
if (resolveWithConfirmation) {
|
|
471
|
+
return accepted;
|
|
472
|
+
} else if (!accepted) {
|
|
386
473
|
return new Promise(() => {
|
|
387
474
|
});
|
|
475
|
+
}
|
|
388
476
|
}
|
|
389
|
-
return /* @__PURE__ */
|
|
477
|
+
return /* @__PURE__ */ jsx(WrappedComponent, { ...props, confirm: deprecatedConfirm });
|
|
390
478
|
}
|
|
391
|
-
return function(
|
|
392
|
-
return /* @__PURE__ */
|
|
479
|
+
return function WithConfirmWrapper(props) {
|
|
480
|
+
return /* @__PURE__ */ jsx(ConfirmProvider, { children: /* @__PURE__ */ jsx(WithConfirm, { ...props }) });
|
|
393
481
|
};
|
|
394
482
|
}
|
|
395
|
-
const
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
483
|
+
const iconAdd = "data:image/svg+xml,%3csvg%20id='icon-add_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='plus'%20points='20%2010%2014%2010%2014%204%2010%204%2010%2010%204%2010%204%2014%2010%2014%2010%2020%2014%2020%2014%2014%2020%2014%2020%2010'/%3e%3c/svg%3e";
|
|
484
|
+
const iconDel = "data:image/svg+xml,%3csvg%20id='icon-cross_24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cpolygon%20id='icon-cross_24'%20points='20%206.28%2017.87%204%2012%209.78%206.13%204%204%206.28%209.78%2011.97%204%2017.66%206.13%2019.93%2012%2014.15%2017.87%2019.93%2020%2017.66%2014.22%2011.97%2020%206.28'/%3e%3c/svg%3e";
|
|
485
|
+
const iconEdit = "data:image/svg+xml,%3csvg%20id='icon-edit-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='stift'%3e%3cpath%20d='M7.35,12.65a.5.5,0,0,0,0,.7l3.3,3.3a.5.5,0,0,0,.7,0l8.3-8.3A1.4,1.4,0,0,0,20,7.5v-1a1.4,1.4,0,0,0-.35-.85l-1.3-1.3A1.4,1.4,0,0,0,17.5,4h-1a1.4,1.4,0,0,0-.85.35Z'/%3e%3c/g%3e%3cpath%20d='M5.9,14.49c.06-.27.26-.33.45-.14l3.3,3.3c.19.19.13.39-.14.45l-4,.8a.3.3,0,0,1-.39-.39Z'/%3e%3c/svg%3e";
|
|
486
|
+
const iconConfig = "data:image/svg+xml,%3csvg%20id='icon-gear-24_sga'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='icon-gear-24_sga-2'%20data-name='icon-gear-24_sga'%3e%3cpath%20d='M22.82,14.06A1.25,1.25,0,0,0,24,13,7.66,7.66,0,0,0,24,12,7.66,7.66,0,0,0,24,11a1.25,1.25,0,0,0-1.13-1l-1.09,0A1.49,1.49,0,0,1,20.44,9c-.15-.47-.44-2-.07-2.37l.74-.81a1.16,1.16,0,0,0,0-1.5L19.7,2.87a1.16,1.16,0,0,0-1.5,0l-.81.74a1.5,1.5,0,0,1-1.54.27c-.44-.23-1.72-1.08-1.74-1.63l0-1.09A1.25,1.25,0,0,0,13,.05a7.66,7.66,0,0,0-1,0,7.66,7.66,0,0,0-1,.05,1.25,1.25,0,0,0-1,1.13l0,1.09A1.52,1.52,0,0,1,9,3.56c-.47.15-2,.44-2.37.07L5.8,2.89a1.16,1.16,0,0,0-1.5,0L2.86,4.3a1.18,1.18,0,0,0,0,1.5l.74.81A1.5,1.5,0,0,1,3.9,8.15c-.23.44-1.08,1.72-1.63,1.74l-1.09,0A1.25,1.25,0,0,0,.05,11a7.66,7.66,0,0,0,0,1,7.66,7.66,0,0,0,.05,1,1.25,1.25,0,0,0,1.13,1l1.09,0A1.47,1.47,0,0,1,3.55,15c.16.48.45,2,.08,2.37l-.74.81a1.16,1.16,0,0,0,0,1.5L4.3,21.13a1.16,1.16,0,0,0,1.5,0l.81-.74a1.5,1.5,0,0,1,1.54-.27c.44.23,1.72,1.08,1.75,1.63l0,1.09A1.25,1.25,0,0,0,11,24,7.66,7.66,0,0,0,12,24,7.66,7.66,0,0,0,13,24a1.25,1.25,0,0,0,1-1.13l0-1.09A1.49,1.49,0,0,1,15,20.44c.47-.15,2-.44,2.37-.07l.81.74a1.16,1.16,0,0,0,1.5,0l1.43-1.43a1.16,1.16,0,0,0,0-1.5l-.74-.81a1.5,1.5,0,0,1-.27-1.54c.23-.44,1.08-1.72,1.63-1.74ZM12,15.5A3.5,3.5,0,1,1,15.5,12,3.5,3.5,0,0,1,12,15.5Z'/%3e%3c/g%3e%3c/svg%3e";
|
|
487
|
+
const iconDuplicate = "data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%3e%3cpath%20d='M22.1,4.91a3,3,0,0,0-3-3H6.44a2.4,2.4,0,0,1,1.34-.4h12.6A2.12,2.12,0,0,1,22.5,3.62V17.26a1.42,1.42,0,0,1-.4,1Z'/%3e%3cpath%20d='M20.38,1H7.78A3,3,0,0,0,5.26,2.4H19.09A2.51,2.51,0,0,1,21.6,4.91V19.12A1.94,1.94,0,0,0,23,17.26V3.62A2.62,2.62,0,0,0,20.38,1Z'/%3e%3c/g%3e%3cg%3e%3cpath%20d='M4,21.5A1.5,1.5,0,0,1,2.5,20V5.8A1.5,1.5,0,0,1,4,4.3H18.2a1.5,1.5,0,0,1,1.5,1.5V20a1.5,1.5,0,0,1-1.5,1.5ZM9.5,18a.5.5,0,0,0,.5.5h2a.5.5,0,0,0,.5-.5V14.5H16a.5.5,0,0,0,.5-.5V12a.5.5,0,0,0-.5-.5H12.5V8a.5.5,0,0,0-.5-.5H10a.5.5,0,0,0-.5.5v3.5H6a.5.5,0,0,0-.5.5v2a.5.5,0,0,0,.5.5H9.5Z'/%3e%3cpath%20d='M18.2,4.8a1,1,0,0,1,1,1V20a1,1,0,0,1-1,1H4a1,1,0,0,1-1-1V5.8a1,1,0,0,1,1-1H18.2M9,11H6a1,1,0,0,0-1,1v2a1,1,0,0,0,1,1H9v3a1,1,0,0,0,1,1h2a1,1,0,0,0,1-1V15h3a1,1,0,0,0,1-1V12a1,1,0,0,0-1-1H13V8a1,1,0,0,0-1-1H10A1,1,0,0,0,9,8v3m9.2-7.2H4a2,2,0,0,0-2,2V20a2,2,0,0,0,2,2H18.2a2,2,0,0,0,2-2V5.8a2,2,0,0,0-2-2ZM6,14V12h4V8h2v4h4v2H12v4H10V14Z'/%3e%3c/g%3e%3c/svg%3e";
|
|
488
|
+
const iconDownload = "data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20points='7.92%2012%202.84%207%2013%207%207.92%2012'/%3e%3crect%20x='5'%20y='2'%20width='6'%20height='5'/%3e%3crect%20x='2'%20y='14'%20width='12'%20height='1'/%3e%3c/svg%3e";
|
|
489
|
+
const iconSearch = "data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2016%2016'%3e%3cdefs%3e%3cstyle%3e%20.cls-1%20{%20fill:%20%23fff;%20}%20%3c/style%3e%3c/defs%3e%3cg%3e%3ccircle%20class='cls-1'%20cx='5.5'%20cy='5.5'%20r='4.5'/%3e%3cpath%20d='M5.5,2A3.5,3.5,0,1,1,2,5.5,3.5,3.5,0,0,1,5.5,2m0-1A4.5,4.5,0,1,0,10,5.5,4.49,4.49,0,0,0,5.5,1Z'/%3e%3c/g%3e%3crect%20x='6.79'%20y='10.04'%20width='7.74'%20height='2.16'%20transform='translate(10.98%20-4.28)%20rotate(45)'/%3e%3c/svg%3e";
|
|
490
|
+
const iconIconKey = "data:image/svg+xml,%3csvg%20data-name='icon_key'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2027.02%2027'%3e%3cpath%20d='M35.07,16.5a8.52,8.52,0,0,0-7.69,12L17.2,38.8a2.46,2.46,0,0,0,0,3.46,2.41,2.41,0,0,0,3.42,0l1.69-1.7,2.91,2.94L31,37.63l-2.92-3,2.44-2.46a8.31,8.31,0,0,0,4.51,1.33,8.53,8.53,0,0,0,0-17Zm0,3.91A4.62,4.62,0,1,1,30.5,25,4.6,4.6,0,0,1,35.07,20.41Z'%20transform='translate(-16.49%20-16.5)'/%3e%3c/svg%3e";
|
|
491
|
+
const iconSync = "data:image/svg+xml,%3csvg%20id='Layer_1'%20data-name='Layer%201'%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3e%3cg%20id='Pfeilende'%3e%3cpath%20d='M24,10H15l9-8.93Z'/%3e%3c/g%3e%3cpath%20d='M18.45,18.78A9.33,9.33,0,0,1,2.62,14.86,9.8,9.8,0,0,1,8.89,2.69,9.42,9.42,0,0,1,20.72,9.14H23A11.72,11.72,0,0,0,11.68,0,11.74,11.74,0,0,0,.34,9.14,12,12,0,0,0,8.89,23.65a11.43,11.43,0,0,0,11.16-3.31Z'/%3e%3c/svg%3e";
|
|
492
|
+
const iconFullscreen = "data:image/svg+xml,%3csvg%20data-name='icon_fullscreen_sga'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpolygon%20id='ecke'%20points='2%2014%202%2010%200%2010%200%2016%206%2016%206%2014%202%2014'/%3e%3cpolygon%20id='ecke-2'%20data-name='ecke'%20points='2%202%206%202%206%200%200%200%200%206%202%206%202%202'/%3e%3cpolygon%20id='ecke-3'%20data-name='ecke'%20points='14%2014%2010%2014%2010%2016%2016%2016%2016%2010%2014%2010%2014%2014'/%3e%3cpolygon%20id='ecke-4'%20data-name='ecke'%20points='10%200%2010%202%2014%202%2014%206%2016%206%2016%200%2010%200'/%3e%3c/svg%3e";
|
|
493
|
+
const iconDocumentation = "data:image/svg+xml,%3csvg%20id='Icon_help'%20xmlns='http://www.w3.org/2000/svg'%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%3e%3cpath%20id='icon_help-2'%20data-name='icon_help'%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm1,16H11V15h2Zm1.7-6.26a4.85,4.85,0,0,1-.49.81l-1,1.37a1.36,1.36,0,0,0-.18.34,1,1,0,0,0-.07.38L13,14H11l.1-.49a2,2,0,0,1,.13-.77,3.18,3.18,0,0,1,.4-.69l1-1.33a3.21,3.21,0,0,0,.29-.46,1.19,1.19,0,0,0,.11-.47,1.17,1.17,0,0,0-.3-.82,1.07,1.07,0,0,0-.83-.33A1,1,0,0,0,11.1,9a1.25,1.25,0,0,0-.28.83H9a2.94,2.94,0,0,1,.23-1.17,2.45,2.45,0,0,1,.63-.88,2.9,2.9,0,0,1,.93-.55A3.13,3.13,0,0,1,11.94,7a3.31,3.31,0,0,1,1.13.19,2.82,2.82,0,0,1,.94.54,2.62,2.62,0,0,1,.65.88A3,3,0,0,1,14.9,9.8,2.16,2.16,0,0,1,14.7,10.74Z'%20style='opacity:%200.2'/%3e%3c/svg%3e";
|
|
494
|
+
const iconStar = "data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='UTF-8'?%3e%3csvg%20id='icon_star_16'%20xmlns='http://www.w3.org/2000/svg'%20width='16'%20height='16'%20viewBox='0%200%2016%2016'%3e%3cpath%20id='star'%20d='M8,0l2.45,4.97,5.55,.76-4.04,3.83,.99,5.44-4.94-2.61-4.94,2.61,.99-5.44L0,5.73l5.55-.76L8,0Z'/%3e%3c/svg%3e";
|
|
495
|
+
function getSrc(props) {
|
|
496
|
+
const { add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star } = props;
|
|
497
|
+
if (add) {
|
|
498
|
+
return iconAdd;
|
|
499
|
+
} else if (del) {
|
|
500
|
+
return iconDel;
|
|
501
|
+
} else if (edit) {
|
|
502
|
+
return iconEdit;
|
|
503
|
+
} else if (config) {
|
|
504
|
+
return iconConfig;
|
|
505
|
+
} else if (duplicate) {
|
|
506
|
+
return iconDuplicate;
|
|
507
|
+
} else if (search) {
|
|
508
|
+
return iconSearch;
|
|
509
|
+
} else if (download) {
|
|
510
|
+
return iconDownload;
|
|
511
|
+
} else if (sync) {
|
|
512
|
+
return iconSync;
|
|
513
|
+
} else if (fullscreen) {
|
|
514
|
+
return iconFullscreen;
|
|
515
|
+
} else if (iconKey) {
|
|
516
|
+
return iconIconKey;
|
|
517
|
+
} else if (documentation) {
|
|
518
|
+
return iconDocumentation;
|
|
519
|
+
} else if (star) {
|
|
520
|
+
return iconStar;
|
|
521
|
+
} else {
|
|
522
|
+
throw Error("getSrc: no icon type specified");
|
|
523
|
+
}
|
|
423
524
|
}
|
|
424
|
-
function
|
|
425
|
-
const { add
|
|
426
|
-
if (
|
|
525
|
+
function getAlt(props) {
|
|
526
|
+
const { add, del, edit, config, duplicate, search, download, sync, fullscreen, iconKey, documentation, star } = props;
|
|
527
|
+
if (add) {
|
|
427
528
|
return "icon add";
|
|
428
|
-
if (
|
|
529
|
+
} else if (del) {
|
|
429
530
|
return "icon delete";
|
|
430
|
-
if (
|
|
531
|
+
} else if (edit) {
|
|
431
532
|
return "icon edit";
|
|
432
|
-
if (
|
|
533
|
+
} else if (config) {
|
|
433
534
|
return "icon config";
|
|
434
|
-
if (
|
|
535
|
+
} else if (duplicate) {
|
|
435
536
|
return "icon duplicate";
|
|
436
|
-
if (
|
|
537
|
+
} else if (search) {
|
|
437
538
|
return "icon search";
|
|
438
|
-
if (
|
|
539
|
+
} else if (download) {
|
|
439
540
|
return "icon download";
|
|
440
|
-
if (
|
|
541
|
+
} else if (sync) {
|
|
441
542
|
return "icon sync";
|
|
442
|
-
if (
|
|
543
|
+
} else if (fullscreen) {
|
|
443
544
|
return "icon fullscreen";
|
|
444
|
-
if (
|
|
545
|
+
} else if (iconKey) {
|
|
445
546
|
return "icon iconKey";
|
|
446
|
-
if (
|
|
547
|
+
} else if (documentation) {
|
|
447
548
|
return "icon documentation";
|
|
448
|
-
if (
|
|
549
|
+
} else if (star) {
|
|
449
550
|
return "icon star";
|
|
450
|
-
|
|
551
|
+
} else {
|
|
552
|
+
throw Error("getAlt: no icon type specified");
|
|
553
|
+
}
|
|
451
554
|
}
|
|
452
|
-
function
|
|
453
|
-
let
|
|
454
|
-
|
|
555
|
+
function Icon(props) {
|
|
556
|
+
let style;
|
|
557
|
+
if (props.large) {
|
|
558
|
+
style = { width: 24, height: 24 };
|
|
559
|
+
} else {
|
|
560
|
+
style = { width: 16, height: 16 };
|
|
561
|
+
}
|
|
562
|
+
if (props.inverted) {
|
|
563
|
+
style = { ...style, filter: "invert(1)" };
|
|
564
|
+
}
|
|
565
|
+
return /* @__PURE__ */ jsx("img", { src: getSrc(props), className: `di icon ${props.className || ""}`, alt: getAlt(props), style });
|
|
455
566
|
}
|
|
456
|
-
function
|
|
457
|
-
text
|
|
458
|
-
small
|
|
459
|
-
large
|
|
460
|
-
onDelete
|
|
461
|
-
className
|
|
462
|
-
onClick
|
|
463
|
-
children
|
|
464
|
-
...
|
|
567
|
+
function Label({
|
|
568
|
+
text,
|
|
569
|
+
small = false,
|
|
570
|
+
large = false,
|
|
571
|
+
onDelete,
|
|
572
|
+
className,
|
|
573
|
+
onClick,
|
|
574
|
+
children,
|
|
575
|
+
...dataTestIds
|
|
465
576
|
}) {
|
|
466
|
-
function
|
|
467
|
-
|
|
577
|
+
function handleDelete(event) {
|
|
578
|
+
event.stopPropagation();
|
|
579
|
+
if (onDelete) {
|
|
580
|
+
onDelete();
|
|
581
|
+
}
|
|
468
582
|
}
|
|
469
|
-
return /* @__PURE__ */
|
|
583
|
+
return /* @__PURE__ */ jsxs(
|
|
470
584
|
"span",
|
|
471
585
|
{
|
|
472
|
-
onClick
|
|
473
|
-
className:
|
|
474
|
-
"data-testid":
|
|
586
|
+
onClick,
|
|
587
|
+
className: cx("di label", className, { large, small, removable: onDelete, clickable: !!onClick }),
|
|
588
|
+
"data-testid": dataTestIds["data-testid"],
|
|
475
589
|
children: [
|
|
476
|
-
typeof
|
|
477
|
-
/* @__PURE__ */
|
|
478
|
-
|
|
590
|
+
typeof text === "string" ? text : text && /* @__PURE__ */ jsx(Trans, { i18nKey: text.id, children: text.defaultValue }),
|
|
591
|
+
/* @__PURE__ */ jsx(Fragment, { children }),
|
|
592
|
+
onDelete && /* @__PURE__ */ jsx("span", { "data-testid": dataTestIds["delete-button-data-testid"], className: "remove", onClick: handleDelete, children: /* @__PURE__ */ jsx(Icon, { del: true, inverted: true }) })
|
|
479
593
|
]
|
|
480
594
|
}
|
|
481
595
|
);
|
|
482
596
|
}
|
|
483
|
-
const
|
|
484
|
-
function
|
|
485
|
-
placement
|
|
486
|
-
mode
|
|
487
|
-
disabled
|
|
488
|
-
handler
|
|
489
|
-
handlerWrapperClassName
|
|
490
|
-
preventDestroyContentOnHide
|
|
491
|
-
open
|
|
492
|
-
onOpenChange
|
|
493
|
-
className
|
|
494
|
-
children
|
|
597
|
+
const MARGIN = 16;
|
|
598
|
+
function Popup({
|
|
599
|
+
placement = "bottom",
|
|
600
|
+
mode = ["click"],
|
|
601
|
+
disabled,
|
|
602
|
+
handler,
|
|
603
|
+
handlerWrapperClassName,
|
|
604
|
+
preventDestroyContentOnHide,
|
|
605
|
+
open,
|
|
606
|
+
onOpenChange,
|
|
607
|
+
className,
|
|
608
|
+
children
|
|
495
609
|
}) {
|
|
496
|
-
const
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
610
|
+
const arrowRef = useRef(null);
|
|
611
|
+
const {
|
|
612
|
+
elements,
|
|
613
|
+
update,
|
|
614
|
+
refs,
|
|
615
|
+
floatingStyles,
|
|
616
|
+
context,
|
|
617
|
+
middlewareData,
|
|
618
|
+
placement: computedPlacement
|
|
619
|
+
} = useFloating({
|
|
620
|
+
placement,
|
|
621
|
+
open,
|
|
622
|
+
onOpenChange,
|
|
623
|
+
whileElementsMounted: !preventDestroyContentOnHide ? autoUpdate : void 0,
|
|
509
624
|
middleware: [
|
|
510
|
-
|
|
625
|
+
offset({
|
|
511
626
|
mainAxis: 12
|
|
512
627
|
}),
|
|
513
|
-
|
|
514
|
-
padding:
|
|
628
|
+
flip({
|
|
629
|
+
padding: MARGIN,
|
|
630
|
+
boundary: "clippingAncestors",
|
|
631
|
+
altBoundary: true
|
|
515
632
|
}),
|
|
516
|
-
|
|
517
|
-
padding:
|
|
633
|
+
shift({
|
|
634
|
+
padding: MARGIN,
|
|
635
|
+
boundary: "clippingAncestors",
|
|
636
|
+
altBoundary: true
|
|
518
637
|
}),
|
|
519
|
-
|
|
520
|
-
padding:
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
638
|
+
size({
|
|
639
|
+
padding: MARGIN,
|
|
640
|
+
boundary: "clippingAncestors",
|
|
641
|
+
altBoundary: true,
|
|
642
|
+
apply({ availableHeight, availableWidth, elements: elements2 }) {
|
|
643
|
+
const width = `${Math.max(0, availableWidth - MARGIN)}px`;
|
|
644
|
+
const height = `${Math.max(0, availableHeight - MARGIN)}px`;
|
|
645
|
+
elements2.floating.style.maxWidth = width;
|
|
646
|
+
elements2.floating.style.maxHeight = height;
|
|
524
647
|
}
|
|
525
648
|
}),
|
|
526
|
-
|
|
527
|
-
element:
|
|
649
|
+
arrow({
|
|
650
|
+
element: arrowRef
|
|
528
651
|
})
|
|
529
652
|
]
|
|
530
653
|
});
|
|
531
|
-
|
|
532
|
-
if (
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
654
|
+
useEffect(() => {
|
|
655
|
+
if (preventDestroyContentOnHide && open && elements.reference && elements.floating) {
|
|
656
|
+
const cleanup = autoUpdate(elements.reference, elements.floating, update);
|
|
657
|
+
return cleanup;
|
|
658
|
+
}
|
|
659
|
+
}, [elements.floating, elements.reference, open, update, preventDestroyContentOnHide]);
|
|
660
|
+
const click = useClick(context, {
|
|
661
|
+
enabled: !disabled && mode.includes("click"),
|
|
662
|
+
keyboardHandlers: false
|
|
538
663
|
// Prevent space key from being blocked in input fields (floating-ui issue #1812)
|
|
539
|
-
})
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
664
|
+
});
|
|
665
|
+
const hover = useHover(context, {
|
|
666
|
+
enabled: !disabled && mode.includes("hover"),
|
|
667
|
+
handleClose: safePolygon()
|
|
668
|
+
});
|
|
669
|
+
const focus = useFocus(context, { enabled: !disabled && mode.includes("focus") });
|
|
670
|
+
const dismiss = useDismiss(context);
|
|
671
|
+
const { getReferenceProps, getFloatingProps } = useInteractions([click, hover, focus, dismiss]);
|
|
672
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
673
|
+
/* @__PURE__ */ jsx(
|
|
545
674
|
"span",
|
|
546
675
|
{
|
|
547
676
|
style: { display: "inline-block" },
|
|
548
|
-
className:
|
|
549
|
-
ref:
|
|
550
|
-
...
|
|
551
|
-
children:
|
|
677
|
+
className: cx("popup-handler-wrapper", handlerWrapperClassName),
|
|
678
|
+
ref: refs.setReference,
|
|
679
|
+
...getReferenceProps(),
|
|
680
|
+
children: handler
|
|
552
681
|
}
|
|
553
682
|
),
|
|
554
|
-
(
|
|
683
|
+
(open || preventDestroyContentOnHide) && /* @__PURE__ */ jsx(FloatingPortal, { children: /* @__PURE__ */ jsx(
|
|
555
684
|
"div",
|
|
556
685
|
{
|
|
557
|
-
className:
|
|
558
|
-
ref:
|
|
559
|
-
style:
|
|
560
|
-
...
|
|
561
|
-
children: /* @__PURE__ */
|
|
562
|
-
/* @__PURE__ */
|
|
686
|
+
className: cx("di popup-wrapper", { hidden: preventDestroyContentOnHide && !open }),
|
|
687
|
+
ref: refs.setFloating,
|
|
688
|
+
style: { ...floatingStyles, zIndex: 1e5 },
|
|
689
|
+
...getFloatingProps(),
|
|
690
|
+
children: /* @__PURE__ */ jsxs("div", { className: cx("di popup", computedPlacement, className), children: [
|
|
691
|
+
/* @__PURE__ */ jsx(
|
|
563
692
|
"div",
|
|
564
693
|
{
|
|
565
|
-
className:
|
|
566
|
-
ref:
|
|
567
|
-
style: { left:
|
|
694
|
+
className: cx("popup-arrow", computedPlacement),
|
|
695
|
+
ref: arrowRef,
|
|
696
|
+
style: { left: middlewareData.arrow?.x, top: middlewareData.arrow?.y }
|
|
568
697
|
}
|
|
569
698
|
),
|
|
570
|
-
/* @__PURE__ */
|
|
699
|
+
/* @__PURE__ */ jsx("div", { className: "popup-content", children })
|
|
571
700
|
] })
|
|
572
701
|
}
|
|
573
702
|
) })
|
|
574
703
|
] });
|
|
575
704
|
}
|
|
576
|
-
function
|
|
577
|
-
const [
|
|
578
|
-
return /* @__PURE__ */
|
|
579
|
-
|
|
705
|
+
function Bubble({ content, inverted, children, disabled, style, direction, className }) {
|
|
706
|
+
const [open, setOpen] = useState(false);
|
|
707
|
+
return /* @__PURE__ */ jsx(
|
|
708
|
+
Popup,
|
|
580
709
|
{
|
|
581
|
-
open
|
|
582
|
-
onOpenChange:
|
|
583
|
-
handler:
|
|
584
|
-
disabled
|
|
710
|
+
open,
|
|
711
|
+
onOpenChange: setOpen,
|
|
712
|
+
handler: children,
|
|
713
|
+
disabled,
|
|
585
714
|
mode: ["hover"],
|
|
586
|
-
placement:
|
|
587
|
-
className: `bubble ${
|
|
588
|
-
children: /* @__PURE__ */
|
|
715
|
+
placement: direction ? direction : "top",
|
|
716
|
+
className: `bubble ${inverted ? "inverted" : ""} ${className ? className : ""}`,
|
|
717
|
+
children: /* @__PURE__ */ jsx("span", { className: `bubble-content`, style, children: content })
|
|
589
718
|
}
|
|
590
719
|
);
|
|
591
720
|
}
|
|
592
|
-
function
|
|
593
|
-
const [
|
|
594
|
-
return /* @__PURE__ */
|
|
595
|
-
|
|
721
|
+
function Tooltip({ content, children, className, direction, disabled }) {
|
|
722
|
+
const [open, setOpen] = useState(false);
|
|
723
|
+
return /* @__PURE__ */ jsx(
|
|
724
|
+
Popup,
|
|
596
725
|
{
|
|
597
|
-
open
|
|
598
|
-
disabled
|
|
726
|
+
open,
|
|
727
|
+
disabled,
|
|
599
728
|
mode: ["hover"],
|
|
600
|
-
onOpenChange:
|
|
601
|
-
handler:
|
|
602
|
-
placement:
|
|
603
|
-
className: `tooltip inverted ${
|
|
604
|
-
children: /* @__PURE__ */
|
|
729
|
+
onOpenChange: setOpen,
|
|
730
|
+
handler: children,
|
|
731
|
+
placement: direction ? direction : "right",
|
|
732
|
+
className: `tooltip inverted ${className ? className : ""}`,
|
|
733
|
+
children: /* @__PURE__ */ jsx("span", { className: "tooltip-content", children: content })
|
|
605
734
|
}
|
|
606
735
|
);
|
|
607
736
|
}
|
|
608
|
-
class
|
|
737
|
+
class Tabs extends React.Component {
|
|
609
738
|
state = {
|
|
610
739
|
currentTab: this.props.pages.length ? this.props.pages[0].name : null
|
|
611
740
|
};
|
|
612
|
-
handleClick = (
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
})
|
|
741
|
+
handleClick = (tab) => {
|
|
742
|
+
if (this.props.onChange) {
|
|
743
|
+
this.props.onChange(tab);
|
|
744
|
+
} else if (typeof this.props.currentTab === "undefined") {
|
|
745
|
+
this.setState({
|
|
746
|
+
currentTab: tab
|
|
747
|
+
});
|
|
748
|
+
}
|
|
616
749
|
};
|
|
617
750
|
currentTabPage = () => {
|
|
618
|
-
const
|
|
619
|
-
return this.props.pages.find(({ name
|
|
751
|
+
const currentTab = typeof this.props.currentTab === "string" ? this.props.currentTab : this.state.currentTab;
|
|
752
|
+
return this.props.pages.find(({ name }) => currentTab === name);
|
|
753
|
+
};
|
|
754
|
+
isCurrentTab = (tab) => {
|
|
755
|
+
const currentTab = typeof this.props.currentTab === "string" ? this.props.currentTab : this.state.currentTab;
|
|
756
|
+
return currentTab === tab;
|
|
620
757
|
};
|
|
621
|
-
isCurrentTab = (e) => (typeof this.props.currentTab == "string" ? this.props.currentTab : this.state.currentTab) === e;
|
|
622
758
|
renderBody = () => {
|
|
623
|
-
const
|
|
624
|
-
|
|
759
|
+
const page = this.currentTabPage();
|
|
760
|
+
if (page && typeof page.renderBody === "function") {
|
|
761
|
+
return page.renderBody();
|
|
762
|
+
}
|
|
763
|
+
return null;
|
|
625
764
|
};
|
|
626
765
|
render() {
|
|
627
|
-
const { pages
|
|
628
|
-
return /* @__PURE__ */
|
|
629
|
-
/* @__PURE__ */
|
|
630
|
-
({ name
|
|
766
|
+
const { pages, disabled } = this.props;
|
|
767
|
+
return /* @__PURE__ */ jsxs("div", { children: [
|
|
768
|
+
/* @__PURE__ */ jsx("div", { className: "di tabs", children: pages.map(
|
|
769
|
+
({ name, renderHeading, tabDescription }) => tabDescription ? /* @__PURE__ */ jsx(Bubble, { inverted: true, content: tabDescription, className: "bubble-tab-description", children: /* @__PURE__ */ jsx(
|
|
631
770
|
"button",
|
|
632
771
|
{
|
|
633
772
|
"data-testid": "tab-button",
|
|
634
|
-
className: `item ${
|
|
635
|
-
onClick: () => !
|
|
636
|
-
children:
|
|
773
|
+
className: `item ${disabled ? "disabled" : ""} ${this.isCurrentTab(name) ? "active" : ""}`,
|
|
774
|
+
onClick: () => !disabled && this.handleClick(name),
|
|
775
|
+
children: renderHeading()
|
|
637
776
|
}
|
|
638
|
-
) },
|
|
777
|
+
) }, name) : /* @__PURE__ */ jsx(
|
|
639
778
|
"button",
|
|
640
779
|
{
|
|
641
780
|
"data-testid": "tab-button",
|
|
642
|
-
className: `item ${
|
|
643
|
-
onClick: () => !
|
|
644
|
-
children:
|
|
781
|
+
className: `item ${disabled ? "disabled" : ""} ${this.isCurrentTab(name) ? "active" : ""}`,
|
|
782
|
+
onClick: () => !disabled && this.handleClick(name),
|
|
783
|
+
children: renderHeading()
|
|
645
784
|
},
|
|
646
|
-
|
|
785
|
+
name
|
|
647
786
|
)
|
|
648
787
|
) }),
|
|
649
788
|
this.renderBody()
|
|
650
789
|
] });
|
|
651
790
|
}
|
|
652
791
|
}
|
|
653
|
-
const
|
|
654
|
-
onChange
|
|
655
|
-
inputElement
|
|
656
|
-
style
|
|
657
|
-
}) => /* @__PURE__ */
|
|
658
|
-
|
|
792
|
+
const ClearButton = ({
|
|
793
|
+
onChange,
|
|
794
|
+
inputElement,
|
|
795
|
+
style
|
|
796
|
+
}) => /* @__PURE__ */ jsx(
|
|
797
|
+
Button$1,
|
|
659
798
|
{
|
|
660
|
-
naked:
|
|
799
|
+
naked: true,
|
|
661
800
|
onClick: () => {
|
|
662
|
-
|
|
801
|
+
onChange("");
|
|
802
|
+
if (inputElement) {
|
|
803
|
+
inputElement.focus();
|
|
804
|
+
}
|
|
663
805
|
},
|
|
664
|
-
style
|
|
665
|
-
children: /* @__PURE__ */
|
|
806
|
+
style,
|
|
807
|
+
children: /* @__PURE__ */ jsx(Icon, { del: true })
|
|
666
808
|
}
|
|
667
809
|
);
|
|
668
|
-
class
|
|
810
|
+
class SearchBox extends React.Component {
|
|
669
811
|
state = {
|
|
670
812
|
query: this.props.initialValue || ""
|
|
671
813
|
};
|
|
672
814
|
input;
|
|
673
815
|
printPlaceholder() {
|
|
674
|
-
const { t
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
816
|
+
const { t, placeholder } = this.props;
|
|
817
|
+
if (typeof placeholder === "object") {
|
|
818
|
+
return t(placeholder.id, {
|
|
819
|
+
defaultValue: placeholder.defaultValue
|
|
820
|
+
});
|
|
821
|
+
} else {
|
|
822
|
+
return placeholder;
|
|
823
|
+
}
|
|
678
824
|
}
|
|
679
|
-
handleChange = (
|
|
680
|
-
const { onChange
|
|
825
|
+
handleChange = (value) => {
|
|
826
|
+
const { onChange } = this.props;
|
|
681
827
|
this.setState({
|
|
682
|
-
query:
|
|
683
|
-
})
|
|
828
|
+
query: value
|
|
829
|
+
});
|
|
830
|
+
onChange(value);
|
|
684
831
|
};
|
|
685
|
-
handleKeyUp = ({ key
|
|
686
|
-
const { onSubmit
|
|
687
|
-
|
|
832
|
+
handleKeyUp = ({ key }) => {
|
|
833
|
+
const { onSubmit } = this.props;
|
|
834
|
+
const { query } = this.state;
|
|
835
|
+
if (key === "Enter" && typeof onSubmit === "function") {
|
|
836
|
+
onSubmit(query);
|
|
837
|
+
}
|
|
688
838
|
};
|
|
689
839
|
render() {
|
|
690
|
-
const { onSubmit
|
|
691
|
-
|
|
692
|
-
|
|
840
|
+
const { onSubmit, style, clearable } = this.props;
|
|
841
|
+
const { query } = this.state;
|
|
842
|
+
return /* @__PURE__ */ jsxs("div", { className: "search-box", style, children: [
|
|
843
|
+
/* @__PURE__ */ jsx(
|
|
693
844
|
"input",
|
|
694
845
|
{
|
|
695
|
-
ref: (
|
|
696
|
-
this.input =
|
|
846
|
+
ref: (input) => {
|
|
847
|
+
this.input = input;
|
|
697
848
|
},
|
|
698
849
|
type: "text",
|
|
699
|
-
value:
|
|
850
|
+
value: query,
|
|
700
851
|
placeholder: this.printPlaceholder(),
|
|
701
852
|
onKeyUp: this.handleKeyUp,
|
|
702
|
-
onChange: ({ target: { value
|
|
853
|
+
onChange: ({ target: { value } }) => this.handleChange(value)
|
|
703
854
|
}
|
|
704
855
|
),
|
|
705
|
-
typeof
|
|
706
|
-
|
|
707
|
-
|
|
856
|
+
typeof onSubmit === "function" ? /* @__PURE__ */ jsxs(React.Fragment, { children: [
|
|
857
|
+
query && clearable && /* @__PURE__ */ jsx(
|
|
858
|
+
ClearButton,
|
|
708
859
|
{
|
|
709
860
|
onChange: this.handleChange,
|
|
710
861
|
inputElement: this.input,
|
|
@@ -713,31 +864,31 @@ class Fe extends y.Component {
|
|
|
713
864
|
}
|
|
714
865
|
}
|
|
715
866
|
),
|
|
716
|
-
/* @__PURE__ */
|
|
717
|
-
] }) :
|
|
867
|
+
/* @__PURE__ */ jsx(Button$1, { naked: true, onClick: () => onSubmit(query), children: /* @__PURE__ */ jsx(Icon, { search: true }) })
|
|
868
|
+
] }) : query && clearable ? /* @__PURE__ */ jsx(ClearButton, { onChange: this.handleChange, inputElement: this.input }) : /* @__PURE__ */ jsx(Button$1, { naked: true, disabled: true, children: /* @__PURE__ */ jsx(Icon, { search: true }) })
|
|
718
869
|
] });
|
|
719
870
|
}
|
|
720
871
|
}
|
|
721
|
-
const
|
|
872
|
+
const SearchBox_default = withTranslation()(SearchBox);
|
|
722
873
|
export {
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
874
|
+
Accordion,
|
|
875
|
+
AccordionItem,
|
|
876
|
+
Bubble,
|
|
877
|
+
Button$1 as Button,
|
|
878
|
+
ButtonRow,
|
|
879
|
+
Checkbox_default as Checkbox,
|
|
880
|
+
ConfirmProvider,
|
|
881
|
+
Icon,
|
|
882
|
+
Label,
|
|
883
|
+
Modal,
|
|
884
|
+
ModalContainer,
|
|
885
|
+
Popup,
|
|
886
|
+
SearchBox_default as SearchBox,
|
|
887
|
+
Spinner,
|
|
888
|
+
SpinnerContainer,
|
|
889
|
+
Tabs,
|
|
890
|
+
Tooltip,
|
|
891
|
+
useConfirm,
|
|
892
|
+
withConfirm
|
|
742
893
|
};
|
|
743
894
|
//# sourceMappingURL=index.js.map
|