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