genesys-react-components 0.3.2 → 0.3.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +2 -0
- package/build/codefence/CodeFence.d.ts +22 -0
- package/build/index.d.ts +4 -3
- package/build/index.js +60 -32
- package/build/index.js.map +1 -1
- package/package.json +4 -5
- package/src/codefence/CodeFence.scss +100 -0
- package/src/codefence/CodeFence.tsx +68 -0
- package/src/index.ts +2 -0
package/LICENSE
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
MIT License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2023 Genesys Cloud Services, Inc.
|
|
4
4
|
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/README.md
CHANGED
|
@@ -84,6 +84,8 @@ npm run link
|
|
|
84
84
|
npm run start
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
+
Alternatively, run `npm run rebuildlibandstart` after `npm run link` to setup the localbuild of `genesys-react-components` and start the app
|
|
88
|
+
|
|
87
89
|
Run `npm run unlink` to revert to using the latest published version of the package.
|
|
88
90
|
|
|
89
91
|
#### Publishing the demo app
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import './CodeFence.scss';
|
|
3
|
+
declare global {
|
|
4
|
+
interface Window {
|
|
5
|
+
Prism: any;
|
|
6
|
+
}
|
|
7
|
+
}
|
|
8
|
+
interface IProps {
|
|
9
|
+
value: string | JSX.Element;
|
|
10
|
+
noCollapse?: boolean;
|
|
11
|
+
noHeader?: boolean;
|
|
12
|
+
autoCollapse?: boolean;
|
|
13
|
+
title?: string;
|
|
14
|
+
language?: string;
|
|
15
|
+
showLineNumbers?: boolean;
|
|
16
|
+
indentation?: string;
|
|
17
|
+
className?: string;
|
|
18
|
+
jsonEditor?: boolean;
|
|
19
|
+
innerRef?: any;
|
|
20
|
+
}
|
|
21
|
+
export default function CodeFence(props: IProps): JSX.Element;
|
|
22
|
+
export {};
|
package/build/index.d.ts
CHANGED
|
@@ -14,7 +14,8 @@ import AlertBlock from './alertblock/AlertBlock';
|
|
|
14
14
|
import LoadingPlaceholder from './loadingplaceholder/LoadingPlaceholder';
|
|
15
15
|
import Tooltip from './tooltip/Tooltip';
|
|
16
16
|
import CopyButton from './copybutton/CopyButton';
|
|
17
|
-
|
|
17
|
+
import CodeFence from './codefence/CodeFence';
|
|
18
|
+
export { DxAccordion, DxAccordionGroup, DxButton, DxItemGroup, DxCheckbox, DxLabel, DxTabbedContent, DxTabPanel, DxTextbox, DxToggle, Tooltip, CopyButton, LoadingPlaceholder, AlertBlock, CodeFence, };
|
|
18
19
|
export interface StringChangedCallback {
|
|
19
20
|
(value: string): void;
|
|
20
21
|
}
|
|
@@ -55,7 +56,7 @@ export interface DxToggleProps {
|
|
|
55
56
|
onChange?: BooleanChangedCallback;
|
|
56
57
|
className?: string;
|
|
57
58
|
}
|
|
58
|
-
export
|
|
59
|
+
export type DxTextboxType = 'text' | 'textarea' | 'password' | 'email' | 'date' | 'datetime-local' | 'time' | 'integer' | 'decimal';
|
|
59
60
|
export interface DxTextboxProps {
|
|
60
61
|
initialValue?: string;
|
|
61
62
|
value?: string;
|
|
@@ -96,7 +97,7 @@ export interface DxItemGroupProps {
|
|
|
96
97
|
onItemChanged?: ItemChangedCallback;
|
|
97
98
|
onItemsChanged?: ItemGroupChangedCallback;
|
|
98
99
|
}
|
|
99
|
-
export
|
|
100
|
+
export type DxItemGroupFormat = 'checkbox' | 'radio' | 'dropdown' | 'multiselect';
|
|
100
101
|
export interface DxTabbedContentProps {
|
|
101
102
|
children: React.ReactNode;
|
|
102
103
|
initialTabId?: number;
|
package/build/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';
|
|
2
2
|
import React, { useState, useEffect, useRef } from 'react';
|
|
3
3
|
import { v4 } from 'uuid';
|
|
4
|
+
import { PrismAsync } from 'react-syntax-highlighter';
|
|
5
|
+
import { vscDarkPlus } from 'react-syntax-highlighter/dist/esm/styles/prism/index.js';
|
|
4
6
|
|
|
5
7
|
function styleInject(css, ref) {
|
|
6
8
|
if ( ref === void 0 ) ref = {};
|
|
@@ -29,8 +31,8 @@ function styleInject(css, ref) {
|
|
|
29
31
|
}
|
|
30
32
|
}
|
|
31
33
|
|
|
32
|
-
var css_248z$
|
|
33
|
-
styleInject(css_248z$
|
|
34
|
+
var css_248z$h = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-accordion {\n margin: 0;\n}\n.dx-accordion .accordion-heading {\n border-width: 0 0 1px 0;\n border-style: solid;\n border-color: var(--theme-core-layout-border-color);\n font-style: normal;\n font-weight: bold;\n font-size: 14px;\n line-height: 14px;\n color: var(--theme-core-text-color);\n padding: 13px 20px;\n display: flex;\n flex-flow: row nowrap;\n justify-content: space-between;\n align-items: center;\n cursor: pointer;\n}\n.dx-accordion .accordion-heading .icon {\n line-height: 0;\n}\n.dx-accordion .accordion-heading__left {\n align-self: left;\n}\n.dx-accordion .accordion-content {\n color: var(--theme-core-text-color);\n padding: 13px 20px 20px 20px;\n border-bottom: 1px solid var(--theme-core-layout-border-color);\n}\n.dx-accordion .accordion-content > *:first-child {\n margin-top: 0;\n}\n.dx-accordion .accordion-content > *:last-child {\n margin-bottom: 0;\n}";
|
|
35
|
+
styleInject(css_248z$h);
|
|
34
36
|
|
|
35
37
|
function DxAccordion(props) {
|
|
36
38
|
const [isOpen, setIsOpen] = useState(props.showOpen || false);
|
|
@@ -71,15 +73,15 @@ function DxAccordion(props) {
|
|
|
71
73
|
isOpen ? React.createElement("div", { className: "accordion-content" }, props.children) : undefined));
|
|
72
74
|
}
|
|
73
75
|
|
|
74
|
-
var css_248z$
|
|
75
|
-
styleInject(css_248z$
|
|
76
|
+
var css_248z$g = ".dx-accordion-group {\n margin: 40px 0;\n}";
|
|
77
|
+
styleInject(css_248z$g);
|
|
76
78
|
|
|
77
79
|
function DxAccordionGroup(props) {
|
|
78
80
|
return React.createElement("div", { className: `dx-accordion-group${props.className ? ' ' + props.className : ''}` }, props.children);
|
|
79
81
|
}
|
|
80
82
|
|
|
81
|
-
var css_248z$
|
|
82
|
-
styleInject(css_248z$
|
|
83
|
+
var css_248z$f = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-button {\n margin: 15px 10px;\n border-radius: 2px;\n padding: 8px 15px;\n cursor: pointer;\n font-weight: 500;\n}\n.dx-button-primary {\n color: var(--theme-dxbutton-primary-text-color);\n border: 1px solid var(--theme-dxbutton-primary-background-color);\n background-color: var(--theme-dxbutton-primary-background-color);\n}\n.dx-button-primary:hover {\n background-color: var(--theme-dxbutton-primary-hover-background-color);\n border-color: var(--theme-dxbutton-primary-hover-background-color);\n transition: 0.1s;\n}\n.dx-button-primary:focus {\n background-color: var(--theme-dxbutton-primary-background-color);\n border-color: var(--theme-dxbutton-primary-background-color);\n box-shadow: 0 0 0 2px var(--theme-dxbutton-primary-shadow-color);\n transition: 0.1s;\n}\n.dx-button-primary:disabled {\n background-color: var(--theme-dxbutton-primary-disabled-background-color);\n border-color: var(--theme-dxbutton-primary-disabled-background-color);\n transition: 0.1s;\n cursor: not-allowed;\n}\n.dx-button-secondary {\n background-color: var(--theme-dxbutton-secondary-background-color);\n border: 1px solid var(--theme-dxbutton-secondary-border-color);\n color: var(--theme-dxbutton-secondary-border-color);\n}\n.dx-button-secondary:hover {\n color: var(--theme-dxbutton-secondary-hover-border-color);\n border-color: var(--theme-dxbutton-secondary-border-color);\n transition: 0.1s;\n}\n.dx-button-secondary:focus {\n color: var(--theme-dxbutton-secondary-border-color);\n border-color: var(--theme-dxbutton-secondary-border-color);\n box-shadow: 0 0 0 2px var(--theme-dxbutton-secondary-shadow-color);\n transition: 0.1s;\n}\n.dx-button-secondary:disabled {\n color: var(--theme-dxbutton-secondary-disabled-text-color);\n background-color: var(--theme-dxbutton-secondary-disabled-background-color);\n border-color: var(--theme-dxbutton-secondary-disabled-background-color);\n transition: 0.1s;\n cursor: not-allowed;\n}\n.dx-button-link {\n color: var(--theme-core-link-color);\n background: transparent;\n margin: 0;\n padding: 0 2px;\n border: 0;\n}\n.dx-button-link:hover {\n color: var(--theme-core-link-hover-color);\n border-color: var(--theme-dxbutton-secondary-border-color);\n}\n.dx-button-link:disabled {\n color: #8a9a9e;\n transition: 0.1s;\n cursor: not-allowed;\n text-decoration: line-through;\n}";
|
|
84
|
+
styleInject(css_248z$f);
|
|
83
85
|
|
|
84
86
|
function DxButton(props) {
|
|
85
87
|
let classNames = ['dx-button'];
|
|
@@ -96,21 +98,21 @@ function DxButton(props) {
|
|
|
96
98
|
return (React.createElement("button", { className: classNames.join(' '), type: "button", onClick: handleClick, disabled: props.disabled === true }, props.children));
|
|
97
99
|
}
|
|
98
100
|
|
|
99
|
-
var css_248z$
|
|
101
|
+
var css_248z$e = ".dx-item-group {\n display: block;\n border: 0;\n margin: 0;\n padding: 0;\n}";
|
|
102
|
+
styleInject(css_248z$e);
|
|
103
|
+
|
|
104
|
+
var css_248z$d = "";
|
|
100
105
|
styleInject(css_248z$d);
|
|
101
106
|
|
|
102
|
-
var css_248z$c = "";
|
|
107
|
+
var css_248z$c = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-select-group {\n appearance: none;\n position: relative;\n}\n.dx-select-group select {\n border: 1px solid var(--theme-core-control-border-color);\n border-radius: 2px;\n background-color: var(--theme-core-control-alt-background-color);\n font-style: normal;\n font-weight: 300;\n font-size: 12px;\n line-height: 14px;\n color: var(--theme-core-control-textbox-text-color);\n padding: 8px 32px 8px 12px;\n width: 100%;\n appearance: none;\n}\n.dx-select-group select:focus-visible {\n outline: 2px solid var(--theme-core-control-focus-color);\n}\n.dx-select-group::after {\n position: absolute;\n bottom: 12px;\n right: 12px;\n content: \"\\f105\";\n font-size: 8px;\n font-family: genesys-dev-icons !important;\n font-style: normal;\n font-weight: normal !important;\n font-feature-settings: normal;\n font-variant: normal;\n text-transform: none;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n pointer-events: none;\n}\n.dx-select-group.disabled::after {\n color: var(--theme-core-control-disabled-text-color);\n}\n.dx-select-group.disabled select:disabled {\n background-color: var(--theme-core-control-disabled-background-color);\n border-color: var(--theme-core-control-disabled-border-color);\n color: var(--theme-core-control-disabled-text-color);\n cursor: not-allowed;\n}";
|
|
103
108
|
styleInject(css_248z$c);
|
|
104
109
|
|
|
105
|
-
var css_248z$b = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-
|
|
110
|
+
var css_248z$b = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-multiselect-group {\n appearance: none;\n position: relative;\n}\n.dx-multiselect-group select {\n border: 1px solid var(--theme-core-control-border-color);\n border-radius: 2px;\n background-color: var(--theme-core-control-alt-background-color);\n font-style: normal;\n font-weight: 300;\n font-size: 12px;\n line-height: 14px;\n color: var(--theme-core-control-textbox-text-color);\n width: 100%;\n appearance: none;\n scrollbar-color: #b0b2b5 transparent;\n}\n.dx-multiselect-group select:focus-visible {\n outline: 2px solid var(--theme-core-control-focus-color);\n}\n.dx-multiselect-group select option {\n overflow: hidden;\n white-space: pre;\n text-overflow: ellipsis;\n -webkit-appearance: none;\n font-style: normal;\n font-weight: 300;\n font-size: 12px;\n line-height: 31px;\n padding: 8px 12px;\n color: var(--theme-core-control-textbox-text-color);\n}\n.dx-multiselect-group select option:checked {\n color: var(--theme-core-tag-text-color);\n background-color: var(--theme-core-tag-background-color);\n}\n.dx-multiselect-group select option:disabled {\n color: #8a9a9e;\n cursor: not-allowed;\n}\n.dx-multiselect-group select::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 7px;\n height: 7px;\n}\n.dx-multiselect-group select::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: #b0b2b5;\n}\n.dx-multiselect-group select::-webkit-scrollbar-corner {\n background: transparent;\n}\n.dx-multiselect-group.disabled select:disabled {\n background-color: var(--theme-core-control-disabled-background-color);\n border-color: var(--theme-core-control-disabled-border-color);\n cursor: not-allowed;\n}\n.dx-multiselect-group.disabled select:disabled option {\n color: var(--theme-core-control-disabled-text-color);\n}";
|
|
106
111
|
styleInject(css_248z$b);
|
|
107
112
|
|
|
108
|
-
var css_248z$a = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-
|
|
113
|
+
var css_248z$a = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-label {\n margin: 20px 0;\n display: block;\n}\n.dx-label .label-text,\n.dx-label .input-description {\n display: block;\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 14px;\n color: var(--theme-core-control-label-color);\n}\n.dx-label .label-text {\n margin: 0 0 4px 0;\n}\n.dx-label .input-description {\n padding: 6px 20px;\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n}\n.dx-label .input-description .icon {\n color: var(--theme-alertblock-info-icon-color);\n line-height: 0;\n}";
|
|
109
114
|
styleInject(css_248z$a);
|
|
110
115
|
|
|
111
|
-
var css_248z$9 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-label {\n margin: 20px 0;\n display: block;\n}\n.dx-label .label-text,\n.dx-label .input-description {\n display: block;\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-size: 12px;\n line-height: 14px;\n color: var(--theme-core-control-label-color);\n}\n.dx-label .label-text {\n margin: 0 0 4px 0;\n}\n.dx-label .input-description {\n padding: 6px 20px;\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n}\n.dx-label .input-description .icon {\n color: var(--theme-alertblock-info-icon-color);\n line-height: 0;\n}";
|
|
112
|
-
styleInject(css_248z$9);
|
|
113
|
-
|
|
114
116
|
function DxLabel(props) {
|
|
115
117
|
const hasLabel = props.label && props.label !== '';
|
|
116
118
|
const description = props.description ? (React.createElement("div", { className: 'input-description' },
|
|
@@ -128,8 +130,8 @@ function DxLabel(props) {
|
|
|
128
130
|
return React.createElement("label", { className: className }, contents);
|
|
129
131
|
}
|
|
130
132
|
|
|
131
|
-
var css_248z$
|
|
132
|
-
styleInject(css_248z$
|
|
133
|
+
var css_248z$9 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-checkbox {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n margin: 15px 0;\n}\n.dx-checkbox:first-of-type {\n margin-top: 0;\n}\n.dx-checkbox .label-text {\n font-family: Roboto;\n font-style: normal;\n font-weight: normal;\n font-size: 12px;\n line-height: 18px;\n color: var(--theme-core-text-color);\n}\n.dx-checkbox input[type=checkbox] {\n -webkit-appearance: none;\n appearance: none;\n margin: 0 8px 0 0;\n width: 16px;\n height: 16px;\n border: 1px solid var(--theme-core-control-border-color);\n border-radius: 2px;\n background-color: var(--theme-core-control-background-color);\n flex-shrink: 0;\n}\n.dx-checkbox input[type=checkbox]::before {\n display: none;\n}\n.dx-checkbox input[type=checkbox]:checked {\n background-color: var(--theme-core-control-background-color);\n}\n.dx-checkbox input[type=checkbox]:checked::before {\n display: block;\n position: relative;\n top: 7px;\n left: 3px;\n font-size: 9px;\n line-height: 0;\n color: var(--theme-core-control-punch-color);\n content: \"\\f104\";\n font-family: genesys-dev-icons !important;\n font-style: normal;\n font-weight: normal !important;\n font-feature-settings: normal;\n font-variant: normal;\n text-transform: none;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.dx-checkbox input[type=checkbox]:not(:disabled):hover {\n border-color: var(--theme-core-control-punch-color);\n}\n.dx-checkbox input[type=checkbox]:not(:disabled):focus {\n outline: var(--theme-core-control-focus-color) solid 2px;\n}\n.dx-checkbox input[type=checkbox]:not(:disabled):focus-visible {\n outline: 0;\n}\n.dx-checkbox input[type=radio] {\n -webkit-appearance: none;\n appearance: none;\n margin: 0 8px 0 0;\n width: 16px;\n height: 16px;\n border: 1px solid var(--theme-core-control-border-color);\n border-radius: 8px;\n background-color: var(--theme-core-control-background-color);\n flex-shrink: 0;\n}\n.dx-checkbox input[type=radio]::before {\n display: none;\n}\n.dx-checkbox input[type=radio]:checked::before {\n content: \"\";\n display: block;\n width: 10px;\n height: 10px;\n border-radius: 8px;\n position: relative;\n top: 2px;\n left: 2px;\n background-color: var(--theme-core-control-punch-color);\n}\n.dx-checkbox input[type=radio]:not(:disabled):hover {\n border-color: var(--theme-core-control-punch-color);\n}\n.dx-checkbox input[type=radio]:not(:disabled):focus {\n outline: var(--theme-core-control-focus-color) solid 2px;\n}\n.dx-checkbox input[type=radio]:not(:disabled):focus-visible {\n outline: 0;\n}\n.dx-checkbox.disabled {\n cursor: not-allowed;\n}\n.dx-checkbox.disabled input {\n border-color: var(--theme-core-control-disabled-border-color);\n cursor: not-allowed;\n}\n.dx-checkbox.disabled input:checked {\n background-color: var(--theme-core-control-disabled-background-color);\n cursor: not-allowed;\n}\n\n.dx-label .dx-checkbox .label-text {\n margin: 0;\n}";
|
|
134
|
+
styleInject(css_248z$9);
|
|
133
135
|
|
|
134
136
|
function DxCheckbox(props) {
|
|
135
137
|
let initialValue = props.checked !== undefined ? props.checked : props.initiallyChecked || false;
|
|
@@ -230,8 +232,8 @@ function DxItemGroup(props) {
|
|
|
230
232
|
}
|
|
231
233
|
}
|
|
232
234
|
|
|
233
|
-
var css_248z$
|
|
234
|
-
styleInject(css_248z$
|
|
235
|
+
var css_248z$8 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-tabbed-content {\n margin: 40px 0;\n}\n.dx-tabbed-content .tab-titles {\n border-bottom: 1px solid var(--theme-core-layout-border-color);\n font-weight: normal;\n font-size: 14px;\n line-height: 20px;\n}\n.dx-tabbed-content .tab-titles .tab-title {\n display: inline-block;\n padding: 5px 20px;\n border-bottom: 1px solid transparent;\n cursor: pointer;\n}\n.dx-tabbed-content .tab-titles .tab-title:hover {\n border-color: var(--theme-core-control-punch-color);\n}\n.dx-tabbed-content .tab-titles .tab-title.active {\n border-bottom-color: var(--theme-core-control-punch-color);\n font-weight: bold;\n}\n.dx-tabbed-content .tab-titles .tab-title p {\n margin: 0;\n display: inline;\n}\n.dx-tabbed-content .tab-content {\n padding: 13px 20px 20px 20px;\n border-bottom: 1px solid var(--theme-core-layout-border-color);\n}\n.dx-tabbed-content .tab-content > *:first-child {\n margin-top: 0;\n}\n.dx-tabbed-content .tab-content > *:last-child {\n margin-bottom: 0;\n}";
|
|
236
|
+
styleInject(css_248z$8);
|
|
235
237
|
|
|
236
238
|
function DxTabbedContent(props) {
|
|
237
239
|
const [activeTab, setActiveTab] = useState(props.initialTabId || 0);
|
|
@@ -247,15 +249,15 @@ function DxTabbedContent(props) {
|
|
|
247
249
|
React.createElement("div", { className: 'tab-content' }, React.Children.toArray(props.children)[activeTab])));
|
|
248
250
|
}
|
|
249
251
|
|
|
250
|
-
var css_248z$
|
|
251
|
-
styleInject(css_248z$
|
|
252
|
+
var css_248z$7 = "";
|
|
253
|
+
styleInject(css_248z$7);
|
|
252
254
|
|
|
253
255
|
function DxTabPanel(props) {
|
|
254
256
|
return React.createElement("div", { className: `dx-tab-panel${props.className ? ' ' + props.className : ''}` }, props.children);
|
|
255
257
|
}
|
|
256
258
|
|
|
257
|
-
var css_248z$
|
|
258
|
-
styleInject(css_248z$
|
|
259
|
+
var css_248z$6 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-textbox {\n display: flex;\n flex-flow: row nowrap;\n justify-content: space-between;\n align-items: center;\n gap: 10px;\n border: 1px solid var(--theme-core-control-border-color);\n border-radius: 2px;\n margin: 0;\n padding: 0 10px;\n height: 32px;\n background-color: var(--theme-core-control-alt-background-color);\n}\n.dx-textbox.with-label {\n margin-top: 0;\n}\n.dx-textbox:focus-within {\n outline: #aac9ff solid 2px;\n}\n.dx-textbox .icon {\n display: block;\n flex: none;\n color: var(--theme-core-control-textbox-text-color);\n}\n.dx-textbox .icon.input-icon {\n font-size: 14px;\n line-height: 0;\n}\n.dx-textbox .icon.clear-icon {\n font-size: 11px;\n line-height: 0;\n cursor: pointer;\n padding: 4px;\n margin-right: -4px;\n}\n.dx-textbox .dx-input {\n flex-grow: 1;\n border: 0;\n background: transparent;\n box-sizing: border-box;\n height: 32px;\n width: 100%;\n padding: 0;\n margin: 0;\n font-family: Roboto;\n font-style: normal;\n font-weight: normal;\n font-size: 14px;\n line-height: 16px;\n color: var(--theme-core-control-textbox-text-color);\n}\n.dx-textbox .dx-input:focus-visible {\n outline: 0;\n}\n.dx-textbox .dx-input::placeholder {\n font-style: normal;\n font-weight: 300;\n font-size: 14px;\n line-height: 16px;\n color: var(--theme-core-control-textbox-placeholder-text-color);\n}\n.dx-textbox.disabled {\n background-color: var(--theme-dxbutton-secondary-disabled-background-color);\n cursor: not-allowed;\n}\n.dx-textbox.disabled input {\n cursor: not-allowed;\n color: var(--theme-dxbutton-secondary-disabled-text-color);\n}\n.dx-textbox.disabled .icon,\n.dx-textbox.disabled input::placeholder {\n color: var(--theme-dxbutton-secondary-disabled-text-color);\n}\n\n.dx-textarea {\n padding: 10px;\n border: 1px solid var(--theme-core-control-border-color);\n border-radius: 2px;\n width: 100%;\n font-family: \"Roboto\", sans-serif;\n box-sizing: border-box;\n background-color: var(--theme-core-control-alt-background-color);\n color: var(--theme-core-control-textbox-text-color);\n}\n.dx-textarea:focus-within {\n outline: var(--theme-core-control-focus-color) solid 2px;\n}\n.dx-textarea::placeholder {\n font-family: \"Roboto\", sans-serif;\n font-style: normal;\n font-weight: 300;\n font-size: 14px;\n line-height: 16px;\n color: var(--theme-core-control-textbox-placeholder-text-color);\n}";
|
|
260
|
+
styleInject(css_248z$6);
|
|
259
261
|
|
|
260
262
|
function DxTextbox(props) {
|
|
261
263
|
const [debounceMs, setDebounceMs] = useState(props.changeDebounceMs || 300);
|
|
@@ -376,8 +378,8 @@ function DxTextbox(props) {
|
|
|
376
378
|
return (React.createElement(DxLabel, { label: props.label, description: props.description, className: props.className }, component));
|
|
377
379
|
}
|
|
378
380
|
|
|
379
|
-
var css_248z$
|
|
380
|
-
styleInject(css_248z$
|
|
381
|
+
var css_248z$5 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.dx-toggle-container {\n display: inline-block;\n}\n.dx-toggle-container .dx-toggle {\n border: 1px solid var(--theme-core-control-border-color);\n background: var(--theme-core-control-background-color);\n border-radius: 6px;\n height: 26px;\n padding: 0px 4px;\n display: flex;\n flex-flow: row nowrap;\n justify-content: space-between;\n align-items: center;\n gap: 2px;\n cursor: pointer;\n}\n.dx-toggle-container .dx-toggle:hover .slider {\n border-color: var(--theme-core-control-focus-color);\n}\n.dx-toggle-container .dx-toggle .icon {\n font-size: 10px;\n line-height: 0;\n margin: 0 5px;\n color: var(--theme-core-control-border-color);\n}\n.dx-toggle-container .dx-toggle .clear-placeholder {\n width: 19px;\n padding: 0 1px 0 0;\n margin: 0;\n display: block;\n}\n.dx-toggle-container .dx-toggle .slider {\n height: 22px;\n width: 22px;\n border-radius: 22px;\n background-color: var(--theme-core-control-punch-color);\n box-shadow: 0px 1px 2px var(--theme-core-box-shadow-color);\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid transparent;\n}\n.dx-toggle-container .dx-toggle .slider .icon {\n font-size: 10px;\n line-height: 0;\n color: var(--theme-core-control-background-color);\n padding: 0;\n margin: 0;\n}\n.dx-toggle-container.disabled .dx-toggle {\n cursor: not-allowed;\n opacity: 0.7;\n border-color: var(--theme-core-control-border-color);\n color: var(--theme-core-control-background-color);\n}\n.dx-toggle-container.disabled .dx-toggle:hover .slider {\n border-color: transparent;\n}\n.dx-toggle-container.disabled .dx-toggle .slider {\n opacity: 0.7;\n color: var(--theme-core-control-background-color);\n background-color: var(--theme-core-control-punch-color);\n}";
|
|
382
|
+
styleInject(css_248z$5);
|
|
381
383
|
|
|
382
384
|
function DxToggle(props) {
|
|
383
385
|
let initialValue = props.value !== undefined ? props.value : props.initialValue;
|
|
@@ -421,8 +423,8 @@ function DxToggle(props) {
|
|
|
421
423
|
value !== true ? React.createElement(GenesysDevIcon, { icon: trueIcon }) : undefined))));
|
|
422
424
|
}
|
|
423
425
|
|
|
424
|
-
var css_248z$
|
|
425
|
-
styleInject(css_248z$
|
|
426
|
+
var css_248z$4 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.alert-container {\n margin: 40px 0;\n padding: 0;\n}\n.toc-link + .alert-container {\n margin-top: 0;\n}\n.alert-container .alert {\n display: flex;\n flex-flow: row nowrap;\n gap: 20px;\n background-color: var(--theme-alertblock-default-background-color);\n border: 1px solid var(--theme-alertblock-default-border-color);\n color: var(--theme-alertblock-default-text-color);\n border-radius: 4px;\n padding: 15px 20px;\n font-size: 14px;\n line-height: 14px;\n}\n.alert-container .alert .clickable {\n cursor: pointer;\n}\n.alert-container .alert .info-icon {\n display: inline-block;\n font-size: 16px;\n line-height: 0;\n margin-top: 2px;\n color: var(--theme-alertblock-default-icon-color);\n}\n.alert-container .alert .alert-content {\n flex-grow: 1;\n font-size: 14px;\n line-height: 20px;\n margin: 0;\n}\n.alert-container .alert .alert-content .alert-title {\n font-size: 14px;\n line-height: 20px;\n font-weight: bold;\n margin-bottom: 6px;\n}\n.alert-container .alert .alert-content .alert-title.collapsed {\n margin-bottom: 0;\n}\n.alert-container .alert p:last-of-type {\n margin-bottom: 0;\n}\n.alert-container .alert.alert-info {\n color: var(--theme-alertblock-info-text-color);\n background-color: var(--theme-alertblock-info-background-color);\n border-color: var(--theme-alertblock-info-border-color);\n}\n.alert-container .alert.alert-info .icon {\n color: var(--theme-alertblock-info-icon-color);\n}\n.alert-container .alert.alert-warning {\n color: var(--theme-alertblock-warning-text-color);\n background-color: var(--theme-alertblock-warning-background-color);\n border-color: var(--theme-alertblock-warning-border-color);\n}\n.alert-container .alert.alert-warning .icon {\n color: var(--theme-alertblock-warning-icon-color);\n}\n.alert-container .alert.alert-critical {\n color: var(--theme-alertblock-critical-text-color);\n background-color: var(--theme-alertblock-critical-background-color);\n border-color: var(--theme-alertblock-critical-border-color);\n}\n.alert-container .alert.alert-critical .icon {\n color: var(--theme-alertblock-critical-icon-color);\n}\n.alert-container .alert.alert-success {\n color: var(--theme-alertblock-success-text-color);\n background-color: var(--theme-alertblock-success-background-color);\n border-color: var(--theme-alertblock-success-border-color);\n}\n.alert-container .alert.alert-success .icon {\n color: var(--theme-alertblock-success-icon-color);\n}\n.alert-container .alert.alert-toast {\n color: var(--theme-alertblock-toast-text-color);\n background-color: var(--theme-alertblock-toast-background-color);\n border-color: var(--theme-alertblock-toast-border-color);\n}\n.alert-container .alert.alert-toast .icon {\n color: var(--theme-alertblock-toast-icon-color);\n}";
|
|
427
|
+
styleInject(css_248z$4);
|
|
426
428
|
|
|
427
429
|
function AlertBlock(props) {
|
|
428
430
|
const isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false;
|
|
@@ -464,8 +466,8 @@ function AlertBlock(props) {
|
|
|
464
466
|
React.createElement(GenesysDevIcon, { icon: isCollapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp }))) : undefined)));
|
|
465
467
|
}
|
|
466
468
|
|
|
467
|
-
var css_248z$
|
|
468
|
-
styleInject(css_248z$
|
|
469
|
+
var css_248z$3 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.loading-placeholder {\n position: relative;\n width: 160px;\n height: 160px;\n margin: 60px auto;\n}\n.loading-placeholder .text {\n display: flex;\n flex-flow: row nowrap;\n align-items: center;\n justify-content: center;\n text-align: center;\n width: 100%;\n height: 100%;\n font-style: normal;\n font-weight: 300;\n font-size: 16px;\n line-height: 20px;\n color: var(--theme-loadingplaceholder-text-color);\n position: relative;\n top: 5px;\n left: 5px;\n opacity: 0.5;\n}\n.loading-placeholder div {\n position: absolute;\n border: 4px solid var(--theme-loadingplaceholder-wave-color);\n opacity: 1;\n border-radius: 50%;\n animation: loading-placeholder 1s cubic-bezier(0, 0.2, 0.8, 1) infinite;\n}\n.loading-placeholder div:nth-child(2) {\n animation-delay: -0.5s;\n}\n@keyframes loading-placeholder {\n 0% {\n top: 80px;\n left: 80px;\n width: 0;\n height: 0;\n opacity: 1;\n }\n 100% {\n top: 0px;\n left: 0px;\n width: 160px;\n height: 160px;\n opacity: 0;\n }\n}";
|
|
470
|
+
styleInject(css_248z$3);
|
|
469
471
|
|
|
470
472
|
// SimCity loading messages! https://gist.github.com/erikcox/7e96d031d00d7ecb1a2f
|
|
471
473
|
const MESSAGES = [
|
|
@@ -566,8 +568,8 @@ function LoadingPlaceholder(props) {
|
|
|
566
568
|
React.createElement("div", null)));
|
|
567
569
|
}
|
|
568
570
|
|
|
569
|
-
var css_248z$
|
|
570
|
-
styleInject(css_248z$
|
|
571
|
+
var css_248z$2 = "/* Custom properties */\n:root {\n --tooltip-text-color: white;\n --tooltip-background-color: black;\n --tooltip-margin: 10px;\n --tooltip-arrow-size: 6px;\n}\n\n/* Wrapping */\n.tooltip-container {\n display: inline-block;\n position: relative;\n line-height: 0;\n /* Absolute positioning */\n}\n.tooltip-container .tooltip-tip {\n position: absolute;\n border-radius: 4px;\n left: 50%;\n transform: translateX(-50%);\n padding: 6px;\n color: var(--tooltip-text-color);\n background: var(--tooltip-background-color);\n font-size: 14px;\n line-height: 1;\n z-index: 10000;\n max-width: 300px;\n width: max-content;\n opacity: 0;\n visibility: hidden;\n transition: visibility 1.1s ease-out, opacity 1s ease-out;\n /* CSS border triangles */\n /* Absolute positioning */\n /* Absolute positioning */\n /* Absolute positioning */\n /* Absolute positioning */\n}\n.tooltip-container .tooltip-tip.visible {\n opacity: 1;\n visibility: visible;\n transition: visibility 0s, opacity 0.1s ease-in;\n}\n.tooltip-container .tooltip-tip::before {\n content: \" \";\n left: 50%;\n border: solid transparent;\n height: 0;\n width: 0;\n position: absolute;\n pointer-events: none;\n border-width: var(--tooltip-arrow-size);\n margin-left: calc(var(--tooltip-arrow-size) * -1);\n}\n.tooltip-container .tooltip-tip.top {\n bottom: 130%;\n /* CSS border triangles */\n}\n.tooltip-container .tooltip-tip.top::before {\n top: 100%;\n border-top-color: var(--tooltip-background-color);\n}\n.tooltip-container .tooltip-tip.right {\n left: calc(100% + var(--tooltip-margin));\n top: 50%;\n transform: translateX(0) translateY(-50%);\n /* CSS border triangles */\n}\n.tooltip-container .tooltip-tip.right::before {\n left: calc(var(--tooltip-arrow-size) * -1);\n top: 50%;\n transform: translateX(0) translateY(-50%);\n border-right-color: var(--tooltip-background-color);\n}\n.tooltip-container .tooltip-tip.bottom {\n top: 110%;\n /* CSS border triangles */\n}\n.tooltip-container .tooltip-tip.bottom::before {\n bottom: 100%;\n border-bottom-color: var(--tooltip-background-color);\n}\n.tooltip-container .tooltip-tip.left {\n left: auto;\n right: calc(100% + var(--tooltip-margin));\n top: 50%;\n transform: translateX(0) translateY(-50%);\n /* CSS border triangles */\n}\n.tooltip-container .tooltip-tip.left::before {\n left: auto;\n right: calc(var(--tooltip-arrow-size) * -2);\n top: 50%;\n transform: translateX(0) translateY(-50%);\n border-left-color: var(--tooltip-background-color);\n}";
|
|
572
|
+
styleInject(css_248z$2);
|
|
571
573
|
|
|
572
574
|
// Inspired by https://paladini.dev/posts/how-to-make-an-extremely-reusable-tooltip-component-with-react--and-nothing-else/
|
|
573
575
|
function Tooltip(props) {
|
|
@@ -601,8 +603,8 @@ function Tooltip(props) {
|
|
|
601
603
|
React.createElement("div", { className: `tooltip-tip ${props.position || 'top'}${isShowing ? ' visible' : ''}` }, props.text)));
|
|
602
604
|
}
|
|
603
605
|
|
|
604
|
-
var css_248z = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.copy-button {\n cursor: pointer;\n border: 0;\n background: transparent;\n color: var(--theme-core-text-color);\n}";
|
|
605
|
-
styleInject(css_248z);
|
|
606
|
+
var css_248z$1 = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.copy-button {\n cursor: pointer;\n border: 0;\n background: transparent;\n color: var(--theme-core-text-color);\n}";
|
|
607
|
+
styleInject(css_248z$1);
|
|
606
608
|
|
|
607
609
|
function CopyButton(props) {
|
|
608
610
|
let [copyState, setCopyState] = useState(false);
|
|
@@ -627,5 +629,31 @@ function CopyButton(props) {
|
|
|
627
629
|
React.createElement(GenesysDevIcon, { icon: GenesysDevIcons.AppCopy })))));
|
|
628
630
|
}
|
|
629
631
|
|
|
630
|
-
|
|
632
|
+
var css_248z = "/*** \n * Core colors\n ***/\n/*** \n\t* Component-specific properties \n\t***/\n/*** \n\t* Theme definitions\n\t***/\n.fence {\n border-radius: 0;\n margin: 40px 0;\n position: relative;\n}\n.fence.json-editor-fence {\n margin: 1rem 0 0 0;\n height: 80%;\n width: 100%;\n overflow: hidden;\n}\n.fence .fence-header {\n background-color: var(--theme-codefence-header-background-color);\n color: var(--theme-codefence-header-text-color);\n font-size: 14px;\n border-radius: 4px 4px 0px 0px;\n border-bottom: 1px solid var(--theme-codefence-border-color);\n margin: 0;\n padding: 5px 16px;\n min-height: 24px;\n display: flex;\n flex-direction: row-reverse;\n flex-wrap: nowrap;\n justify-content: space-between;\n align-items: center;\n gap: 16px;\n}\n.fence .fence-header.clickable {\n cursor: pointer;\n}\n.fence .fence-header > * {\n flex-grow: 0;\n flex-shrink: 0;\n}\n.fence .fence-header .copy-button {\n font-size: 14px;\n padding: 0;\n color: var(--theme-codefence-header-text-color);\n}\n.fence .fence-header .fence-title {\n flex-grow: 1;\n}\n.fence .fence-header .icon {\n line-height: 0;\n}\n.fence .fence-body {\n padding: 0;\n overflow: auto;\n border-radius: 0 0 4px 4px;\n}\n.fence .fence-body.json-editor-body {\n height: 100%;\n line-height: 21px;\n}\n.fence .fence-body.collapsed {\n max-height: 15px;\n}\n.fence .fence-body.collapsed pre {\n padding-top: 3px;\n}\n.fence .fence-body pre {\n display: block;\n margin: 0 !important;\n padding: 0 !important;\n border-radius: 0 0 4px 4px;\n background: var(--theme-codefence-background-color) !important;\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n}\n.fence .fence-body pre.json-editor-pre {\n height: 100%;\n width: 100%;\n box-sizing: border-box;\n}\n.fence .fence-body pre code {\n background-color: transparent;\n max-height: 600px;\n color: white;\n}\n.fence .fence-body pre code .linenumber {\n min-width: 26px !important;\n}";
|
|
633
|
+
styleInject(css_248z);
|
|
634
|
+
|
|
635
|
+
function CodeFence(props) {
|
|
636
|
+
const [collapsed, setCollapsed] = useState(props.noCollapse ? false : props.autoCollapse || false);
|
|
637
|
+
const bodyClassNames = ['fence-body'];
|
|
638
|
+
if (props.jsonEditor)
|
|
639
|
+
bodyClassNames.push('json-editor-body');
|
|
640
|
+
const classNames = ['fence'];
|
|
641
|
+
if (props.className)
|
|
642
|
+
classNames.push(props.className);
|
|
643
|
+
if (props.noCollapse)
|
|
644
|
+
classNames.push('nocollapse');
|
|
645
|
+
if (props.indentation)
|
|
646
|
+
classNames.push(`indent-${props.indentation}`);
|
|
647
|
+
if (props.jsonEditor)
|
|
648
|
+
classNames.push('json-editor-fence');
|
|
649
|
+
return (React.createElement("div", { className: classNames.join(' ') },
|
|
650
|
+
props.noHeader || typeof props.value !== 'string' ? ('') : (React.createElement("div", { className: `fence-header${props.noCollapse ? '' : ' clickable'}`, onClick: () => setCollapsed(props.noCollapse ? false : !collapsed) },
|
|
651
|
+
props.noCollapse ? undefined : (React.createElement(GenesysDevIcon, { icon: collapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp })),
|
|
652
|
+
React.createElement(CopyButton, { copyText: props.value }),
|
|
653
|
+
React.createElement("span", { className: "fence-title" }, props.title))),
|
|
654
|
+
collapsed ? undefined : (React.createElement("div", { ref: props.innerRef || undefined, className: bodyClassNames.join(' ') },
|
|
655
|
+
React.createElement(PrismAsync, { language: props.language, style: vscDarkPlus, showLineNumbers: props.showLineNumbers }, props.value)))));
|
|
656
|
+
}
|
|
657
|
+
|
|
658
|
+
export { AlertBlock, CodeFence, CopyButton, DxAccordion, DxAccordionGroup, DxButton, DxCheckbox, DxItemGroup, DxLabel, DxTabPanel, DxTabbedContent, DxTextbox, DxToggle, LoadingPlaceholder, Tooltip };
|
|
631
659
|
//# sourceMappingURL=index.js.map
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/dxaccordion/DxAccordion.tsx","../src/dxaccordion/DxAccordionGroup.tsx","../src/dxbutton/DxButton.tsx","../src/dxlabel/DxLabel.tsx","../src/dxitemgroup/DxCheckbox.tsx","../src/dxitemgroup/DxItemGroup.tsx","../src/dxtabbedcontent/DxTabbedContent.tsx","../src/dxtabbedcontent/DxTabPanel.tsx","../src/dxtextbox/DxTextbox.tsx","../src/dxtoggle/DxToggle.tsx","../src/alertblock/AlertBlock.tsx","../src/loadingplaceholder/LoadingPlaceholder.tsx","../src/tooltip/Tooltip.tsx","../src/copybutton/CopyButton.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport { DxAccordionProps } from '..';\n\nimport './DxAccordion.scss';\n\nexport default function DxAccordion(props: DxAccordionProps) {\n\tconst [isOpen, setIsOpen] = useState(props.showOpen || false);\n\tconst [expandTrigger, setExpandTrigger] = useState(props.expandTrigger);\n\tconst [showOpenTrigger, setShowOpenTrigger] = useState(props.showOpenTrigger);\n\n\t// This one forcibly opens the component\n\tReact.useEffect(() => {\n\t\tif (props.expandTrigger !== expandTrigger) {\n\t\t\tsetIsOpen(true);\n\t\t\tsetExpandTrigger(props.expandTrigger);\n\t\t}\n\t}, [props.expandTrigger, expandTrigger]);\n\n\t// This one forcibly recalculates the state based on the value for props.showOpen\n\tReact.useEffect(() => {\n\t\tif (props.showOpenTrigger !== showOpenTrigger) {\n\t\t\tsetIsOpen(props.showOpen);\n\t\t\tsetShowOpenTrigger(props.showOpenTrigger);\n\t\t}\n\t}, [props.showOpenTrigger, showOpenTrigger, props.showOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (props.showOpen === true || props.showOpen === false) setIsOpen(props.showOpen);\n\t}, [props.showOpen]);\n\n\tlet style = {} as React.CSSProperties;\n\tif (props.headingColor) style.color = props.headingColor;\n\n\tlet icon;\n\tif (props.headingIcon) icon = <GenesysDevIcon icon={props.headingIcon} className=\"heading-icon\" />;\n\n\treturn (\n\t\t<div id={props.containerId || undefined} className={`dx-accordion${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"accordion-heading\" style={style} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t<span className=\"accordion-heading__left\">\n\t\t\t\t\t{icon} {props.title}\n\t\t\t\t</span>{' '}\n\t\t\t\t<GenesysDevIcon icon={isOpen ? GenesysDevIcons.AppChevronUp : GenesysDevIcons.AppChevronDown} />\n\t\t\t</div>\n\t\t\t{isOpen ? <div className=\"accordion-content\">{props.children}</div> : undefined}\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './DxAccordionGroup.scss';\n\ninterface IProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport default function DxAccordionGroup(props: IProps) {\n\treturn <div className={`dx-accordion-group${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import React from 'react';\nimport { VoidEventCallback } from '..';\n\nimport './DxButton.scss';\n\ninterface IProps {\n\ttype?: 'primary' | 'secondary' | 'link';\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\tonClick?: VoidEventCallback;\n}\n\nexport default function DxButton(props: IProps) {\n\tlet classNames = ['dx-button'];\n\tclassNames.push(`dx-button-${props.type || 'primary'}`);\n\tif (props.className) classNames.push(props.className);\n\n\tconst handleClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n\t\tif (!props.onClick) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tprops.onClick();\n\t};\n\n\treturn (\n\t\t<button className={classNames.join(' ')} type=\"button\" onClick={handleClick} disabled={props.disabled === true}>\n\t\t\t{props.children}\n\t\t</button>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React from 'react';\n\nimport './DxLabel.scss';\n\ninterface IProps {\n\tlabel?: string;\n\tdescription?: string;\n\tuseFieldset?: boolean;\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\nexport default function DxLabel(props: IProps) {\n\tconst hasLabel = props.label && props.label !== '';\n\n\tconst description = props.description ? (\n\t\t<div className='input-description'>\n\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppInfoSolid} />\n\t\t\t<span>{props.description}</span>\n\t\t</div>\n\t) : undefined;\n\n\tconst contents = (\n\t\t<React.Fragment>\n\t\t\t{' '}\n\t\t\t{hasLabel ? <span className='label-text'>{props.label}</span> : undefined}\n\t\t\t{props.children}\n\t\t\t{description}\n\t\t</React.Fragment>\n\t);\n\n\tconst className = `dx-label${props.className ? ' ' + props.className : ''}`;\n\n\tif (props.useFieldset) {\n\t\treturn <fieldset className={className}>{contents}</fieldset>;\n\t}\n\treturn <label className={className}>{contents}</label>;\n}\n","import React, { useEffect, useState } from 'react';\nimport { CheckedChangedCallback } from '..';\n\nimport './DxCheckbox.scss';\n\ninterface IProps {\n\tlabel: string;\n\titemValue: string;\n\tdescription?: string;\n\tchecked?: boolean;\n\tinitiallyChecked?: boolean;\n\tname?: string;\n\tclassName?: string;\n\tonCheckChanged?: CheckedChangedCallback;\n\tuseRadioType?: boolean;\n\tdisabled?: boolean;\n}\n\nexport default function DxCheckbox(props: IProps) {\n\tlet initialValue: boolean = props.checked !== undefined ? props.checked : props.initiallyChecked || false;\n\n\tconst [checked, setChecked] = useState<boolean>(initialValue);\n\n\tuseEffect(() => {\n\t\tif (props.checked === undefined || props.checked === checked) return;\n\t\tsetChecked(props.checked);\n\t}, [props.checked]);\n\n\tuseEffect(() => {\n\t\tif (props.onCheckChanged) props.onCheckChanged(checked);\n\t}, [checked]);\n\n\treturn (\n\t\t<label className={`dx-checkbox${props.className ? ' ' + props.className : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t<input\n\t\t\t\ttype={props.useRadioType ? 'radio' : 'checkbox'}\n\t\t\t\tname={props.name}\n\t\t\t\tvalue={props.itemValue}\n\t\t\t\tchecked={checked}\n\t\t\t\tonChange={(e) => setChecked(e.target.checked)}\n\t\t\t\tdisabled={props.disabled === true}\n\t\t\t/>\n\t\t\t<span className='label-text'>{props.label}</span>\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { DxItemGroupItem, DxItemGroupItemValue, DxItemGroupProps, ItemChangedCallback, ItemGroupChangedCallback } from '..';\n\nimport './DxItemGroup.scss';\nimport './radiobutton.scss';\nimport './dropdown.scss';\nimport './multiselect.scss';\nimport DxLabel from '../dxlabel/DxLabel';\nimport DxCheckbox from './DxCheckbox';\n\nexport default function DxItemGroup(props: DxItemGroupProps) {\n\tconst [data, setData] = useState<DxItemGroupItemValue[]>(\n\t\tprops.items.map((item) => {\n\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t})\n\t);\n\tconst [id] = useState(uuid());\n\tconst [title, setTitle] = useState(props.title);\n\tconst [description, setDescription] = useState(props.description);\n\tconst [format, setFormat] = useState(props.format);\n\tconst [disabled, setDisabled] = useState(props.disabled);\n\tconst [className, setClassName] = useState(props.className);\n\n\t// data changed\n\tuseEffect(() => {\n\t\tif (props.onItemsChanged) props.onItemsChanged(data);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [data]);\n\n\t// Recalculate on props changed\n\tuseEffect(() => {\n\t\tsetTitle(props.title);\n\t\tsetDescription(props.description);\n\t\tsetFormat(props.format);\n\t\tsetDisabled(props.disabled);\n\t\tsetClassName(props.className);\n\t}, [props.title, props.description, props.format, props.items, props.disabled, props.className]);\n\n\tuseEffect(() => {\n\t\tsetData(\n\t\t\tprops.items.map((item) => {\n\t\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t\t})\n\t\t);\n\t}, [props.items]);\n\t// Handle individual item changed\n\tconst itemChanged = (idx: number, item: DxItemGroupItem, checked: boolean) => {\n\t\tif (props.onItemChanged) props.onItemChanged(item, checked);\n\t\tlet newData = [...data];\n\t\t// Unselect everything if it's radio buttons\n\t\tif (format === 'radio') newData.forEach((value) => (value.isSelected = false));\n\t\t// Set the selected state of the new item\n\t\tnewData[idx].isSelected = checked;\n\t\tsetData(newData);\n\t};\n\n\tconst selectChanged = (e: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst options = e.target.options;\n\t\tlet newData = [...data];\n\t\t// Assign selected value for each item in the list\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\tconst thisItem = newData.find((value) => value.item.value === options[i].value);\n\t\t\tthisItem.isSelected = options[i].selected;\n\t\t}\n\t\t// Update entire data list\n\t\tsetData(newData);\n\t\t// Trigger individual update\n\t\tconst changedItemIdx = newData.findIndex((value) => value.item.value === e.target.value);\n\t\tif (changedItemIdx >= 0) itemChanged(changedItemIdx, newData[changedItemIdx].item, newData[changedItemIdx].isSelected);\n\t};\n\n\tswitch (format) {\n\t\tcase 'multiselect':\n\t\tcase 'dropdown': {\n\t\t\tconst isMulti = format === 'multiselect';\n\t\t\treturn (\n\t\t\t\t<DxLabel label={title} description={description} className={className}>\n\t\t\t\t\t<div className={`dx-item-group${isMulti ? ' dx-multiselect-group' : ' dx-select-group'}${disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tmultiple={isMulti}\n\t\t\t\t\t\t\tdisabled={disabled === true}\n\t\t\t\t\t\t\tonChange={(e) => selectChanged(e)}\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tisMulti\n\t\t\t\t\t\t\t\t\t? data.filter((item) => item.isSelected)?.map((item) => item.item.value)\n\t\t\t\t\t\t\t\t\t: data.find((item) => item.isSelected)?.item.value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t\t<option key={i} value={d.item.value} disabled={d.item.disabled}>\n\t\t\t\t\t\t\t\t\t{d.item.label}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\tdefault: {\n\t\t\treturn (\n\t\t\t\t<DxLabel\n\t\t\t\t\tlabel={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\tclassName={`dx-item-group${disabled ? ' disabled' : ''}${className ? ' ' + className : ''}`}\n\t\t\t\t\tuseFieldset={true}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLDivElement>) => {\n\t\t\t\t\t\t\tconst i = data.findIndex((d) => d.item.value === (e.target as any)?.value);\n\t\t\t\t\t\t\tif (i < 0) return;\n\t\t\t\t\t\t\titemChanged(i, data[i].item, (e.target as any)?.checked);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t<DxCheckbox\n\t\t\t\t\t\t\t\tkey={d.item.value}\n\t\t\t\t\t\t\t\tname={format === 'checkbox' ? `${id}-${d.item.value}` : id}\n\t\t\t\t\t\t\t\tlabel={d.item.label}\n\t\t\t\t\t\t\t\titemValue={d.item.value}\n\t\t\t\t\t\t\t\tchecked={d.isSelected}\n\t\t\t\t\t\t\t\tuseRadioType={format === 'radio'}\n\t\t\t\t\t\t\t\tdisabled={disabled || d.item.disabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t}\n}\n","import React, { useState } from 'react';\nimport { DxTabbedContentProps } from '..';\n\nimport './DxTabbedContent.scss';\n\nexport default function DxTabbedContent(props: DxTabbedContentProps) {\n\tconst [activeTab, setActiveTab] = useState(props.initialTabId || 0);\n\tconst [titles] = useState<React.ReactNode[]>(\n\t\t// Scrape titles from child elements\n\t\tReact.Children.toArray(props.children).map((child: any) => {\n\t\t\tif (!child || !child.props || !child.props.title) return 'Unknown title';\n\t\t\treturn child.props.title;\n\t\t})\n\t);\n\n\treturn (\n\t\t<div className={`dx-tabbed-content${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className='tab-titles'>\n\t\t\t\t{titles.map((title, i) => (\n\t\t\t\t\t<span key={i} className={`tab-title${i === activeTab ? ' active' : ''}`} onClick={() => setActiveTab(i)}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='tab-content'>{React.Children.toArray(props.children)[activeTab]}</div>\n\t\t</div>\n\t);\n}\n","import React from 'react';\nimport { DxTabPanelProps } from '..';\n\nimport './DxTabPanel.scss';\n\nexport default function DxTabPanel(props: DxTabPanelProps) {\n\treturn <div className={`dx-tab-panel${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useEffect, useRef, useState } from 'react';\nimport DxLabel from '../dxlabel/DxLabel';\nimport { DxTextboxProps } from '..';\n\nimport './DxTextbox.scss';\n\nexport default function DxTextbox(props: DxTextboxProps) {\n\tconst [debounceMs, setDebounceMs] = useState(props.changeDebounceMs || 300);\n\tconst [value, setValue] = useState(props.initialValue || props.value || '');\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [escapePressed, setEscapePressed] = useState(Date.now());\n\tconst [step, setStep] = useState<string | number | undefined>(undefined);\n\tlet [timer, setTimer] = useState(undefined as unknown as ReturnType<typeof setTimeout>);\n\n\t// Constructor\n\tuseEffect(() => {\n\t\t// Register global key bindings\n\t\tdocument.addEventListener('keydown', globalKeyBindings, false);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', globalKeyBindings, false);\n\t\t};\n\t}, []);\n\n\t// Value prop updated\n\tuseEffect(() => {\n\t\t// Ignore value changed if initial value was set; they're mutually exclusive\n\t\tif (!props.initialValue) {\n\t\t\tsetValue(props.value || '');\n\t\t}\n\t}, [props.value]);\n\n\t// Escape pressed\n\tuseEffect(() => {\n\t\tif (!isFocused || props.clearOnEscape === false) return;\n\t\tsetValue('');\n\t\tinputRef.current?.blur();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [escapePressed]);\n\n\t// Value changed\n\tuseEffect(() => {\n\t\tif (props.inputType === 'decimal') {\n\t\t\t// Normalize step setting\n\t\t\tif (!isNaN(parseFloat(value))) {\n\t\t\t\tconst match = /\\.(.+)/.exec(value);\n\t\t\t\tconsole.log(match);\n\t\t\t\tif (match) {\n\t\t\t\t\tconst s = `0.${Array.apply(null, Array(match[1].length - 1))\n\t\t\t\t\t\t.map(() => '0')\n\t\t\t\t\t\t.join('')}1`;\n\t\t\t\t\tconsole.log(s);\n\t\t\t\t\tsetStep(s);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (props.inputType === 'integer') {\n\t\t\t// Overwrite value as integer to forcibly truncate floating point numbers\n\t\t\tsetValue(parseInt(value).toString());\n\t\t}\n\n\t\t// Debounce onChange notification\n\t\tif (!props.onChange) return;\n\t\tclearTimeout(timer);\n\t\tsetTimer(setTimeout(() => (props.onChange ? props.onChange(value) : undefined), debounceMs));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\t// Update state from props\n\tuseEffect(() => {\n\t\tsetDebounceMs(props.changeDebounceMs || 300);\n\t}, [props.changeDebounceMs]);\n\n\t// Normalize inputRef\n\tlet inputRef; // = useRef<HTMLInputElement>(null);\n\tif (props.inputRef) inputRef = props.inputRef;\n\telse if (props.inputType === 'textarea') inputRef = useRef<HTMLTextAreaElement>(null);\n\telse inputRef = useRef<HTMLInputElement>(null);\n\n\tconst hasLabel = props.label && props.label !== '';\n\n\t// Global key bindings\n\tfunction globalKeyBindings(event: KeyboardEvent) {\n\t\t// Escape - cancel search\n\t\tif (event.key === 'Escape') {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tsetEscapePressed(Date.now());\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Normalize input type\n\tlet inputType: React.HTMLInputTypeAttribute | undefined = props.inputType;\n\tif (inputType === 'integer' || inputType === 'decimal') inputType = 'number';\n\n\tlet component;\n\tswitch (inputType) {\n\t\tcase 'textarea': {\n\t\t\tcomponent = (\n\t\t\t\t<textarea\n\t\t\t\t\tclassName=\"dx-textarea\"\n\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\tsetIsFocused(true);\n\t\t\t\t\t\tif (props.onFocus) props.onFocus();\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\tsetIsFocused(false);\n\t\t\t\t\t\tif (props.onBlur) props.onBlur();\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={props.disabled === true}\n\t\t\t\t\tautoFocus={props.autoFocus}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\t\t// TODO: special handling for other inputType values\n\t\tdefault: {\n\t\t\tcomponent = (\n\t\t\t\t<div className={`dx-textbox${hasLabel ? ' with-label' : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t{props.icon ? <GenesysDevIcon icon={props.icon} className=\"input-icon\" /> : undefined}\n\t\t\t\t\t<input\n\t\t\t\t\t\tclassName=\"dx-input\"\n\t\t\t\t\t\ttype={inputType}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\t\tsetIsFocused(true);\n\t\t\t\t\t\t\tif (props.onFocus) props.onFocus();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\t\tsetIsFocused(false);\n\t\t\t\t\t\t\tif (props.onBlur) props.onBlur();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdisabled={props.disabled === true}\n\t\t\t\t\t\tautoFocus={props.autoFocus}\n\t\t\t\t\t/>\n\t\t\t\t\t{props.clearButton && (value || isFocused) && !props.disabled ? (\n\t\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppTimes} className=\"clear-icon\" onClick={() => setValue('')} />\n\t\t\t\t\t) : undefined}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\t// Render\n\treturn (\n\t\t<DxLabel label={props.label} description={props.description} className={props.className}>\n\t\t\t{component}\n\t\t</DxLabel>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport { BooleanChangedCallback, DxToggleProps } from '..';\n\nimport './DxToggle.scss';\nimport DxLabel from '../dxlabel/DxLabel';\n\nexport default function DxToggle(props: DxToggleProps) {\n\tlet initialValue: boolean | undefined = props.value !== undefined ? props.value : props.initialValue;\n\tif (!props.isTriState) initialValue = initialValue || false;\n\n\tconst [value, setValue] = useState<boolean | undefined>(initialValue);\n\n\tconst trueIcon = props.trueIcon || GenesysDevIcons.AppCheck;\n\tconst falseIcon = props.falseIcon || GenesysDevIcons.AppTimes;\n\n\tuseEffect(() => {\n\t\tif (props.initialValue || props.value === value || (!props.isTriState && props.value === undefined)) return;\n\t\tsetValue(props.value);\n\t}, [props.value]);\n\n\tuseEffect(() => {\n\t\tif (props.onChange) props.onChange(value);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\tconst toggleValue = () => {\n\t\tif (props.disabled) return;\n\t\tif (props.isTriState) {\n\t\t\tif (value === undefined) setValue(true);\n\t\t\telse if (value === true) setValue(false);\n\t\t\telse setValue(undefined);\n\t\t} else {\n\t\t\tsetValue(!value);\n\t\t}\n\t};\n\n\treturn (\n\t\t<DxLabel label={props.label} description={props.description} className={props.className}>\n\t\t\t<div className={`dx-toggle-container${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t<div className='dx-toggle' onClick={toggleValue}>\n\t\t\t\t\t{value !== false ? <GenesysDevIcon icon={falseIcon} /> : undefined}\n\t\t\t\t\t{value === true && props.isTriState ? <div className='clear-placeholder'> </div> : undefined}\n\t\t\t\t\t<div className='slider'>{value !== undefined ? <GenesysDevIcon icon={value ? trueIcon : falseIcon} /> : undefined}</div>\n\t\t\t\t\t{value === false && props.isTriState ? <div className='clear-placeholder'> </div> : undefined}\n\t\t\t\t\t{value !== true ? <GenesysDevIcon icon={trueIcon} /> : undefined}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</DxLabel>\n\t);\n}\n","import React, { useState } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\n\nimport './AlertBlock.scss';\n\ninterface IProps {\n\ttitle?: string;\n\talertType?: 'info' | 'success' | 'critical' | 'warning' | 'toast';\n\tcollapsible?: boolean;\n\tautoCollapse?: boolean;\n\tindentation?: number;\n\tchildren?: any;\n\tclassName?: string;\n}\n\nexport default function AlertBlock(props: IProps) {\n\tconst isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false;\n\tconst [isCollapsed, setIsCollapsed] = useState(isCollapsible ? props.autoCollapse || false : false);\n\n\tlet title;\n\tif (props.title) {\n\t\ttitle = (\n\t\t\t<div\n\t\t\t\tclassName={`alert-title${isCollapsible ? ' clickable' : ''}${isCollapsed ? ' collapsed' : ''}`}\n\t\t\t\tonClick={isCollapsible ? () => setIsCollapsed(!isCollapsed) : undefined}\n\t\t\t>\n\t\t\t\t{props.title}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet icon;\n\tswitch (props.alertType) {\n\t\tcase 'info': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppInfoSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'success': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppSuccessSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'critical': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppCriticalSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'warning': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppWarnSolid} />;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (icon && isCollapsible) {\n\t\ticon = (\n\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t//TODO: remove the card fence classes and build a proper collapser\n\treturn (\n\t\t<div\n\t\t\tclassName={`alert-container${props.indentation && props.indentation > 0 ? ` indent-${props.indentation}` : ''} ${\n\t\t\t\tprops.className || ''\n\t\t\t}`}\n\t\t>\n\t\t\t<div className={`alert alert-${props.alertType}`} role=\"alert\">\n\t\t\t\t{icon}\n\t\t\t\t<div className=\"alert-content\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{isCollapsed ? undefined : <div>{props.children}</div>}\n\t\t\t\t</div>\n\t\t\t\t{isCollapsible ? (\n\t\t\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t\t\t<GenesysDevIcon icon={isCollapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />\n\t\t\t\t\t</span>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './LoadingPlaceholder.scss';\n\n// SimCity loading messages! https://gist.github.com/erikcox/7e96d031d00d7ecb1a2f\nconst MESSAGES = [\n\t'Adding Hidden Agendas',\n\t'Adjusting Bell Curves',\n\t'Aesthesizing Industrial Areas',\n\t'Aligning Covariance Matrices',\n\t'Applying Feng Shui Shaders',\n\t'Applying Theatre Soda Layer',\n\t'Asserting Packed Exemplars',\n\t'Attempting to Lock Back-Buffer',\n\t'Binding Sapling Root System',\n\t'Building Data Trees',\n\t'Bureacritizing Bureaucracies',\n\t'Calculating Inverse Probability Matrices',\n\t'Calculating Llama Expectoration Trajectory',\n\t'Calibrating Blue Skies',\n\t'Charging Ozone Layer',\n\t'Coalescing Cloud Formations',\n\t'Cohorting Exemplars',\n\t'Collecting Meteor Particles',\n\t'Compounding Inert Tessellations',\n\t'Compressing Fish Files',\n\t'Computing Optimal Bin Packing',\n\t'Concatenating Sub-Contractors',\n\t'Containing Existential Buffer',\n\t'Debunching Unionized Commercial Services',\n\t'Deciding What Message to Display Next',\n\t'Decomposing Singular Values',\n\t'Decrementing Tectonic Plates',\n\t'Deleting Ferry Routes',\n\t'Depixelating Inner Mountain Surface Back Faces',\n\t'Deunionizing Bulldozers',\n\t'Dicing Models',\n\t'Diluting Livestock Nutrition Variables',\n\t'Downloading Satellite Terrain Data',\n\t'Exposing Flash Variables to Streak System',\n\t'Extracting Resources',\n\t'Flushing Pipe Network',\n\t'Gathering Particle Sources',\n\t'Generating Jobs',\n\t'Gesticulating Mimes',\n\t'Graphing Whale Migration',\n\t'Hiding Willio Webnet Mask',\n\t'Increasing Accuracy of RCI Simulators',\n\t'Increasing Magmafacation',\n\t'Initializing My Sim Tracking Mechanism',\n\t'Initializing Robotic Click-Path AI',\n\t'Inserting Sublimated Messages',\n\t'Integrating Curves',\n\t'Integrating Illumination Form Factors',\n\t'Integrating Population Graphs',\n\t'Iterating Cellular Automata',\n\t'Lecturing Errant Subsystems',\n\t'Modeling Object Components',\n\t'Mopping Occupant Leaks',\n\t'Normalizing Power',\n\t'Obfuscating Quigley Matrix',\n\t'Partitioning Singularities',\n\t'Perturbing Matrices',\n\t'Polishing Water Highlights',\n\t'Populating Lot Templates',\n\t'Preparing Sprites for Random Walks',\n\t'Prioritizing Landmarks',\n\t'Projecting Law Enforcement Pastry Intake',\n\t'Realigning Alternate Time Frames',\n\t'Relaxing Splines',\n\t'Removing Road Network Speed Bumps',\n\t'Removing Texture Gradients',\n\t'Removing Vehicle Avoidance Behavior',\n\t'Reticulating Splines',\n\t'Retracting Phong Shader',\n\t'Retrieving from Back Store',\n\t'Reverse Engineering Image Consultant',\n\t'Routing Neural Network Infanstructure',\n\t'Scattering Rhino Food Sources',\n\t'Scrubbing Terrain',\n\t'Searching for Llamas',\n\t'Seeding Architecture Simulation Parameters',\n\t'Sequencing Particles',\n\t'Setting Advisor Moods',\n\t'Setting Inner Deity Indicators',\n\t'Setting Universal Physical Constants',\n\t'Sonically Enhancing Occupant-Free Timber',\n\t'Speculating Stock Market Indices',\n\t'Splatting Transforms',\n\t'Stratifying Ground Layers',\n\t'Sub-Sampling Water Data',\n\t'Synthesizing Gravity',\n\t'Synthesizing Wavelets',\n\t'Time-Compressing Simulator Clock',\n\t'Unable to Reveal Current Activity',\n];\n\ninterface IProps {\n\ttext?: string;\n}\n\nexport default function LoadingPlaceholder(props: IProps) {\n\treturn (\n\t\t<div className=\"loading-placeholder\">\n\t\t\t<span className=\"text\">{props.text || MESSAGES[Math.floor(Math.random() * (MESSAGES.length - 1))]}</span>\n\t\t\t<div></div>\n\t\t\t<div></div>\n\t\t</div>\n\t);\n}\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nimport './Tooltip.scss';\n\ninterface IProps {\n\ttext: string;\n\tposition?: 'top' | 'right' | 'bottom' | 'left';\n\tchildren?: ReactNode;\n\tclassName?: string;\n\t// Setting this to any value enables manual control\n\tisShowing?: boolean;\n}\n\n// Inspired by https://paladini.dev/posts/how-to-make-an-extremely-reusable-tooltip-component-with-react--and-nothing-else/\nexport default function Tooltip(props: IProps) {\n\tconst [isShowing, setIsShowing] = useState(false);\n\tconst timeout = useRef<NodeJS.Timeout | undefined>();\n\n\tuseEffect(() => {\n\t\tif (props.isShowing === undefined) return;\n\t\tsetIsShowing(props.isShowing === true);\n\t}, [props.isShowing]);\n\n\tconst showTip = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n\t\t// Ignore mouse events from the tooltip itself\n\t\tif ((e.target as HTMLDivElement).className.includes('tooltip-tip')) return;\n\t\t// Ignore mouse events when manually controlled\n\t\tif (props.isShowing !== undefined) return;\n\t\ttimeout.current = setTimeout(() => {\n\t\t\tsetIsShowing(true);\n\t\t}, 100);\n\t};\n\n\tconst hideTip = () => {\n\t\tif (props.isShowing !== undefined) return;\n\t\tif (timeout.current) clearInterval(timeout.current);\n\t\tsetIsShowing(false);\n\t};\n\n\treturn (\n\t\t<div className={`tooltip-container ${props.className || ''}`} onMouseEnter={showTip} onMouseLeave={hideTip}>\n\t\t\t{props.children}\n\t\t\t<div className={`tooltip-tip ${props.position || 'top'}${isShowing ? ' visible' : ''}`}>{props.text}</div>\n\t\t</div>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport Tooltip from '../tooltip/Tooltip';\n\nimport './CopyButton.scss';\n\ninterface IProps {\n\tcopyText: string;\n\tclassName?: string;\n\ttooltipPosition?: 'top' | 'right' | 'bottom' | 'left';\n}\n\nexport default function CopyButton(props: IProps) {\n\tlet [copyState, setCopyState] = useState(false);\n\n\t// Copy function will set the component state to indicate we have copied the record and then show the tool tip. With the copyState set to true we will see 'Copied'\n\tconst copyCode = (e: React.MouseEvent<HTMLElement>) => {\n\t\te.stopPropagation();\n\t\tsetCopyState(true);\n\t\tnavigator.clipboard.writeText(props.copyText);\n\t\treturn;\n\t};\n\n\t// Once we lose focus on the copy button, we want to set the copyState to false so that we can hide the tool tip and set the default tool tip to ''\n\tconst loseFocus = () => {\n\t\tsetCopyState(false);\n\t\treturn;\n\t};\n\n\tconst buttonClasses = ['copy-button'];\n\tif (props.className) buttonClasses.push(props.className);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<Tooltip isShowing={copyState} text=\"Copied\" position={props.tooltipPosition}>\n\t\t\t\t<button type=\"button\" className={buttonClasses.join(' ')} onClick={copyCode} onMouseOut={loseFocus}>\n\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppCopy} />\n\t\t\t\t</button>\n\t\t\t</Tooltip>\n\t\t</React.Fragment>\n\t);\n}\n"],"names":["uuid"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/dxaccordion/DxAccordion.tsx","../src/dxaccordion/DxAccordionGroup.tsx","../src/dxbutton/DxButton.tsx","../src/dxlabel/DxLabel.tsx","../src/dxitemgroup/DxCheckbox.tsx","../src/dxitemgroup/DxItemGroup.tsx","../src/dxtabbedcontent/DxTabbedContent.tsx","../src/dxtabbedcontent/DxTabPanel.tsx","../src/dxtextbox/DxTextbox.tsx","../src/dxtoggle/DxToggle.tsx","../src/alertblock/AlertBlock.tsx","../src/loadingplaceholder/LoadingPlaceholder.tsx","../src/tooltip/Tooltip.tsx","../src/copybutton/CopyButton.tsx","../src/codefence/CodeFence.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport { DxAccordionProps } from '..';\n\nimport './DxAccordion.scss';\n\nexport default function DxAccordion(props: DxAccordionProps) {\n\tconst [isOpen, setIsOpen] = useState(props.showOpen || false);\n\tconst [expandTrigger, setExpandTrigger] = useState(props.expandTrigger);\n\tconst [showOpenTrigger, setShowOpenTrigger] = useState(props.showOpenTrigger);\n\n\t// This one forcibly opens the component\n\tReact.useEffect(() => {\n\t\tif (props.expandTrigger !== expandTrigger) {\n\t\t\tsetIsOpen(true);\n\t\t\tsetExpandTrigger(props.expandTrigger);\n\t\t}\n\t}, [props.expandTrigger, expandTrigger]);\n\n\t// This one forcibly recalculates the state based on the value for props.showOpen\n\tReact.useEffect(() => {\n\t\tif (props.showOpenTrigger !== showOpenTrigger) {\n\t\t\tsetIsOpen(props.showOpen);\n\t\t\tsetShowOpenTrigger(props.showOpenTrigger);\n\t\t}\n\t}, [props.showOpenTrigger, showOpenTrigger, props.showOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (props.showOpen === true || props.showOpen === false) setIsOpen(props.showOpen);\n\t}, [props.showOpen]);\n\n\tlet style = {} as React.CSSProperties;\n\tif (props.headingColor) style.color = props.headingColor;\n\n\tlet icon;\n\tif (props.headingIcon) icon = <GenesysDevIcon icon={props.headingIcon} className=\"heading-icon\" />;\n\n\treturn (\n\t\t<div id={props.containerId || undefined} className={`dx-accordion${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"accordion-heading\" style={style} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t<span className=\"accordion-heading__left\">\n\t\t\t\t\t{icon} {props.title}\n\t\t\t\t</span>{' '}\n\t\t\t\t<GenesysDevIcon icon={isOpen ? GenesysDevIcons.AppChevronUp : GenesysDevIcons.AppChevronDown} />\n\t\t\t</div>\n\t\t\t{isOpen ? <div className=\"accordion-content\">{props.children}</div> : undefined}\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './DxAccordionGroup.scss';\n\ninterface IProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport default function DxAccordionGroup(props: IProps) {\n\treturn <div className={`dx-accordion-group${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import React from 'react';\nimport { VoidEventCallback } from '..';\n\nimport './DxButton.scss';\n\ninterface IProps {\n\ttype?: 'primary' | 'secondary' | 'link';\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\tonClick?: VoidEventCallback;\n}\n\nexport default function DxButton(props: IProps) {\n\tlet classNames = ['dx-button'];\n\tclassNames.push(`dx-button-${props.type || 'primary'}`);\n\tif (props.className) classNames.push(props.className);\n\n\tconst handleClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\n\t\tif (!props.onClick) return;\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t\tprops.onClick();\n\t};\n\n\treturn (\n\t\t<button className={classNames.join(' ')} type=\"button\" onClick={handleClick} disabled={props.disabled === true}>\n\t\t\t{props.children}\n\t\t</button>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React from 'react';\n\nimport './DxLabel.scss';\n\ninterface IProps {\n\tlabel?: string;\n\tdescription?: string;\n\tuseFieldset?: boolean;\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\nexport default function DxLabel(props: IProps) {\n\tconst hasLabel = props.label && props.label !== '';\n\n\tconst description = props.description ? (\n\t\t<div className='input-description'>\n\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppInfoSolid} />\n\t\t\t<span>{props.description}</span>\n\t\t</div>\n\t) : undefined;\n\n\tconst contents = (\n\t\t<React.Fragment>\n\t\t\t{' '}\n\t\t\t{hasLabel ? <span className='label-text'>{props.label}</span> : undefined}\n\t\t\t{props.children}\n\t\t\t{description}\n\t\t</React.Fragment>\n\t);\n\n\tconst className = `dx-label${props.className ? ' ' + props.className : ''}`;\n\n\tif (props.useFieldset) {\n\t\treturn <fieldset className={className}>{contents}</fieldset>;\n\t}\n\treturn <label className={className}>{contents}</label>;\n}\n","import React, { useEffect, useState } from 'react';\nimport { CheckedChangedCallback } from '..';\n\nimport './DxCheckbox.scss';\n\ninterface IProps {\n\tlabel: string;\n\titemValue: string;\n\tdescription?: string;\n\tchecked?: boolean;\n\tinitiallyChecked?: boolean;\n\tname?: string;\n\tclassName?: string;\n\tonCheckChanged?: CheckedChangedCallback;\n\tuseRadioType?: boolean;\n\tdisabled?: boolean;\n}\n\nexport default function DxCheckbox(props: IProps) {\n\tlet initialValue: boolean = props.checked !== undefined ? props.checked : props.initiallyChecked || false;\n\n\tconst [checked, setChecked] = useState<boolean>(initialValue);\n\n\tuseEffect(() => {\n\t\tif (props.checked === undefined || props.checked === checked) return;\n\t\tsetChecked(props.checked);\n\t}, [props.checked]);\n\n\tuseEffect(() => {\n\t\tif (props.onCheckChanged) props.onCheckChanged(checked);\n\t}, [checked]);\n\n\treturn (\n\t\t<label className={`dx-checkbox${props.className ? ' ' + props.className : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t<input\n\t\t\t\ttype={props.useRadioType ? 'radio' : 'checkbox'}\n\t\t\t\tname={props.name}\n\t\t\t\tvalue={props.itemValue}\n\t\t\t\tchecked={checked}\n\t\t\t\tonChange={(e) => setChecked(e.target.checked)}\n\t\t\t\tdisabled={props.disabled === true}\n\t\t\t/>\n\t\t\t<span className='label-text'>{props.label}</span>\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { DxItemGroupItem, DxItemGroupItemValue, DxItemGroupProps, ItemChangedCallback, ItemGroupChangedCallback } from '..';\n\nimport './DxItemGroup.scss';\nimport './radiobutton.scss';\nimport './dropdown.scss';\nimport './multiselect.scss';\nimport DxLabel from '../dxlabel/DxLabel';\nimport DxCheckbox from './DxCheckbox';\n\nexport default function DxItemGroup(props: DxItemGroupProps) {\n\tconst [data, setData] = useState<DxItemGroupItemValue[]>(\n\t\tprops.items.map((item) => {\n\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t})\n\t);\n\tconst [id] = useState(uuid());\n\tconst [title, setTitle] = useState(props.title);\n\tconst [description, setDescription] = useState(props.description);\n\tconst [format, setFormat] = useState(props.format);\n\tconst [disabled, setDisabled] = useState(props.disabled);\n\tconst [className, setClassName] = useState(props.className);\n\n\t// data changed\n\tuseEffect(() => {\n\t\tif (props.onItemsChanged) props.onItemsChanged(data);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [data]);\n\n\t// Recalculate on props changed\n\tuseEffect(() => {\n\t\tsetTitle(props.title);\n\t\tsetDescription(props.description);\n\t\tsetFormat(props.format);\n\t\tsetDisabled(props.disabled);\n\t\tsetClassName(props.className);\n\t}, [props.title, props.description, props.format, props.items, props.disabled, props.className]);\n\n\tuseEffect(() => {\n\t\tsetData(\n\t\t\tprops.items.map((item) => {\n\t\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t\t})\n\t\t);\n\t}, [props.items]);\n\t// Handle individual item changed\n\tconst itemChanged = (idx: number, item: DxItemGroupItem, checked: boolean) => {\n\t\tif (props.onItemChanged) props.onItemChanged(item, checked);\n\t\tlet newData = [...data];\n\t\t// Unselect everything if it's radio buttons\n\t\tif (format === 'radio') newData.forEach((value) => (value.isSelected = false));\n\t\t// Set the selected state of the new item\n\t\tnewData[idx].isSelected = checked;\n\t\tsetData(newData);\n\t};\n\n\tconst selectChanged = (e: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst options = e.target.options;\n\t\tlet newData = [...data];\n\t\t// Assign selected value for each item in the list\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\tconst thisItem = newData.find((value) => value.item.value === options[i].value);\n\t\t\tthisItem.isSelected = options[i].selected;\n\t\t}\n\t\t// Update entire data list\n\t\tsetData(newData);\n\t\t// Trigger individual update\n\t\tconst changedItemIdx = newData.findIndex((value) => value.item.value === e.target.value);\n\t\tif (changedItemIdx >= 0) itemChanged(changedItemIdx, newData[changedItemIdx].item, newData[changedItemIdx].isSelected);\n\t};\n\n\tswitch (format) {\n\t\tcase 'multiselect':\n\t\tcase 'dropdown': {\n\t\t\tconst isMulti = format === 'multiselect';\n\t\t\treturn (\n\t\t\t\t<DxLabel label={title} description={description} className={className}>\n\t\t\t\t\t<div className={`dx-item-group${isMulti ? ' dx-multiselect-group' : ' dx-select-group'}${disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tmultiple={isMulti}\n\t\t\t\t\t\t\tdisabled={disabled === true}\n\t\t\t\t\t\t\tonChange={(e) => selectChanged(e)}\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tisMulti\n\t\t\t\t\t\t\t\t\t? data.filter((item) => item.isSelected)?.map((item) => item.item.value)\n\t\t\t\t\t\t\t\t\t: data.find((item) => item.isSelected)?.item.value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t\t<option key={i} value={d.item.value} disabled={d.item.disabled}>\n\t\t\t\t\t\t\t\t\t{d.item.label}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\tdefault: {\n\t\t\treturn (\n\t\t\t\t<DxLabel\n\t\t\t\t\tlabel={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\tclassName={`dx-item-group${disabled ? ' disabled' : ''}${className ? ' ' + className : ''}`}\n\t\t\t\t\tuseFieldset={true}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLDivElement>) => {\n\t\t\t\t\t\t\tconst i = data.findIndex((d) => d.item.value === (e.target as any)?.value);\n\t\t\t\t\t\t\tif (i < 0) return;\n\t\t\t\t\t\t\titemChanged(i, data[i].item, (e.target as any)?.checked);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t<DxCheckbox\n\t\t\t\t\t\t\t\tkey={d.item.value}\n\t\t\t\t\t\t\t\tname={format === 'checkbox' ? `${id}-${d.item.value}` : id}\n\t\t\t\t\t\t\t\tlabel={d.item.label}\n\t\t\t\t\t\t\t\titemValue={d.item.value}\n\t\t\t\t\t\t\t\tchecked={d.isSelected}\n\t\t\t\t\t\t\t\tuseRadioType={format === 'radio'}\n\t\t\t\t\t\t\t\tdisabled={disabled || d.item.disabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t}\n}\n","import React, { useState } from 'react';\nimport { DxTabbedContentProps } from '..';\n\nimport './DxTabbedContent.scss';\n\nexport default function DxTabbedContent(props: DxTabbedContentProps) {\n\tconst [activeTab, setActiveTab] = useState(props.initialTabId || 0);\n\tconst [titles] = useState<React.ReactNode[]>(\n\t\t// Scrape titles from child elements\n\t\tReact.Children.toArray(props.children).map((child: any) => {\n\t\t\tif (!child || !child.props || !child.props.title) return 'Unknown title';\n\t\t\treturn child.props.title;\n\t\t})\n\t);\n\n\treturn (\n\t\t<div className={`dx-tabbed-content${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className='tab-titles'>\n\t\t\t\t{titles.map((title, i) => (\n\t\t\t\t\t<span key={i} className={`tab-title${i === activeTab ? ' active' : ''}`} onClick={() => setActiveTab(i)}>\n\t\t\t\t\t\t{title}\n\t\t\t\t\t</span>\n\t\t\t\t))}\n\t\t\t</div>\n\t\t\t<div className='tab-content'>{React.Children.toArray(props.children)[activeTab]}</div>\n\t\t</div>\n\t);\n}\n","import React from 'react';\nimport { DxTabPanelProps } from '..';\n\nimport './DxTabPanel.scss';\n\nexport default function DxTabPanel(props: DxTabPanelProps) {\n\treturn <div className={`dx-tab-panel${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useEffect, useRef, useState } from 'react';\nimport DxLabel from '../dxlabel/DxLabel';\nimport { DxTextboxProps } from '..';\n\nimport './DxTextbox.scss';\n\nexport default function DxTextbox(props: DxTextboxProps) {\n\tconst [debounceMs, setDebounceMs] = useState(props.changeDebounceMs || 300);\n\tconst [value, setValue] = useState(props.initialValue || props.value || '');\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [escapePressed, setEscapePressed] = useState(Date.now());\n\tconst [step, setStep] = useState<string | number | undefined>(undefined);\n\tlet [timer, setTimer] = useState(undefined as unknown as ReturnType<typeof setTimeout>);\n\n\t// Constructor\n\tuseEffect(() => {\n\t\t// Register global key bindings\n\t\tdocument.addEventListener('keydown', globalKeyBindings, false);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', globalKeyBindings, false);\n\t\t};\n\t}, []);\n\n\t// Value prop updated\n\tuseEffect(() => {\n\t\t// Ignore value changed if initial value was set; they're mutually exclusive\n\t\tif (!props.initialValue) {\n\t\t\tsetValue(props.value || '');\n\t\t}\n\t}, [props.value]);\n\n\t// Escape pressed\n\tuseEffect(() => {\n\t\tif (!isFocused || props.clearOnEscape === false) return;\n\t\tsetValue('');\n\t\tinputRef.current?.blur();\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [escapePressed]);\n\n\t// Value changed\n\tuseEffect(() => {\n\t\tif (props.inputType === 'decimal') {\n\t\t\t// Normalize step setting\n\t\t\tif (!isNaN(parseFloat(value))) {\n\t\t\t\tconst match = /\\.(.+)/.exec(value);\n\t\t\t\tconsole.log(match);\n\t\t\t\tif (match) {\n\t\t\t\t\tconst s = `0.${Array.apply(null, Array(match[1].length - 1))\n\t\t\t\t\t\t.map(() => '0')\n\t\t\t\t\t\t.join('')}1`;\n\t\t\t\t\tconsole.log(s);\n\t\t\t\t\tsetStep(s);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (props.inputType === 'integer') {\n\t\t\t// Overwrite value as integer to forcibly truncate floating point numbers\n\t\t\tsetValue(parseInt(value).toString());\n\t\t}\n\n\t\t// Debounce onChange notification\n\t\tif (!props.onChange) return;\n\t\tclearTimeout(timer);\n\t\tsetTimer(setTimeout(() => (props.onChange ? props.onChange(value) : undefined), debounceMs));\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\t// Update state from props\n\tuseEffect(() => {\n\t\tsetDebounceMs(props.changeDebounceMs || 300);\n\t}, [props.changeDebounceMs]);\n\n\t// Normalize inputRef\n\tlet inputRef; // = useRef<HTMLInputElement>(null);\n\tif (props.inputRef) inputRef = props.inputRef;\n\telse if (props.inputType === 'textarea') inputRef = useRef<HTMLTextAreaElement>(null);\n\telse inputRef = useRef<HTMLInputElement>(null);\n\n\tconst hasLabel = props.label && props.label !== '';\n\n\t// Global key bindings\n\tfunction globalKeyBindings(event: KeyboardEvent) {\n\t\t// Escape - cancel search\n\t\tif (event.key === 'Escape') {\n\t\t\tevent.stopPropagation();\n\t\t\tevent.preventDefault();\n\t\t\tsetEscapePressed(Date.now());\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Normalize input type\n\tlet inputType: React.HTMLInputTypeAttribute | undefined = props.inputType;\n\tif (inputType === 'integer' || inputType === 'decimal') inputType = 'number';\n\n\tlet component;\n\tswitch (inputType) {\n\t\tcase 'textarea': {\n\t\t\tcomponent = (\n\t\t\t\t<textarea\n\t\t\t\t\tclassName=\"dx-textarea\"\n\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\tsetIsFocused(true);\n\t\t\t\t\t\tif (props.onFocus) props.onFocus();\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\tsetIsFocused(false);\n\t\t\t\t\t\tif (props.onBlur) props.onBlur();\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={props.disabled === true}\n\t\t\t\t\tautoFocus={props.autoFocus}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\t\t// TODO: special handling for other inputType values\n\t\tdefault: {\n\t\t\tcomponent = (\n\t\t\t\t<div className={`dx-textbox${hasLabel ? ' with-label' : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t{props.icon ? <GenesysDevIcon icon={props.icon} className=\"input-icon\" /> : undefined}\n\t\t\t\t\t<input\n\t\t\t\t\t\tclassName=\"dx-input\"\n\t\t\t\t\t\ttype={inputType}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\t\tsetIsFocused(true);\n\t\t\t\t\t\t\tif (props.onFocus) props.onFocus();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\t\tsetIsFocused(false);\n\t\t\t\t\t\t\tif (props.onBlur) props.onBlur();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdisabled={props.disabled === true}\n\t\t\t\t\t\tautoFocus={props.autoFocus}\n\t\t\t\t\t/>\n\t\t\t\t\t{props.clearButton && (value || isFocused) && !props.disabled ? (\n\t\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppTimes} className=\"clear-icon\" onClick={() => setValue('')} />\n\t\t\t\t\t) : undefined}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\t// Render\n\treturn (\n\t\t<DxLabel label={props.label} description={props.description} className={props.className}>\n\t\t\t{component}\n\t\t</DxLabel>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport { BooleanChangedCallback, DxToggleProps } from '..';\n\nimport './DxToggle.scss';\nimport DxLabel from '../dxlabel/DxLabel';\n\nexport default function DxToggle(props: DxToggleProps) {\n\tlet initialValue: boolean | undefined = props.value !== undefined ? props.value : props.initialValue;\n\tif (!props.isTriState) initialValue = initialValue || false;\n\n\tconst [value, setValue] = useState<boolean | undefined>(initialValue);\n\n\tconst trueIcon = props.trueIcon || GenesysDevIcons.AppCheck;\n\tconst falseIcon = props.falseIcon || GenesysDevIcons.AppTimes;\n\n\tuseEffect(() => {\n\t\tif (props.initialValue || props.value === value || (!props.isTriState && props.value === undefined)) return;\n\t\tsetValue(props.value);\n\t}, [props.value]);\n\n\tuseEffect(() => {\n\t\tif (props.onChange) props.onChange(value);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\tconst toggleValue = () => {\n\t\tif (props.disabled) return;\n\t\tif (props.isTriState) {\n\t\t\tif (value === undefined) setValue(true);\n\t\t\telse if (value === true) setValue(false);\n\t\t\telse setValue(undefined);\n\t\t} else {\n\t\t\tsetValue(!value);\n\t\t}\n\t};\n\n\treturn (\n\t\t<DxLabel label={props.label} description={props.description} className={props.className}>\n\t\t\t<div className={`dx-toggle-container${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t<div className='dx-toggle' onClick={toggleValue}>\n\t\t\t\t\t{value !== false ? <GenesysDevIcon icon={falseIcon} /> : undefined}\n\t\t\t\t\t{value === true && props.isTriState ? <div className='clear-placeholder'> </div> : undefined}\n\t\t\t\t\t<div className='slider'>{value !== undefined ? <GenesysDevIcon icon={value ? trueIcon : falseIcon} /> : undefined}</div>\n\t\t\t\t\t{value === false && props.isTriState ? <div className='clear-placeholder'> </div> : undefined}\n\t\t\t\t\t{value !== true ? <GenesysDevIcon icon={trueIcon} /> : undefined}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</DxLabel>\n\t);\n}\n","import React, { useState } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\n\nimport './AlertBlock.scss';\n\ninterface IProps {\n\ttitle?: string;\n\talertType?: 'info' | 'success' | 'critical' | 'warning' | 'toast';\n\tcollapsible?: boolean;\n\tautoCollapse?: boolean;\n\tindentation?: number;\n\tchildren?: any;\n\tclassName?: string;\n}\n\nexport default function AlertBlock(props: IProps) {\n\tconst isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false;\n\tconst [isCollapsed, setIsCollapsed] = useState(isCollapsible ? props.autoCollapse || false : false);\n\n\tlet title;\n\tif (props.title) {\n\t\ttitle = (\n\t\t\t<div\n\t\t\t\tclassName={`alert-title${isCollapsible ? ' clickable' : ''}${isCollapsed ? ' collapsed' : ''}`}\n\t\t\t\tonClick={isCollapsible ? () => setIsCollapsed(!isCollapsed) : undefined}\n\t\t\t>\n\t\t\t\t{props.title}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet icon;\n\tswitch (props.alertType) {\n\t\tcase 'info': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppInfoSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'success': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppSuccessSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'critical': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppCriticalSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'warning': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppWarnSolid} />;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (icon && isCollapsible) {\n\t\ticon = (\n\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t//TODO: remove the card fence classes and build a proper collapser\n\treturn (\n\t\t<div\n\t\t\tclassName={`alert-container${props.indentation && props.indentation > 0 ? ` indent-${props.indentation}` : ''} ${\n\t\t\t\tprops.className || ''\n\t\t\t}`}\n\t\t>\n\t\t\t<div className={`alert alert-${props.alertType}`} role=\"alert\">\n\t\t\t\t{icon}\n\t\t\t\t<div className=\"alert-content\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{isCollapsed ? undefined : <div>{props.children}</div>}\n\t\t\t\t</div>\n\t\t\t\t{isCollapsible ? (\n\t\t\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t\t\t<GenesysDevIcon icon={isCollapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />\n\t\t\t\t\t</span>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './LoadingPlaceholder.scss';\n\n// SimCity loading messages! https://gist.github.com/erikcox/7e96d031d00d7ecb1a2f\nconst MESSAGES = [\n\t'Adding Hidden Agendas',\n\t'Adjusting Bell Curves',\n\t'Aesthesizing Industrial Areas',\n\t'Aligning Covariance Matrices',\n\t'Applying Feng Shui Shaders',\n\t'Applying Theatre Soda Layer',\n\t'Asserting Packed Exemplars',\n\t'Attempting to Lock Back-Buffer',\n\t'Binding Sapling Root System',\n\t'Building Data Trees',\n\t'Bureacritizing Bureaucracies',\n\t'Calculating Inverse Probability Matrices',\n\t'Calculating Llama Expectoration Trajectory',\n\t'Calibrating Blue Skies',\n\t'Charging Ozone Layer',\n\t'Coalescing Cloud Formations',\n\t'Cohorting Exemplars',\n\t'Collecting Meteor Particles',\n\t'Compounding Inert Tessellations',\n\t'Compressing Fish Files',\n\t'Computing Optimal Bin Packing',\n\t'Concatenating Sub-Contractors',\n\t'Containing Existential Buffer',\n\t'Debunching Unionized Commercial Services',\n\t'Deciding What Message to Display Next',\n\t'Decomposing Singular Values',\n\t'Decrementing Tectonic Plates',\n\t'Deleting Ferry Routes',\n\t'Depixelating Inner Mountain Surface Back Faces',\n\t'Deunionizing Bulldozers',\n\t'Dicing Models',\n\t'Diluting Livestock Nutrition Variables',\n\t'Downloading Satellite Terrain Data',\n\t'Exposing Flash Variables to Streak System',\n\t'Extracting Resources',\n\t'Flushing Pipe Network',\n\t'Gathering Particle Sources',\n\t'Generating Jobs',\n\t'Gesticulating Mimes',\n\t'Graphing Whale Migration',\n\t'Hiding Willio Webnet Mask',\n\t'Increasing Accuracy of RCI Simulators',\n\t'Increasing Magmafacation',\n\t'Initializing My Sim Tracking Mechanism',\n\t'Initializing Robotic Click-Path AI',\n\t'Inserting Sublimated Messages',\n\t'Integrating Curves',\n\t'Integrating Illumination Form Factors',\n\t'Integrating Population Graphs',\n\t'Iterating Cellular Automata',\n\t'Lecturing Errant Subsystems',\n\t'Modeling Object Components',\n\t'Mopping Occupant Leaks',\n\t'Normalizing Power',\n\t'Obfuscating Quigley Matrix',\n\t'Partitioning Singularities',\n\t'Perturbing Matrices',\n\t'Polishing Water Highlights',\n\t'Populating Lot Templates',\n\t'Preparing Sprites for Random Walks',\n\t'Prioritizing Landmarks',\n\t'Projecting Law Enforcement Pastry Intake',\n\t'Realigning Alternate Time Frames',\n\t'Relaxing Splines',\n\t'Removing Road Network Speed Bumps',\n\t'Removing Texture Gradients',\n\t'Removing Vehicle Avoidance Behavior',\n\t'Reticulating Splines',\n\t'Retracting Phong Shader',\n\t'Retrieving from Back Store',\n\t'Reverse Engineering Image Consultant',\n\t'Routing Neural Network Infanstructure',\n\t'Scattering Rhino Food Sources',\n\t'Scrubbing Terrain',\n\t'Searching for Llamas',\n\t'Seeding Architecture Simulation Parameters',\n\t'Sequencing Particles',\n\t'Setting Advisor Moods',\n\t'Setting Inner Deity Indicators',\n\t'Setting Universal Physical Constants',\n\t'Sonically Enhancing Occupant-Free Timber',\n\t'Speculating Stock Market Indices',\n\t'Splatting Transforms',\n\t'Stratifying Ground Layers',\n\t'Sub-Sampling Water Data',\n\t'Synthesizing Gravity',\n\t'Synthesizing Wavelets',\n\t'Time-Compressing Simulator Clock',\n\t'Unable to Reveal Current Activity',\n];\n\ninterface IProps {\n\ttext?: string;\n}\n\nexport default function LoadingPlaceholder(props: IProps) {\n\treturn (\n\t\t<div className=\"loading-placeholder\">\n\t\t\t<span className=\"text\">{props.text || MESSAGES[Math.floor(Math.random() * (MESSAGES.length - 1))]}</span>\n\t\t\t<div></div>\n\t\t\t<div></div>\n\t\t</div>\n\t);\n}\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nimport './Tooltip.scss';\n\ninterface IProps {\n\ttext: string;\n\tposition?: 'top' | 'right' | 'bottom' | 'left';\n\tchildren?: ReactNode;\n\tclassName?: string;\n\t// Setting this to any value enables manual control\n\tisShowing?: boolean;\n}\n\n// Inspired by https://paladini.dev/posts/how-to-make-an-extremely-reusable-tooltip-component-with-react--and-nothing-else/\nexport default function Tooltip(props: IProps) {\n\tconst [isShowing, setIsShowing] = useState(false);\n\tconst timeout = useRef<NodeJS.Timeout | undefined>();\n\n\tuseEffect(() => {\n\t\tif (props.isShowing === undefined) return;\n\t\tsetIsShowing(props.isShowing === true);\n\t}, [props.isShowing]);\n\n\tconst showTip = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n\t\t// Ignore mouse events from the tooltip itself\n\t\tif ((e.target as HTMLDivElement).className.includes('tooltip-tip')) return;\n\t\t// Ignore mouse events when manually controlled\n\t\tif (props.isShowing !== undefined) return;\n\t\ttimeout.current = setTimeout(() => {\n\t\t\tsetIsShowing(true);\n\t\t}, 100);\n\t};\n\n\tconst hideTip = () => {\n\t\tif (props.isShowing !== undefined) return;\n\t\tif (timeout.current) clearInterval(timeout.current);\n\t\tsetIsShowing(false);\n\t};\n\n\treturn (\n\t\t<div className={`tooltip-container ${props.className || ''}`} onMouseEnter={showTip} onMouseLeave={hideTip}>\n\t\t\t{props.children}\n\t\t\t<div className={`tooltip-tip ${props.position || 'top'}${isShowing ? ' visible' : ''}`}>{props.text}</div>\n\t\t</div>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport Tooltip from '../tooltip/Tooltip';\n\nimport './CopyButton.scss';\n\ninterface IProps {\n\tcopyText: string;\n\tclassName?: string;\n\ttooltipPosition?: 'top' | 'right' | 'bottom' | 'left';\n}\n\nexport default function CopyButton(props: IProps) {\n\tlet [copyState, setCopyState] = useState(false);\n\n\t// Copy function will set the component state to indicate we have copied the record and then show the tool tip. With the copyState set to true we will see 'Copied'\n\tconst copyCode = (e: React.MouseEvent<HTMLElement>) => {\n\t\te.stopPropagation();\n\t\tsetCopyState(true);\n\t\tnavigator.clipboard.writeText(props.copyText);\n\t\treturn;\n\t};\n\n\t// Once we lose focus on the copy button, we want to set the copyState to false so that we can hide the tool tip and set the default tool tip to ''\n\tconst loseFocus = () => {\n\t\tsetCopyState(false);\n\t\treturn;\n\t};\n\n\tconst buttonClasses = ['copy-button'];\n\tif (props.className) buttonClasses.push(props.className);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<Tooltip isShowing={copyState} text=\"Copied\" position={props.tooltipPosition}>\n\t\t\t\t<button type=\"button\" className={buttonClasses.join(' ')} onClick={copyCode} onMouseOut={loseFocus}>\n\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppCopy} />\n\t\t\t\t</button>\n\t\t\t</Tooltip>\n\t\t</React.Fragment>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport { PrismAsync as SyntaxHighlighter } from 'react-syntax-highlighter';\nimport { vscDarkPlus } from 'react-syntax-highlighter/dist/esm/styles/prism/index.js';\n\nimport CopyButton from '../copybutton/CopyButton';\n\nimport './CodeFence.scss';\n\ndeclare global {\n\tinterface Window {\n\t\tPrism: any;\n\t}\n}\n\ninterface IProps {\n\tvalue: string | JSX.Element;\n\tnoCollapse?: boolean;\n\tnoHeader?: boolean;\n\tautoCollapse?: boolean;\n\ttitle?: string;\n\tlanguage?: string;\n\tshowLineNumbers?: boolean;\n\tindentation?: string;\n\tclassName?: string;\n\tjsonEditor?: boolean;\n\tinnerRef?: any;\n}\n\nexport default function CodeFence(props: IProps) {\n\tconst [collapsed, setCollapsed] = useState(props.noCollapse ? false : props.autoCollapse || false);\n\n\tconst bodyClassNames: string[] = ['fence-body'];\n\tif (props.jsonEditor) bodyClassNames.push('json-editor-body');\n\n\tconst classNames: string[] = ['fence'];\n\tif (props.className) classNames.push(props.className);\n\tif (props.noCollapse) classNames.push('nocollapse');\n\tif (props.indentation) classNames.push(`indent-${props.indentation}`);\n\tif (props.jsonEditor) classNames.push('json-editor-fence');\n\n\treturn (\n\t\t<div className={classNames.join(' ')}>\n\t\t\t{props.noHeader || typeof props.value !== 'string' ? (\n\t\t\t\t''\n\t\t\t) : (\n\t\t\t\t<div\n\t\t\t\t\tclassName={`fence-header${props.noCollapse ? '' : ' clickable'}`}\n\t\t\t\t\tonClick={() => setCollapsed(props.noCollapse ? false : !collapsed)}\n\t\t\t\t>\n\t\t\t\t\t{/* this is a row-reverse flexbox, the JSX is meant to be backwards */}\n\t\t\t\t\t{props.noCollapse ? undefined : (\n\t\t\t\t\t\t<GenesysDevIcon icon={collapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />\n\t\t\t\t\t)}\n\t\t\t\t\t<CopyButton copyText={props.value} />\n\t\t\t\t\t<span className=\"fence-title\">{props.title}</span>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t\t{collapsed ? undefined : (\n\t\t\t\t<div ref={props.innerRef || undefined} className={bodyClassNames.join(' ')}>\n\t\t\t\t\t<SyntaxHighlighter language={props.language} style={vscDarkPlus} showLineNumbers={props.showLineNumbers}>\n\t\t\t\t\t\t{props.value}\n\t\t\t\t\t</SyntaxHighlighter>\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n"],"names":["uuid","SyntaxHighlighter"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "genesys-react-components",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "A React component library containing standardized form elements.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "build/index.d.ts",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"@rollup/plugin-commonjs": "^21.0.1",
|
|
32
32
|
"@rollup/plugin-node-resolve": "^13.0.6",
|
|
33
33
|
"@types/react": "^16",
|
|
34
|
-
"genesys-dev-icons": "^0.
|
|
34
|
+
"genesys-dev-icons": "^0.3.0",
|
|
35
35
|
"react": "^16",
|
|
36
36
|
"react-dom": "^16",
|
|
37
37
|
"rollup": "^2.60.2",
|
|
@@ -44,11 +44,10 @@
|
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
46
|
"genesys-dev-icons": "0.x",
|
|
47
|
+
"postcss": "^8.4.6",
|
|
47
48
|
"react": ">=16",
|
|
48
49
|
"react-dom": ">=16",
|
|
50
|
+
"react-syntax-highlighter": "^15.5.0",
|
|
49
51
|
"uuid": "^9.0.0"
|
|
50
|
-
},
|
|
51
|
-
"dependencies": {
|
|
52
|
-
"postcss": "^8.4.6"
|
|
53
52
|
}
|
|
54
53
|
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
@import '../theme/variables.scss';
|
|
2
|
+
|
|
3
|
+
.fence {
|
|
4
|
+
border-radius: 0;
|
|
5
|
+
margin: 40px 0;
|
|
6
|
+
position: relative;
|
|
7
|
+
|
|
8
|
+
&.json-editor-fence {
|
|
9
|
+
margin: 1rem 0 0 0;
|
|
10
|
+
height: 80%;
|
|
11
|
+
width: 100%;
|
|
12
|
+
overflow: hidden;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
.fence-header {
|
|
16
|
+
background-color: var($--theme-codefence-header-background-color);
|
|
17
|
+
color: var($--theme-codefence-header-text-color);
|
|
18
|
+
font-size: 14px;
|
|
19
|
+
border-radius: 4px 4px 0px 0px;
|
|
20
|
+
border-bottom: 1px solid var($--theme-codefence-border-color);
|
|
21
|
+
margin: 0;
|
|
22
|
+
padding: 5px 16px;
|
|
23
|
+
min-height: 24px;
|
|
24
|
+
display: flex;
|
|
25
|
+
flex-direction: row-reverse;
|
|
26
|
+
flex-wrap: nowrap;
|
|
27
|
+
justify-content: space-between;
|
|
28
|
+
align-items: center;
|
|
29
|
+
gap: 16px;
|
|
30
|
+
|
|
31
|
+
&.clickable {
|
|
32
|
+
cursor: pointer;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
& > * {
|
|
36
|
+
flex-grow: 0;
|
|
37
|
+
flex-shrink: 0;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.copy-button {
|
|
41
|
+
font-size: 14px;
|
|
42
|
+
padding: 0;
|
|
43
|
+
color: var($--theme-codefence-header-text-color);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.fence-title {
|
|
47
|
+
flex-grow: 1;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.icon {
|
|
51
|
+
line-height: 0;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.fence-body {
|
|
56
|
+
padding: 0;
|
|
57
|
+
overflow: auto;
|
|
58
|
+
border-radius: 0 0 4px 4px;
|
|
59
|
+
|
|
60
|
+
&.json-editor-body {
|
|
61
|
+
height: 100%;
|
|
62
|
+
line-height: 21px;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
&.collapsed {
|
|
66
|
+
max-height: 15px;
|
|
67
|
+
|
|
68
|
+
pre {
|
|
69
|
+
padding-top: 3px;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
pre {
|
|
74
|
+
display: block;
|
|
75
|
+
margin: 0 !important;
|
|
76
|
+
padding: 0 !important;
|
|
77
|
+
border-radius: 0 0 4px 4px;
|
|
78
|
+
background: var($--theme-codefence-background-color) !important;
|
|
79
|
+
height: 100%;
|
|
80
|
+
width: 100%;
|
|
81
|
+
box-sizing: border-box;
|
|
82
|
+
|
|
83
|
+
&.json-editor-pre {
|
|
84
|
+
height: 100%;
|
|
85
|
+
width: 100%;
|
|
86
|
+
box-sizing: border-box;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
code {
|
|
90
|
+
background-color: transparent;
|
|
91
|
+
max-height: 600px;
|
|
92
|
+
color: white;
|
|
93
|
+
|
|
94
|
+
.linenumber {
|
|
95
|
+
min-width: 26px !important;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';
|
|
2
|
+
import React, { useState } from 'react';
|
|
3
|
+
import { PrismAsync as SyntaxHighlighter } from 'react-syntax-highlighter';
|
|
4
|
+
import { vscDarkPlus } from 'react-syntax-highlighter/dist/esm/styles/prism/index.js';
|
|
5
|
+
|
|
6
|
+
import CopyButton from '../copybutton/CopyButton';
|
|
7
|
+
|
|
8
|
+
import './CodeFence.scss';
|
|
9
|
+
|
|
10
|
+
declare global {
|
|
11
|
+
interface Window {
|
|
12
|
+
Prism: any;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
interface IProps {
|
|
17
|
+
value: string | JSX.Element;
|
|
18
|
+
noCollapse?: boolean;
|
|
19
|
+
noHeader?: boolean;
|
|
20
|
+
autoCollapse?: boolean;
|
|
21
|
+
title?: string;
|
|
22
|
+
language?: string;
|
|
23
|
+
showLineNumbers?: boolean;
|
|
24
|
+
indentation?: string;
|
|
25
|
+
className?: string;
|
|
26
|
+
jsonEditor?: boolean;
|
|
27
|
+
innerRef?: any;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export default function CodeFence(props: IProps) {
|
|
31
|
+
const [collapsed, setCollapsed] = useState(props.noCollapse ? false : props.autoCollapse || false);
|
|
32
|
+
|
|
33
|
+
const bodyClassNames: string[] = ['fence-body'];
|
|
34
|
+
if (props.jsonEditor) bodyClassNames.push('json-editor-body');
|
|
35
|
+
|
|
36
|
+
const classNames: string[] = ['fence'];
|
|
37
|
+
if (props.className) classNames.push(props.className);
|
|
38
|
+
if (props.noCollapse) classNames.push('nocollapse');
|
|
39
|
+
if (props.indentation) classNames.push(`indent-${props.indentation}`);
|
|
40
|
+
if (props.jsonEditor) classNames.push('json-editor-fence');
|
|
41
|
+
|
|
42
|
+
return (
|
|
43
|
+
<div className={classNames.join(' ')}>
|
|
44
|
+
{props.noHeader || typeof props.value !== 'string' ? (
|
|
45
|
+
''
|
|
46
|
+
) : (
|
|
47
|
+
<div
|
|
48
|
+
className={`fence-header${props.noCollapse ? '' : ' clickable'}`}
|
|
49
|
+
onClick={() => setCollapsed(props.noCollapse ? false : !collapsed)}
|
|
50
|
+
>
|
|
51
|
+
{/* this is a row-reverse flexbox, the JSX is meant to be backwards */}
|
|
52
|
+
{props.noCollapse ? undefined : (
|
|
53
|
+
<GenesysDevIcon icon={collapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />
|
|
54
|
+
)}
|
|
55
|
+
<CopyButton copyText={props.value} />
|
|
56
|
+
<span className="fence-title">{props.title}</span>
|
|
57
|
+
</div>
|
|
58
|
+
)}
|
|
59
|
+
{collapsed ? undefined : (
|
|
60
|
+
<div ref={props.innerRef || undefined} className={bodyClassNames.join(' ')}>
|
|
61
|
+
<SyntaxHighlighter language={props.language} style={vscDarkPlus} showLineNumbers={props.showLineNumbers}>
|
|
62
|
+
{props.value}
|
|
63
|
+
</SyntaxHighlighter>
|
|
64
|
+
</div>
|
|
65
|
+
)}
|
|
66
|
+
</div>
|
|
67
|
+
);
|
|
68
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -13,6 +13,7 @@ import AlertBlock from './alertblock/AlertBlock';
|
|
|
13
13
|
import LoadingPlaceholder from './loadingplaceholder/LoadingPlaceholder';
|
|
14
14
|
import Tooltip from './tooltip/Tooltip';
|
|
15
15
|
import CopyButton from './copybutton/CopyButton';
|
|
16
|
+
import CodeFence from './codefence/CodeFence';
|
|
16
17
|
|
|
17
18
|
export {
|
|
18
19
|
DxAccordion,
|
|
@@ -29,6 +30,7 @@ export {
|
|
|
29
30
|
CopyButton,
|
|
30
31
|
LoadingPlaceholder,
|
|
31
32
|
AlertBlock,
|
|
33
|
+
CodeFence,
|
|
32
34
|
};
|
|
33
35
|
|
|
34
36
|
export interface StringChangedCallback {
|