@festo-ui/react 3.1.0 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +3 -2
  2. package/index.d.ts +27 -18
  3. package/{react.esm.css → index.esm.css} +815 -488
  4. package/index.esm.js +4771 -0
  5. package/{react.umd.css → index.umd.css} +815 -488
  6. package/index.umd.js +5204 -0
  7. package/lib/components/accordion/Accordion.d.ts +9 -0
  8. package/lib/components/accordion/AccordionContext.d.ts +11 -0
  9. package/lib/components/accordion/accordion-header/AccordionHeader.d.ts +4 -0
  10. package/lib/components/accordion/accordion-item/AccordionItem.d.ts +9 -0
  11. package/lib/components/accordion/accordion-item/AccordionItemContext.d.ts +8 -0
  12. package/lib/components/accordion/accordion-item/accordion-item-body/AccordionItemBody.d.ts +4 -0
  13. package/lib/components/accordion/accordion-item/accordion-item-header/AccordionItemHeader.d.ts +4 -0
  14. package/lib/components/buttons/button/Button.d.ts +1 -0
  15. package/lib/components/chips/chip/Chip.d.ts +1 -1
  16. package/lib/components/modals/ConfirmModal.d.ts +2 -1
  17. package/lib/components/modals/ModalFooter.d.ts +1 -4
  18. package/lib/components/stepper-horizontal/StepperHorizontal.d.ts +7 -0
  19. package/lib/components/stepper-horizontal/step-horizontal/StepHorizontal.d.ts +7 -0
  20. package/lib/components/stepper-vertical/StepperVertical.d.ts +7 -0
  21. package/lib/components/stepper-vertical/step-vertical/StepVertical.d.ts +12 -0
  22. package/lib/components/tab/Tabs.d.ts +7 -5
  23. package/lib/components/tab/tab-pane/TabPane.d.ts +3 -2
  24. package/lib/components/tab/useTabScroll.d.ts +24 -0
  25. package/lib/forms/color-picker/ColorPicker.d.ts +1 -1
  26. package/lib/forms/radio/RadioButton.d.ts +1 -1
  27. package/lib/forms/radio/RadioGroup.d.ts +1 -1
  28. package/lib/forms/slider/Slider.d.ts +1 -1
  29. package/lib/forms/text-editor/TextEditor.d.ts +1 -1
  30. package/lib/forms/time-picker/TimePicker.d.ts +18 -0
  31. package/lib/forms/time-picker/time-picker-dropdown/TimePickerDropdown.d.ts +12 -0
  32. package/lib/helper/useControlled.d.ts +6 -0
  33. package/lib/helper/useOnClickOutside.d.ts +2 -0
  34. package/package.json +6 -6
  35. package/react.esm.js +0 -3499
  36. package/react.umd.js +0 -3562
package/react.umd.js DELETED
@@ -1,3562 +0,0 @@
1
- (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('classnames'), require('react-transition-group'), require('react-outside-click-handler'), require('react-popper'), require('react-draggable'), require('flatpickr'), require('flatpickr/dist/plugins/rangePlugin'), require('quill')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react', 'classnames', 'react-transition-group', 'react-outside-click-handler', 'react-popper', 'react-draggable', 'flatpickr', 'flatpickr/dist/plugins/rangePlugin', 'quill'], factory) :
4
- (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.React = {}, global.React, global.classNames, global.reactTransitionGroup, global.OutsideClickHandler, global.reactPopper, global.Draggable, global.flatpickr, global.rangePlugin, global.Quill));
5
- })(this, (function (exports, React, classNames, reactTransitionGroup, OutsideClickHandler, reactPopper, Draggable, flatpickr, rangePlugin, Quill) { 'use strict';
6
-
7
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
8
-
9
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
10
- var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
11
- var OutsideClickHandler__default = /*#__PURE__*/_interopDefaultLegacy(OutsideClickHandler);
12
- var Draggable__default = /*#__PURE__*/_interopDefaultLegacy(Draggable);
13
- var flatpickr__default = /*#__PURE__*/_interopDefaultLegacy(flatpickr);
14
- var rangePlugin__default = /*#__PURE__*/_interopDefaultLegacy(rangePlugin);
15
- var Quill__default = /*#__PURE__*/_interopDefaultLegacy(Quill);
16
-
17
- /*! *****************************************************************************
18
- Copyright (c) Microsoft Corporation.
19
-
20
- Permission to use, copy, modify, and/or distribute this software for any
21
- purpose with or without fee is hereby granted.
22
-
23
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
24
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
25
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
26
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
27
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
28
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
29
- PERFORMANCE OF THIS SOFTWARE.
30
- ***************************************************************************** */
31
-
32
- var __assign = function() {
33
- __assign = Object.assign || function __assign(t) {
34
- for (var s, i = 1, n = arguments.length; i < n; i++) {
35
- s = arguments[i];
36
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
37
- }
38
- return t;
39
- };
40
- return __assign.apply(this, arguments);
41
- };
42
-
43
- function __rest(s, e) {
44
- var t = {};
45
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
46
- t[p] = s[p];
47
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
48
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
49
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
50
- t[p[i]] = s[p[i]];
51
- }
52
- return t;
53
- }
54
-
55
- function __spreadArray(to, from) {
56
- for (var i = 0, il = from.length, j = to.length; i < il; i++, j++)
57
- to[j] = from[i];
58
- return to;
59
- }
60
-
61
- function setRef(ref, value) {
62
- if (typeof ref === 'function') {
63
- ref(value);
64
- } else if (ref !== null) {
65
- ref.current = value;
66
- }
67
- }
68
-
69
- function useForkRef(refA, refB) {
70
- /**
71
- * This will create a new function if the ref props change and are defined.
72
- * This means react will call the old forkRef with `null` and the new forkRef
73
- * with the ref. Cleanup naturally emerges from this behavior
74
- */
75
- return React__default["default"].useMemo(function () {
76
- if (refA == null && refB == null) {
77
- return null;
78
- }
79
-
80
- return function (instance) {
81
- setRef(refA, instance);
82
- setRef(refB, instance);
83
- };
84
- }, [refA, refB]);
85
- }
86
-
87
- var Modal = /*#__PURE__*/React.forwardRef(function (_a, ref) {
88
- var head = _a.head,
89
- isOpen = _a.isOpen,
90
- body = _a.body,
91
- onClose = _a.onClose,
92
- className = _a.className,
93
- children = _a.children;
94
- var backdropRef = React.useRef(null);
95
- var modalRef = React.useRef(null);
96
- var combinedRef = useForkRef(ref, modalRef);
97
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.CSSTransition, {
98
- nodeRef: backdropRef,
99
- unmountOnExit: true,
100
- timeout: {
101
- exit: 600
102
- },
103
- "in": isOpen,
104
- classNames: "fr-modal-backdrop",
105
- appear: true
106
- }, /*#__PURE__*/React__default["default"].createElement("div", {
107
- ref: backdropRef,
108
- className: "fr-modal-backdrop fwe-modal-backdrop"
109
- })), /*#__PURE__*/React__default["default"].createElement(OutsideClickHandler__default["default"], {
110
- onOutsideClick: function onOutsideClick() {
111
- return onClose ? onClose() : undefined;
112
- }
113
- }, /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.CSSTransition, {
114
- ref: modalRef,
115
- unmountOnExit: true,
116
- classNames: "fr-modal",
117
- appear: true,
118
- "in": isOpen,
119
- timeout: {
120
- exit: 600
121
- }
122
- }, /*#__PURE__*/React__default["default"].createElement("div", {
123
- ref: combinedRef,
124
- className: classNames__default["default"]('fr-modal fwe-modal', className)
125
- }, /*#__PURE__*/React__default["default"].createElement("div", {
126
- className: "fwe-modal-close"
127
- }, /*#__PURE__*/React__default["default"].createElement("button", {
128
- type: "button",
129
- "aria-label": "Close",
130
- className: "fwe-btn fwe-btn-link fwe-dark",
131
- onClick: onClose
132
- }, /*#__PURE__*/React__default["default"].createElement("i", {
133
- "aria-hidden": "true",
134
- className: "fwe-icon fwe-icon-close-small"
135
- }), /*#__PURE__*/React__default["default"].createElement("span", {
136
- className: "fwe-sr-only"
137
- }, "Close"))), /*#__PURE__*/React__default["default"].createElement("div", {
138
- className: "fwe-modal-header"
139
- }, head), /*#__PURE__*/React__default["default"].createElement("div", {
140
- className: "fwe-modal-body"
141
- }, body), children))));
142
- });
143
-
144
- var ModalFooter = /*#__PURE__*/React.forwardRef(function (_a, ref) {
145
- var fullWidth = _a.fullWidth,
146
- children = _a.children,
147
- className = _a.className;
148
- return /*#__PURE__*/React__default["default"].createElement("div", {
149
- ref: ref,
150
- className: classNames__default["default"]('fwe-modal-footer', className)
151
- }, /*#__PURE__*/React__default["default"].createElement("div", {
152
- className: classNames__default["default"]('fwe-modal-buttons', {
153
- 'fwe-modal-buttons--full-width': fullWidth
154
- })
155
- }, children));
156
- });
157
-
158
- function AlertModal(_a) {
159
- var alertType = _a.alertType,
160
- title = _a.title,
161
- className = _a.className,
162
- body = _a.body,
163
- strong = _a.strong,
164
- subtitle = _a.subtitle,
165
- cancel = _a.cancel,
166
- ok = _a.ok,
167
- onCancel = _a.onCancel,
168
- onOk = _a.onOk,
169
- props = __rest(_a, ["alertType", "title", "className", "body", "strong", "subtitle", "cancel", "ok", "onCancel", "onOk"]);
170
-
171
- return /*#__PURE__*/React__default["default"].createElement(Modal, __assign({
172
- className: classNames__default["default"]({
173
- 'fwe-modal--with-indicator-bar': strong,
174
- 'fwe-modal--warning': alertType === 'warning',
175
- 'fwe-modal--error': alertType === 'error',
176
- 'fwe-modal--info': alertType === 'info'
177
- }, className),
178
- head: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, subtitle && /*#__PURE__*/React__default["default"].createElement("h2", {
179
- className: "fwe-modal-h2"
180
- }, /*#__PURE__*/React__default["default"].createElement("i", {
181
- className: classNames__default["default"]({
182
- 'fwe-icon': true,
183
- 'fwe-icon-status-warning': alertType === 'warning',
184
- 'fwe-icon-status-failure': alertType === 'error',
185
- 'fwe-icon-status-check-status': alertType === 'info'
186
- })
187
- }), subtitle), /*#__PURE__*/React__default["default"].createElement("h1", {
188
- className: "fwe-modal-h1"
189
- }, /*#__PURE__*/React__default["default"].createElement("i", {
190
- className: classNames__default["default"]({
191
- 'fwe-icon': true,
192
- 'fwe-icon-status-warning': alertType === 'warning',
193
- 'fwe-icon-status-failure': alertType === 'error',
194
- 'fwe-icon-status-check-status': alertType === 'info'
195
- })
196
- }), title)),
197
- body: /*#__PURE__*/React__default["default"].createElement("p", null, body)
198
- }, props), (cancel || ok) && /*#__PURE__*/React__default["default"].createElement(ModalFooter, {
199
- fullWidth: true
200
- }, cancel && /*#__PURE__*/React__default["default"].createElement("button", {
201
- type: "button",
202
- "aria-label": "Cancel",
203
- className: classNames__default["default"]('fwe-btn fwe-btn-lg', {
204
- 'fwe-btn-link': strong && (alertType === 'warning' || alertType === 'error')
205
- }),
206
- onClick: onCancel
207
- }, cancel), ok && /*#__PURE__*/React__default["default"].createElement("button", {
208
- type: "button",
209
- "aria-label": "Ok",
210
- className: "fwe-btn fwe-btn-hero fwe-btn-lg",
211
- onClick: onOk
212
- }, ok)));
213
- }
214
-
215
- /**
216
- * Breadcrumb navigation can be used on pages with multiple navigation levels.
217
- */
218
-
219
- function Breadcrumb(_a) {
220
- var locations = _a.locations,
221
- _onClick = _a.onClick,
222
- children = _a.children,
223
- className = _a.className;
224
- var childrenList = [];
225
- React__default["default"].Children.forEach(children, function (element) {
226
- if ( /*#__PURE__*/React__default["default"].isValidElement(element)) {
227
- childrenList.push(__assign(__assign({}, element), {
228
- props: __assign(__assign({}, element.props), {
229
- className: 'fr-breadcrumb-location'
230
- })
231
- }));
232
- }
233
- });
234
- return /*#__PURE__*/React__default["default"].createElement("div", {
235
- className: classNames__default["default"]('fwe-breadcrumb', className)
236
- }, locations ? locations.map(function (location, index) {
237
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
238
- key: location.url
239
- }, /*#__PURE__*/React__default["default"].createElement("a", {
240
- className: "fr-breadcrumb-location",
241
- href: location.url,
242
- onClick: function onClick(e) {
243
- return _onClick ? _onClick(e) : undefined;
244
- }
245
- }, location.label), index + 1 < locations.length && /*#__PURE__*/React__default["default"].createElement("i", {
246
- className: "fwe-icon fwe-icon-arrows-right-2"
247
- }));
248
- }) : childrenList.map(function (child, index) {
249
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, {
250
- key: child.props.children
251
- }, child, " ", index + 1 < childrenList.length && /*#__PURE__*/React__default["default"].createElement("i", {
252
- className: "fwe-icon fwe-icon-arrows-right-2"
253
- }));
254
- }));
255
- }
256
-
257
- function Button(_a) {
258
- var icon = _a.icon,
259
- _b = _a.disabled,
260
- disabled = _b === void 0 ? false : _b,
261
- _c = _a.iconOnly,
262
- iconOnly = _c === void 0 ? false : _c,
263
- _d = _a.large,
264
- large = _d === void 0 ? false : _d,
265
- onClick = _a.onClick,
266
- _e = _a.primary,
267
- primary = _e === void 0 ? false : _e,
268
- className = _a.className,
269
- children = _a.children;
270
- var classes = classNames__default["default"]('fwe-btn', {
271
- 'fwe-btn-icon': iconOnly
272
- }, {
273
- 'fwe-disabled': disabled
274
- }, {
275
- 'fwe-btn-hero': primary
276
- }, {
277
- 'fwe-btn-lg': large
278
- }, className);
279
- return /*#__PURE__*/React__default["default"].createElement("button", {
280
- type: "button",
281
- onClick: onClick,
282
- className: classes,
283
- disabled: disabled
284
- }, icon && /*#__PURE__*/React__default["default"].createElement("i", {
285
- className: "fwe-icon fwe-icon-" + icon
286
- }), !iconOnly && /*#__PURE__*/React__default["default"].createElement("div", {
287
- className: "fr-button-text"
288
- }, children));
289
- }
290
-
291
- function Card(_a) {
292
- var children = _a.children,
293
- className = _a.className;
294
- return /*#__PURE__*/React__default["default"].createElement("div", {
295
- className: classNames__default["default"]('fwe-card', className)
296
- }, children);
297
- }
298
-
299
- function CardBody(_a) {
300
- var children = _a.children,
301
- text = _a.text,
302
- className = _a.className;
303
- return /*#__PURE__*/React__default["default"].createElement("div", {
304
- className: classNames__default["default"]('fwe-card-body', className)
305
- }, /*#__PURE__*/React__default["default"].createElement("div", {
306
- className: "fwe-card-text"
307
- }, text), children);
308
- }
309
-
310
- function CardHeader(_a) {
311
- var title = _a.title,
312
- subtitle = _a.subtitle,
313
- action = _a.action,
314
- className = _a.className;
315
- return /*#__PURE__*/React__default["default"].createElement("div", {
316
- className: classNames__default["default"]('fwe-card-header', className)
317
- }, /*#__PURE__*/React__default["default"].createElement("div", {
318
- className: "fwe-card-title"
319
- }, /*#__PURE__*/React__default["default"].createElement("h5", null, title), subtitle && /*#__PURE__*/React__default["default"].createElement("p", null, subtitle)), action);
320
- }
321
-
322
- function CardNotification(_a) {
323
- var iconName = _a.iconName,
324
- className = _a.className,
325
- title = _a.title,
326
- message = _a.message;
327
- var classes = classNames__default["default"]('fwe-card-notification', className);
328
- return /*#__PURE__*/React__default["default"].createElement("div", {
329
- className: classes
330
- }, /*#__PURE__*/React__default["default"].createElement("i", {
331
- className: "fwe-icon fwe-icon-" + iconName + " fwe-icon-lg"
332
- }), /*#__PURE__*/React__default["default"].createElement("div", {
333
- className: "fwe-card-title"
334
- }, /*#__PURE__*/React__default["default"].createElement("h6", null, title), message && /*#__PURE__*/React__default["default"].createElement("p", null, message)));
335
- }
336
-
337
- exports.ChipType = void 0;
338
-
339
- (function (ChipType) {
340
- ChipType[ChipType["Choice"] = 0] = "Choice";
341
- ChipType[ChipType["Category"] = 1] = "Category";
342
- ChipType[ChipType["Filter"] = 2] = "Filter";
343
- ChipType[ChipType["Action"] = 3] = "Action";
344
- ChipType[ChipType["Readonly"] = 4] = "Readonly";
345
- })(exports.ChipType || (exports.ChipType = {}));
346
-
347
- function Chip(_a) {
348
- var _b = _a.type,
349
- type = _b === void 0 ? exports.ChipType.Choice : _b,
350
- _c = _a.selected,
351
- selected = _c === void 0 ? false : _c,
352
- _d = _a.disabled,
353
- disabled = _d === void 0 ? false : _d,
354
- _e = _a.large,
355
- large = _e === void 0 ? false : _e,
356
- icon = _a.icon,
357
- children = _a.children,
358
- _onClick = _a.onClick,
359
- className = _a.className;
360
- var classes = classNames__default["default"]('fr-chip', 'fwe-chip', {
361
- 'fwe-selected': selected
362
- }, {
363
- 'fwe-disabled': disabled
364
- }, {
365
- 'fwe-chip-lg': large
366
- }, {
367
- 'fwe-category': type === exports.ChipType.Category
368
- }, {
369
- 'fwe-filter': type === exports.ChipType.Filter
370
- }, {
371
- 'fwe-readonly': type === exports.ChipType.Readonly
372
- }, className);
373
- return /*#__PURE__*/React__default["default"].createElement("div", {
374
- className: classes
375
- }, icon && /*#__PURE__*/React__default["default"].createElement("i", {
376
- onClick: function onClick(e) {
377
- return _onClick ? _onClick(e) : undefined;
378
- },
379
- className: "fwe-icon fwe-icon-" + icon
380
- }), children, type === exports.ChipType.Category && /*#__PURE__*/React__default["default"].createElement("i", {
381
- onClick: function onClick(e) {
382
- return _onClick ? _onClick(e) : undefined;
383
- },
384
- className: "fwe-icon fwe-icon-menu-close"
385
- }));
386
- }
387
-
388
- function ChipContainer(_a) {
389
- var _b = _a.large,
390
- large = _b === void 0 ? false : _b,
391
- children = _a.children,
392
- className = _a.className;
393
- var classes = classNames__default["default"]('fwe-chip-container', {
394
- 'fwe-chip-container-lg': large
395
- }, className);
396
- return /*#__PURE__*/React__default["default"].createElement("div", {
397
- className: classes
398
- }, children);
399
- }
400
-
401
- function Popover(_a) {
402
- var popoverContent = _a.popoverContent,
403
- children = _a.children,
404
- position = _a.position,
405
- fallbackPositions = _a.fallbackPositions,
406
- _b = _a.open,
407
- open = _b === void 0 ? false : _b,
408
- onStatusChange = _a.onStatusChange,
409
- wrapper = _a.wrapper,
410
- className = _a.className,
411
- _c = _a.flip,
412
- flip = _c === void 0 ? true : _c,
413
- containerClassName = _a.containerClassName,
414
- stopPropagation = _a.stopPropagation,
415
- _d = _a.arrow,
416
- arrow = _d === void 0 ? true : _d;
417
-
418
- var _e = React.useState(open),
419
- showPopper = _e[0],
420
- setShowPopper = _e[1];
421
-
422
- var referenceElement = React.useRef(null);
423
-
424
- var _f = React.useState(null),
425
- popperElement = _f[0],
426
- setPopperElement = _f[1];
427
-
428
- var _g = React.useState(null),
429
- arrowElement = _g[0],
430
- setArrowElement = _g[1];
431
-
432
- var classes = classNames__default["default"](className);
433
- React.useEffect(function () {
434
- setShowPopper(open);
435
- }, [open]);
436
-
437
- var _h = reactPopper.usePopper(referenceElement.current, popperElement, {
438
- placement: position,
439
- modifiers: [{
440
- name: 'arrow',
441
- options: {
442
- element: arrowElement
443
- }
444
- }, {
445
- name: 'offset',
446
- options: {
447
- offset: [0, 24]
448
- }
449
- }, {
450
- name: 'flip',
451
- options: {
452
- fallbackPlacements: flip ? fallbackPositions : [position || 'auto']
453
- }
454
- }]
455
- }),
456
- styles = _h.styles,
457
- attributes = _h.attributes;
458
-
459
- var handleChange = function handleChange(e, status) {
460
- if (stopPropagation) {
461
- e.stopPropagation();
462
- }
463
-
464
- setShowPopper(status);
465
-
466
- if (onStatusChange) {
467
- onStatusChange(status);
468
- }
469
- };
470
-
471
- var childrenWrapper = /*#__PURE__*/React__default["default"].createElement("div", {
472
- className: classes,
473
- style: {
474
- display: 'inline'
475
- },
476
- ref: referenceElement,
477
- onClick: function onClick(e) {
478
- return handleChange(e, !showPopper);
479
- }
480
- }, children);
481
- return /*#__PURE__*/React__default["default"].createElement(OutsideClickHandler__default["default"], {
482
- display: "inline",
483
- onOutsideClick: function onOutsideClick(e) {
484
- return handleChange(e, false);
485
- }
486
- }, wrapper ? wrapper(childrenWrapper) : childrenWrapper, showPopper && /*#__PURE__*/React__default["default"].createElement("div", __assign({
487
- onClick: function onClick(e) {
488
- return e.stopPropagation();
489
- },
490
- className: classNames__default["default"]('fwe-popover-container', containerClassName),
491
- ref: setPopperElement,
492
- style: styles.popper
493
- }, attributes.popper), /*#__PURE__*/React__default["default"].createElement("div", {
494
- className: "fwe-popover"
495
- }, popoverContent), arrow && /*#__PURE__*/React__default["default"].createElement("div", {
496
- ref: setArrowElement,
497
- style: styles.arrow,
498
- id: "arrow"
499
- })));
500
- }
501
-
502
- function ColorIndicator(_a) {
503
- var text = _a.text,
504
- label = _a.label,
505
- color = _a.color,
506
- className = _a.className,
507
- _b = _a.showPopOver,
508
- showPopOver = _b === void 0 ? false : _b,
509
- children = _a.children,
510
- disabled = _a.disabled;
511
- var classes = classNames__default["default"]('fwe-color-indicator', className, disabled);
512
-
513
- var _c = React.useState(false),
514
- isEditorOpen = _c[0],
515
- setEditorOpen = _c[1];
516
-
517
- function getBorderColor() {
518
- if (!color || color.toUpperCase() === '#FFFFFF' || color.toUpperCase() === '#F2F3F5') {
519
- return '#b6bec6'; // = $control-border
520
- }
521
-
522
- return color;
523
- }
524
-
525
- var colorBox = /*#__PURE__*/React__default["default"].createElement("div", {
526
- className: "fwe-color-box",
527
- style: {
528
- background: color,
529
- borderColor: getBorderColor()
530
- }
531
- }, !color && /*#__PURE__*/React__default["default"].createElement("svg", {
532
- className: "fwe-no-color-pattern",
533
- version: "1.1",
534
- xmlns: "http://www.w3.org/2000/svg",
535
- xmlnsXlink: "http://www.w3.org/1999/xlink",
536
- id: "canvas1",
537
- width: "18",
538
- height: "18"
539
- }, /*#__PURE__*/React__default["default"].createElement("defs", null, /*#__PURE__*/React__default["default"].createElement("pattern", {
540
- id: "bwsquare2px",
541
- width: "4",
542
- height: "4",
543
- patternUnits: "userSpaceOnUse"
544
- }, /*#__PURE__*/React__default["default"].createElement("rect", {
545
- x: "0",
546
- y: "0",
547
- width: "2",
548
- height: "2",
549
- stroke: "none",
550
- fill: "#ffffff"
551
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
552
- x: "2",
553
- y: "0",
554
- width: "2",
555
- height: "2",
556
- stroke: "none",
557
- fill: "#e5e8eb"
558
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
559
- x: "0",
560
- y: "2",
561
- width: "2",
562
- height: "2",
563
- stroke: "none",
564
- fill: "#e5e8eb"
565
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
566
- x: "2",
567
- y: "2",
568
- width: "2",
569
- height: "2",
570
- stroke: "none",
571
- fill: "#ffffff"
572
- }))), /*#__PURE__*/React__default["default"].createElement("rect", {
573
- x: "0",
574
- y: "0",
575
- rx: "0",
576
- ry: "0",
577
- width: "18",
578
- height: "18",
579
- fill: "url(#bwsquare2px)",
580
- strokeWidth: "0"
581
- })));
582
-
583
- var wrapper = function wrapper(wrapperChildren) {
584
- return /*#__PURE__*/React__default["default"].createElement("div", {
585
- className: classes,
586
- onClick: function onClick() {
587
- return setEditorOpen(function (prevOpen) {
588
- return showPopOver ? !prevOpen : prevOpen;
589
- });
590
- }
591
- }, /*#__PURE__*/React__default["default"].createElement("div", {
592
- style: {
593
- opacity: isEditorOpen ? 0 : 1
594
- },
595
- className: "fwe-color-label"
596
- }, label), /*#__PURE__*/React__default["default"].createElement("div", {
597
- className: "fwe-color-container"
598
- }, wrapperChildren, " ", text && /*#__PURE__*/React__default["default"].createElement("div", {
599
- className: "fwe-color-indicator-text"
600
- }, text), ' '));
601
- };
602
-
603
- return showPopOver ? /*#__PURE__*/React__default["default"].createElement(Popover, {
604
- containerClassName: "fwe-popover-container--color-indicator",
605
- position: "top",
606
- flip: false,
607
- wrapper: wrapper,
608
- popoverContent: children,
609
- open: isEditorOpen,
610
- onStatusChange: setEditorOpen,
611
- stopPropagation: true
612
- }, colorBox) : /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, wrapper(colorBox));
613
- }
614
-
615
- var ColorHelper = function () {
616
- function ColorHelper() {} // based on: https://gist.github.com/mjackson/5311256
617
-
618
-
619
- ColorHelper.rgbToHsv = function (rgb) {
620
- if (!rgb) {
621
- return undefined;
622
- }
623
-
624
- var r = this.limitToByte(rgb.r) / 255;
625
- var g = this.limitToByte(rgb.g) / 255;
626
- var b = this.limitToByte(rgb.b) / 255;
627
- var max = Math.max(r, g, b);
628
- var min = Math.min(r, g, b);
629
- var h = max;
630
- var s = max;
631
- var v = max;
632
- var d = max - min;
633
- s = max === 0 ? 0 : d / max;
634
-
635
- if (max === min) {
636
- h = 0; // achromatic
637
- } else {
638
- switch (max) {
639
- case r:
640
- h = (g - b) / d + (g < b ? 6 : 0);
641
- break;
642
-
643
- case g:
644
- h = (b - r) / d + 2;
645
- break;
646
-
647
- case b:
648
- h = (r - g) / d + 4;
649
- break;
650
-
651
- }
652
-
653
- h /= 6;
654
- }
655
-
656
- return {
657
- h: h,
658
- s: s,
659
- v: v
660
- };
661
- }; // based on: https://gist.github.com/mjackson/5311256
662
-
663
-
664
- ColorHelper.hsvToRgb = function (_hsv) {
665
- var hsv = _hsv;
666
- hsv.h = this.limitToOne(_hsv.h);
667
- hsv.s = this.limitToOne(_hsv.s);
668
- hsv.v = this.limitToOne(_hsv.v);
669
- var r = 0;
670
- var g = 0;
671
- var b = 0;
672
- var i = Math.floor(hsv.h * 6);
673
- var f = hsv.h * 6 - i;
674
- var p = hsv.v * (1 - hsv.s);
675
- var q = hsv.v * (1 - f * hsv.s);
676
- var t = hsv.v * (1 - (1 - f) * hsv.s);
677
-
678
- switch (i % 6) {
679
- case 0:
680
- r = hsv.v;
681
- g = t;
682
- b = p;
683
- break;
684
-
685
- case 1:
686
- r = q;
687
- g = hsv.v;
688
- b = p;
689
- break;
690
-
691
- case 2:
692
- r = p;
693
- g = hsv.v;
694
- b = t;
695
- break;
696
-
697
- case 3:
698
- r = p;
699
- g = q;
700
- b = hsv.v;
701
- break;
702
-
703
- case 4:
704
- r = t;
705
- g = p;
706
- b = hsv.v;
707
- break;
708
-
709
- case 5:
710
- r = hsv.v;
711
- g = p;
712
- b = q;
713
- break;
714
-
715
- }
716
-
717
- return {
718
- r: this.limitToByte(r * 255),
719
- g: this.limitToByte(g * 255),
720
- b: this.limitToByte(b * 255)
721
- };
722
- };
723
-
724
- ColorHelper.limitToByte = function (num) {
725
- if (num <= 0) {
726
- return 0;
727
- }
728
-
729
- if (num >= 255) {
730
- return 255;
731
- }
732
-
733
- return num;
734
- };
735
-
736
- ColorHelper.limitToOne = function (num) {
737
- if (num <= 0) {
738
- return 0;
739
- }
740
-
741
- if (num >= 1) {
742
- return 1;
743
- }
744
-
745
- return num;
746
- };
747
-
748
- ColorHelper.numberToHex = function (rgb) {
749
- var hex = Math.round(rgb).toString(16);
750
-
751
- if (hex.length < 2) {
752
- hex = "0" + hex;
753
- }
754
-
755
- return hex.toUpperCase();
756
- };
757
-
758
- ColorHelper.rgbToHex = function (_rgb) {
759
- var rgb = _rgb;
760
- rgb.r = this.limitToByte(rgb.r);
761
- rgb.g = this.limitToByte(rgb.g);
762
- rgb.b = this.limitToByte(rgb.b);
763
- var red = this.numberToHex(rgb.r);
764
- var green = this.numberToHex(rgb.g);
765
- var blue = this.numberToHex(rgb.b);
766
- return "#" + red + green + blue;
767
- };
768
-
769
- ColorHelper.hexToRgb = function (hexString) {
770
- var numbersOnly = hexString.substring(1);
771
- var aRgbHex = numbersOnly.match(/.{1,2}/g);
772
- return aRgbHex ? {
773
- r: parseInt(aRgbHex[0], 16),
774
- g: parseInt(aRgbHex[1], 16),
775
- b: parseInt(aRgbHex[2], 16)
776
- } : undefined;
777
- };
778
-
779
- return ColorHelper;
780
- }();
781
-
782
- var PREDEFINED_COLORS = ['#0091dc', '#333333', '#ffffff', '#f2f3f5', '#e5e8eb', '#d8dce1', '#b6bec6', '#80ca3d', '#ffd600', '#ff9600', '#d50000'];
783
-
784
- function ColorPicker(_a) {
785
- var _b = _a.palette,
786
- palette = _b === void 0 ? PREDEFINED_COLORS : _b,
787
- _c = _a.useAlpha,
788
- useAlpha = _c === void 0 ? false : _c,
789
- _d = _a.alpha,
790
- alpha = _d === void 0 ? 100 : _d,
791
- paletteOnly = _a.paletteOnly,
792
- _e = _a.color,
793
- color = _e === void 0 ? '#FFFFFF' : _e,
794
- onChange = _a.onChange,
795
- onAlphaChange = _a.onAlphaChange,
796
- className = _a.className;
797
- var baseSize = 184;
798
- var initialRgb = ColorHelper.hexToRgb(color);
799
- var defaultHsv = {
800
- h: 0,
801
- s: 0,
802
- v: 1
803
- };
804
- var initialHsv = initialRgb ? ColorHelper.rgbToHsv(initialRgb) || defaultHsv : defaultHsv;
805
-
806
- var _f = React.useState(initialHsv),
807
- hsv = _f[0],
808
- setHsv = _f[1];
809
-
810
- var _g = React.useState(color),
811
- innerColor = _g[0],
812
- setInnerColor = _g[1];
813
-
814
- var _h = React.useState((initialRgb === null || initialRgb === void 0 ? void 0 : initialRgb.r) || 255),
815
- redInput = _h[0],
816
- setRedInput = _h[1];
817
-
818
- var _j = React.useState((initialRgb === null || initialRgb === void 0 ? void 0 : initialRgb.g) || 255),
819
- greenInput = _j[0],
820
- setGreenInput = _j[1];
821
-
822
- var _k = React.useState((initialRgb === null || initialRgb === void 0 ? void 0 : initialRgb.b) || 255),
823
- blueInput = _k[0],
824
- setBlueInput = _k[1];
825
-
826
- var _l = React.useState(color),
827
- hexInputColor = _l[0],
828
- setHexInputColor = _l[1];
829
-
830
- var _m = React.useState('RGB'),
831
- inputType = _m[0],
832
- setInputType = _m[1];
833
-
834
- var _o = React.useState(false),
835
- selectOpen = _o[0],
836
- setSelectOpen = _o[1];
837
-
838
- var _p = React.useState(alpha),
839
- innerAlpha = _p[0],
840
- setInnerAlpha = _p[1];
841
-
842
- var _q = React.useState(true),
843
- changeColor = _q[0],
844
- setChangeColor = _q[1];
845
-
846
- function limitAlpha() {
847
- if (innerAlpha > 100) {
848
- return 100;
849
- }
850
-
851
- if (innerAlpha < 0) {
852
- return 0;
853
- }
854
-
855
- return innerAlpha;
856
- }
857
-
858
- var hueKnobOffset = hsv.h * baseSize - 14 - baseSize;
859
- var saturationKnobOffset = hsv.s * baseSize;
860
- var valueKnobOffset = (1 - hsv.v) * baseSize;
861
- var alphaKnobOffset = (100 - limitAlpha()) / 100 * baseSize;
862
-
863
- function getSaturationGradient() {
864
- return "linear-gradient(to right, white, hsl(" + hsv.h * 360 + ", 100%, 50%) )";
865
- }
866
-
867
- function updateInputs(hexColor) {
868
- setHexInputColor(hexColor);
869
- var rgb = ColorHelper.hexToRgb(hexColor);
870
-
871
- if (rgb) {
872
- setRedInput(rgb.r);
873
- setGreenInput(rgb.g);
874
- setBlueInput(rgb.b);
875
- }
876
- }
877
-
878
- React.useEffect(function () {
879
- if (onChange) {
880
- onChange(innerColor);
881
- }
882
- }, [onChange, innerColor]);
883
- React.useEffect(function () {
884
- if (onAlphaChange && innerAlpha) {
885
- onAlphaChange(innerAlpha);
886
- }
887
- }, [onAlphaChange, innerAlpha]);
888
- var updateColorHsv = React.useCallback(function (_hsv, _changeColor) {
889
- var rgb = ColorHelper.hsvToRgb(_hsv);
890
- var hex = ColorHelper.rgbToHex(rgb);
891
-
892
- if (_changeColor) {
893
- setInnerColor(hex);
894
- }
895
-
896
- updateInputs(hex);
897
- }, []);
898
- React.useEffect(function () {
899
- updateColorHsv(hsv, changeColor);
900
- }, [updateColorHsv, hsv, changeColor]);
901
-
902
- function updateGradient(x, y) {
903
- setChangeColor(true);
904
- setHsv(function (prevHsv) {
905
- return __assign(__assign({}, prevHsv), {
906
- s: Math.floor(x) / baseSize,
907
- v: (baseSize - y) / baseSize
908
- });
909
- });
910
- }
911
-
912
- function onGradientDrag(e, data) {
913
- e.preventDefault();
914
- updateGradient(data.x, data.y);
915
- }
916
-
917
- function updateHue(y) {
918
- var newHue = y / baseSize;
919
- setChangeColor(true);
920
- setHsv(function (prevHsv) {
921
- return __assign(__assign({}, prevHsv), {
922
- h: newHue
923
- });
924
- });
925
- }
926
-
927
- function onHueDrag(e, data) {
928
- e.preventDefault();
929
- updateHue(data.y + 14 + baseSize);
930
- }
931
-
932
- function updateAlpha(y) {
933
- setInnerAlpha(100 - Math.round(y / baseSize * 100));
934
- }
935
-
936
- function onAlphaDrag(e, data) {
937
- e.preventDefault();
938
- updateAlpha(data.y);
939
- }
940
-
941
- var updateColorRgb = function updateColorRgb(newColor) {
942
- var currentColor = newColor || '#FFFFFF';
943
- updateInputs(currentColor);
944
- var rgb = ColorHelper.hexToRgb(currentColor);
945
- setChangeColor(false);
946
-
947
- if (rgb) {
948
- var newHsv = ColorHelper.rgbToHsv(rgb);
949
-
950
- if (newHsv) {
951
- setHsv(newHsv);
952
- }
953
- }
954
-
955
- setInnerColor(newColor);
956
- };
957
-
958
- var isHexColor = function isHexColor(_color) {
959
- return /^#[0-9A-F]{6}$/i.test(_color);
960
- };
961
-
962
- function onHexInput(event) {
963
- var newHexInputColor = event.target.value;
964
- setHexInputColor(newHexInputColor.toUpperCase());
965
-
966
- if (isHexColor(newHexInputColor)) {
967
- updateColorRgb(newHexInputColor.toUpperCase());
968
- }
969
- }
970
-
971
- function onHexBlur() {
972
- if (!isHexColor(hexInputColor) && innerColor) {
973
- setHexInputColor(innerColor);
974
- updateColorRgb(innerColor);
975
- }
976
- }
977
-
978
- function onRgbBlur(channel) {
979
- var currentInput = '';
980
-
981
- switch (channel) {
982
- case 'r':
983
- currentInput = redInput;
984
- break;
985
-
986
- case 'g':
987
- currentInput = greenInput;
988
- break;
989
-
990
- case 'b':
991
- currentInput = blueInput;
992
- break;
993
-
994
- }
995
-
996
- if (typeof currentInput !== 'number' || typeof currentInput === 'number' && currentInput > 255 && currentInput < 0) {
997
- var rgb = ColorHelper.hexToRgb(innerColor || '#FFFFFF');
998
-
999
- if (rgb) {
1000
- var newHexColor = ColorHelper.rgbToHex(rgb);
1001
- updateInputs(newHexColor);
1002
- }
1003
- }
1004
- }
1005
-
1006
- function onRgbInput(_value, channel) {
1007
- var numberValue = Number.parseInt(_value, 10);
1008
-
1009
- switch (channel) {
1010
- case 'r':
1011
- setRedInput(_value);
1012
- break;
1013
-
1014
- case 'g':
1015
- setGreenInput(_value);
1016
- break;
1017
-
1018
- case 'b':
1019
- setBlueInput(_value);
1020
- break;
1021
-
1022
- }
1023
-
1024
- if (numberValue <= 255 && numberValue >= 0) {
1025
- var rgb = ColorHelper.hexToRgb(innerColor || '#FFFFFF');
1026
-
1027
- if (rgb) {
1028
- rgb[channel] = numberValue;
1029
- var newHexColor = ColorHelper.rgbToHex(rgb);
1030
- setInnerColor(newHexColor);
1031
- updateColorRgb(newHexColor);
1032
- }
1033
- }
1034
- }
1035
-
1036
- function onAlphaInput(_alpha) {
1037
- var numberValue = Number.parseInt(_alpha, 10);
1038
- setInnerAlpha(numberValue);
1039
- }
1040
-
1041
- function onAlphaBlur() {
1042
- setInnerAlpha(limitAlpha());
1043
- }
1044
-
1045
- var onChangeType = function onChangeType(type) {
1046
- setInputType(type);
1047
- setSelectOpen(false);
1048
- };
1049
-
1050
- function onRemoveColor() {
1051
- if (useAlpha) {
1052
- setInnerAlpha(0);
1053
- } else {
1054
- updateColorRgb();
1055
- }
1056
- }
1057
-
1058
- return /*#__PURE__*/React__default["default"].createElement("div", {
1059
- className: classNames__default["default"]('fwe-color-picker', {
1060
- 'fwe-alpha-active': useAlpha
1061
- }, className)
1062
- }, !paletteOnly && /*#__PURE__*/React__default["default"].createElement("div", {
1063
- className: "fwe-d-flex"
1064
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1065
- className: "fwe-gradient-picker"
1066
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1067
- className: "fwe-saturation-gradient",
1068
- style: {
1069
- backgroundImage: getSaturationGradient()
1070
- }
1071
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1072
- onClick: function onClick(_a) {
1073
- var _b = _a.nativeEvent,
1074
- offsetX = _b.offsetX,
1075
- offsetY = _b.offsetY;
1076
- return updateGradient(offsetX, offsetY);
1077
- },
1078
- className: "fwe-brightness-gradient"
1079
- }), /*#__PURE__*/React__default["default"].createElement(Draggable__default["default"], {
1080
- position: {
1081
- x: saturationKnobOffset,
1082
- y: valueKnobOffset
1083
- },
1084
- onDrag: function onDrag(e, data) {
1085
- return onGradientDrag(e, data);
1086
- },
1087
- bounds: "parent"
1088
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1089
- className: "fwe-knob"
1090
- }))), /*#__PURE__*/React__default["default"].createElement("div", {
1091
- className: "fwe-hue-picker"
1092
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1093
- className: "fwe-picker-background",
1094
- onClick: function onClick(_a) {
1095
- var offsetY = _a.nativeEvent.offsetY;
1096
- return updateHue(offsetY);
1097
- }
1098
- }), /*#__PURE__*/React__default["default"].createElement(Draggable__default["default"], {
1099
- position: {
1100
- x: 3,
1101
- y: hueKnobOffset
1102
- },
1103
- onDrag: function onDrag(e, data) {
1104
- return onHueDrag(e, data);
1105
- },
1106
- bounds: "parent"
1107
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1108
- className: "fwe-knob",
1109
- style: {
1110
- background: "hsl(" + hsv.h * 360 + ", 100%, 50%)"
1111
- }
1112
- }))), useAlpha && /*#__PURE__*/React__default["default"].createElement("div", {
1113
- className: "fwe-alpha-picker"
1114
- }, /*#__PURE__*/React__default["default"].createElement("svg", {
1115
- className: "fwe-no-color-pattern",
1116
- version: "1.1",
1117
- xmlns: "http://www.w3.org/2000/svg",
1118
- xmlnsXlink: "http://www.w3.org/1999/xlink",
1119
- id: "canvas1",
1120
- width: "8",
1121
- height: "184"
1122
- }, /*#__PURE__*/React__default["default"].createElement("defs", null, /*#__PURE__*/React__default["default"].createElement("pattern", {
1123
- id: "bwsquare2px",
1124
- width: "4",
1125
- height: "4",
1126
- patternUnits: "userSpaceOnUse"
1127
- }, /*#__PURE__*/React__default["default"].createElement("rect", {
1128
- x: "0",
1129
- y: "0",
1130
- width: "2",
1131
- height: "2",
1132
- stroke: "none",
1133
- fill: "#ffffff"
1134
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
1135
- x: "2",
1136
- y: "0",
1137
- width: "2",
1138
- height: "2",
1139
- stroke: "none",
1140
- fill: "#e5e8eb"
1141
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
1142
- x: "0",
1143
- y: "2",
1144
- width: "2",
1145
- height: "2",
1146
- stroke: "none",
1147
- fill: "#e5e8eb"
1148
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
1149
- x: "2",
1150
- y: "2",
1151
- width: "2",
1152
- height: "2",
1153
- stroke: "none",
1154
- fill: "#ffffff"
1155
- }))), /*#__PURE__*/React__default["default"].createElement("rect", {
1156
- x: "0",
1157
- y: "0",
1158
- rx: "4",
1159
- ry: "4",
1160
- width: "8",
1161
- height: "184",
1162
- fill: "url(#bwsquare2px)",
1163
- strokeWidth: "0"
1164
- })), /*#__PURE__*/React__default["default"].createElement("div", {
1165
- onClick: function onClick(_a) {
1166
- var offsetY = _a.nativeEvent.offsetY;
1167
- return updateAlpha(offsetY);
1168
- },
1169
- className: "fwe-picker-background",
1170
- style: {
1171
- backgroundImage: "linear-gradient( " + innerColor + ", transparent)"
1172
- }
1173
- }), /*#__PURE__*/React__default["default"].createElement(Draggable__default["default"], {
1174
- position: {
1175
- x: 3,
1176
- y: alphaKnobOffset
1177
- },
1178
- onDrag: function onDrag(e, data) {
1179
- return onAlphaDrag(e, data);
1180
- },
1181
- bounds: "parent"
1182
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1183
- className: "fwe-knob"
1184
- })))), !paletteOnly && /*#__PURE__*/React__default["default"].createElement("div", {
1185
- className: "fwe-mt-s"
1186
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1187
- className: "fwe-type-select"
1188
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1189
- className: "fwe-type-indicator",
1190
- onClick: function onClick() {
1191
- return setSelectOpen(function (prevOpen) {
1192
- return !prevOpen;
1193
- });
1194
- }
1195
- }, /*#__PURE__*/React__default["default"].createElement("span", {
1196
- className: "fwe-input-type"
1197
- }, inputType), /*#__PURE__*/React__default["default"].createElement("i", {
1198
- className: "fwe-icon fwe-icon-arrows-collapse"
1199
- })), selectOpen && /*#__PURE__*/React__default["default"].createElement("div", {
1200
- className: "fwe-popover"
1201
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1202
- className: classNames__default["default"]('fwe-type-item', {
1203
- 'fwe-selected': inputType === 'HEX'
1204
- }),
1205
- onClick: function onClick() {
1206
- return onChangeType('HEX');
1207
- }
1208
- }, /*#__PURE__*/React__default["default"].createElement("i", {
1209
- className: "fwe-icon fwe-icon-menu-check"
1210
- }), " HEX"), /*#__PURE__*/React__default["default"].createElement("div", {
1211
- className: classNames__default["default"]('fwe-type-item', {
1212
- 'fwe-selected': inputType === 'RGB'
1213
- }),
1214
- onClick: function onClick() {
1215
- return onChangeType('RGB');
1216
- }
1217
- }, /*#__PURE__*/React__default["default"].createElement("i", {
1218
- className: "fwe-icon fwe-icon-menu-check"
1219
- }), " RGB"))), /*#__PURE__*/React__default["default"].createElement("div", {
1220
- className: "fwe-d-flex"
1221
- }, inputType === 'HEX' && /*#__PURE__*/React__default["default"].createElement("label", {
1222
- className: "fwe-input-text fwe-hex-input"
1223
- }, /*#__PURE__*/React__default["default"].createElement("input", {
1224
- type: "text",
1225
- value: hexInputColor,
1226
- onBlur: onHexBlur,
1227
- onChange: onHexInput
1228
- })), inputType === 'RGB' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("label", {
1229
- className: "fwe-input-text fwe-red-input"
1230
- }, /*#__PURE__*/React__default["default"].createElement("input", {
1231
- type: "text",
1232
- value: redInput,
1233
- onBlur: function onBlur() {
1234
- return onRgbBlur('r');
1235
- },
1236
- onChange: function onChange(e) {
1237
- return onRgbInput(e.target.value, 'r');
1238
- }
1239
- })), /*#__PURE__*/React__default["default"].createElement("label", {
1240
- className: "fwe-input-text fwe-green-input"
1241
- }, /*#__PURE__*/React__default["default"].createElement("input", {
1242
- type: "text",
1243
- value: greenInput,
1244
- onBlur: function onBlur() {
1245
- return onRgbBlur('g');
1246
- },
1247
- onChange: function onChange(e) {
1248
- return onRgbInput(e.target.value, 'g');
1249
- }
1250
- })), /*#__PURE__*/React__default["default"].createElement("label", {
1251
- className: "fwe-input-text fwe-green-input"
1252
- }, /*#__PURE__*/React__default["default"].createElement("input", {
1253
- type: "text",
1254
- value: blueInput,
1255
- onBlur: function onBlur() {
1256
- return onRgbBlur('b');
1257
- },
1258
- onChange: function onChange(e) {
1259
- return onRgbInput(e.target.value, 'b');
1260
- }
1261
- }))), useAlpha && /*#__PURE__*/React__default["default"].createElement("label", {
1262
- className: "fwe-input-text fwe-alpha-input fwe-ml-auto"
1263
- }, /*#__PURE__*/React__default["default"].createElement("span", null, /*#__PURE__*/React__default["default"].createElement("input", {
1264
- type: "number",
1265
- min: "0",
1266
- max: "100",
1267
- value: innerAlpha,
1268
- onBlur: function onBlur() {
1269
- return onAlphaBlur();
1270
- },
1271
- onChange: function onChange(e) {
1272
- return onAlphaInput(e.target.value);
1273
- }
1274
- }), /*#__PURE__*/React__default["default"].createElement("span", {
1275
- className: "fwe-percent-char"
1276
- }, "%"))))), /*#__PURE__*/React__default["default"].createElement("div", {
1277
- className: "fwe-mt-xs fwe-color-grid"
1278
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1279
- className: "fwe-remove-color-button",
1280
- onClick: onRemoveColor
1281
- }, /*#__PURE__*/React__default["default"].createElement("svg", {
1282
- className: "fwe-no-color-pattern",
1283
- version: "1.1",
1284
- xmlns: "http://www.w3.org/2000/svg",
1285
- xmlnsXlink: "http://www.w3.org/1999/xlink",
1286
- id: "canvas1",
1287
- width: "18",
1288
- height: "18"
1289
- }, /*#__PURE__*/React__default["default"].createElement("defs", null, /*#__PURE__*/React__default["default"].createElement("pattern", {
1290
- id: "bwsquare2px",
1291
- width: "4",
1292
- height: "4",
1293
- patternUnits: "userSpaceOnUse"
1294
- }, /*#__PURE__*/React__default["default"].createElement("rect", {
1295
- x: "0",
1296
- y: "0",
1297
- width: "2",
1298
- height: "2",
1299
- stroke: "none",
1300
- fill: "#ffffff"
1301
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
1302
- x: "2",
1303
- y: "0",
1304
- width: "2",
1305
- height: "2",
1306
- stroke: "none",
1307
- fill: "#e5e8eb"
1308
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
1309
- x: "0",
1310
- y: "2",
1311
- width: "2",
1312
- height: "2",
1313
- stroke: "none",
1314
- fill: "#e5e8eb"
1315
- }), /*#__PURE__*/React__default["default"].createElement("rect", {
1316
- x: "2",
1317
- y: "2",
1318
- width: "2",
1319
- height: "2",
1320
- stroke: "none",
1321
- fill: "#ffffff"
1322
- }))), /*#__PURE__*/React__default["default"].createElement("rect", {
1323
- x: "0",
1324
- y: "0",
1325
- rx: "0",
1326
- ry: "0",
1327
- width: "18",
1328
- height: "18",
1329
- fill: "url(#bwsquare2px)",
1330
- strokeWidth: "0"
1331
- })), /*#__PURE__*/React__default["default"].createElement("i", {
1332
- className: classNames__default["default"]('fwe-icon fwe-icon-menu-check', {
1333
- 'fwe-color-text': !innerColor
1334
- })
1335
- })), palette.map(function (colorItem) {
1336
- var itemClasses = classNames__default["default"]('fwe-color-item', {
1337
- 'fwe-white-item': colorItem.toUpperCase() === '#FFFFFF'
1338
- });
1339
- return /*#__PURE__*/React__default["default"].createElement("div", {
1340
- key: colorItem,
1341
- className: itemClasses,
1342
- style: {
1343
- background: colorItem
1344
- },
1345
- onClick: function onClick() {
1346
- return updateColorRgb(colorItem.toUpperCase());
1347
- }
1348
- }, innerColor === colorItem.toUpperCase() && /*#__PURE__*/React__default["default"].createElement("i", {
1349
- className: "fwe-icon fwe-icon-menu-check"
1350
- }));
1351
- })));
1352
- }
1353
-
1354
- function ConfirmModal(_a) {
1355
- var title = _a.title,
1356
- subtitle = _a.subtitle,
1357
- body = _a.body,
1358
- className = _a.className,
1359
- cancel = _a.cancel,
1360
- ok = _a.ok,
1361
- onCancel = _a.onCancel,
1362
- onOk = _a.onOk,
1363
- isOpen = _a.isOpen,
1364
- props = __rest(_a, ["title", "subtitle", "body", "className", "cancel", "ok", "onCancel", "onOk", "isOpen"]);
1365
-
1366
- var _b = React.useState(false),
1367
- hasScrollableContent = _b[0],
1368
- setScrollableContent = _b[1];
1369
-
1370
- var ref = React.useCallback(function (node) {
1371
- if (node !== null) {
1372
- setScrollableContent(node.scrollHeight > node.getBoundingClientRect().height);
1373
- }
1374
- }, []);
1375
- React.useEffect(function () {
1376
- if (!isOpen) {
1377
- setScrollableContent(false);
1378
- }
1379
- }, [isOpen]);
1380
- return /*#__PURE__*/React__default["default"].createElement(Modal, __assign({
1381
- className: classNames__default["default"]({
1382
- 'fwe-modal--with-scrollable-content': hasScrollableContent
1383
- }, className),
1384
- head: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, subtitle && /*#__PURE__*/React__default["default"].createElement("h2", {
1385
- className: "fwe-modal-h2"
1386
- }, subtitle), /*#__PURE__*/React__default["default"].createElement("h1", {
1387
- className: "fwe-modal-h1"
1388
- }, title)),
1389
- ref: ref,
1390
- body: /*#__PURE__*/React__default["default"].createElement("p", null, body),
1391
- isOpen: isOpen
1392
- }, props), (cancel || ok) && /*#__PURE__*/React__default["default"].createElement(ModalFooter, {
1393
- fullWidth: !hasScrollableContent
1394
- }, cancel && /*#__PURE__*/React__default["default"].createElement("button", {
1395
- type: "button",
1396
- "aria-label": "Cancel",
1397
- className: "fwe-btn fwe-btn-lg",
1398
- onClick: onCancel
1399
- }, cancel), ok && /*#__PURE__*/React__default["default"].createElement("button", {
1400
- type: "button",
1401
- "aria-label": "Ok",
1402
- className: "fwe-btn fwe-btn-hero fwe-btn-lg",
1403
- onClick: onOk
1404
- }, ok)));
1405
- }
1406
-
1407
- function DatePicker(_a) {
1408
- var children = _a.children,
1409
- className = _a.className,
1410
- disabled = _a.disabled,
1411
- required = _a.required,
1412
- error = _a.error,
1413
- hint = _a.hint,
1414
- value = _a.value,
1415
- _b = _a.defaultValue,
1416
- defaultValue = _b === void 0 ? new Date() : _b,
1417
- _c = _a.formatDate,
1418
- formatDate = _c === void 0 ? Intl.DateTimeFormat().format : _c,
1419
- options = _a.options,
1420
- onChange = _a.onChange;
1421
-
1422
- var _d = React.useState(false),
1423
- open = _d[0],
1424
- setOpen = _d[1];
1425
-
1426
- var _e = React.useState(null),
1427
- calendar = _e[0],
1428
- setCalendar = _e[1];
1429
-
1430
- var innerDefaultValue = value || defaultValue;
1431
-
1432
- function toggle() {
1433
- var newOpen = !open;
1434
- setOpen(newOpen);
1435
-
1436
- if (newOpen) {
1437
- calendar.open();
1438
- } else {
1439
- calendar.close();
1440
- }
1441
- }
1442
-
1443
- var datePickerRef = React.useRef(null);
1444
-
1445
- var _f = options || {},
1446
- keepOpenOnDateChange = _f.keepOpenOnDateChange,
1447
- maxDate = _f.maxDate,
1448
- minDate = _f.minDate;
1449
-
1450
- React.useEffect(function () {
1451
- if (calendar !== null && value !== undefined) {
1452
- calendar.setDate(value);
1453
- }
1454
- }, [calendar, value]);
1455
- React.useEffect(function () {
1456
- var _a;
1457
-
1458
- function handleChange(date) {
1459
- datePickerRef.current.blur();
1460
-
1461
- if (onChange) {
1462
- onChange(date);
1463
- }
1464
- }
1465
-
1466
- function handleClose() {
1467
- setOpen(false);
1468
- datePickerRef.current.blur();
1469
- }
1470
-
1471
- if (datePickerRef.current && calendar === null) {
1472
- setCalendar(flatpickr__default["default"](datePickerRef.current, {
1473
- defaultDate: innerDefaultValue,
1474
- onChange: function onChange(v) {
1475
- return handleChange(v[0]);
1476
- },
1477
- onClose: handleClose,
1478
- position: 'below center',
1479
- formatDate: formatDate,
1480
- closeOnSelect: (_a = !keepOpenOnDateChange) !== null && _a !== void 0 ? _a : true,
1481
- clickOpens: false,
1482
- minDate: minDate,
1483
- maxDate: maxDate
1484
- }));
1485
- }
1486
- }, [datePickerRef, calendar, maxDate, minDate, onChange, innerDefaultValue, formatDate, keepOpenOnDateChange]);
1487
- React.useEffect(function () {
1488
- return function () {
1489
- if (calendar !== null) {
1490
- calendar.destroy();
1491
- }
1492
- };
1493
- }, [calendar]);
1494
- return /*#__PURE__*/React__default["default"].createElement("label", {
1495
- className: classNames__default["default"]('fwe-input-text fwe-input-text-icon', className),
1496
- onClick: toggle
1497
- }, /*#__PURE__*/React__default["default"].createElement("i", {
1498
- className: classNames__default["default"]('fwe-icon fwe-icon-time-calendar', {
1499
- 'fwe-color-hero': open && !disabled,
1500
- 'fwe-color-control-disabled': disabled
1501
- })
1502
- }), /*#__PURE__*/React__default["default"].createElement("input", {
1503
- ref: datePickerRef,
1504
- "aria-label": "picked date",
1505
- type: "text",
1506
- readOnly: true,
1507
- required: required || null,
1508
- className: classNames__default["default"]('fr-date-picker', {
1509
- 'fwe-border-hero': open && !disabled
1510
- }),
1511
- disabled: disabled
1512
- }), /*#__PURE__*/React__default["default"].createElement("span", {
1513
- className: "fwe-input-text-label"
1514
- }, children), hint && /*#__PURE__*/React__default["default"].createElement("span", {
1515
- className: "fwe-input-text-info"
1516
- }, hint), error && /*#__PURE__*/React__default["default"].createElement("span", {
1517
- className: "fwe-input-text-invalid"
1518
- }, error));
1519
- }
1520
-
1521
- function DateRangePicker(_a) {
1522
- var children = _a.children,
1523
- className = _a.className,
1524
- disabled = _a.disabled,
1525
- error = _a.error,
1526
- formatDate = _a.formatDate,
1527
- hint = _a.hint,
1528
- onChange = _a.onChange,
1529
- options = _a.options,
1530
- required = _a.required,
1531
- _b = _a.defaultValue,
1532
- defaultValue = _b === void 0 ? new Date() : _b;
1533
-
1534
- var _c = React.useState(false),
1535
- open = _c[0],
1536
- setOpen = _c[1];
1537
-
1538
- var _d = React.useState(null),
1539
- calendar = _d[0],
1540
- setCalendar = _d[1];
1541
-
1542
- function toggle() {
1543
- var newOpen = !open;
1544
- setOpen(newOpen);
1545
-
1546
- if (newOpen) {
1547
- calendar.open();
1548
- } else {
1549
- calendar.close();
1550
- }
1551
- }
1552
-
1553
- var inputRef = React.useRef(null);
1554
- var input2Ref = React.useRef(null);
1555
- var containerRef = React.useRef(null);
1556
- React.useEffect(function () {
1557
- var _a;
1558
-
1559
- function handleChange(dates) {
1560
- if (onChange) {
1561
- onChange(dates);
1562
- }
1563
- }
1564
-
1565
- function handleClose() {
1566
- setOpen(false);
1567
- inputRef.current.blur();
1568
- input2Ref.current.blur();
1569
- }
1570
-
1571
- if (containerRef.current && inputRef.current && input2Ref.current && calendar === null) {
1572
- setCalendar(flatpickr__default["default"](inputRef.current, {
1573
- defaultDate: defaultValue,
1574
- plugins: [rangePlugin__default["default"]({
1575
- input: input2Ref.current
1576
- })],
1577
- onChange: function onChange(v) {
1578
- return handleChange(v);
1579
- },
1580
- position: 'below center',
1581
- positionElement: containerRef.current,
1582
- formatDate: formatDate,
1583
- closeOnSelect: (_a = !(options === null || options === void 0 ? void 0 : options.keepOpenOnDateChange)) !== null && _a !== void 0 ? _a : true,
1584
- clickOpens: false,
1585
- onClose: handleClose,
1586
- minDate: options === null || options === void 0 ? void 0 : options.minDate,
1587
- maxDate: options === null || options === void 0 ? void 0 : options.maxDate
1588
- }));
1589
- }
1590
- }, [inputRef, input2Ref, containerRef, formatDate, options, onChange, calendar, defaultValue]);
1591
- React.useEffect(function () {
1592
- return function () {
1593
- if (calendar !== null) {
1594
- calendar.destroy();
1595
- }
1596
- };
1597
- }, [calendar]);
1598
- return /*#__PURE__*/React__default["default"].createElement("div", {
1599
- className: classNames__default["default"]('fr-date-range-picker', className),
1600
- onClick: toggle
1601
- }, /*#__PURE__*/React__default["default"].createElement("label", {
1602
- className: "fwe-input-text fwe-input-text-icon"
1603
- }, /*#__PURE__*/React__default["default"].createElement("i", {
1604
- className: classNames__default["default"]('fwe-icon fwe-icon-time-calendar', {
1605
- 'fwe-color-hero': open && !disabled,
1606
- 'fwe-color-control-disabled': disabled
1607
- })
1608
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1609
- ref: containerRef,
1610
- className: "fr-date-range-picker-inputs"
1611
- }, /*#__PURE__*/React__default["default"].createElement("input", {
1612
- ref: inputRef,
1613
- "aria-label": "picked start date",
1614
- type: "text",
1615
- readOnly: true,
1616
- required: required || null,
1617
- className: classNames__default["default"]({
1618
- 'fwe-border-hero': open && !disabled
1619
- }),
1620
- disabled: disabled
1621
- }), /*#__PURE__*/React__default["default"].createElement("input", {
1622
- ref: input2Ref,
1623
- "aria-label": "picked end date",
1624
- type: "text",
1625
- readOnly: true,
1626
- required: required || null,
1627
- className: classNames__default["default"]({
1628
- 'fwe-border-hero': open && !disabled
1629
- }),
1630
- disabled: disabled
1631
- })), /*#__PURE__*/React__default["default"].createElement("span", {
1632
- className: classNames__default["default"]('fwe-input-text-label', {
1633
- 'fwe-color-text-disabled': disabled
1634
- })
1635
- }, children), hint && /*#__PURE__*/React__default["default"].createElement("span", {
1636
- className: "fwe-input-text-info"
1637
- }, hint), error && /*#__PURE__*/React__default["default"].createElement("span", {
1638
- className: "fwe-input-text-invalid"
1639
- }, error)));
1640
- }
1641
-
1642
- function LinkButton(_a) {
1643
- var icon = _a.icon,
1644
- onClick = _a.onClick,
1645
- _b = _a.disabled,
1646
- disabled = _b === void 0 ? false : _b,
1647
- children = _a.children,
1648
- _c = _a.iconOnly,
1649
- iconOnly = _c === void 0 ? false : _c,
1650
- className = _a.className;
1651
- var classes = classNames__default["default"]('fwe-btn', 'fwe-btn-link', {
1652
- 'fwe-disabled': disabled
1653
- }, className);
1654
- return /*#__PURE__*/React__default["default"].createElement("button", {
1655
- onClick: onClick,
1656
- type: "button",
1657
- className: classes,
1658
- disabled: disabled
1659
- }, /*#__PURE__*/React__default["default"].createElement("i", {
1660
- className: "fwe-icon fwe-icon-" + icon
1661
- }), !iconOnly && children);
1662
- }
1663
-
1664
- function LoadingIndicator(_a) {
1665
- var _b = _a.size,
1666
- size = _b === void 0 ? 'large' : _b,
1667
- children = _a.children,
1668
- className = _a.className;
1669
- var classes = classNames__default["default"]('fwe-waiting-indicator', {
1670
- 'fwe-waiting-indicator-md': size === 'medium'
1671
- }, {
1672
- 'fwe-waiting-indicator-sm': size === 'small'
1673
- }, className);
1674
- return /*#__PURE__*/React__default["default"].createElement("div", {
1675
- className: "fr-waiting-container"
1676
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1677
- className: classes
1678
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1679
- className: "fwe-waiting-circle-1"
1680
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1681
- className: "fwe-waiting-circle-2"
1682
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1683
- className: "fwe-waiting-circle-3"
1684
- })), children);
1685
- }
1686
-
1687
- var PaginationType;
1688
-
1689
- (function (PaginationType) {
1690
- PaginationType["Simple"] = "SIMPLE";
1691
- PaginationType["Numeric"] = "NUMERIC";
1692
- PaginationType["Dots"] = "DOTS";
1693
- })(PaginationType || (PaginationType = {}));
1694
-
1695
- function Pagination(props) {
1696
- var pageMax = props.pageMax,
1697
- onChange = props.onChange,
1698
- pageCurrent = props.pageCurrent,
1699
- _a = props.defaultPageCurrent,
1700
- defaultPageCurrent = _a === void 0 ? 1 : _a,
1701
- _b = props.type,
1702
- type = _b === void 0 ? PaginationType.Numeric : _b,
1703
- className = props.className;
1704
- var controlled = pageCurrent !== undefined;
1705
-
1706
- var _c = React.useState(controlled ? pageCurrent : defaultPageCurrent),
1707
- innerPageCurrent = _c[0],
1708
- setInnerPageCurrent = _c[1];
1709
-
1710
- var dotArray = Array.from(new Array(pageMax).keys());
1711
- React.useEffect(function () {
1712
- if (controlled) {
1713
- setInnerPageCurrent(pageCurrent);
1714
- }
1715
- }, [pageCurrent, controlled]);
1716
-
1717
- function handleChange(newPage) {
1718
- if (!controlled) {
1719
- setInnerPageCurrent(newPage);
1720
- }
1721
-
1722
- if (onChange) {
1723
- onChange(newPage);
1724
- }
1725
- }
1726
-
1727
- function onBtnDown() {
1728
- if (innerPageCurrent > 1) {
1729
- var newPageCurrent = innerPageCurrent - 1;
1730
- handleChange(newPageCurrent);
1731
- }
1732
- }
1733
-
1734
- function onBtnUp() {
1735
- if (innerPageCurrent < pageMax) {
1736
- var newPageCurrent = innerPageCurrent + 1;
1737
- handleChange(newPageCurrent);
1738
- }
1739
- }
1740
-
1741
- function onDotClick(index) {
1742
- var newPageCurrent = index + 1;
1743
- handleChange(newPageCurrent);
1744
- }
1745
-
1746
- function handleKeyPress(event, index) {
1747
- if (event.key === 'Enter' || event.key === ' ') {
1748
- onDotClick(index);
1749
- }
1750
- }
1751
-
1752
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, type !== PaginationType.Dots && /*#__PURE__*/React__default["default"].createElement("div", {
1753
- className: classNames__default["default"]('fwe-pagination fwe-p-m', {
1754
- 'fwe-d-none': pageMax < 2
1755
- }, className)
1756
- }, /*#__PURE__*/React__default["default"].createElement("button", {
1757
- className: classNames__default["default"]('fwe-navigate-btn-down', {
1758
- 'fwe-disabled': innerPageCurrent <= 1
1759
- }),
1760
- onClick: onBtnDown,
1761
- type: "button",
1762
- "aria-label": "navigate-btn-down"
1763
- }), type === PaginationType.Numeric && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("span", {
1764
- className: "fwe-page-current"
1765
- }, innerPageCurrent), /*#__PURE__*/React__default["default"].createElement("span", {
1766
- className: "fwe-page-max"
1767
- }, pageMax)), /*#__PURE__*/React__default["default"].createElement("button", {
1768
- className: classNames__default["default"]('fwe-navigate-btn-up', {
1769
- 'fwe-disabled': innerPageCurrent >= pageMax,
1770
- 'fwe-ml-4': type === PaginationType.Simple
1771
- }),
1772
- onClick: onBtnUp,
1773
- type: "button",
1774
- "aria-label": "navigate-btn-up"
1775
- })), type === PaginationType.Dots && /*#__PURE__*/React__default["default"].createElement("div", {
1776
- className: classNames__default["default"]('fwe-p-m', {
1777
- 'fwe-d-none': pageMax < 2
1778
- }, className)
1779
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1780
- className: "fwe-pagination"
1781
- }, dotArray.map(function (index) {
1782
- return /*#__PURE__*/React__default["default"].createElement("span", {
1783
- tabIndex: 0,
1784
- role: "button",
1785
- key: index,
1786
- className: classNames__default["default"]('fwe-page-dot', {
1787
- 'fwe-selected': index + 1 === innerPageCurrent
1788
- }),
1789
- onClick: function onClick() {
1790
- return onDotClick(index);
1791
- },
1792
- "aria-label": "page-dot",
1793
- onKeyPress: function onKeyPress(e) {
1794
- return handleKeyPress(e, index);
1795
- }
1796
- });
1797
- }))));
1798
- }
1799
-
1800
- function Progress(_a) {
1801
- var _b = _a.background,
1802
- background = _b === void 0 ? 'white' : _b,
1803
- _c = _a.error,
1804
- error = _c === void 0 ? false : _c,
1805
- progress = _a.progress,
1806
- className = _a.className;
1807
- var classes = classNames__default["default"]('fwe-progress-bar', {
1808
- 'fwe-bg-red': error
1809
- }, {
1810
- 'fwe-progress-bar-black': background === 'black'
1811
- }, {
1812
- 'fwe-progress-bar-background': background === 'background'
1813
- });
1814
- return /*#__PURE__*/React__default["default"].createElement("div", {
1815
- className: classNames__default["default"]('fwe-progress', className)
1816
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1817
- className: classes,
1818
- role: "progressbar",
1819
- style: {
1820
- width: progress + "%"
1821
- },
1822
- "aria-valuenow": progress,
1823
- "aria-valuemin": 0,
1824
- "aria-valuemax": 100,
1825
- "aria-label": "progressbar"
1826
- }));
1827
- }
1828
-
1829
- function Tabs(_a) {
1830
- var _b, _c, _d;
1831
-
1832
- var config = _a.config,
1833
- children = _a.children,
1834
- className = _a.className,
1835
- onChange = _a.onChange;
1836
- var activeId = '';
1837
- React__default["default"].Children.forEach(children, function (element) {
1838
- if ( /*#__PURE__*/React__default["default"].isValidElement(element)) {
1839
- if (activeId === '') {
1840
- activeId = element.props.id;
1841
- } else if (element.props.active) {
1842
- activeId = element.props.id;
1843
- }
1844
- }
1845
- });
1846
-
1847
- var _e = React.useState(activeId),
1848
- currentId = _e[0],
1849
- setId = _e[1];
1850
-
1851
- var tabListClasses = classNames__default["default"]('fwe-tab-bar', {
1852
- 'fwe-tab-bar-full-width': (_b = config.tabBar) === null || _b === void 0 ? void 0 : _b.fullWidth
1853
- }, {
1854
- 'fwe-tab-items-equal-width': ((_c = config.tabItems) === null || _c === void 0 ? void 0 : _c.appearance) === 'equal'
1855
- }, {
1856
- 'fwe-tab-items-fill': ((_d = config.tabItems) === null || _d === void 0 ? void 0 : _d.appearance) === 'fill'
1857
- });
1858
-
1859
- var showTabPane = function showTabPane(id) {
1860
- if (onChange) {
1861
- onChange({
1862
- previous: currentId,
1863
- current: id
1864
- });
1865
- }
1866
-
1867
- setId(id);
1868
- };
1869
-
1870
- var innerChildren = React__default["default"].Children.map(children, function (element) {
1871
- if ( /*#__PURE__*/React.isValidElement(element)) {
1872
- return /*#__PURE__*/React__default["default"].cloneElement(element, {
1873
- isVisible: element.props.id === currentId,
1874
- active: element.props.id === currentId
1875
- });
1876
- }
1877
-
1878
- return undefined;
1879
- });
1880
- return /*#__PURE__*/React__default["default"].createElement("div", {
1881
- className: classNames__default["default"]('fwe-tabs', className)
1882
- }, /*#__PURE__*/React__default["default"].createElement("ul", {
1883
- role: "tablist",
1884
- className: tabListClasses
1885
- }, innerChildren.map(function (child) {
1886
- var _a = child.props,
1887
- id = _a.id,
1888
- active = _a.active,
1889
- icon = _a.icon,
1890
- name = _a.name;
1891
- return /*#__PURE__*/React__default["default"].createElement("li", {
1892
- key: id,
1893
- className: classNames__default["default"]('fwe-tab-item', {
1894
- 'fwe-active': active
1895
- }),
1896
- onClick: function onClick() {
1897
- return showTabPane(id);
1898
- }
1899
- }, child.props.icon ? /*#__PURE__*/React__default["default"].createElement("a", {
1900
- className: "fwe-tab-link",
1901
- role: "tab",
1902
- "aria-controls": id,
1903
- "aria-selected": active
1904
- }, /*#__PURE__*/React__default["default"].createElement("i", {
1905
- className: "fwe-icon " + icon
1906
- }), /*#__PURE__*/React__default["default"].createElement("span", null, name)) : /*#__PURE__*/React__default["default"].createElement("a", {
1907
- className: "fwe-tab-link",
1908
- role: "tab",
1909
- "aria-controls": id,
1910
- "aria-selected": active
1911
- }, name));
1912
- })), /*#__PURE__*/React__default["default"].createElement("div", {
1913
- className: "fwe-tab-content"
1914
- }, innerChildren));
1915
- }
1916
-
1917
- function TabPane(_a) {
1918
- var _b = _a.isVisible,
1919
- isVisible = _b === void 0 ? false : _b,
1920
- children = _a.children,
1921
- className = _a.className;
1922
- var tabPaneClasses = classNames__default["default"]({
1923
- 'fr-show': isVisible
1924
- }, {
1925
- 'fr-hide': !isVisible
1926
- }, className);
1927
- return /*#__PURE__*/React__default["default"].createElement("div", {
1928
- className: tabPaneClasses
1929
- }, children);
1930
- }
1931
-
1932
- function Checkbox(_a) {
1933
- var id = _a.id,
1934
- checked = _a.checked,
1935
- onChange = _a.onChange,
1936
- name = _a.name,
1937
- _b = _a.large,
1938
- large = _b === void 0 ? false : _b,
1939
- _c = _a.valid,
1940
- valid = _c === void 0 ? true : _c,
1941
- _d = _a.labelPosition,
1942
- labelPosition = _d === void 0 ? 'after' : _d,
1943
- required = _a.required,
1944
- _e = _a.disabled,
1945
- disabled = _e === void 0 ? false : _e,
1946
- _f = _a.indeterminate,
1947
- indeterminate = _f === void 0 ? false : _f,
1948
- children = _a.children,
1949
- className = _a.className,
1950
- props = __rest(_a, ["id", "checked", "onChange", "name", "large", "valid", "labelPosition", "required", "disabled", "indeterminate", "children", "className"]);
1951
-
1952
- var _g = React.useState(checked),
1953
- isChecked = _g[0],
1954
- setChecked = _g[1];
1955
-
1956
- var _h = React.useState(indeterminate),
1957
- isIndeterminate = _h[0],
1958
- setIndeterminate = _h[1];
1959
-
1960
- React.useEffect(function () {
1961
- setChecked(checked);
1962
- setIndeterminate(indeterminate);
1963
- }, [checked, indeterminate]);
1964
-
1965
- var handleChange = function handleChange() {
1966
- var newChecked = !isChecked;
1967
-
1968
- if (indeterminate) {
1969
- setIndeterminate(false);
1970
- }
1971
-
1972
- setChecked(newChecked);
1973
- onChange(newChecked);
1974
- };
1975
-
1976
- var containerClasses = classNames__default["default"]('fwe-checkbox-container', {
1977
- 'fr-checkbox-large': large
1978
- }, {
1979
- 'fr-checkbox-invalid': !valid || required
1980
- }, {
1981
- 'fwe-disabled': disabled
1982
- }, {
1983
- 'fwe-checked': isChecked
1984
- }, {
1985
- 'fwe-label-below': labelPosition === 'below'
1986
- }, {
1987
- 'fwe-label-before': labelPosition === 'before'
1988
- }, {
1989
- 'fr-checkbox-indeterminate': isIndeterminate
1990
- }, className);
1991
- return /*#__PURE__*/React__default["default"].createElement("label", {
1992
- className: containerClasses,
1993
- htmlFor: id
1994
- }, /*#__PURE__*/React__default["default"].createElement("input", __assign({
1995
- name: name,
1996
- type: "checkbox",
1997
- id: id,
1998
- disabled: disabled,
1999
- onChange: function onChange() {
2000
- return handleChange();
2001
- }
2002
- }, props)), /*#__PURE__*/React__default["default"].createElement("div", {
2003
- className: "fwe-checkbox-indicator-container"
2004
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2005
- className: "fwe-checkbox-indicator-background"
2006
- }), !isIndeterminate && isChecked && (large ? /*#__PURE__*/React__default["default"].createElement("svg", {
2007
- width: "24px",
2008
- height: "24px"
2009
- }, /*#__PURE__*/React__default["default"].createElement("path", {
2010
- d: "M17.5 7L10 14.5 7.501 12l-1.5 1.501L10 17.5l9-9z",
2011
- fill: "#fff"
2012
- })) : /*#__PURE__*/React__default["default"].createElement("svg", {
2013
- xmlns: "http://www.w3.org/2000/svg",
2014
- width: "16",
2015
- height: "16"
2016
- }, /*#__PURE__*/React__default["default"].createElement("path", {
2017
- d: "M6 12L3 9l1.25-1.25L6 9.5l5.75-5.75L13 5l-7 7z",
2018
- fill: "#fff"
2019
- }))), isIndeterminate && !isChecked && /*#__PURE__*/React__default["default"].createElement("div", {
2020
- className: "fwe-indeterminate-indicator"
2021
- })), /*#__PURE__*/React__default["default"].createElement("div", {
2022
- className: "fwe-checkbox-title"
2023
- }, children));
2024
- }
2025
-
2026
- var RadioGroupContext = /*#__PURE__*/React.createContext({});
2027
-
2028
- function RadioButton(_a) {
2029
- var id = _a.id,
2030
- _onChange = _a.onChange,
2031
- value = _a.value,
2032
- name = _a.name,
2033
- checked = _a.checked,
2034
- _b = _a.labelPosition,
2035
- labelPosition = _b === void 0 ? 'after' : _b,
2036
- _c = _a.large,
2037
- large = _c === void 0 ? false : _c,
2038
- _d = _a.disabled,
2039
- disabled = _d === void 0 ? false : _d,
2040
- _e = _a.required,
2041
- required = _e === void 0 ? false : _e,
2042
- children = _a.children,
2043
- className = _a.className;
2044
-
2045
- var _f = React.useContext(RadioGroupContext),
2046
- groupDisabled = _f.disabled,
2047
- groupLabelPosition = _f.labelPosition,
2048
- groupLarge = _f.large,
2049
- groupName = _f.name,
2050
- groupRequired = _f.required,
2051
- groupValue = _f.value;
2052
-
2053
- var innerLabelPosition = groupLabelPosition || labelPosition;
2054
- var classes = classNames__default["default"]('fwe-radio', {
2055
- 'fwe-radio-label-below': innerLabelPosition === 'below'
2056
- }, {
2057
- 'fwe-radio-label-before': innerLabelPosition === 'before'
2058
- }, {
2059
- 'fwe-radio-lg': large || groupLarge
2060
- }, className);
2061
- return /*#__PURE__*/React__default["default"].createElement("label", {
2062
- className: classes,
2063
- htmlFor: id
2064
- }, /*#__PURE__*/React__default["default"].createElement("input", {
2065
- checked: checked,
2066
- type: "radio",
2067
- id: id,
2068
- name: groupName || name,
2069
- value: value || groupValue,
2070
- onChange: function onChange() {
2071
- return _onChange(value);
2072
- },
2073
- disabled: disabled || groupDisabled,
2074
- required: required || groupRequired
2075
- }), /*#__PURE__*/React__default["default"].createElement("div", {
2076
- className: "fwe-radio-checkmark"
2077
- }), " ", /*#__PURE__*/React__default["default"].createElement("div", {
2078
- className: "fwe-radio-label-content"
2079
- }, children));
2080
- }
2081
-
2082
- var defaultConfig$1 = {
2083
- outline: true,
2084
- iconOnly: true
2085
- };
2086
- function Segment(props) {
2087
- var children = props.children,
2088
- legend = props.legend,
2089
- config = props.config,
2090
- onChange = props.onChange,
2091
- className = props.className;
2092
-
2093
- var innerConfig = __assign(__assign({}, defaultConfig$1), config);
2094
-
2095
- var useIcon = false;
2096
- var useIconAndText = false;
2097
- var tmpValue = '';
2098
- React__default["default"].Children.forEach(children, function (child, index) {
2099
- if (! /*#__PURE__*/React__default["default"].isValidElement(child)) {
2100
- return null;
2101
- }
2102
-
2103
- if (index === 0 && child.props.icon !== null) {
2104
- if (innerConfig.iconOnly) {
2105
- useIcon = true;
2106
- } else {
2107
- useIconAndText = true;
2108
- }
2109
- }
2110
-
2111
- if (child.props.checked) {
2112
- tmpValue = child.props.value;
2113
- }
2114
-
2115
- return null;
2116
- });
2117
-
2118
- var _a = React.useState(tmpValue),
2119
- value = _a[0],
2120
- setValue = _a[1];
2121
-
2122
- var handleChange = function handleChange(event, _value) {
2123
- if (onChange) {
2124
- onChange(event, _value);
2125
- }
2126
-
2127
- setValue(_value);
2128
- };
2129
-
2130
- return /*#__PURE__*/React__default["default"].createElement("fieldset", {
2131
- className: classNames__default["default"]('fwe-segment', {
2132
- 'fwe-segment-outline': innerConfig.outline,
2133
- 'fwe-segment-icon': useIcon,
2134
- 'fwe-segment-icon-text': useIconAndText
2135
- }, className)
2136
- }, /*#__PURE__*/React__default["default"].createElement("legend", null, legend), /*#__PURE__*/React__default["default"].createElement("div", {
2137
- className: "fwe-segment-group"
2138
- }, React__default["default"].Children.map(children, function (child) {
2139
- if (! /*#__PURE__*/React__default["default"].isValidElement(child)) {
2140
- return null;
2141
- }
2142
-
2143
- var id = (Math.random() * Date.now()).toString().replace('.', '-');
2144
- return /*#__PURE__*/React__default["default"].cloneElement(child, {
2145
- key: id,
2146
- id: id,
2147
- onChange: handleChange,
2148
- iconOnly: innerConfig.iconOnly,
2149
- checked: child.props.value === value
2150
- });
2151
- })));
2152
- }
2153
-
2154
- function SegmentControl(props) {
2155
- var label = props.label,
2156
- checked = props.checked,
2157
- disabled = props.disabled,
2158
- name = props.name,
2159
- value = props.value,
2160
- icon = props.icon,
2161
- onChange = props.onChange,
2162
- iconOnly = props.iconOnly,
2163
- _a = props.id,
2164
- id = _a === void 0 ? (Math.random() * Date.now()).toString().replace('.', '-') : _a,
2165
- className = props.className;
2166
- var viewMode = 'text';
2167
-
2168
- if (icon) {
2169
- viewMode = iconOnly ? 'icon' : 'icon-text';
2170
- }
2171
-
2172
- var handleChange = function handleChange(event) {
2173
- if (onChange) {
2174
- onChange(event, value);
2175
- }
2176
- };
2177
-
2178
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("input", {
2179
- className: "fwe-segment-input",
2180
- type: "radio",
2181
- id: id,
2182
- name: name,
2183
- value: value,
2184
- checked: checked,
2185
- disabled: disabled,
2186
- onChange: function onChange(e) {
2187
- return handleChange(e);
2188
- }
2189
- }), /*#__PURE__*/React__default["default"].createElement("label", {
2190
- className: classNames__default["default"]('fwe-segment-label', className),
2191
- htmlFor: id
2192
- }, viewMode === 'icon' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("span", {
2193
- className: "fwe-sr-only"
2194
- }, label), /*#__PURE__*/React__default["default"].createElement("i", {
2195
- "aria-hidden": "true",
2196
- className: classNames__default["default"]('fwe-icon', "fwe-icon-" + icon)
2197
- })), viewMode === 'text' && label, viewMode === 'icon-text' && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("i", {
2198
- "aria-hidden": "true",
2199
- className: classNames__default["default"]('fwe-icon', "fwe-icon-" + icon)
2200
- }), label)));
2201
- }
2202
-
2203
- var SelectOption = /*#__PURE__*/React.forwardRef(function (_a, ref) {
2204
- var children = _a.children,
2205
- className = _a.className,
2206
- props = __rest(_a, ["children", "className"]);
2207
-
2208
- return /*#__PURE__*/React__default["default"].createElement("span", __assign({
2209
- ref: ref,
2210
- className: className
2211
- }, props), children);
2212
- });
2213
-
2214
- function calcVirtualScrollHeight(config, itemLength) {
2215
- var defaultHeight = 48;
2216
- var height = defaultHeight;
2217
-
2218
- if (itemLength === 2) {
2219
- height = defaultHeight * 2;
2220
- } else if (itemLength >= 3) {
2221
- height = defaultHeight * 3;
2222
- }
2223
-
2224
- if (config.scroll.viewportSize != null && config.scroll.viewportSize !== undefined) {
2225
- if (itemLength >= config.scroll.viewportSize) {
2226
- height = config.scroll.viewportSize * defaultHeight;
2227
- } else if (itemLength < config.scroll.viewportSize) {
2228
- height = itemLength * defaultHeight;
2229
- }
2230
- }
2231
-
2232
- return height;
2233
- }
2234
-
2235
- var Select = /*#__PURE__*/React.forwardRef(function (_a, ref) {
2236
- var defaultValue = _a.defaultValue,
2237
- value = _a.value,
2238
- label = _a.label,
2239
- options = _a.options,
2240
- onChange = _a.onChange,
2241
- _b = _a.required,
2242
- required = _b === void 0 ? false : _b,
2243
- config = _a.config,
2244
- disabled = _a.disabled,
2245
- className = _a.className,
2246
- name = _a.name,
2247
- id = _a.id,
2248
- children = _a.children,
2249
- hint = _a.hint,
2250
- error = _a.error,
2251
- props = __rest(_a, ["defaultValue", "value", "label", "options", "onChange", "required", "config", "disabled", "className", "name", "id", "children", "hint", "error"]);
2252
-
2253
- var _c = React.useState({
2254
- isFocused: false,
2255
- action: ''
2256
- }),
2257
- optionsWrapper = _c[0],
2258
- setOptionsWrapper = _c[1];
2259
-
2260
- var controlled = value !== undefined;
2261
-
2262
- var _d = React.useState(controlled ? value : defaultValue),
2263
- innerValue = _d[0],
2264
- setInnerValue = _d[1];
2265
-
2266
- var buttonEl = React.useRef(null);
2267
- var childrenList = [];
2268
- React__default["default"].Children.forEach(children, function (element) {
2269
- if ( /*#__PURE__*/React__default["default"].isValidElement(element)) {
2270
- childrenList.push(__assign(__assign({}, element), {
2271
- props: __assign(__assign({}, element.props), {
2272
- className: 'fwe-select-option-content'
2273
- })
2274
- }));
2275
- }
2276
- });
2277
- var usedOptions = options !== null && options !== void 0 ? options : childrenList.map(function (child) {
2278
- return child.props.option;
2279
- });
2280
- var listItemRef = React.useRef(Array.from({
2281
- length: usedOptions.length
2282
- }, function () {
2283
- return /*#__PURE__*/React__default["default"].createRef();
2284
- }));
2285
- React.useEffect(function () {
2286
- if (controlled) {
2287
- setInnerValue(value);
2288
- }
2289
- }, [value, controlled]);
2290
- var getSelectedOptionLabel = React.useCallback(function () {
2291
- var _a;
2292
-
2293
- if (innerValue !== undefined) {
2294
- return (_a = usedOptions.find(function (option) {
2295
- return option.data === innerValue;
2296
- })) === null || _a === void 0 ? void 0 : _a.label;
2297
- }
2298
-
2299
- return undefined;
2300
- }, [usedOptions, innerValue]);
2301
- var scroll = config === null || config === void 0 ? void 0 : config.scroll;
2302
-
2303
- function handleButtonFocus(blur) {
2304
- if (buttonEl && buttonEl.current) {
2305
- if (blur) {
2306
- buttonEl.current.blur();
2307
- } else {
2308
- buttonEl.current.focus();
2309
- }
2310
- }
2311
- }
2312
-
2313
- var focusNextElement = function focusNextElement(nextIndex) {
2314
- if (listItemRef && listItemRef.current) {
2315
- var nextItem = listItemRef.current[nextIndex].current;
2316
-
2317
- if (nextItem !== null) {
2318
- nextItem.focus();
2319
- }
2320
- }
2321
- };
2322
-
2323
- React.useEffect(function () {
2324
- if (optionsWrapper.isFocused) {
2325
- if (optionsWrapper.action === 'key') {
2326
- var index = usedOptions.findIndex(function (option) {
2327
- return option.label === getSelectedOptionLabel();
2328
- });
2329
-
2330
- if (index >= 0) {
2331
- focusNextElement(index);
2332
- }
2333
- } else if (optionsWrapper.action === 'click') {
2334
- handleButtonFocus(true);
2335
- }
2336
- }
2337
- }, [optionsWrapper, usedOptions, innerValue, getSelectedOptionLabel]);
2338
-
2339
- var handleOptionChange = function handleOptionChange(newOption) {
2340
- if (!controlled) {
2341
- setInnerValue(newOption.data);
2342
- }
2343
-
2344
- if (onChange) {
2345
- onChange(newOption.data);
2346
- }
2347
-
2348
- setOptionsWrapper(function (prevOptionsWrapper) {
2349
- return __assign(__assign({}, prevOptionsWrapper), {
2350
- isFocused: false
2351
- });
2352
- });
2353
-
2354
- if (buttonEl && buttonEl.current) {
2355
- buttonEl.current.focus();
2356
- }
2357
- };
2358
-
2359
- var handleListKeyDown = function handleListKeyDown(event, option, index) {
2360
- var arrowKeys = ['ArrowDown', 'ArrowUp'];
2361
- var validKeys = ['Enter', ' '];
2362
-
2363
- if (arrowKeys.concat(validKeys).includes(event.key)) {
2364
- event.preventDefault();
2365
- }
2366
-
2367
- if (event.key === 'ArrowDown') {
2368
- focusNextElement((index + 1) % usedOptions.length);
2369
- }
2370
-
2371
- if (event.key === 'ArrowUp') {
2372
- event.preventDefault();
2373
- var nextIndex = (index - 1) % usedOptions.length;
2374
-
2375
- if (nextIndex < 0) {
2376
- nextIndex += usedOptions.length;
2377
- }
2378
-
2379
- focusNextElement(nextIndex);
2380
- }
2381
-
2382
- if (validKeys.includes(event.key)) {
2383
- handleOptionChange(option);
2384
- event.preventDefault();
2385
- }
2386
-
2387
- if (event.key === 'Escape') {
2388
- setOptionsWrapper(function (prevOptionsWrapper) {
2389
- return __assign(__assign({}, prevOptionsWrapper), {
2390
- isFocused: false
2391
- });
2392
- });
2393
- handleButtonFocus();
2394
- }
2395
- };
2396
-
2397
- var handleKeyPress = function handleKeyPress(event) {
2398
- var validKeys = ['Enter', ' ', 'ArrowUp', 'ArrowDown'];
2399
-
2400
- if (validKeys.includes(event.key)) {
2401
- event.preventDefault();
2402
-
2403
- if (!disabled) {
2404
- setOptionsWrapper(function (prevOptionsWrapper) {
2405
- return {
2406
- action: 'key',
2407
- isFocused: !prevOptionsWrapper.isFocused
2408
- };
2409
- });
2410
- }
2411
- }
2412
- };
2413
-
2414
- var handleClick = function handleClick(e) {
2415
- e.stopPropagation();
2416
-
2417
- if (!disabled) {
2418
- setOptionsWrapper(function (prevOptionsWrapper) {
2419
- return {
2420
- action: '',
2421
- isFocused: !prevOptionsWrapper.isFocused
2422
- };
2423
- });
2424
- }
2425
- };
2426
-
2427
- var selectedOptionLabel = getSelectedOptionLabel();
2428
- var selectClassName = classNames__default["default"]('fwe-select', {
2429
- 'fwe-focus': optionsWrapper.isFocused
2430
- }, {
2431
- 'fwe-empty': selectedOptionLabel === undefined && !optionsWrapper.isFocused
2432
- }, {
2433
- 'fwe-required': required
2434
- }, {
2435
- 'fwe-disabled': disabled
2436
- }, {
2437
- 'fwe-invalid': error
2438
- });
2439
-
2440
- function renderOptions() {
2441
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, options && options.map(function (option, i) {
2442
- return /*#__PURE__*/React__default["default"].createElement("li", {
2443
- ref: listItemRef.current[i],
2444
- role: "option",
2445
- "aria-selected": option.label === selectedOptionLabel,
2446
- key: option.data,
2447
- onClick: function onClick() {
2448
- return handleOptionChange(option);
2449
- },
2450
- className: classNames__default["default"]('fwe-select-option', {
2451
- 'fwe-empty': !option.label
2452
- }),
2453
- onKeyDown: function onKeyDown(e) {
2454
- return handleListKeyDown(e, option, i);
2455
- },
2456
- tabIndex: 0
2457
- }, /*#__PURE__*/React__default["default"].createElement("span", {
2458
- className: "fwe-select-option-content"
2459
- }, option.label));
2460
- }), childrenList.map(function (child, i) {
2461
- var _a = child.props,
2462
- option = _a.option,
2463
- propsWithoutOption = __rest(_a, ["option"]);
2464
-
2465
- return /*#__PURE__*/React__default["default"].createElement("li", {
2466
- ref: listItemRef.current[i],
2467
- role: "option",
2468
- "aria-selected": option.label === selectedOptionLabel,
2469
- key: option.data,
2470
- onClick: function onClick() {
2471
- return handleOptionChange(option);
2472
- },
2473
- className: classNames__default["default"]('fwe-select-option', {
2474
- 'fwe-empty': !option.label
2475
- }),
2476
- onKeyDown: function onKeyDown(e) {
2477
- return handleListKeyDown(e, option, i);
2478
- },
2479
- tabIndex: 0
2480
- }, /*#__PURE__*/React__default["default"].createElement(SelectOption, __assign({}, propsWithoutOption)));
2481
- }));
2482
- }
2483
-
2484
- return /*#__PURE__*/React__default["default"].createElement(OutsideClickHandler__default["default"], {
2485
- onOutsideClick: function onOutsideClick() {
2486
- return setOptionsWrapper({
2487
- action: '',
2488
- isFocused: false
2489
- });
2490
- }
2491
- }, /*#__PURE__*/React__default["default"].createElement("div", __assign({
2492
- ref: ref,
2493
- className: classNames__default["default"]('fwe-select-wrapper', className)
2494
- }, props), /*#__PURE__*/React__default["default"].createElement("select", {
2495
- defaultValue: defaultValue,
2496
- value: innerValue,
2497
- name: name,
2498
- id: id,
2499
- "aria-label": label,
2500
- disabled: disabled,
2501
- required: required
2502
- }, usedOptions.map(function (option) {
2503
- return /*#__PURE__*/React__default["default"].createElement("option", {
2504
- key: option.data,
2505
- value: option.data
2506
- }, option.label);
2507
- })), /*#__PURE__*/React__default["default"].createElement("div", {
2508
- role: "button",
2509
- tabIndex: 0,
2510
- className: selectClassName,
2511
- onClick: function onClick(e) {
2512
- return handleClick(e);
2513
- },
2514
- ref: buttonEl,
2515
- onKeyDown: handleKeyPress
2516
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2517
- className: "fwe-select-content"
2518
- }, selectedOptionLabel)), /*#__PURE__*/React__default["default"].createElement("label", {
2519
- className: classNames__default["default"]('fwe-select-label', {
2520
- 'fwe-sr-only': config === null || config === void 0 ? void 0 : config.hideLabel
2521
- }),
2522
- htmlFor: id
2523
- }, label || ''), /*#__PURE__*/React__default["default"].createElement("div", {
2524
- className: "fwe-select-underline"
2525
- }), hint && !error && /*#__PURE__*/React__default["default"].createElement("div", {
2526
- className: "fwe-select-description"
2527
- }, hint), error && /*#__PURE__*/React__default["default"].createElement("div", {
2528
- className: "fwe-select-invalid"
2529
- }, " ", error, " "), /*#__PURE__*/React__default["default"].createElement("ul", {
2530
- className: "fwe-select-options-container" + (optionsWrapper.isFocused ? '' : ' fwe-d-none')
2531
- }, (scroll === null || scroll === void 0 ? void 0 : scroll.enabled) ? /*#__PURE__*/React__default["default"].createElement("div", {
2532
- className: "fr-select-scroll",
2533
- style: {
2534
- height: calcVirtualScrollHeight(config, usedOptions.length)
2535
- }
2536
- }, renderOptions()) : renderOptions())));
2537
- });
2538
-
2539
- function Slider(_a) {
2540
- var _b = _a.disabled,
2541
- disabled = _b === void 0 ? false : _b,
2542
- label = _a.label,
2543
- _c = _a.large,
2544
- large = _c === void 0 ? false : _c,
2545
- max = _a.max,
2546
- min = _a.min,
2547
- onChange = _a.onChange,
2548
- onChangeCommitted = _a.onChangeCommitted,
2549
- step = _a.step,
2550
- value = _a.value,
2551
- _d = _a.showValue,
2552
- showValue = _d === void 0 ? true : _d,
2553
- className = _a.className;
2554
-
2555
- var _e = React.useState(value),
2556
- innerValue = _e[0],
2557
- setInnerValue = _e[1];
2558
-
2559
- var _f = React.useState(null),
2560
- left = _f[0],
2561
- setLeft = _f[1];
2562
-
2563
- var labelEl = React.useRef(null);
2564
- var classes = classNames__default["default"]('fwe-slider', {
2565
- 'fwe-slider-lg': large
2566
- }, {
2567
- 'fr-slider-label': label !== null && showValue
2568
- }, className);
2569
- React.useEffect(function () {
2570
- setInnerValue(value);
2571
- }, [value]);
2572
- var updateValuePosition = React.useCallback(function () {
2573
- if (labelEl.current) {
2574
- var width = labelEl.current.getBoundingClientRect().width;
2575
- var diff = max - min;
2576
- setLeft((innerValue - min) / diff * (width - 16));
2577
- }
2578
- }, [innerValue, max, min]);
2579
-
2580
- var handleAfterChange = function handleAfterChange() {
2581
- if (onChangeCommitted) {
2582
- onChangeCommitted(innerValue);
2583
- }
2584
- };
2585
-
2586
- var handleChange = function handleChange(e) {
2587
- var newValue = Number.parseFloat(e.target.value);
2588
- setInnerValue(newValue);
2589
-
2590
- if (onChange) {
2591
- onChange(e, newValue);
2592
- }
2593
- };
2594
-
2595
- React.useEffect(function () {
2596
- function handleResize() {
2597
- updateValuePosition();
2598
- }
2599
-
2600
- window.addEventListener('resize', handleResize);
2601
- handleResize(); // Remove event listener on cleanup
2602
-
2603
- return function () {
2604
- return window.removeEventListener('resize', handleResize);
2605
- };
2606
- }, [updateValuePosition]);
2607
- return /*#__PURE__*/React__default["default"].createElement("label", {
2608
- ref: labelEl,
2609
- className: classes
2610
- }, label && /*#__PURE__*/React__default["default"].createElement("span", null, label), /*#__PURE__*/React__default["default"].createElement("input", {
2611
- className: "fwe-slider-input",
2612
- type: "range",
2613
- disabled: disabled,
2614
- min: min,
2615
- max: max,
2616
- step: step,
2617
- onChange: handleChange,
2618
- value: innerValue,
2619
- onKeyUp: handleAfterChange,
2620
- onMouseUp: handleAfterChange,
2621
- onTouchEnd: handleAfterChange
2622
- }), showValue && left !== null && /*#__PURE__*/React__default["default"].createElement("span", {
2623
- className: "fr-slider-value",
2624
- style: {
2625
- left: left + "px"
2626
- }
2627
- }, innerValue));
2628
- }
2629
-
2630
- function Snackbar(props) {
2631
- var data = props.data,
2632
- onAction = props.onAction,
2633
- onClose = props.onClose,
2634
- _a = props.first,
2635
- first = _a === void 0 ? false : _a;
2636
-
2637
- var _b = React.useState(true),
2638
- show = _b[0],
2639
- setShow = _b[1];
2640
-
2641
- var nodeRef = React.useRef(null);
2642
- React.useEffect(function () {
2643
- var disappearAfter = 5000;
2644
-
2645
- if ((data === null || data === void 0 ? void 0 : data.disappearAfter) !== null) {
2646
- if ((data === null || data === void 0 ? void 0 : data.disappearAfter) && (data === null || data === void 0 ? void 0 : data.disappearAfter) > 0) {
2647
- disappearAfter = data === null || data === void 0 ? void 0 : data.disappearAfter;
2648
- }
2649
-
2650
- var timer_1 = setTimeout(function () {
2651
- return setShow(false);
2652
- }, disappearAfter);
2653
- return function () {
2654
- clearTimeout(timer_1);
2655
- };
2656
- }
2657
-
2658
- return undefined;
2659
- }, [data]);
2660
-
2661
- function handleClose() {
2662
- setShow(false);
2663
- }
2664
-
2665
- var classes = first ? 'fr-snackbar-wrapper--first' : 'fr-snackbar-wrapper';
2666
- return /*#__PURE__*/React__default["default"].createElement(reactTransitionGroup.CSSTransition, {
2667
- nodeRef: nodeRef,
2668
- onExited: function onExited() {
2669
- return onClose ? onClose() : undefined;
2670
- },
2671
- unmountOnExit: true,
2672
- timeout: {
2673
- exit: 600
2674
- },
2675
- "in": show,
2676
- classNames: classes,
2677
- appear: true
2678
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2679
- ref: nodeRef,
2680
- className: classes
2681
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2682
- className: classNames__default["default"]({
2683
- 'fwe-snackbar': true,
2684
- 'fwe-snackbar-b': (data === null || data === void 0 ? void 0 : data.variant) === 'b',
2685
- 'fwe-snackbar-c': (data === null || data === void 0 ? void 0 : data.variant) === 'c',
2686
- 'fwe-snackbar-warning': (data === null || data === void 0 ? void 0 : data.type) === 'warning',
2687
- 'fwe-snackbar-error': (data === null || data === void 0 ? void 0 : data.type) === 'error',
2688
- 'fwe-snackbar-shadow': data === null || data === void 0 ? void 0 : data.darkBackground
2689
- }, data === null || data === void 0 ? void 0 : data.className)
2690
- }, (data === null || data === void 0 ? void 0 : data.type) && /*#__PURE__*/React__default["default"].createElement("i", {
2691
- "aria-hidden": true,
2692
- className: classNames__default["default"]({
2693
- 'fwe-icon': true,
2694
- 'fwe-icon-status-info': (data === null || data === void 0 ? void 0 : data.type) === 'info',
2695
- 'fwe-icon-status-warning': (data === null || data === void 0 ? void 0 : data.type) === 'warning',
2696
- 'fwe-icon-status-failure': (data === null || data === void 0 ? void 0 : data.type) === 'error'
2697
- })
2698
- }), /*#__PURE__*/React__default["default"].createElement("span", null, data === null || data === void 0 ? void 0 : data.text), (data === null || data === void 0 ? void 0 : data.action) && /*#__PURE__*/React__default["default"].createElement("button", {
2699
- "aria-label": "UserAction",
2700
- type: "button",
2701
- className: "fwe-btn fwe-btn-link",
2702
- onClick: function onClick() {
2703
- return onAction ? onAction() : undefined;
2704
- }
2705
- }, data === null || data === void 0 ? void 0 : data.action), (data === null || data === void 0 ? void 0 : data.showClose) && /*#__PURE__*/React__default["default"].createElement("button", {
2706
- "aria-label": "Close",
2707
- type: "button",
2708
- className: "fwe-btn fwe-btn-link",
2709
- onClick: handleClose
2710
- }, /*#__PURE__*/React__default["default"].createElement("i", {
2711
- "aria-hidden": true,
2712
- className: "fwe-icon fwe-icon-close-small"
2713
- }), /*#__PURE__*/React__default["default"].createElement("span", {
2714
- className: "fwe-sr-only"
2715
- }, "Close")))));
2716
- }
2717
-
2718
- var SnackbarContext = /*#__PURE__*/React__default["default"].createContext({});
2719
-
2720
- function SnackbarProvider(props) {
2721
- var _a = props.config,
2722
- config = _a === void 0 ? {
2723
- darkBackground: true
2724
- } : _a,
2725
- children = props.children,
2726
- className = props.className;
2727
-
2728
- var _b = React.useState([]),
2729
- snacks = _b[0],
2730
- setSnacks = _b[1];
2731
-
2732
- function addSnackbar(snackData, onAction, onClose) {
2733
- setSnacks(function (prevSnacks) {
2734
- return __spreadArray([{
2735
- data: __assign(__assign({}, config), snackData),
2736
- onAction: onAction,
2737
- onClose: onClose,
2738
- key: new Date().getTime() + Math.random(),
2739
- first: prevSnacks.length === 0
2740
- }], prevSnacks);
2741
- });
2742
- }
2743
-
2744
- function closeSnackbar(key) {
2745
- if (key) {
2746
- setSnacks(function (prevSnacks) {
2747
- return prevSnacks.filter(function (snack) {
2748
- return snack.key !== key;
2749
- });
2750
- });
2751
- }
2752
- }
2753
-
2754
- function handleClose(snack) {
2755
- closeSnackbar(snack.key);
2756
-
2757
- if (snack.onClose) {
2758
- snack.onClose();
2759
- }
2760
- }
2761
-
2762
- var contextValue = {
2763
- addSnackbar: addSnackbar,
2764
- closeSnackbar: closeSnackbar
2765
- };
2766
- return /*#__PURE__*/React__default["default"].createElement(SnackbarContext.Provider, {
2767
- value: contextValue
2768
- }, children, /*#__PURE__*/React__default["default"].createElement("div", {
2769
- className: classNames__default["default"]('fwe-snackbar-container', className)
2770
- }, snacks.map(function (snack) {
2771
- return /*#__PURE__*/React__default["default"].createElement(Snackbar, {
2772
- key: snack.key,
2773
- data: snack.data,
2774
- onAction: function onAction() {
2775
- return snack.onAction ? snack.onAction() : undefined;
2776
- },
2777
- onClose: function onClose() {
2778
- return handleClose(snack);
2779
- },
2780
- first: snack.first
2781
- });
2782
- })));
2783
- }
2784
-
2785
- var useSnackbar = (function () {
2786
- return React.useContext(SnackbarContext);
2787
- });
2788
-
2789
- function Switch(_a) {
2790
- var _b;
2791
-
2792
- var _c = _a.labelPosition,
2793
- labelPosition = _c === void 0 ? 'before' : _c,
2794
- _d = _a.large,
2795
- large = _d === void 0 ? false : _d,
2796
- title = _a.title,
2797
- value = _a.value,
2798
- _e = _a.disabled,
2799
- disabled = _e === void 0 ? false : _e,
2800
- onChange = _a.onChange,
2801
- className = _a.className;
2802
- var labelClassName = classNames__default["default"]('fwe-switch', (_b = {}, _b["fwe-switch-label-" + labelPosition] = true, _b), {
2803
- 'fwe-switch-lg': large
2804
- }, className);
2805
-
2806
- var _f = React.useState(value),
2807
- currentValue = _f[0],
2808
- setCurrentValue = _f[1];
2809
-
2810
- React.useEffect(function () {
2811
- setCurrentValue(value);
2812
- }, [value]);
2813
-
2814
- var handleChange = function handleChange() {
2815
- var newValue = !currentValue;
2816
- setCurrentValue(newValue);
2817
-
2818
- if (onChange) {
2819
- onChange(newValue);
2820
- }
2821
- };
2822
-
2823
- return /*#__PURE__*/React__default["default"].createElement("label", {
2824
- className: labelClassName
2825
- }, /*#__PURE__*/React__default["default"].createElement("input", {
2826
- type: "checkbox",
2827
- disabled: disabled,
2828
- checked: currentValue,
2829
- onChange: function onChange() {
2830
- return handleChange();
2831
- }
2832
- }), /*#__PURE__*/React__default["default"].createElement("div", {
2833
- className: "fwe-switch-track"
2834
- }), /*#__PURE__*/React__default["default"].createElement("div", {
2835
- className: "fwe-switch-label-content"
2836
- }, title));
2837
- }
2838
-
2839
- var TableHeaderCell = /*#__PURE__*/React__default["default"].forwardRef(function (props, ref) {
2840
- function handleClick(event) {
2841
- if (props.onClick) {
2842
- props.onClick(event);
2843
- }
2844
- }
2845
-
2846
- return /*#__PURE__*/React__default["default"].createElement("th", __assign({}, props, {
2847
- className: classNames__default["default"]('fwe-table-order', {
2848
- 'fwe-active': props.active
2849
- }, {
2850
- 'fwe-table-order-descending': !props.ascending
2851
- }, props.className),
2852
- onClick: handleClick,
2853
- ref: ref
2854
- }));
2855
- });
2856
-
2857
- function TextArea(_a) {
2858
- var disabled = _a.disabled,
2859
- onBlur = _a.onBlur,
2860
- onChange = _a.onChange,
2861
- onFocus = _a.onFocus,
2862
- onInput = _a.onInput,
2863
- readonly = _a.readonly,
2864
- required = _a.required,
2865
- label = _a.label,
2866
- error = _a.error,
2867
- hint = _a.hint,
2868
- value = _a.value,
2869
- rows = _a.rows,
2870
- maxLength = _a.maxLength,
2871
- className = _a.className,
2872
- defaultValue = _a.defaultValue;
2873
- var controlled = value !== undefined;
2874
-
2875
- var _b = React.useState(controlled ? value : defaultValue),
2876
- innerValue = _b[0],
2877
- setInnerValue = _b[1];
2878
-
2879
- var hintClasses = classNames__default["default"]('fwe-input-text-info');
2880
- var shadowRef = React__default["default"].useRef(null);
2881
- var ref = React__default["default"].useRef(null);
2882
-
2883
- var _c = React.useState(null),
2884
- height = _c[0],
2885
- setHeight = _c[1];
2886
-
2887
- React.useEffect(function () {
2888
- if (controlled) {
2889
- setInnerValue(value);
2890
- }
2891
- }, [value, controlled]);
2892
- React.useEffect(function () {
2893
- var input = ref.current;
2894
- var shadow = shadowRef.current;
2895
- var minRows = 2;
2896
- shadow.value = input.value || 'x';
2897
- shadow.style.width = "" + input.clientWidth;
2898
- var newHeight = Math.max(minRows * 24, shadow.scrollHeight);
2899
- setHeight(newHeight + 4 + 4 + 1);
2900
- }, [innerValue]);
2901
-
2902
- function handleChange(event) {
2903
- if (!controlled) {
2904
- setInnerValue(event.target.value);
2905
- }
2906
-
2907
- if (onChange) {
2908
- onChange(event);
2909
- }
2910
- }
2911
-
2912
- return /*#__PURE__*/React__default["default"].createElement("label", {
2913
- className: classNames__default["default"]('fwe-input-text', className)
2914
- }, /*#__PURE__*/React__default["default"].createElement("textarea", {
2915
- style: __assign({}, !rows && {
2916
- height: height,
2917
- overflow: 'hidden'
2918
- }),
2919
- ref: ref,
2920
- className: classNames__default["default"]('fr-textarea', "fwe-row-" + rows),
2921
- disabled: disabled,
2922
- readOnly: readonly,
2923
- required: required,
2924
- autoComplete: "off",
2925
- onChange: handleChange,
2926
- onFocus: onFocus,
2927
- onInput: onInput,
2928
- onBlur: onBlur,
2929
- maxLength: maxLength,
2930
- defaultValue: innerValue,
2931
- value: innerValue
2932
- }), /*#__PURE__*/React__default["default"].createElement("textarea", {
2933
- style: {
2934
- visibility: 'hidden',
2935
- position: 'absolute',
2936
- overflow: 'hidden',
2937
- height: 0,
2938
- top: 0,
2939
- left: 0,
2940
- transform: 'translateZ(0)',
2941
- padding: '0'
2942
- },
2943
- ref: shadowRef,
2944
- readOnly: true
2945
- }), /*#__PURE__*/React__default["default"].createElement("span", {
2946
- className: "fwe-input-text-label"
2947
- }, label), hint && /*#__PURE__*/React__default["default"].createElement("span", {
2948
- className: hintClasses
2949
- }, hint), error !== undefined && /*#__PURE__*/React__default["default"].createElement("span", {
2950
- className: "fwe-input-text-invalid"
2951
- }, error), maxLength > 0 && /*#__PURE__*/React__default["default"].createElement("span", {
2952
- className: "fwe-input-text-count"
2953
- }, innerValue.length, " /", maxLength));
2954
- }
2955
-
2956
- function TextEditorButton(_a) {
2957
- var _b, _c;
2958
-
2959
- var disabled = _a.disabled,
2960
- label = _a.label,
2961
- type = _a.type,
2962
- className = _a.className,
2963
- icon = _a.icon,
2964
- list = _a.list,
2965
- value = _a.value,
2966
- noAction = _a.noAction,
2967
- category = _a.category;
2968
-
2969
- var _d = React.useState(false),
2970
- active = _d[0],
2971
- setActive = _d[1];
2972
-
2973
- var btnRef = React.useRef(null);
2974
-
2975
- function handleClick() {
2976
- var btn = btnRef.current;
2977
- setActive(function (prevActive) {
2978
- return !prevActive;
2979
- });
2980
- btn.click();
2981
- }
2982
-
2983
- React.useEffect(function () {
2984
- function callback(mutationRecords) {
2985
- mutationRecords.forEach(function (mutationRecord) {
2986
- var classList = mutationRecord.target.classList;
2987
- var oldValue = mutationRecord.oldValue;
2988
-
2989
- if (classList.contains('ql-active')) {
2990
- setActive(true);
2991
- }
2992
-
2993
- if (!classList.contains('ql-active') && oldValue.includes('ql-active')) {
2994
- setActive(false);
2995
- }
2996
- });
2997
- }
2998
-
2999
- if (btnRef.current && !noAction) {
3000
- var observer = new MutationObserver(callback);
3001
- observer.observe(btnRef.current, {
3002
- attributes: true,
3003
- attributeFilter: ['class'],
3004
- attributeOldValue: true
3005
- });
3006
- }
3007
- }, [btnRef, noAction]);
3008
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("button", {
3009
- ref: btnRef,
3010
- type: "button",
3011
- className: classNames__default["default"]((_b = {}, _b["ql-" + (category || type)] = !list, _b), {
3012
- 'ql-list': list
3013
- }, 'fwe-d-none', (_c = {}, _c["action-" + type] = !noAction, _c)),
3014
- "aria-hidden": "true",
3015
- value: value
3016
- }), /*#__PURE__*/React__default["default"].createElement("button", {
3017
- type: "button",
3018
- className: classNames__default["default"]('fwe-btn', {
3019
- 'fwe-btn-toolbar-list': list
3020
- }, 'fr-button', className, {
3021
- 'fwe-active': active && !noAction
3022
- }),
3023
- onClick: function onClick() {
3024
- return handleClick();
3025
- },
3026
- disabled: disabled
3027
- }, label && /*#__PURE__*/React__default["default"].createElement("div", {
3028
- className: "fr-button-text fwe-text-" + type
3029
- }, label), icon && /*#__PURE__*/React__default["default"].createElement("i", {
3030
- className: classNames__default["default"]('fwe-icon fwe-icon-toolbar-list', "fwe-icon-" + icon, 'fwe-pr-0')
3031
- })));
3032
- }
3033
-
3034
- var xss = require('xss');
3035
-
3036
- var defaultConfig = {
3037
- toolbar: {
3038
- bold: true,
3039
- italic: true,
3040
- underline: true,
3041
- alignCenter: true,
3042
- alignRight: true,
3043
- bulletList: true,
3044
- orderedList: true,
3045
- image: true,
3046
- link: true
3047
- }
3048
- };
3049
- function TextEditor(_a) {
3050
- var _b;
3051
-
3052
- var _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
3053
-
3054
- var _o = _a.disabled,
3055
- disabled = _o === void 0 ? false : _o,
3056
- label = _a.label,
3057
- maxLength = _a.maxLength,
3058
- value = _a.value,
3059
- hint = _a.hint,
3060
- error = _a.error,
3061
- _p = _a.readOnly,
3062
- readOnly = _p === void 0 ? false : _p,
3063
- onChange = _a.onChange,
3064
- className = _a.className,
3065
- configProps = _a.config;
3066
- var editorRef = React.useRef(null);
3067
-
3068
- var _q = React.useState(null),
3069
- editor = _q[0],
3070
- setEditor = _q[1];
3071
-
3072
- var id = React.useState((Math.random() * Date.now()).toString().replace('.', '-'))[0];
3073
-
3074
- var _r = React.useState(value),
3075
- innerValue = _r[0],
3076
- setInnerValue = _r[1];
3077
-
3078
- var config = {
3079
- toolbar: __assign(__assign({}, defaultConfig.toolbar), configProps === null || configProps === void 0 ? void 0 : configProps.toolbar)
3080
- };
3081
- React.useEffect(function () {
3082
- if (editorRef && editor === null) {
3083
- var newEditor = new Quill__default["default"](editorRef.current, {
3084
- modules: {
3085
- toolbar: "#editor-toolbar-" + id
3086
- },
3087
- theme: 'snow',
3088
- scrollingContainer: "#editor-container-" + id
3089
- });
3090
- newEditor.root.setAttribute('role', 'textbox');
3091
- newEditor.root.setAttribute('aria-labelledby', "editor-label-" + id);
3092
- newEditor.root.setAttribute('aria-multiline', 'true');
3093
- newEditor.enable(!readOnly);
3094
-
3095
- if (disabled) {
3096
- newEditor.disable();
3097
- } else if (!readOnly) {
3098
- newEditor.enable();
3099
- } // set up a matcher that does allow/disallow to paste images corresponding to config settings
3100
-
3101
-
3102
- newEditor.clipboard.addMatcher('img', function (_node, delta) {
3103
- // allowed, passthru delta
3104
- if (config.toolbar.image === true) {
3105
- return delta;
3106
- } // not allowed, remove image by setting up a new delta
3107
-
3108
-
3109
- var Delta = Quill__default["default"]["import"]('quill-delta');
3110
- return new Delta().insert('');
3111
- });
3112
- setEditor(newEditor);
3113
- }
3114
- }, [editorRef, editor, disabled, readOnly, className, id, config.toolbar.image]);
3115
- React.useEffect(function () {
3116
- if (editor) {
3117
- editor.on('text-change', function () {
3118
- var html = editor.root.innerHTML;
3119
-
3120
- if (html === '<p><br></p>' || html === '<div><br></div>' || html === undefined) {
3121
- html = null;
3122
- }
3123
-
3124
- if (onChange) {
3125
- onChange(html);
3126
- }
3127
-
3128
- setInnerValue(html);
3129
- });
3130
- }
3131
- }, [editor, onChange]);
3132
- React.useEffect(function () {
3133
- if (editor) {
3134
- var whiteList = __assign(__assign({}, xss.whiteList), {
3135
- a: __spreadArray(__spreadArray([], xss.whiteList.a), ['rel'])
3136
- });
3137
-
3138
- var sanitizedValue = xss(value, {
3139
- whiteList: whiteList
3140
- });
3141
- var content = editor.clipboard.convert(sanitizedValue);
3142
- editor.setContents(content, 'silent');
3143
- }
3144
- }, [editor, value]);
3145
-
3146
- function currentLength() {
3147
- return (innerValue === null || innerValue === void 0 ? void 0 : innerValue.length) || 0;
3148
- }
3149
-
3150
- function hideDivider(name) {
3151
- var linkOrImage = config.toolbar.image || config.toolbar.link;
3152
- var lists = config.toolbar.bulletList || config.toolbar.orderedList;
3153
- var typos = config.toolbar.bold || config.toolbar.italic || config.toolbar.underline;
3154
- var textAlign = config.toolbar.alignCenter || config.toolbar.alignRight;
3155
-
3156
- switch (name) {
3157
- case 'typo':
3158
- return !typos || !textAlign && !linkOrImage && !lists;
3159
-
3160
- case 'text-align':
3161
- return !textAlign || !linkOrImage && !lists;
3162
-
3163
- case 'lists':
3164
- return !lists || !linkOrImage;
3165
-
3166
- case 'image':
3167
- return !config.toolbar.image || !config.toolbar.link;
3168
- }
3169
-
3170
- return true;
3171
- }
3172
-
3173
- return /*#__PURE__*/React__default["default"].createElement("label", {
3174
- className: classNames__default["default"]('fwe-input-text', {
3175
- disabled: disabled
3176
- })
3177
- }, /*#__PURE__*/React__default["default"].createElement("div", {
3178
- className: classNames__default["default"]('fwe-editor-toolbar', (_b = {}, _b["fwe-editor-toolbar-" + className] = className, _b)),
3179
- id: "editor-toolbar-" + id
3180
- }, /*#__PURE__*/React__default["default"].createElement("span", {
3181
- className: "ql-formats fwe-d-none"
3182
- }, /*#__PURE__*/React__default["default"].createElement("select", {
3183
- className: "ql-size",
3184
- "aria-hidden": "true"
3185
- }, /*#__PURE__*/React__default["default"].createElement("option", {
3186
- value: "small",
3187
- "aria-label": "small"
3188
- }), /*#__PURE__*/React__default["default"].createElement("option", {
3189
- selected: true,
3190
- "aria-label": "selected"
3191
- }), /*#__PURE__*/React__default["default"].createElement("option", {
3192
- value: "large",
3193
- "aria-label": "large"
3194
- }), /*#__PURE__*/React__default["default"].createElement("option", {
3195
- value: "huge",
3196
- "aria-label": "huge"
3197
- }))), /*#__PURE__*/React__default["default"].createElement("span", {
3198
- className: "ql-formats fwe-mr-3"
3199
- }, ((_c = config === null || config === void 0 ? void 0 : config.toolbar) === null || _c === void 0 ? void 0 : _c.bold) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3200
- disabled: disabled,
3201
- type: "bold",
3202
- className: "fwe-mr-3",
3203
- label: "B"
3204
- }), ((_d = config === null || config === void 0 ? void 0 : config.toolbar) === null || _d === void 0 ? void 0 : _d.italic) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3205
- disabled: disabled,
3206
- type: "italic",
3207
- className: "fwe-mr-3",
3208
- label: "I"
3209
- }), ((_e = config === null || config === void 0 ? void 0 : config.toolbar) === null || _e === void 0 ? void 0 : _e.underline) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3210
- disabled: disabled,
3211
- type: "underline",
3212
- label: "U"
3213
- }), !hideDivider('typo') && /*#__PURE__*/React__default["default"].createElement("div", {
3214
- className: "fwe-divider-y fwe-d-inline-flex fwe-mx-4"
3215
- }), ((_f = config === null || config === void 0 ? void 0 : config.toolbar) === null || _f === void 0 ? void 0 : _f.alignCenter) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3216
- disabled: disabled,
3217
- category: "align",
3218
- type: "align-center",
3219
- icon: classNames__default["default"]('text-align-center', {
3220
- 'fwe-gray': disabled
3221
- }),
3222
- value: "center",
3223
- className: classNames__default["default"]('fwe-btn-toolbar-list fwe-btn-toolbar-list-alignments', {
3224
- 'fwe-mr-3': (_g = config === null || config === void 0 ? void 0 : config.toolbar) === null || _g === void 0 ? void 0 : _g.alignRight
3225
- })
3226
- }), ((_h = config === null || config === void 0 ? void 0 : config.toolbar) === null || _h === void 0 ? void 0 : _h.alignRight) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3227
- disabled: disabled,
3228
- category: "align",
3229
- type: "align-right",
3230
- icon: classNames__default["default"]('text-align-right', {
3231
- 'fwe-gray': disabled
3232
- }),
3233
- value: "right",
3234
- className: "fwe-btn-toolbar-list fwe-btn-toolbar-list-alignments"
3235
- }), !hideDivider('text-align') && /*#__PURE__*/React__default["default"].createElement("div", {
3236
- className: "fwe-divider-y fwe-d-inline-flex fwe-mx-4"
3237
- }), ((_j = config === null || config === void 0 ? void 0 : config.toolbar) === null || _j === void 0 ? void 0 : _j.bulletList) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3238
- disabled: disabled,
3239
- className: "fwe-mr-3",
3240
- type: "ul",
3241
- list: true,
3242
- icon: "list-list-view",
3243
- value: "bullet"
3244
- }), ((_k = config === null || config === void 0 ? void 0 : config.toolbar) === null || _k === void 0 ? void 0 : _k.orderedList) && /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3245
- disabled: disabled,
3246
- type: "ol",
3247
- list: true,
3248
- icon: "enumeration",
3249
- value: "ordered"
3250
- }), ((_l = config === null || config === void 0 ? void 0 : config.toolbar) === null || _l === void 0 ? void 0 : _l.image) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
3251
- className: "fwe-divider-y fwe-d-inline-flex fwe-mx-4"
3252
- }), /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3253
- disabled: disabled,
3254
- type: "image",
3255
- icon: "image-image",
3256
- noAction: true
3257
- })), ((_m = config === null || config === void 0 ? void 0 : config.toolbar) === null || _m === void 0 ? void 0 : _m.link) && /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
3258
- className: "fwe-divider-y fwe-d-inline-flex fwe-mx-4"
3259
- }), /*#__PURE__*/React__default["default"].createElement(TextEditorButton, {
3260
- disabled: disabled,
3261
- type: "link",
3262
- icon: "file-link",
3263
- noAction: true
3264
- })))), /*#__PURE__*/React__default["default"].createElement("div", {
3265
- className: classNames__default["default"]('fwe-editor-container', {
3266
- 'fwe-editor-container--error': error
3267
- }),
3268
- id: "editor-container-" + id
3269
- }, /*#__PURE__*/React__default["default"].createElement("div", {
3270
- className: "fwe-editor",
3271
- ref: editorRef
3272
- })), /*#__PURE__*/React__default["default"].createElement("span", {
3273
- className: "fwe-input-text-label",
3274
- id: "editor-label-" + id
3275
- }, label), error && /*#__PURE__*/React__default["default"].createElement("span", {
3276
- className: "fwe-text-editor-invalid"
3277
- }, error), hint && /*#__PURE__*/React__default["default"].createElement("span", {
3278
- className: "fwe-text-editor-info"
3279
- }, hint), maxLength && maxLength > 0 && value != null && /*#__PURE__*/React__default["default"].createElement("span", {
3280
- className: "fwe-input-text-count"
3281
- }, currentLength() + " / " + maxLength));
3282
- }
3283
-
3284
- var TextInput = function TextInput(_a) {
3285
- var disabled = _a.disabled,
3286
- required = _a.required,
3287
- readonly = _a.readonly,
3288
- placeholder = _a.placeholder,
3289
- max = _a.max,
3290
- min = _a.min,
3291
- onBlur = _a.onBlur,
3292
- onFocus = _a.onFocus,
3293
- onInput = _a.onInput,
3294
- step = _a.step,
3295
- type = _a.type,
3296
- value = _a.value,
3297
- error = _a.error,
3298
- hint = _a.hint,
3299
- label = _a.label,
3300
- labelClassName = _a.labelClassName,
3301
- props = __rest(_a, ["disabled", "required", "readonly", "placeholder", "max", "min", "onBlur", "onFocus", "onInput", "step", "type", "value", "error", "hint", "label", "labelClassName"]);
3302
-
3303
- var _b = React.useState(value),
3304
- innerValue = _b[0],
3305
- setInnerValue = _b[1];
3306
-
3307
- React.useEffect(function () {
3308
- setInnerValue(value);
3309
- }, [value]);
3310
- var supported = ['text', 'number', 'password', 'datetime-local'];
3311
- var innerType = type && supported.indexOf(type) !== -1 ? type : 'text';
3312
- var labelClasses = classNames__default["default"]('fwe-input-text', labelClassName);
3313
- var hintClasses = classNames__default["default"]('fwe-input-text-info');
3314
-
3315
- function handleChange(e) {
3316
- setInnerValue(e.target.value);
3317
-
3318
- if (props.onChange) {
3319
- props.onChange(e);
3320
- }
3321
- }
3322
-
3323
- return /*#__PURE__*/React__default["default"].createElement("label", {
3324
- className: labelClasses
3325
- }, /*#__PURE__*/React__default["default"].createElement("input", __assign({
3326
- disabled: disabled,
3327
- required: required,
3328
- readOnly: readonly,
3329
- placeholder: placeholder,
3330
- autoComplete: "off",
3331
- min: min,
3332
- max: max,
3333
- step: step,
3334
- onChange: handleChange,
3335
- onBlur: onBlur,
3336
- onFocus: onFocus,
3337
- onInput: onInput,
3338
- type: innerType,
3339
- value: innerValue
3340
- }, props)), /*#__PURE__*/React__default["default"].createElement("span", {
3341
- className: "fwe-input-text-label"
3342
- }, label), hint && /*#__PURE__*/React__default["default"].createElement("span", {
3343
- className: hintClasses
3344
- }, hint), error && /*#__PURE__*/React__default["default"].createElement("span", {
3345
- className: "fwe-input-text-invalid"
3346
- }, error));
3347
- };
3348
-
3349
- function Prompt(_a) {
3350
- var title = _a.title,
3351
- subtitle = _a.subtitle,
3352
- hint = _a.hint,
3353
- label = _a.label,
3354
- value = _a.value,
3355
- onChange = _a.onChange,
3356
- onOk = _a.onOk,
3357
- onCancel = _a.onCancel,
3358
- cancel = _a.cancel,
3359
- ok = _a.ok,
3360
- props = __rest(_a, ["title", "subtitle", "hint", "label", "value", "onChange", "onOk", "onCancel", "cancel", "ok"]);
3361
-
3362
- var _b = React.useState(value),
3363
- innerValue = _b[0],
3364
- setInnerValue = _b[1];
3365
-
3366
- React.useEffect(function () {
3367
- setInnerValue(value);
3368
- }, [value]);
3369
-
3370
- function handleChange(e) {
3371
- setInnerValue(e.target.value);
3372
-
3373
- if (onChange) {
3374
- onChange(e);
3375
- }
3376
- }
3377
-
3378
- return /*#__PURE__*/React__default["default"].createElement(Modal, __assign({
3379
- head: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, subtitle && /*#__PURE__*/React__default["default"].createElement("h2", {
3380
- className: "fwe-modal-h2"
3381
- }, subtitle), /*#__PURE__*/React__default["default"].createElement("h1", {
3382
- className: "fwe-modal-h1"
3383
- }, title)),
3384
- body: /*#__PURE__*/React__default["default"].createElement(TextInput, {
3385
- onChange: handleChange,
3386
- label: label,
3387
- hint: hint,
3388
- value: innerValue
3389
- })
3390
- }, props), (cancel || ok) && /*#__PURE__*/React__default["default"].createElement(ModalFooter, null, cancel && /*#__PURE__*/React__default["default"].createElement("button", {
3391
- type: "button",
3392
- "aria-label": "Cancel",
3393
- className: "fwe-btn",
3394
- onClick: onCancel
3395
- }, cancel), ok && /*#__PURE__*/React__default["default"].createElement("button", {
3396
- type: "button",
3397
- "aria-label": "Ok",
3398
- className: "fwe-btn fwe-btn-hero",
3399
- onClick: function onClick() {
3400
- return onOk(innerValue);
3401
- }
3402
- }, ok)));
3403
- }
3404
-
3405
- function PopoverMenu(_a) {
3406
- var icon = _a.icon,
3407
- menu = _a.menu,
3408
- className = _a.className,
3409
- props = __rest(_a, ["icon", "menu", "className"]);
3410
-
3411
- var _b = React.useState(false),
3412
- showPopper = _b[0],
3413
- setShowPopper = _b[1];
3414
-
3415
- var handleClick = function handleClick(item) {
3416
- if (item.action) {
3417
- item.action(item.data);
3418
- }
3419
-
3420
- setShowPopper(false);
3421
- };
3422
-
3423
- var content = /*#__PURE__*/React__default["default"].createElement("ul", {
3424
- className: "fwe-list-group"
3425
- }, menu.map(function (item) {
3426
- return /*#__PURE__*/React__default["default"].createElement("li", {
3427
- key: item.icon + item.text,
3428
- className: "fwe-list-group-item"
3429
- }, /*#__PURE__*/React__default["default"].createElement("button", {
3430
- type: "button",
3431
- className: "fwe-btn fwe-btn-link fwe-dark",
3432
- onClick: function onClick() {
3433
- return handleClick(item);
3434
- }
3435
- }, /*#__PURE__*/React__default["default"].createElement("i", {
3436
- className: "fwe-icon fwe-pr-0 " + item.icon
3437
- }), /*#__PURE__*/React__default["default"].createElement("span", null, item.text)));
3438
- }));
3439
- return /*#__PURE__*/React__default["default"].createElement("div", {
3440
- className: classNames__default["default"]('fwe-popover-menu', className)
3441
- }, /*#__PURE__*/React__default["default"].createElement(Popover, __assign({
3442
- popoverContent: content,
3443
- position: "right",
3444
- open: showPopper,
3445
- onStatusChange: setShowPopper
3446
- }, props), /*#__PURE__*/React__default["default"].createElement("button", {
3447
- type: "button",
3448
- className: "fwe-btn fwe-btn-link fwe-dark origin"
3449
- }, /*#__PURE__*/React__default["default"].createElement("i", {
3450
- className: "fwe-icon fwe-pr-0 " + icon
3451
- }))));
3452
- }
3453
-
3454
- function Tooltip(_a) {
3455
- var children = _a.children,
3456
- className = _a.className,
3457
- title = _a.title,
3458
- _b = _a.position,
3459
- position = _b === void 0 ? 'bottom' : _b;
3460
-
3461
- var _c = React.useState(false),
3462
- showPopper = _c[0],
3463
- setShowPopper = _c[1];
3464
-
3465
- var referenceElement = React.useRef(null);
3466
-
3467
- var _d = React.useState(null),
3468
- popperElement = _d[0],
3469
- setPopperElement = _d[1];
3470
-
3471
- var _e = React.useState(null),
3472
- arrowElement = _e[0],
3473
- setArrowElement = _e[1];
3474
-
3475
- var _f = reactPopper.usePopper(referenceElement.current, popperElement, {
3476
- placement: position,
3477
- modifiers: [{
3478
- name: 'arrow',
3479
- options: {
3480
- element: arrowElement
3481
- }
3482
- }, {
3483
- name: 'offset',
3484
- options: {
3485
- offset: [0, 24]
3486
- }
3487
- }, {
3488
- name: 'flip',
3489
- options: {
3490
- fallbackPlacements: ['right', 'left', 'top']
3491
- }
3492
- }]
3493
- }),
3494
- styles = _f.styles,
3495
- attributes = _f.attributes;
3496
-
3497
- return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement("div", {
3498
- className: classNames__default["default"]('fr-tooltip-container', className),
3499
- ref: referenceElement,
3500
- onMouseEnter: function onMouseEnter() {
3501
- return setShowPopper(true);
3502
- },
3503
- onMouseLeave: function onMouseLeave() {
3504
- return setShowPopper(false);
3505
- }
3506
- }, children), showPopper && /*#__PURE__*/React__default["default"].createElement("div", __assign({
3507
- className: "fwe-popover-container",
3508
- id: "tooltip",
3509
- ref: setPopperElement,
3510
- style: styles.popper
3511
- }, attributes.popper), /*#__PURE__*/React__default["default"].createElement("div", {
3512
- ref: setArrowElement,
3513
- style: styles.arrow,
3514
- id: "arrow"
3515
- }), /*#__PURE__*/React__default["default"].createElement("div", {
3516
- className: "fwe-popover"
3517
- }, title)));
3518
- }
3519
-
3520
- exports.AlertModal = AlertModal;
3521
- exports.Breadcrumb = Breadcrumb;
3522
- exports.Button = Button;
3523
- exports.Card = Card;
3524
- exports.CardBody = CardBody;
3525
- exports.CardHeader = CardHeader;
3526
- exports.CardNotification = CardNotification;
3527
- exports.Checkbox = Checkbox;
3528
- exports.Chip = Chip;
3529
- exports.ChipContainer = ChipContainer;
3530
- exports.ColorIndicator = ColorIndicator;
3531
- exports.ColorPicker = ColorPicker;
3532
- exports.ConfirmModal = ConfirmModal;
3533
- exports.DatePicker = DatePicker;
3534
- exports.DateRangePicker = DateRangePicker;
3535
- exports.LinkButton = LinkButton;
3536
- exports.LoadingIndicator = LoadingIndicator;
3537
- exports.Pagination = Pagination;
3538
- exports.Popover = Popover;
3539
- exports.PopoverMenu = PopoverMenu;
3540
- exports.Progress = Progress;
3541
- exports.Prompt = Prompt;
3542
- exports.RadioButton = RadioButton;
3543
- exports.RadioGroup = RadioButton;
3544
- exports.Segment = Segment;
3545
- exports.SegmentControl = SegmentControl;
3546
- exports.Select = Select;
3547
- exports.Slider = Slider;
3548
- exports.Snackbar = Snackbar;
3549
- exports.SnackbarProvider = SnackbarProvider;
3550
- exports.Switch = Switch;
3551
- exports.TabPane = TabPane;
3552
- exports.TableHeaderCell = TableHeaderCell;
3553
- exports.Tabs = Tabs;
3554
- exports.TextArea = TextArea;
3555
- exports.TextEditor = TextEditor;
3556
- exports.TextInput = TextInput;
3557
- exports.Tooltip = Tooltip;
3558
- exports.useSnackbar = useSnackbar;
3559
-
3560
- Object.defineProperty(exports, '__esModule', { value: true });
3561
-
3562
- }));