genesys-react-components 1.1.2 → 1.2.0-DEVENGAGE-3353-loading-spinner.826

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 CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 Genesys Cloud Services, Inc.
3
+ Copyright (c) 2026 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/build/index.d.ts CHANGED
@@ -16,7 +16,8 @@ import Tooltip from './tooltip/Tooltip';
16
16
  import CopyButton from './copybutton/CopyButton';
17
17
  import DataTable from './datatable/DataTable';
18
18
  import CodeFence from './codefence/CodeFence';
19
- export { DxAccordion, DxAccordionGroup, DxButton, DxItemGroup, DxCheckbox, DxLabel, DxTabbedContent, DxTabPanel, DxTextbox, DxToggle, Tooltip, CopyButton, LoadingPlaceholder, AlertBlock, CodeFence, DataTable, };
19
+ import LoadingSpinner from './loadingspinner/LoadingSpinner';
20
+ export { DxAccordion, DxAccordionGroup, DxButton, DxItemGroup, DxCheckbox, DxLabel, DxTabbedContent, DxTabPanel, DxTextbox, DxToggle, Tooltip, CopyButton, LoadingPlaceholder, AlertBlock, CodeFence, DataTable, LoadingSpinner, };
20
21
  export interface StringChangedCallback {
21
22
  (value: string): void;
22
23
  }
package/build/index.js CHANGED
@@ -32,8 +32,8 @@ function styleInject(css, ref) {
32
32
  }
33
33
  }
34
34
 
35
- var css_248z$i = ".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}";
36
- styleInject(css_248z$i);
35
+ var css_248z$j = ".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}";
36
+ styleInject(css_248z$j);
37
37
 
38
38
  function DxAccordion(props) {
39
39
  const [isOpen, setIsOpen] = useState(props.showOpen || false);
@@ -74,15 +74,15 @@ function DxAccordion(props) {
74
74
  isOpen ? React.createElement("div", { className: "accordion-content" }, props.children) : undefined));
75
75
  }
76
76
 
77
- var css_248z$h = ".dx-accordion-group {\n margin: 40px 0;\n}";
78
- styleInject(css_248z$h);
77
+ var css_248z$i = ".dx-accordion-group {\n margin: 40px 0;\n}";
78
+ styleInject(css_248z$i);
79
79
 
80
80
  function DxAccordionGroup(props) {
81
81
  return (React.createElement("div", { id: props.id, className: `dx-accordion-group${props.className ? ' ' + props.className : ''}` }, props.children));
82
82
  }
83
83
 
84
- var css_248z$g = ".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}";
85
- styleInject(css_248z$g);
84
+ var css_248z$h = ".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}";
85
+ styleInject(css_248z$h);
86
86
 
87
87
  function DxButton(props) {
88
88
  let classNames = ['dx-button'];
@@ -106,8 +106,8 @@ function DxButton(props) {
106
106
  return (React.createElement("button", { id: props.id, className: classNames.join(' '), type: "button", onClick: handleClick, disabled: props.disabled === true }, props.children));
107
107
  }
108
108
 
109
- var css_248z$f = ".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}";
110
- styleInject(css_248z$f);
109
+ var css_248z$g = ".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}";
110
+ styleInject(css_248z$g);
111
111
 
112
112
  function DxLabel(props) {
113
113
  const hasLabel = props.label && props.label !== '';
@@ -126,8 +126,8 @@ function DxLabel(props) {
126
126
  return (React.createElement("label", { id: props.id, className: className }, contents));
127
127
  }
128
128
 
129
- var css_248z$e = "@charset \"UTF-8\";\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: \"✓\";\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}";
130
- styleInject(css_248z$e);
129
+ var css_248z$f = "@charset \"UTF-8\";\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: \"✓\";\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}";
130
+ styleInject(css_248z$f);
131
131
 
132
132
  function DxCheckbox(props) {
133
133
  let initialValue = props.checked !== undefined ? props.checked : props.initiallyChecked || false;
@@ -146,18 +146,18 @@ function DxCheckbox(props) {
146
146
  React.createElement("span", { className: "label-text", title: props.description }, props.label)));
147
147
  }
148
148
 
149
- var css_248z$d = ".dx-item-group {\n display: block;\n border: 0;\n margin: 0;\n padding: 0;\n}";
149
+ var css_248z$e = ".dx-item-group {\n display: block;\n border: 0;\n margin: 0;\n padding: 0;\n}";
150
+ styleInject(css_248z$e);
151
+
152
+ var css_248z$d = "";
150
153
  styleInject(css_248z$d);
151
154
 
152
- var css_248z$c = "";
155
+ var css_248z$c = "@charset \"UTF-8\";\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: \"⌄\";\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}";
153
156
  styleInject(css_248z$c);
154
157
 
155
- var css_248z$b = "@charset \"UTF-8\";\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: \"⌄\";\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}";
158
+ var css_248z$b = ".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}";
156
159
  styleInject(css_248z$b);
157
160
 
158
- var css_248z$a = ".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}";
159
- styleInject(css_248z$a);
160
-
161
161
  function DxItemGroup(props) {
162
162
  var _a, _b;
163
163
  const [data, setData] = useState(props.items.map((item) => {
@@ -240,8 +240,8 @@ function DxItemGroup(props) {
240
240
  }
241
241
  }
242
242
 
243
- var css_248z$9 = ".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}";
244
- styleInject(css_248z$9);
243
+ var css_248z$a = ".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}";
244
+ styleInject(css_248z$a);
245
245
 
246
246
  function DxTabbedContent(props) {
247
247
  const [activeTab, setActiveTab] = useState(props.initialTabId || 0);
@@ -255,15 +255,15 @@ function DxTabbedContent(props) {
255
255
  //why you can use React.Children.toArray and React.Children.toArray.map like this: https://stackoverflow.com/questions/44721768/react-children-map-vs-react-children-toarray-map
256
256
  }
257
257
 
258
- var css_248z$8 = "";
259
- styleInject(css_248z$8);
258
+ var css_248z$9 = "";
259
+ styleInject(css_248z$9);
260
260
 
261
261
  function DxTabPanel(props) {
262
262
  return (React.createElement("div", { id: props.id, className: `dx-tab-panel${props.className ? ' ' + props.className : ''}` }, props.children));
263
263
  }
264
264
 
265
- var css_248z$7 = ".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}";
266
- styleInject(css_248z$7);
265
+ var css_248z$8 = ".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}";
266
+ styleInject(css_248z$8);
267
267
 
268
268
  const dateYyyyMmDd = /^\d{4}-\d{2}-\d{2}$/;
269
269
  function DxTextbox(props) {
@@ -431,8 +431,8 @@ function DxTextbox(props) {
431
431
  return (React.createElement(DxLabel, { id: props.id, label: props.label, description: props.description, className: props.className }, component));
432
432
  }
433
433
 
434
- var css_248z$6 = ".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}";
435
- styleInject(css_248z$6);
434
+ var css_248z$7 = ".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}";
435
+ styleInject(css_248z$7);
436
436
 
437
437
  function DxToggle(props) {
438
438
  let initialValue = props.value !== undefined ? props.value : props.initialValue;
@@ -488,8 +488,8 @@ function DxToggle(props) {
488
488
  value !== true ? React.createElement(GenesysDevIcon, { icon: trueIcon }) : undefined))));
489
489
  }
490
490
 
491
- var css_248z$5 = ".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 .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 .info-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 .info-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 .info-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 .info-icon {\n color: var(--theme-alertblock-toast-icon-color);\n}";
492
- styleInject(css_248z$5);
491
+ var css_248z$6 = ".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 .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 .info-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 .info-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 .info-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 .info-icon {\n color: var(--theme-alertblock-toast-icon-color);\n}";
492
+ styleInject(css_248z$6);
493
493
 
494
494
  function AlertBlock(props) {
495
495
  const isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false;
@@ -531,8 +531,8 @@ function AlertBlock(props) {
531
531
  React.createElement(GenesysDevIcon, { icon: isCollapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp }))) : undefined)));
532
532
  }
533
533
 
534
- var css_248z$4 = ".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}";
535
- styleInject(css_248z$4);
534
+ var css_248z$5 = ".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}";
535
+ styleInject(css_248z$5);
536
536
 
537
537
  // SimCity loading messages! https://gist.github.com/erikcox/7e96d031d00d7ecb1a2f
538
538
  const MESSAGES = [
@@ -633,8 +633,8 @@ function LoadingPlaceholder(props) {
633
633
  React.createElement("div", null)));
634
634
  }
635
635
 
636
- var css_248z$3 = "/* 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}";
637
- styleInject(css_248z$3);
636
+ var css_248z$4 = "/* 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}";
637
+ styleInject(css_248z$4);
638
638
 
639
639
  // Inspired by https://paladini.dev/posts/how-to-make-an-extremely-reusable-tooltip-component-with-react--and-nothing-else/
640
640
  function Tooltip(props) {
@@ -668,8 +668,8 @@ function Tooltip(props) {
668
668
  React.createElement("div", { className: `tooltip-tip ${props.position || 'top'}${isShowing ? ' visible' : ''}` }, props.text)));
669
669
  }
670
670
 
671
- var css_248z$2 = ".copy-button {\n cursor: pointer;\n border: 0;\n background: transparent;\n color: var(--theme-core-text-color);\n}";
672
- styleInject(css_248z$2);
671
+ var css_248z$3 = ".copy-button {\n cursor: pointer;\n border: 0;\n background: transparent;\n color: var(--theme-core-text-color);\n}";
672
+ styleInject(css_248z$3);
673
673
 
674
674
  function CopyButton(props) {
675
675
  let [copyState, setCopyState] = useState(false);
@@ -694,8 +694,8 @@ function CopyButton(props) {
694
694
  React.createElement(GenesysDevIcon, { icon: GenesysDevIcons.AppCopy })))));
695
695
  }
696
696
 
697
- var css_248z$1 = ".table-container {\n margin: 40px 0;\n}\n.table-container .filter-container {\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n width: 100%;\n box-sizing: border-box;\n}\n.table-container .filter-container .filter-toggle {\n color: var(--theme-core-link-color);\n font-size: 12px;\n line-height: 0;\n margin: 6px 0 0 10px;\n cursor: pointer;\n align-self: flex-start;\n}\n.table-container .filter-container .filter-toggle:hover {\n color: var(--theme-core-link-hover-color);\n}\n.table-container .table {\n width: 100%;\n margin: 0 30px 0 0;\n color: var(--theme-datatable-text-color);\n background-color: var(--theme-datatable-background-color);\n}\n.table-container .table td {\n border-width: 0 0 1px 0;\n border-style: solid;\n border-color: var(--theme-datatable-border-color);\n vertical-align: top;\n min-width: 80px;\n}\n.table-container .table td p {\n margin: 0;\n min-width: 10%;\n}\n.table-container .table thead tr {\n color: var(--theme-datatable-text-color);\n font-weight: bold;\n font-size: 14px;\n line-height: 24px;\n}\n.table-container .table thead tr td {\n padding: 0 10px;\n}\n.table-container .table thead tr td .header-container {\n margin: 0;\n padding: 0;\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: center;\n gap: 6px;\n width: 100%;\n}\n.table-container .table thead tr td .header-container.align-center {\n justify-content: center;\n}\n.table-container .table thead tr td .header-container.align-right {\n justify-content: flex-end;\n}\n.table-container .table thead tr td .sort-numeric {\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n align-items: center;\n}\n.table-container .table thead tr td .sort-numeric .dx-label {\n max-width: 70px;\n}\n.table-container .table thead tr td .sort-date {\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n align-items: center;\n}\n.table-container .table thead tr td .sort-date .date-filter {\n max-width: 155px;\n}\n.table-container .table thead tr.filter-spacer {\n height: 10px;\n}\n.table-container .table thead tr.filter-row {\n background-color: var(--theme-datatable-filter-background-color);\n}\n.table-container .table thead tr.filter-row td {\n border-width: 1px 0;\n vertical-align: middle;\n}\n.table-container .table thead tr.filter-row td:first-child {\n border-width: 1px 0 1px 1px;\n border-radius: 4px 0 0 4px;\n}\n.table-container .table thead tr.filter-row td:last-child {\n border-width: 1px 1px 1px 0;\n border-radius: 0 4px 4px 0;\n}\n.table-container .table tbody tr {\n font-size: 12px;\n line-height: 20px;\n}\n.table-container .table tbody tr td {\n padding: 16px 10px;\n}\n.table-container .table tbody tr td > div {\n display: flex;\n flex-flow: column nowrap;\n align-items: flex-start;\n justify-content: center;\n gap: 10px;\n}\n.table-container .table tbody tr td > div.align-center {\n justify-content: center;\n}\n.table-container .table tbody tr td > div.align-right {\n justify-content: flex-end;\n}\n.table-container .table tbody tr td > div .copy-button {\n color: unset;\n}\n.table-container .table tbody tr td > div .icon {\n line-height: 0;\n}\n.table-container .table tr td:first-child {\n padding-left: 12px;\n}\n.table-container .table tr td:last-child {\n padding-right: 12px;\n}\n.table-container.paginated .table {\n margin-bottom: 10px;\n}\n.table-container.sortable .table thead tr td {\n cursor: pointer;\n}\n.table-container.sortable .table thead tr td .sort-icon,\n.table-container.sortable .table thead tr td .filter-active-icon {\n color: var(--theme-core-link-color);\n}\n.table-container.sortable .table thead tr td.unsorted .sort-icon {\n visibility: hidden;\n}\n.table-container.sortable .table thead tr td:hover .sort-icon {\n visibility: visible;\n}";
698
- styleInject(css_248z$1);
697
+ var css_248z$2 = ".table-container {\n margin: 40px 0;\n}\n.table-container .filter-container {\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n width: 100%;\n box-sizing: border-box;\n}\n.table-container .filter-container .filter-toggle {\n color: var(--theme-core-link-color);\n font-size: 12px;\n line-height: 0;\n margin: 6px 0 0 10px;\n cursor: pointer;\n align-self: flex-start;\n}\n.table-container .filter-container .filter-toggle:hover {\n color: var(--theme-core-link-hover-color);\n}\n.table-container .table {\n width: 100%;\n margin: 0 30px 0 0;\n color: var(--theme-datatable-text-color);\n background-color: var(--theme-datatable-background-color);\n}\n.table-container .table td {\n border-width: 0 0 1px 0;\n border-style: solid;\n border-color: var(--theme-datatable-border-color);\n vertical-align: top;\n min-width: 80px;\n}\n.table-container .table td p {\n margin: 0;\n min-width: 10%;\n}\n.table-container .table thead tr {\n color: var(--theme-datatable-text-color);\n font-weight: bold;\n font-size: 14px;\n line-height: 24px;\n}\n.table-container .table thead tr td {\n padding: 0 10px;\n}\n.table-container .table thead tr td .header-container {\n margin: 0;\n padding: 0;\n display: flex;\n flex-flow: row nowrap;\n justify-content: flex-start;\n align-items: center;\n gap: 6px;\n width: 100%;\n}\n.table-container .table thead tr td .header-container.align-center {\n justify-content: center;\n}\n.table-container .table thead tr td .header-container.align-right {\n justify-content: flex-end;\n}\n.table-container .table thead tr td .sort-numeric {\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n align-items: center;\n}\n.table-container .table thead tr td .sort-numeric .dx-label {\n max-width: 70px;\n}\n.table-container .table thead tr td .sort-date {\n display: flex;\n flex-flow: row nowrap;\n gap: 8px;\n align-items: center;\n}\n.table-container .table thead tr td .sort-date .date-filter {\n max-width: 155px;\n}\n.table-container .table thead tr.filter-spacer {\n height: 10px;\n}\n.table-container .table thead tr.filter-row {\n background-color: var(--theme-datatable-filter-background-color);\n}\n.table-container .table thead tr.filter-row td {\n border-width: 1px 0;\n vertical-align: middle;\n}\n.table-container .table thead tr.filter-row td:first-child {\n border-width: 1px 0 1px 1px;\n border-radius: 4px 0 0 4px;\n}\n.table-container .table thead tr.filter-row td:last-child {\n border-width: 1px 1px 1px 0;\n border-radius: 0 4px 4px 0;\n}\n.table-container .table tbody tr {\n font-size: 12px;\n line-height: 20px;\n}\n.table-container .table tbody tr td {\n padding: 16px 10px;\n}\n.table-container .table tbody tr td > div {\n display: flex;\n flex-flow: column nowrap;\n align-items: flex-start;\n justify-content: center;\n gap: 10px;\n}\n.table-container .table tbody tr td > div.align-center {\n justify-content: center;\n}\n.table-container .table tbody tr td > div.align-right {\n justify-content: flex-end;\n}\n.table-container .table tbody tr td > div .copy-button {\n color: unset;\n}\n.table-container .table tbody tr td > div .icon {\n line-height: 0;\n}\n.table-container .table tr td:first-child {\n padding-left: 12px;\n}\n.table-container .table tr td:last-child {\n padding-right: 12px;\n}\n.table-container.paginated .table {\n margin-bottom: 10px;\n}\n.table-container.sortable .table thead tr td {\n cursor: pointer;\n}\n.table-container.sortable .table thead tr td .sort-icon,\n.table-container.sortable .table thead tr td .filter-active-icon {\n color: var(--theme-core-link-color);\n}\n.table-container.sortable .table thead tr td.unsorted .sort-icon {\n visibility: hidden;\n}\n.table-container.sortable .table thead tr td:hover .sort-icon {\n visibility: visible;\n}";
698
+ styleInject(css_248z$2);
699
699
 
700
700
  /* eslint-disable react-hooks/exhaustive-deps */
701
701
  const TABLE_CLASS_REGEX = /(?:^|\s)table(?:$|\s)/i;
@@ -994,8 +994,8 @@ function DataTable(props) {
994
994
  }))))));
995
995
  }
996
996
 
997
- var css_248z = ".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}";
998
- styleInject(css_248z);
997
+ var css_248z$1 = ".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}";
998
+ styleInject(css_248z$1);
999
999
 
1000
1000
  function CodeFence(props) {
1001
1001
  var _a;
@@ -1024,5 +1024,12 @@ function CodeFence(props) {
1024
1024
  !disableHighlighting && (React.createElement(PrismAsync, { language: (_a = props.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(), style: vscDarkPlus, showLineNumbers: props.showLineNumbers }, props.value))))));
1025
1025
  }
1026
1026
 
1027
- export { AlertBlock, CodeFence, CopyButton, DataTable, DxAccordion, DxAccordionGroup, DxButton, DxCheckbox, DxItemGroup, DxLabel, DxTabPanel, DxTabbedContent, DxTextbox, DxToggle, LoadingPlaceholder, Tooltip };
1027
+ var css_248z = ".loading-spinner {\n --loading-spinner-size: 10px;\n width: var(--loading-spinner-size);\n height: var(--loading-spinner-size);\n border-top-color: var(--theme-card-icon-color);\n border-right-color: transparent;\n border-bottom-color: transparent;\n border-style: solid;\n border-width: calc(var(--loading-spinner-size) / 5);\n border-left: dotted var(--theme-card-icon-color);\n border-radius: 50%;\n animation: spin 0.7s linear infinite;\n}\n.loading-spinner.small {\n --loading-spinner-size: 10px;\n}\n.loading-spinner.medium {\n --loading-spinner-size: 20px;\n}\n.loading-spinner.large {\n --loading-spinner-size: 30px;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}";
1028
+ styleInject(css_248z);
1029
+
1030
+ function LoadingSpinner(props) {
1031
+ return React.createElement("div", { className: `loading-spinner ${props.size || 'medium'}` });
1032
+ }
1033
+
1034
+ export { AlertBlock, CodeFence, CopyButton, DataTable, DxAccordion, DxAccordionGroup, DxButton, DxCheckbox, DxItemGroup, DxLabel, DxTabPanel, DxTabbedContent, DxTextbox, DxToggle, LoadingPlaceholder, LoadingSpinner, Tooltip };
1028
1035
  //# sourceMappingURL=index.js.map
@@ -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","../src/datatable/DataTable.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';\n\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.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 { BaseComponentProps } from '..';\n\nimport './DxAccordionGroup.scss';\n\ninterface IProps extends BaseComponentProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport default function DxAccordionGroup(props: IProps) {\n\treturn (\n\t\t<div id={props.id} className={`dx-accordion-group${props.className ? ' ' + props.className : ''}`}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport { BaseComponentProps, VoidEventCallback } from '..';\n\nimport './DxButton.scss';\n\ninterface IProps extends BaseComponentProps {\n\ttype?: 'primary' | 'secondary' | 'link';\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\tonClick?: VoidEventCallback;\n\tonClickRaw?: React.MouseEventHandler<HTMLButtonElement>;\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\t// Raise raw event\n\t\tif (props.onClickRaw) {\n\t\t\tprops.onClickRaw(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// Raise managed event\n\t\tif (props.onClick) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tprops.onClick();\n\t\t\treturn;\n\t\t}\n\t};\n\n\treturn (\n\t\t<button id={props.id} 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 { BaseComponentProps } from '..';\n\nimport './DxLabel.scss';\n\ninterface IProps extends BaseComponentProps {\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 (\n\t\t<label id={props.id} className={className}>\n\t\t\t{contents}\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { BaseComponentProps, CheckedChangedCallback } from '..';\n\nimport './DxCheckbox.scss';\n\ninterface IProps extends BaseComponentProps {\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 id={props.id} 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\ttitle={props.description}\n\t\t\t/>\n\t\t\t<span className=\"label-text\" title={props.description}>\n\t\t\t\t{props.label}\n\t\t\t</span>\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\n\nimport { DxItemGroupItem, DxItemGroupItemValue, DxItemGroupProps } from '..';\nimport DxLabel from '../dxlabel/DxLabel';\nimport DxCheckbox from './DxCheckbox';\n\nimport './DxItemGroup.scss';\nimport './radiobutton.scss';\nimport './dropdown.scss';\nimport './multiselect.scss';\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 id={props.id} 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\tid={props.id}\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\n\treturn (\n\t\t<div id={props.id} className={`dx-tabbed-content${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"tab-titles\">\n\t\t\t\t{React.Children.toArray(props.children).map((child: any, i) => {\n\t\t\t\t\tif (!child) return;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span key={i} className={`tab-title${i === activeTab ? ' active' : ''}`} onClick={() => setActiveTab(i)}>\n\t\t\t\t\t\t\t{!child.props || !child.props.title ? 'Unknown title' : child.props.title}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\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\t//why you can use React.Children.toArray and React.Children.toArray.map like this: https://stackoverflow.com/questions/44721768/react-children-map-vs-react-children-toarray-map\n}\n","import React from 'react';\nimport { DxTabPanelProps } from '..';\n\nimport './DxTabPanel.scss';\n\nexport default function DxTabPanel(props: DxTabPanelProps) {\n\treturn (\n\t\t<div id={props.id} className={`dx-tab-panel${props.className ? ' ' + props.className : ''}`}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\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\nconst dateYyyyMmDd = /^\\d{4}-\\d{2}-\\d{2}$/;\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//Set initial value of date to avoid invalid format error\n\t\tif (inputType === 'date') {\n\t\t\tlet parsedDate: Date;\n\t\t\tif (props.initialValue) {\n\t\t\t\tparsedDate = parseDate(props.initialValue);\n\t\t\t} else {\n\t\t\t\tparsedDate = parseDate(props.value);\n\t\t\t}\n\t\t\tconst formattedDate = formatDate(parsedDate?.toISOString());\n\t\t\tsetValue(formattedDate);\n\t\t\t// Ignore value changed if initial value was set; they're mutually exclusive\n\t\t} else if (!props.initialValue && inputType !== 'date') {\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) 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\tif (props.onKeyboardEvent) {\n\t\t\tprops.onKeyboardEvent(event);\n\t\t}\n\n\t\t// Escape - cancel search\n\t\tif (event.key === 'Escape' && props.clearOnEscape) {\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//Formats date to fit required HTML format\n\tconst formatDate = (inputDate: string) => {\n\t\tconst date = new Date(inputDate);\n\t\tif (isNaN(date.getTime())) return ''; // Return empty if invalid date\n\n\t\t// Format as YYYY-MM-DD for HTML date input\n\t\tconst year = date.getFullYear();\n\t\tconst month = String(date.getMonth() + 1).padStart(2, '0');\n\t\tconst day = String(date.getDate()).padStart(2, '0');\n\t\treturn `${year}-${month}-${day}`;\n\t};\n\n\tconst parseDate = (input: string) => {\n\t\tif (!input) return;\n\t\tlet date;\n\t\tif (input.match(dateYyyyMmDd)) {\n\t\t\t/* \n\t\t\t * This date format causes the Date constructor to treat it as a UTC date, whereas the other formats are parsed as local dates.\n\t\t\t * This causes the local timezone offset to be subtracted from the UTC date time,\n\t\t\t * and the result is that the parsed date is a day behind the date selected.\n\t\t\t * This block adjusts for the timezone offset to make the dates consistent regardless of the input date string format.\n\t\t\t */\n\t\t\tdate = new Date(input);\n\t\t\tlet offset = date.getTimezoneOffset() * 60000;\n\t\t\tdate = new Date(date.getTime() + offset);\n\t\t} else {\n\t\t\tdate = new Date(input);\n\t\t}\n\t\treturn isNaN(date.getTime()) ? null : date;\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 id={props.id} 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';\n\nimport { BooleanChangedCallback, DxToggleProps } from '..';\nimport DxLabel from '../dxlabel/DxLabel';\n\nimport './DxToggle.scss';\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 setToggleValue = () => {\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\tconst getToggleValue = () => {\n\t\tif (props.disabled) return 'mixed';\n\t\tif (props.isTriState) {\n\t\t\tif (value === undefined) return 'mixed';\n\t\t}\n\t\tif (value === true) return 'true';\n\t\tif (value === false) return 'false';\n\t};\n\n\treturn (\n\t\t<DxLabel id={props.id} label={props.label} description={props.description} className={props.className}>\n\t\t\t<div aria-checked={getToggleValue()} className={`dx-toggle-container${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t<div className=\"dx-toggle\" onClick={setToggleValue}>\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\">&nbsp;</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\">&nbsp;</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 { BaseComponentProps } from '..';\n\nimport './AlertBlock.scss';\n\ninterface IProps extends BaseComponentProps {\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\tid={props.id}\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 { BaseComponentProps } from '..';\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 extends BaseComponentProps {\n\ttext?: string;\n}\n\nexport default function LoadingPlaceholder(props: IProps) {\n\treturn (\n\t\t<div id={props.id} 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';\n\nimport Tooltip from '../tooltip/Tooltip';\nimport { BaseComponentProps } from '..';\n\nimport './CopyButton.scss';\n\ninterface IProps extends BaseComponentProps {\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 id={props.id} 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","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState, ReactNode } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport moment from 'moment';\n\nimport DxTextbox from '../dxtextbox/DxTextbox';\nimport DxToggle from '../dxtoggle/DxToggle';\nimport CopyButton from '../copybutton/CopyButton';\nimport { BaseComponentProps, DataTableRow } from '..';\n\nimport './DataTable.scss';\n\ninterface IProps extends BaseComponentProps {\n\trows: DataTableRow[];\n\theaderRow?: DataTableRow;\n\tclassName?: string;\n\tindentation?: number;\n\tsortable?: boolean;\n\tfilterable?: boolean;\n}\n\ninterface ColumnFilterCollection {\n\t[colId: string]: ColumnFilter;\n}\n\ninterface ColumnFilter {\n\tcolId: number;\n\tdataType: 'string' | 'number' | 'datetime';\n\tfilter: any;\n\tfilterModifier?: FilterModifierGtLt;\n}\n\ntype FilterModifierGtLt = 'greaterthan' | 'lessthan';\n\ninterface ColumnSort {\n\tcolId?: number;\n\tsort: 'none' | 'ascending' | 'descending';\n}\n\ninterface ColumnTypeCollection {\n\t[colId: string]: 'string' | 'number' | 'date';\n}\n\ninterface RawColumnTypeCollection {\n\t[colId: string]: RawColumnTypeCount;\n}\n\ninterface RawColumnTypeCount {\n\tcolId: number;\n\tnumber: number;\n\tdate: number;\n\tstring: number;\n}\n\nconst TABLE_CLASS_REGEX = /(?:^|\\s)table(?:$|\\s)/i;\n\nexport default function DataTable(props: IProps) {\n\t// filterRows filters the input rows using the configured filters\n\tconst filterRows = (): DataTableRow[] => {\n\t\t// Return raw data if we don't have info to filter\n\t\tif (!columnTypes || Object.keys(columnTypes).length === 0 || !filters || Object.keys(filters).length === 0) return parsedRows;\n\n\t\t// Filter source rows\n\t\tlet newRows = [] as DataTableRow[];\n\t\tlet anyValidFilters = false;\n\t\tparsedRows.forEach((row) => {\n\t\t\tlet filterMatch: boolean | undefined;\n\t\t\tObject.keys(filters)\n\t\t\t\t.map((i) => {\n\t\t\t\t\tlet ii = parseInt(i);\n\t\t\t\t\treturn ii;\n\t\t\t\t})\n\t\t\t\t// .map(parseInt)\n\t\t\t\t.forEach((colId) => {\n\t\t\t\t\tconst filter = filters[colId];\n\t\t\t\t\tif (!filter || filter.filter === '' || filter.filter === undefined) return;\n\t\t\t\t\tswitch (filter.dataType) {\n\t\t\t\t\t\tcase 'datetime': {\n\t\t\t\t\t\t\tconst m = filter.filter as moment.Moment | undefined;\n\t\t\t\t\t\t\tconst value = row.cells[colId].parsedContent as Date | undefined;\n\t\t\t\t\t\t\tif (filterMatch === false || !moment.isMoment(m) || !m.isValid() || !value) return;\n\t\t\t\t\t\t\tconst datePoint = m.toDate();\n\t\t\t\t\t\t\tfilterMatch = filter.filterModifier === 'greaterthan' ? value > datePoint : value < datePoint;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'number': {\n\t\t\t\t\t\t\tif (filter.filter === '' || filter.filter === undefined || !filter.filterModifier || filterMatch === false) return;\n\t\t\t\t\t\t\tif (filter.filterModifier === 'greaterthan' && (row.cells[colId].parsedContent as number) >= filter.filter)\n\t\t\t\t\t\t\t\tfilterMatch = true;\n\t\t\t\t\t\t\telse if (filter.filterModifier === 'lessthan' && (row.cells[colId].parsedContent as number) <= filter.filter)\n\t\t\t\t\t\t\t\tfilterMatch = true;\n\t\t\t\t\t\t\telse if (filter.filterModifier !== undefined) filterMatch = false;\n\t\t\t\t\t\t\t// Didn't hit a valid filter, take no action\n\t\t\t\t\t\t\tif (filterMatch === undefined) return;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'string':\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tif (filter.filter === '' || filterMatch === false) return;\n\t\t\t\t\t\t\tfilterMatch = (row.cells[colId].parsedContent as string).includes(filter.filter);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tanyValidFilters = true;\n\t\t\t\t});\n\t\t\tif (filterMatch === true) newRows.push(row);\n\t\t});\n\n\t\treturn anyValidFilters ? newRows : parsedRows;\n\t};\n\n\t// sortRows sorts the filtered rows using the configured sorting\n\tconst sortRows = (): DataTableRow[] => {\n\t\t// Abort if we can't sort\n\t\tif (!colsort || colsort.colId === undefined || filteredRows.length < 2 || !filteredRows[0].cells[colsort.colId]) return filteredRows;\n\n\t\t// Unsort rows\n\t\tif (colsort.sort === 'none') {\n\t\t\treturn filteredRows;\n\t\t}\n\n\t\t// Sort rows\n\t\tconst i = colsort.colId;\n\t\tconst isAscending = colsort.sort === 'ascending';\n\t\treturn [...filteredRows].sort((a, b) => {\n\t\t\tif ((a.cells[i].parsedContent as number) < (b.cells[i].parsedContent as number)) return isAscending ? -1 : 1;\n\t\t\tif ((a.cells[i].parsedContent as number) > (b.cells[i].parsedContent as number)) return isAscending ? 1 : -1;\n\t\t\treturn 0;\n\t\t});\n\t};\n\n\tconst [parsedRows, setParsedRows] = useState([] as DataTableRow[]);\n\t// Filtered set of rows (first pass)\n\tconst [filteredRows, setFilteredRows] = useState([] as DataTableRow[]);\n\t// Sorted set of rows (second pass)\n\tconst [sortedRows, setSortedRows] = useState([] as DataTableRow[]);\n\t// Rows to display in the table (third pass, paginated)\n\tconst [rows, setRows] = useState([] as DataTableRow[]);\n\n\tconst [filters, setFilters] = useState({} as ColumnFilterCollection);\n\tconst [colsort, setColsort] = useState({ sort: 'none' } as ColumnSort);\n\n\tconst [columnTypes, setColumnTypes] = useState({} as ColumnTypeCollection);\n\tconst [isFilterOpen, setIsFilterOpen] = useState(false);\n\n\t// Reinit when rows change\n\tuseEffect(() => {\n\t\t// Infer column types\n\t\tif (props.rows.length > 0 && props.rows[0].cells.length > 0) {\n\t\t\t// Seed columns\n\t\t\tconst cellTypeData = {} as RawColumnTypeCollection;\n\t\t\tprops.rows[0].cells.forEach((cell, i) => (cellTypeData[i] = { colId: i, number: 0, date: 0, string: 0 }));\n\t\t\t// Iterate rows and cells to infer and count types\n\t\t\tprops.rows.forEach((row) => {\n\t\t\t\trow.cells.forEach((cell, i) => {\n\t\t\t\t\tif (!cell || !cell.content || !cellTypeData[i]) return;\n\n\t\t\t\t\t// Check number first (moment parses numbers as dates successfully)\n\t\t\t\t\t// Passing a string to isNaN uses built-in type coersion logic that's different than Number.parseFloat()\n\t\t\t\t\tif (!isNaN(cell.content as any) && !isNaN(parseFloat(cell.content))) {\n\t\t\t\t\t\tcellTypeData[i].number++;\n\t\t\t\t\t\tcell.parsedContent = parseFloat(cell.content);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check date\n\t\t\t\t\tif (moment(cell.content, 'M/D/YYYY', true).isValid() || moment(cell.content, 'M-D-YYYY', true).isValid()) {\n\t\t\t\t\t\tcellTypeData[i].date++;\n\t\t\t\t\t\tcell.parsedContent = Date.parse(cell.content);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Default: string\n\t\t\t\t\tcellTypeData[i].string++;\n\t\t\t\t\tcell.parsedContent = cell.content.toLowerCase();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Assign column types\n\t\t\tconst newColumnTypes = {} as ColumnTypeCollection;\n\t\t\tfor (let i = 0; i < props.rows[0].cells.length; i++) {\n\t\t\t\tconst maxCount = Math.max(cellTypeData[i].date, cellTypeData[i].number, cellTypeData[i].string);\n\t\t\t\tif (cellTypeData[i].date === maxCount) newColumnTypes[i] = 'date';\n\t\t\t\telse if (cellTypeData[i].number === maxCount) newColumnTypes[i] = 'number';\n\t\t\t\telse newColumnTypes[i] = 'string';\n\t\t\t}\n\t\t\tsetColumnTypes(newColumnTypes);\n\t\t\tsetParsedRows(props.rows);\n\t\t} else {\n\t\t\tsetRows(props.rows);\n\t\t\tsetParsedRows(props.rows);\n\t\t}\n\t}, [props.rows]);\n\n\t// Filter changed\n\tuseEffect(() => {\n\t\tconst r = filterRows();\n\t\tsetFilteredRows(r);\n\t}, [filters, columnTypes, parsedRows]);\n\n\t// Sort or filtered rows (source) changed\n\tuseEffect(() => {\n\t\tconst r = sortRows();\n\t\tsetSortedRows(r);\n\t}, [colsort, filteredRows]);\n\n\t// sorted rows (source) changed\n\tuseEffect(() => {\n\t\tsetRows([...sortedRows]);\n\t}, [sortedRows]);\n\n\t// Consolidation props to identify conditions for rendering\n\tconst isSortable = props.sortable || props.className?.includes('sortable') || props.className?.includes('sort-and-filter');\n\tconst isFilterable = props.filterable || props.className?.includes('filterable') || props.className?.includes('sort-and-filter');\n\n\t// getSortCaret returns the FontAwesome glyph name to use for the column sort indicator based on the current sort configuration\n\tconst getSortCaret = (columnId: number): GenesysDevIcons => {\n\t\tif (colsort.colId !== columnId || colsort.sort === 'none') return GenesysDevIcons.AppSort;\n\t\treturn colsort.sort === 'descending' ? GenesysDevIcons.AppSortDown : GenesysDevIcons.AppSortUp;\n\t};\n\n\t// The filterChanged functions are raised when the user updates a filter column\n\tconst stringFilterChanged = (colId: string, filterValue: string) => {\n\t\tconst newFilters = { ...filters };\n\t\tnewFilters[colId] = { colId: parseInt(colId), dataType: 'string', filter: filterValue.toLowerCase() };\n\t\tsetFilters(newFilters);\n\t};\n\tconst numberFilterChanged = (colId: string, filterValue: string) => {\n\t\tconst newFilters = { ...filters };\n\t\tconst i = parseFloat(filterValue);\n\t\tnewFilters[colId] = { colId: parseInt(colId), dataType: 'number', filter: isNaN(i) ? undefined : i, filterModifier: 'lessthan' };\n\t\tif (filters[colId]) newFilters[colId].filterModifier = filters[colId].filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\tconst numberFilterModifierChanged = (colId: string, filterModifier: FilterModifierGtLt) => {\n\t\tconst newFilters = { ...filters };\n\t\tif (!newFilters[colId]) newFilters[colId] = { colId: parseInt(colId), dataType: 'number', filter: undefined };\n\t\tnewFilters[colId].filterModifier = filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\tconst dateFilterChanged = (colId: string, filterValue: string) => {\n\t\tconst newFilters = { ...filters };\n\t\tnewFilters[colId] = { colId: parseInt(colId), dataType: 'datetime', filter: moment(filterValue), filterModifier: 'lessthan' };\n\t\tif (filters[colId]) newFilters[colId].filterModifier = filters[colId].filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\tconst dateFilterModifierChanged = (colId: string, filterModifier: FilterModifierGtLt) => {\n\t\tconst newFilters = { ...filters };\n\t\tif (!newFilters[colId]) newFilters[colId] = { colId: parseInt(colId), dataType: 'datetime', filter: undefined };\n\t\tnewFilters[colId].filterModifier = filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\n\t// sortChanged is raised when the user clicks a sortable column header\n\tconst sortChanged = (columnId: string) => {\n\t\tconst colId = parseInt(columnId);\n\t\tconst newSort = { ...colsort };\n\t\tnewSort.colId = colId;\n\t\t// Unset column on invalid id\n\t\tif (colId < 0 || (rows[0] && colId >= rows[0].cells.length)) newSort.colId = undefined;\n\n\t\t// Update sort order\n\t\tif (newSort.colId !== colsort.colId) {\n\t\t\t// New sorts are always descending first\n\t\t\tnewSort.sort = 'ascending';\n\t\t} else {\n\t\t\t// Rotate sort order\n\t\t\tswitch (newSort.sort) {\n\t\t\t\tcase 'ascending': {\n\t\t\t\t\tnewSort.sort = 'descending';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'descending': {\n\t\t\t\t\tnewSort.sort = 'none';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tnewSort.sort = 'ascending';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsetColsort(newSort);\n\t};\n\n\t/***** Setup complete, build the component *****/\n\n\t// Build column headers\n\tlet columnHeaders;\n\tif (props.headerRow) {\n\t\tcolumnHeaders = (\n\t\t\t<tr>\n\t\t\t\t{props.headerRow.cells.map((cell, i) => (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\talign={cell?.align || 'left'}\n\t\t\t\t\t\tclassName={colsort.colId === i && colsort.sort !== 'none' ? '' : 'unsorted'}\n\t\t\t\t\t\tonClick={isSortable ? () => sortChanged(i.toString()) : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={`header-container align-${cell?.align || 'left'}`}>\n\t\t\t\t\t\t\t{cell.renderedContent || cell.content}\n\t\t\t\t\t\t\t{filters[i] && filters[i].filter !== '' && filters[i].filter !== undefined ? (\n\t\t\t\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppFilter} className=\"filter-active-icon\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{isSortable ? <GenesysDevIcon icon={getSortCaret(i)} className=\"sort-icon\" /> : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t))}\n\t\t\t</tr>\n\t\t);\n\t}\n\n\t// Build filter row\n\tlet filterRow;\n\tif (isFilterable && Object.keys(columnTypes).length > 0) {\n\t\tfilterRow = (\n\t\t\t<React.Fragment>\n\t\t\t\t<tr className=\"filter-spacer\"></tr>\n\t\t\t\t<tr className=\"filter-row\">\n\t\t\t\t\t{Object.keys(columnTypes).map((colId, i) => {\n\t\t\t\t\t\tconst columnType = columnTypes[colId];\n\t\t\t\t\t\tswitch (columnType) {\n\t\t\t\t\t\t\tcase 'date': {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<td key={colId}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"sort-date\">\n\t\t\t\t\t\t\t\t\t\t\t<DxTextbox\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"date-filter\"\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Filter date\"\n\t\t\t\t\t\t\t\t\t\t\t\tinputType=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => dateFilterChanged(colId, value)}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={moment.isMoment(filters[i]?.filter) ? filters[i]?.filter.format('YYYY-MM-DD') : undefined}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<DxToggle\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Comparison\"\n\t\t\t\t\t\t\t\t\t\t\t\tfalseIcon={GenesysDevIcons.AppChevronLeft}\n\t\t\t\t\t\t\t\t\t\t\t\ttrueIcon={GenesysDevIcons.AppChevronRight}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filterModifier === 'greaterthan'}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => dateFilterModifierChanged(colId, value === false ? 'lessthan' : 'greaterthan')}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase 'number': {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<td key={colId}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"sort-numeric\">\n\t\t\t\t\t\t\t\t\t\t\t<DxTextbox\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Value\"\n\t\t\t\t\t\t\t\t\t\t\t\tinputType=\"decimal\"\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => numberFilterChanged(colId, value)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={props.headerRow?.cells[i]?.content}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filter}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<DxToggle\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Comparison\"\n\t\t\t\t\t\t\t\t\t\t\t\tfalseIcon={GenesysDevIcons.AppChevronLeft}\n\t\t\t\t\t\t\t\t\t\t\t\ttrueIcon={GenesysDevIcons.AppChevronRight}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filterModifier === 'greaterthan'}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => numberFilterModifierChanged(colId, value === false ? 'lessthan' : 'greaterthan')}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase 'string':\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<td key={colId}>\n\t\t\t\t\t\t\t\t\t\t<DxTextbox\n\t\t\t\t\t\t\t\t\t\t\tlabel=\"Filter text\"\n\t\t\t\t\t\t\t\t\t\t\tinputType=\"text\"\n\t\t\t\t\t\t\t\t\t\t\ticon={GenesysDevIcons.AppSearch}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={props.headerRow?.cells[i]?.content}\n\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => stringFilterChanged(colId, value)}\n\t\t\t\t\t\t\t\t\t\t\tclearButton={true}\n\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filter}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t</tr>\n\t\t\t</React.Fragment>\n\t\t);\n\t}\n\n\t// Build optional table header\n\tlet thead;\n\tif (columnHeaders || filterRow) {\n\t\tthead = (\n\t\t\t<thead>\n\t\t\t\t{columnHeaders}\n\t\t\t\t{isFilterOpen ? filterRow : undefined}\n\t\t\t</thead>\n\t\t);\n\t}\n\n\t// Make sure classes always has \"table\"; sometimes it will be provided, sometimes not\n\tlet tableClassName = props.className || '';\n\tif (tableClassName?.match(TABLE_CLASS_REGEX) === null) {\n\t\ttableClassName = 'table ' + tableClassName.trim();\n\t}\n\n\treturn (\n\t\t<div className={`table-container${isSortable ? ' sortable' : ''}${isFilterable ? ' filterable' : ''}`}>\n\t\t\t<div className=\"filter-container\">\n\t\t\t\t<div className=\"filter-toggle\" style={{ visibility: isFilterable ? 'visible' : 'hidden' }}>\n\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppFilter} onClick={() => setIsFilterOpen(!isFilterOpen)} />\n\t\t\t\t</div>\n\t\t\t\t<table id={props.id} className={tableClassName} cellSpacing=\"0\">\n\t\t\t\t\t{thead}\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{rows.map((row, i) => {\n\t\t\t\t\t\t\tconst rowClass: string = row.className?.trim() || '';\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<tr key={i} className={rowClass}>\n\t\t\t\t\t\t\t\t\t{row.cells.map((cell, ii) => (\n\t\t\t\t\t\t\t\t\t\t<td key={ii} align={cell?.align || 'left'}>\n\t\t\t\t\t\t\t\t\t\t\t{cell?.content ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={`align-${cell?.align || 'left'}${cell?.className ? ' ' + cell.className.trim() : ''}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cell.renderedContent || cell.content}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cell.copyButton ? <CopyButton copyText={cell.content} /> : undefined}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</div>\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/cjs/styles/prism/index.js';\n\nimport CopyButton from '../copybutton/CopyButton';\nimport { BaseComponentProps } from '..';\n\nimport './CodeFence.scss';\n\ndeclare global {\n\tinterface Window {\n\t\tPrism: any;\n\t}\n}\n\ninterface IProps extends BaseComponentProps {\n\tvalue: string;\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\tdisableSyntaxHighlighting?: boolean;\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\tconst disableHighlighting = props.disableSyntaxHighlighting || props.value.length > 100000;\n\n\treturn (\n\t\t<div id={props.id} 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{disableHighlighting && (\n\t\t\t\t\t\t<pre>\n\t\t\t\t\t\t\t<code>{props.value}</code>\n\t\t\t\t\t\t</pre>\n\t\t\t\t\t)}\n\t\t\t\t\t{!disableHighlighting && (\n\t\t\t\t\t\t<SyntaxHighlighter language={props.language?.toLowerCase()} style={vscDarkPlus} showLineNumbers={props.showLineNumbers}>\n\t\t\t\t\t\t\t{props.value}\n\t\t\t\t\t\t</SyntaxHighlighter>\n\t\t\t\t\t)}\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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"}
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/datatable/DataTable.tsx","../src/codefence/CodeFence.tsx","../src/loadingspinner/LoadingSpinner.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';\n\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.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 { BaseComponentProps } from '..';\n\nimport './DxAccordionGroup.scss';\n\ninterface IProps extends BaseComponentProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport default function DxAccordionGroup(props: IProps) {\n\treturn (\n\t\t<div id={props.id} className={`dx-accordion-group${props.className ? ' ' + props.className : ''}`}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport { BaseComponentProps, VoidEventCallback } from '..';\n\nimport './DxButton.scss';\n\ninterface IProps extends BaseComponentProps {\n\ttype?: 'primary' | 'secondary' | 'link';\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\tonClick?: VoidEventCallback;\n\tonClickRaw?: React.MouseEventHandler<HTMLButtonElement>;\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\t// Raise raw event\n\t\tif (props.onClickRaw) {\n\t\t\tprops.onClickRaw(e);\n\t\t\treturn;\n\t\t}\n\n\t\t// Raise managed event\n\t\tif (props.onClick) {\n\t\t\te.preventDefault();\n\t\t\te.stopPropagation();\n\t\t\tprops.onClick();\n\t\t\treturn;\n\t\t}\n\t};\n\n\treturn (\n\t\t<button id={props.id} 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 { BaseComponentProps } from '..';\n\nimport './DxLabel.scss';\n\ninterface IProps extends BaseComponentProps {\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 (\n\t\t<label id={props.id} className={className}>\n\t\t\t{contents}\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\n\nimport { BaseComponentProps, CheckedChangedCallback } from '..';\n\nimport './DxCheckbox.scss';\n\ninterface IProps extends BaseComponentProps {\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 id={props.id} 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\ttitle={props.description}\n\t\t\t/>\n\t\t\t<span className=\"label-text\" title={props.description}>\n\t\t\t\t{props.label}\n\t\t\t</span>\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\n\nimport { DxItemGroupItem, DxItemGroupItemValue, DxItemGroupProps } from '..';\nimport DxLabel from '../dxlabel/DxLabel';\nimport DxCheckbox from './DxCheckbox';\n\nimport './DxItemGroup.scss';\nimport './radiobutton.scss';\nimport './dropdown.scss';\nimport './multiselect.scss';\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 id={props.id} 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\tid={props.id}\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\n\treturn (\n\t\t<div id={props.id} className={`dx-tabbed-content${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"tab-titles\">\n\t\t\t\t{React.Children.toArray(props.children).map((child: any, i) => {\n\t\t\t\t\tif (!child) return;\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<span key={i} className={`tab-title${i === activeTab ? ' active' : ''}`} onClick={() => setActiveTab(i)}>\n\t\t\t\t\t\t\t{!child.props || !child.props.title ? 'Unknown title' : child.props.title}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\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\t//why you can use React.Children.toArray and React.Children.toArray.map like this: https://stackoverflow.com/questions/44721768/react-children-map-vs-react-children-toarray-map\n}\n","import React from 'react';\nimport { DxTabPanelProps } from '..';\n\nimport './DxTabPanel.scss';\n\nexport default function DxTabPanel(props: DxTabPanelProps) {\n\treturn (\n\t\t<div id={props.id} className={`dx-tab-panel${props.className ? ' ' + props.className : ''}`}>\n\t\t\t{props.children}\n\t\t</div>\n\t);\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\nconst dateYyyyMmDd = /^\\d{4}-\\d{2}-\\d{2}$/;\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//Set initial value of date to avoid invalid format error\n\t\tif (inputType === 'date') {\n\t\t\tlet parsedDate: Date;\n\t\t\tif (props.initialValue) {\n\t\t\t\tparsedDate = parseDate(props.initialValue);\n\t\t\t} else {\n\t\t\t\tparsedDate = parseDate(props.value);\n\t\t\t}\n\t\t\tconst formattedDate = formatDate(parsedDate?.toISOString());\n\t\t\tsetValue(formattedDate);\n\t\t\t// Ignore value changed if initial value was set; they're mutually exclusive\n\t\t} else if (!props.initialValue && inputType !== 'date') {\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) 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\tif (props.onKeyboardEvent) {\n\t\t\tprops.onKeyboardEvent(event);\n\t\t}\n\n\t\t// Escape - cancel search\n\t\tif (event.key === 'Escape' && props.clearOnEscape) {\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//Formats date to fit required HTML format\n\tconst formatDate = (inputDate: string) => {\n\t\tconst date = new Date(inputDate);\n\t\tif (isNaN(date.getTime())) return ''; // Return empty if invalid date\n\n\t\t// Format as YYYY-MM-DD for HTML date input\n\t\tconst year = date.getFullYear();\n\t\tconst month = String(date.getMonth() + 1).padStart(2, '0');\n\t\tconst day = String(date.getDate()).padStart(2, '0');\n\t\treturn `${year}-${month}-${day}`;\n\t};\n\n\tconst parseDate = (input: string) => {\n\t\tif (!input) return;\n\t\tlet date;\n\t\tif (input.match(dateYyyyMmDd)) {\n\t\t\t/* \n\t\t\t * This date format causes the Date constructor to treat it as a UTC date, whereas the other formats are parsed as local dates.\n\t\t\t * This causes the local timezone offset to be subtracted from the UTC date time,\n\t\t\t * and the result is that the parsed date is a day behind the date selected.\n\t\t\t * This block adjusts for the timezone offset to make the dates consistent regardless of the input date string format.\n\t\t\t */\n\t\t\tdate = new Date(input);\n\t\t\tlet offset = date.getTimezoneOffset() * 60000;\n\t\t\tdate = new Date(date.getTime() + offset);\n\t\t} else {\n\t\t\tdate = new Date(input);\n\t\t}\n\t\treturn isNaN(date.getTime()) ? null : date;\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 id={props.id} 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';\n\nimport { BooleanChangedCallback, DxToggleProps } from '..';\nimport DxLabel from '../dxlabel/DxLabel';\n\nimport './DxToggle.scss';\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 setToggleValue = () => {\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\tconst getToggleValue = () => {\n\t\tif (props.disabled) return 'mixed';\n\t\tif (props.isTriState) {\n\t\t\tif (value === undefined) return 'mixed';\n\t\t}\n\t\tif (value === true) return 'true';\n\t\tif (value === false) return 'false';\n\t};\n\n\treturn (\n\t\t<DxLabel id={props.id} label={props.label} description={props.description} className={props.className}>\n\t\t\t<div aria-checked={getToggleValue()} className={`dx-toggle-container${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t<div className=\"dx-toggle\" onClick={setToggleValue}>\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\">&nbsp;</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\">&nbsp;</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 { BaseComponentProps } from '..';\n\nimport './AlertBlock.scss';\n\ninterface IProps extends BaseComponentProps {\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\tid={props.id}\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 { BaseComponentProps } from '..';\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 extends BaseComponentProps {\n\ttext?: string;\n}\n\nexport default function LoadingPlaceholder(props: IProps) {\n\treturn (\n\t\t<div id={props.id} 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';\n\nimport Tooltip from '../tooltip/Tooltip';\nimport { BaseComponentProps } from '..';\n\nimport './CopyButton.scss';\n\ninterface IProps extends BaseComponentProps {\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 id={props.id} 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","/* eslint-disable react-hooks/exhaustive-deps */\nimport React, { useEffect, useState, ReactNode } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport moment from 'moment';\n\nimport DxTextbox from '../dxtextbox/DxTextbox';\nimport DxToggle from '../dxtoggle/DxToggle';\nimport CopyButton from '../copybutton/CopyButton';\nimport { BaseComponentProps, DataTableRow } from '..';\n\nimport './DataTable.scss';\n\ninterface IProps extends BaseComponentProps {\n\trows: DataTableRow[];\n\theaderRow?: DataTableRow;\n\tclassName?: string;\n\tindentation?: number;\n\tsortable?: boolean;\n\tfilterable?: boolean;\n}\n\ninterface ColumnFilterCollection {\n\t[colId: string]: ColumnFilter;\n}\n\ninterface ColumnFilter {\n\tcolId: number;\n\tdataType: 'string' | 'number' | 'datetime';\n\tfilter: any;\n\tfilterModifier?: FilterModifierGtLt;\n}\n\ntype FilterModifierGtLt = 'greaterthan' | 'lessthan';\n\ninterface ColumnSort {\n\tcolId?: number;\n\tsort: 'none' | 'ascending' | 'descending';\n}\n\ninterface ColumnTypeCollection {\n\t[colId: string]: 'string' | 'number' | 'date';\n}\n\ninterface RawColumnTypeCollection {\n\t[colId: string]: RawColumnTypeCount;\n}\n\ninterface RawColumnTypeCount {\n\tcolId: number;\n\tnumber: number;\n\tdate: number;\n\tstring: number;\n}\n\nconst TABLE_CLASS_REGEX = /(?:^|\\s)table(?:$|\\s)/i;\n\nexport default function DataTable(props: IProps) {\n\t// filterRows filters the input rows using the configured filters\n\tconst filterRows = (): DataTableRow[] => {\n\t\t// Return raw data if we don't have info to filter\n\t\tif (!columnTypes || Object.keys(columnTypes).length === 0 || !filters || Object.keys(filters).length === 0) return parsedRows;\n\n\t\t// Filter source rows\n\t\tlet newRows = [] as DataTableRow[];\n\t\tlet anyValidFilters = false;\n\t\tparsedRows.forEach((row) => {\n\t\t\tlet filterMatch: boolean | undefined;\n\t\t\tObject.keys(filters)\n\t\t\t\t.map((i) => {\n\t\t\t\t\tlet ii = parseInt(i);\n\t\t\t\t\treturn ii;\n\t\t\t\t})\n\t\t\t\t// .map(parseInt)\n\t\t\t\t.forEach((colId) => {\n\t\t\t\t\tconst filter = filters[colId];\n\t\t\t\t\tif (!filter || filter.filter === '' || filter.filter === undefined) return;\n\t\t\t\t\tswitch (filter.dataType) {\n\t\t\t\t\t\tcase 'datetime': {\n\t\t\t\t\t\t\tconst m = filter.filter as moment.Moment | undefined;\n\t\t\t\t\t\t\tconst value = row.cells[colId].parsedContent as Date | undefined;\n\t\t\t\t\t\t\tif (filterMatch === false || !moment.isMoment(m) || !m.isValid() || !value) return;\n\t\t\t\t\t\t\tconst datePoint = m.toDate();\n\t\t\t\t\t\t\tfilterMatch = filter.filterModifier === 'greaterthan' ? value > datePoint : value < datePoint;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'number': {\n\t\t\t\t\t\t\tif (filter.filter === '' || filter.filter === undefined || !filter.filterModifier || filterMatch === false) return;\n\t\t\t\t\t\t\tif (filter.filterModifier === 'greaterthan' && (row.cells[colId].parsedContent as number) >= filter.filter)\n\t\t\t\t\t\t\t\tfilterMatch = true;\n\t\t\t\t\t\t\telse if (filter.filterModifier === 'lessthan' && (row.cells[colId].parsedContent as number) <= filter.filter)\n\t\t\t\t\t\t\t\tfilterMatch = true;\n\t\t\t\t\t\t\telse if (filter.filterModifier !== undefined) filterMatch = false;\n\t\t\t\t\t\t\t// Didn't hit a valid filter, take no action\n\t\t\t\t\t\t\tif (filterMatch === undefined) return;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcase 'string':\n\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\tif (filter.filter === '' || filterMatch === false) return;\n\t\t\t\t\t\t\tfilterMatch = (row.cells[colId].parsedContent as string).includes(filter.filter);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tanyValidFilters = true;\n\t\t\t\t});\n\t\t\tif (filterMatch === true) newRows.push(row);\n\t\t});\n\n\t\treturn anyValidFilters ? newRows : parsedRows;\n\t};\n\n\t// sortRows sorts the filtered rows using the configured sorting\n\tconst sortRows = (): DataTableRow[] => {\n\t\t// Abort if we can't sort\n\t\tif (!colsort || colsort.colId === undefined || filteredRows.length < 2 || !filteredRows[0].cells[colsort.colId]) return filteredRows;\n\n\t\t// Unsort rows\n\t\tif (colsort.sort === 'none') {\n\t\t\treturn filteredRows;\n\t\t}\n\n\t\t// Sort rows\n\t\tconst i = colsort.colId;\n\t\tconst isAscending = colsort.sort === 'ascending';\n\t\treturn [...filteredRows].sort((a, b) => {\n\t\t\tif ((a.cells[i].parsedContent as number) < (b.cells[i].parsedContent as number)) return isAscending ? -1 : 1;\n\t\t\tif ((a.cells[i].parsedContent as number) > (b.cells[i].parsedContent as number)) return isAscending ? 1 : -1;\n\t\t\treturn 0;\n\t\t});\n\t};\n\n\tconst [parsedRows, setParsedRows] = useState([] as DataTableRow[]);\n\t// Filtered set of rows (first pass)\n\tconst [filteredRows, setFilteredRows] = useState([] as DataTableRow[]);\n\t// Sorted set of rows (second pass)\n\tconst [sortedRows, setSortedRows] = useState([] as DataTableRow[]);\n\t// Rows to display in the table (third pass, paginated)\n\tconst [rows, setRows] = useState([] as DataTableRow[]);\n\n\tconst [filters, setFilters] = useState({} as ColumnFilterCollection);\n\tconst [colsort, setColsort] = useState({ sort: 'none' } as ColumnSort);\n\n\tconst [columnTypes, setColumnTypes] = useState({} as ColumnTypeCollection);\n\tconst [isFilterOpen, setIsFilterOpen] = useState(false);\n\n\t// Reinit when rows change\n\tuseEffect(() => {\n\t\t// Infer column types\n\t\tif (props.rows.length > 0 && props.rows[0].cells.length > 0) {\n\t\t\t// Seed columns\n\t\t\tconst cellTypeData = {} as RawColumnTypeCollection;\n\t\t\tprops.rows[0].cells.forEach((cell, i) => (cellTypeData[i] = { colId: i, number: 0, date: 0, string: 0 }));\n\t\t\t// Iterate rows and cells to infer and count types\n\t\t\tprops.rows.forEach((row) => {\n\t\t\t\trow.cells.forEach((cell, i) => {\n\t\t\t\t\tif (!cell || !cell.content || !cellTypeData[i]) return;\n\n\t\t\t\t\t// Check number first (moment parses numbers as dates successfully)\n\t\t\t\t\t// Passing a string to isNaN uses built-in type coersion logic that's different than Number.parseFloat()\n\t\t\t\t\tif (!isNaN(cell.content as any) && !isNaN(parseFloat(cell.content))) {\n\t\t\t\t\t\tcellTypeData[i].number++;\n\t\t\t\t\t\tcell.parsedContent = parseFloat(cell.content);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Check date\n\t\t\t\t\tif (moment(cell.content, 'M/D/YYYY', true).isValid() || moment(cell.content, 'M-D-YYYY', true).isValid()) {\n\t\t\t\t\t\tcellTypeData[i].date++;\n\t\t\t\t\t\tcell.parsedContent = Date.parse(cell.content);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Default: string\n\t\t\t\t\tcellTypeData[i].string++;\n\t\t\t\t\tcell.parsedContent = cell.content.toLowerCase();\n\t\t\t\t});\n\t\t\t});\n\n\t\t\t// Assign column types\n\t\t\tconst newColumnTypes = {} as ColumnTypeCollection;\n\t\t\tfor (let i = 0; i < props.rows[0].cells.length; i++) {\n\t\t\t\tconst maxCount = Math.max(cellTypeData[i].date, cellTypeData[i].number, cellTypeData[i].string);\n\t\t\t\tif (cellTypeData[i].date === maxCount) newColumnTypes[i] = 'date';\n\t\t\t\telse if (cellTypeData[i].number === maxCount) newColumnTypes[i] = 'number';\n\t\t\t\telse newColumnTypes[i] = 'string';\n\t\t\t}\n\t\t\tsetColumnTypes(newColumnTypes);\n\t\t\tsetParsedRows(props.rows);\n\t\t} else {\n\t\t\tsetRows(props.rows);\n\t\t\tsetParsedRows(props.rows);\n\t\t}\n\t}, [props.rows]);\n\n\t// Filter changed\n\tuseEffect(() => {\n\t\tconst r = filterRows();\n\t\tsetFilteredRows(r);\n\t}, [filters, columnTypes, parsedRows]);\n\n\t// Sort or filtered rows (source) changed\n\tuseEffect(() => {\n\t\tconst r = sortRows();\n\t\tsetSortedRows(r);\n\t}, [colsort, filteredRows]);\n\n\t// sorted rows (source) changed\n\tuseEffect(() => {\n\t\tsetRows([...sortedRows]);\n\t}, [sortedRows]);\n\n\t// Consolidation props to identify conditions for rendering\n\tconst isSortable = props.sortable || props.className?.includes('sortable') || props.className?.includes('sort-and-filter');\n\tconst isFilterable = props.filterable || props.className?.includes('filterable') || props.className?.includes('sort-and-filter');\n\n\t// getSortCaret returns the FontAwesome glyph name to use for the column sort indicator based on the current sort configuration\n\tconst getSortCaret = (columnId: number): GenesysDevIcons => {\n\t\tif (colsort.colId !== columnId || colsort.sort === 'none') return GenesysDevIcons.AppSort;\n\t\treturn colsort.sort === 'descending' ? GenesysDevIcons.AppSortDown : GenesysDevIcons.AppSortUp;\n\t};\n\n\t// The filterChanged functions are raised when the user updates a filter column\n\tconst stringFilterChanged = (colId: string, filterValue: string) => {\n\t\tconst newFilters = { ...filters };\n\t\tnewFilters[colId] = { colId: parseInt(colId), dataType: 'string', filter: filterValue.toLowerCase() };\n\t\tsetFilters(newFilters);\n\t};\n\tconst numberFilterChanged = (colId: string, filterValue: string) => {\n\t\tconst newFilters = { ...filters };\n\t\tconst i = parseFloat(filterValue);\n\t\tnewFilters[colId] = { colId: parseInt(colId), dataType: 'number', filter: isNaN(i) ? undefined : i, filterModifier: 'lessthan' };\n\t\tif (filters[colId]) newFilters[colId].filterModifier = filters[colId].filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\tconst numberFilterModifierChanged = (colId: string, filterModifier: FilterModifierGtLt) => {\n\t\tconst newFilters = { ...filters };\n\t\tif (!newFilters[colId]) newFilters[colId] = { colId: parseInt(colId), dataType: 'number', filter: undefined };\n\t\tnewFilters[colId].filterModifier = filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\tconst dateFilterChanged = (colId: string, filterValue: string) => {\n\t\tconst newFilters = { ...filters };\n\t\tnewFilters[colId] = { colId: parseInt(colId), dataType: 'datetime', filter: moment(filterValue), filterModifier: 'lessthan' };\n\t\tif (filters[colId]) newFilters[colId].filterModifier = filters[colId].filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\tconst dateFilterModifierChanged = (colId: string, filterModifier: FilterModifierGtLt) => {\n\t\tconst newFilters = { ...filters };\n\t\tif (!newFilters[colId]) newFilters[colId] = { colId: parseInt(colId), dataType: 'datetime', filter: undefined };\n\t\tnewFilters[colId].filterModifier = filterModifier;\n\t\tsetFilters(newFilters);\n\t};\n\n\t// sortChanged is raised when the user clicks a sortable column header\n\tconst sortChanged = (columnId: string) => {\n\t\tconst colId = parseInt(columnId);\n\t\tconst newSort = { ...colsort };\n\t\tnewSort.colId = colId;\n\t\t// Unset column on invalid id\n\t\tif (colId < 0 || (rows[0] && colId >= rows[0].cells.length)) newSort.colId = undefined;\n\n\t\t// Update sort order\n\t\tif (newSort.colId !== colsort.colId) {\n\t\t\t// New sorts are always descending first\n\t\t\tnewSort.sort = 'ascending';\n\t\t} else {\n\t\t\t// Rotate sort order\n\t\t\tswitch (newSort.sort) {\n\t\t\t\tcase 'ascending': {\n\t\t\t\t\tnewSort.sort = 'descending';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcase 'descending': {\n\t\t\t\t\tnewSort.sort = 'none';\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tdefault: {\n\t\t\t\t\tnewSort.sort = 'ascending';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsetColsort(newSort);\n\t};\n\n\t/***** Setup complete, build the component *****/\n\n\t// Build column headers\n\tlet columnHeaders;\n\tif (props.headerRow) {\n\t\tcolumnHeaders = (\n\t\t\t<tr>\n\t\t\t\t{props.headerRow.cells.map((cell, i) => (\n\t\t\t\t\t<td\n\t\t\t\t\t\tkey={i}\n\t\t\t\t\t\talign={cell?.align || 'left'}\n\t\t\t\t\t\tclassName={colsort.colId === i && colsort.sort !== 'none' ? '' : 'unsorted'}\n\t\t\t\t\t\tonClick={isSortable ? () => sortChanged(i.toString()) : undefined}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className={`header-container align-${cell?.align || 'left'}`}>\n\t\t\t\t\t\t\t{cell.renderedContent || cell.content}\n\t\t\t\t\t\t\t{filters[i] && filters[i].filter !== '' && filters[i].filter !== undefined ? (\n\t\t\t\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppFilter} className=\"filter-active-icon\" />\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t''\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{isSortable ? <GenesysDevIcon icon={getSortCaret(i)} className=\"sort-icon\" /> : null}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</td>\n\t\t\t\t))}\n\t\t\t</tr>\n\t\t);\n\t}\n\n\t// Build filter row\n\tlet filterRow;\n\tif (isFilterable && Object.keys(columnTypes).length > 0) {\n\t\tfilterRow = (\n\t\t\t<React.Fragment>\n\t\t\t\t<tr className=\"filter-spacer\"></tr>\n\t\t\t\t<tr className=\"filter-row\">\n\t\t\t\t\t{Object.keys(columnTypes).map((colId, i) => {\n\t\t\t\t\t\tconst columnType = columnTypes[colId];\n\t\t\t\t\t\tswitch (columnType) {\n\t\t\t\t\t\t\tcase 'date': {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<td key={colId}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"sort-date\">\n\t\t\t\t\t\t\t\t\t\t\t<DxTextbox\n\t\t\t\t\t\t\t\t\t\t\t\tclassName=\"date-filter\"\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Filter date\"\n\t\t\t\t\t\t\t\t\t\t\t\tinputType=\"date\"\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => dateFilterChanged(colId, value)}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={moment.isMoment(filters[i]?.filter) ? filters[i]?.filter.format('YYYY-MM-DD') : undefined}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<DxToggle\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Comparison\"\n\t\t\t\t\t\t\t\t\t\t\t\tfalseIcon={GenesysDevIcons.AppChevronLeft}\n\t\t\t\t\t\t\t\t\t\t\t\ttrueIcon={GenesysDevIcons.AppChevronRight}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filterModifier === 'greaterthan'}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => dateFilterModifierChanged(colId, value === false ? 'lessthan' : 'greaterthan')}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase 'number': {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<td key={colId}>\n\t\t\t\t\t\t\t\t\t\t<div className=\"sort-numeric\">\n\t\t\t\t\t\t\t\t\t\t\t<DxTextbox\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Value\"\n\t\t\t\t\t\t\t\t\t\t\t\tinputType=\"decimal\"\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => numberFilterChanged(colId, value)}\n\t\t\t\t\t\t\t\t\t\t\t\tplaceholder={props.headerRow?.cells[i]?.content}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filter}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t\t<DxToggle\n\t\t\t\t\t\t\t\t\t\t\t\tlabel=\"Comparison\"\n\t\t\t\t\t\t\t\t\t\t\t\tfalseIcon={GenesysDevIcons.AppChevronLeft}\n\t\t\t\t\t\t\t\t\t\t\t\ttrueIcon={GenesysDevIcons.AppChevronRight}\n\t\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filterModifier === 'greaterthan'}\n\t\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => numberFilterModifierChanged(colId, value === false ? 'lessthan' : 'greaterthan')}\n\t\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tcase 'string':\n\t\t\t\t\t\t\tdefault: {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t<td key={colId}>\n\t\t\t\t\t\t\t\t\t\t<DxTextbox\n\t\t\t\t\t\t\t\t\t\t\tlabel=\"Filter text\"\n\t\t\t\t\t\t\t\t\t\t\tinputType=\"text\"\n\t\t\t\t\t\t\t\t\t\t\ticon={GenesysDevIcons.AppSearch}\n\t\t\t\t\t\t\t\t\t\t\tplaceholder={props.headerRow?.cells[i]?.content}\n\t\t\t\t\t\t\t\t\t\t\tonChange={(value) => stringFilterChanged(colId, value)}\n\t\t\t\t\t\t\t\t\t\t\tclearButton={true}\n\t\t\t\t\t\t\t\t\t\t\tinitialValue={filters[i]?.filter}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t})}\n\t\t\t\t</tr>\n\t\t\t</React.Fragment>\n\t\t);\n\t}\n\n\t// Build optional table header\n\tlet thead;\n\tif (columnHeaders || filterRow) {\n\t\tthead = (\n\t\t\t<thead>\n\t\t\t\t{columnHeaders}\n\t\t\t\t{isFilterOpen ? filterRow : undefined}\n\t\t\t</thead>\n\t\t);\n\t}\n\n\t// Make sure classes always has \"table\"; sometimes it will be provided, sometimes not\n\tlet tableClassName = props.className || '';\n\tif (tableClassName?.match(TABLE_CLASS_REGEX) === null) {\n\t\ttableClassName = 'table ' + tableClassName.trim();\n\t}\n\n\treturn (\n\t\t<div className={`table-container${isSortable ? ' sortable' : ''}${isFilterable ? ' filterable' : ''}`}>\n\t\t\t<div className=\"filter-container\">\n\t\t\t\t<div className=\"filter-toggle\" style={{ visibility: isFilterable ? 'visible' : 'hidden' }}>\n\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppFilter} onClick={() => setIsFilterOpen(!isFilterOpen)} />\n\t\t\t\t</div>\n\t\t\t\t<table id={props.id} className={tableClassName} cellSpacing=\"0\">\n\t\t\t\t\t{thead}\n\t\t\t\t\t<tbody>\n\t\t\t\t\t\t{rows.map((row, i) => {\n\t\t\t\t\t\t\tconst rowClass: string = row.className?.trim() || '';\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<tr key={i} className={rowClass}>\n\t\t\t\t\t\t\t\t\t{row.cells.map((cell, ii) => (\n\t\t\t\t\t\t\t\t\t\t<td key={ii} align={cell?.align || 'left'}>\n\t\t\t\t\t\t\t\t\t\t\t{cell?.content ? (\n\t\t\t\t\t\t\t\t\t\t\t\t<div className={`align-${cell?.align || 'left'}${cell?.className ? ' ' + cell.className.trim() : ''}`}>\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cell.renderedContent || cell.content}\n\t\t\t\t\t\t\t\t\t\t\t\t\t{cell.copyButton ? <CopyButton copyText={cell.content} /> : undefined}\n\t\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\t\t\t\t</td>\n\t\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t\t\t</tr>\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t</div>\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/cjs/styles/prism/index.js';\n\nimport CopyButton from '../copybutton/CopyButton';\nimport { BaseComponentProps } from '..';\n\nimport './CodeFence.scss';\n\ndeclare global {\n\tinterface Window {\n\t\tPrism: any;\n\t}\n}\n\ninterface IProps extends BaseComponentProps {\n\tvalue: string;\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\tdisableSyntaxHighlighting?: boolean;\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\tconst disableHighlighting = props.disableSyntaxHighlighting || props.value.length > 100000;\n\n\treturn (\n\t\t<div id={props.id} 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{disableHighlighting && (\n\t\t\t\t\t\t<pre>\n\t\t\t\t\t\t\t<code>{props.value}</code>\n\t\t\t\t\t\t</pre>\n\t\t\t\t\t)}\n\t\t\t\t\t{!disableHighlighting && (\n\t\t\t\t\t\t<SyntaxHighlighter language={props.language?.toLowerCase()} style={vscDarkPlus} showLineNumbers={props.showLineNumbers}>\n\t\t\t\t\t\t\t{props.value}\n\t\t\t\t\t\t</SyntaxHighlighter>\n\t\t\t\t\t)}\n\t\t\t\t</div>\n\t\t\t)}\n\t\t</div>\n\t);\n}\n","import React from 'react';\nimport './LoadingSpinner.scss';\n\ninterface IProps {\n\tsize?: 'small' | 'medium' | 'large';\n}\n\nexport default function LoadingSpinner(props: IProps) {\n\treturn <div className={`loading-spinner ${props.size || 'medium'}`} />;\n}\n"],"names":["uuid","SyntaxHighlighter"],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import React from 'react';
2
+ import './LoadingSpinner.scss';
3
+ interface IProps {
4
+ size?: 'small' | 'medium' | 'large';
5
+ }
6
+ export default function LoadingSpinner(props: IProps): React.JSX.Element;
7
+ export {};
package/package.json CHANGED
@@ -1,59 +1,59 @@
1
1
  {
2
- "name": "genesys-react-components",
3
- "version": "1.1.2",
4
- "description": "A React component library containing standardized form elements.",
5
- "type": "module",
6
- "types": "build/index.d.ts",
7
- "main": "./build/index.js",
8
- "exports": {
9
- "require": "./src/index.ts",
10
- "default": "./build/index.js"
11
- },
12
- "files": [
13
- "build",
14
- "src"
15
- ],
16
- "scripts": {
17
- "build": "rm -rf build && rollup -c rollup.config.js",
18
- "localbuild": "npm i && npm run build && rm -rf node_modules",
19
- "test": "echo \"0/0 tests passed. That's technically a perfect score. Keep up the great work!\""
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "git+ssh://git@github.com/purecloudlabs/genesys-react-components.git"
24
- },
25
- "author": "Genesys",
26
- "license": "MIT",
27
- "bugs": {
28
- "url": "https://github.com/purecloudlabs/genesys-react-components/issues"
29
- },
30
- "homepage": "https://purecloudlabs.github.io/genesys-react-components",
31
- "devDependencies": {
32
- "@rollup/plugin-commonjs": "^21.0.1",
33
- "@rollup/plugin-node-resolve": "^13.0.6",
34
- "@types/react": "^16",
35
- "react": "^16",
36
- "react-dom": "^16",
37
- "rollup": "^2.60.2",
38
- "rollup-plugin-peer-deps-external": "^2.2.4",
39
- "rollup-plugin-postcss": "^4.0.2",
40
- "rollup-plugin-typescript2": "^0.31.1",
41
- "sass": "^1.44.0",
42
- "typescript": "^4.5.2",
43
- "uuid": "^9.0.0"
44
- },
45
- "peerDependencies": {
46
- "genesys-dev-icons": "^1.5.0",
47
- "moment": "^2.30.1",
48
- "postcss": "^8.5.3",
49
- "react": ">=16",
50
- "react-dom": ">=16",
51
- "react-syntax-highlighter": "^15.5.0",
52
- "uuid": "^9.0.0"
53
- },
54
- "dependencies": {
55
- "moment": "^2.30.1",
56
- "postcss": "^8.5.3",
57
- "react-syntax-highlighter": "^15.6.1"
58
- }
59
- }
2
+ "name": "genesys-react-components",
3
+ "version": "1.2.0-DEVENGAGE-3353-loading-spinner.826",
4
+ "description": "A React component library containing standardized form elements.",
5
+ "type": "module",
6
+ "types": "build/index.d.ts",
7
+ "main": "./build/index.js",
8
+ "exports": {
9
+ "require": "./src/index.ts",
10
+ "default": "./build/index.js"
11
+ },
12
+ "files": [
13
+ "build",
14
+ "src"
15
+ ],
16
+ "scripts": {
17
+ "build": "rm -rf build && rollup -c rollup.config.js",
18
+ "localbuild": "npm i && npm run build && rm -rf node_modules",
19
+ "test": "echo \"0/0 tests passed. That's technically a perfect score. Keep up the great work!\""
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+ssh://git@github.com/purecloudlabs/genesys-react-components.git"
24
+ },
25
+ "author": "Genesys",
26
+ "license": "MIT",
27
+ "bugs": {
28
+ "url": "https://github.com/purecloudlabs/genesys-react-components/issues"
29
+ },
30
+ "homepage": "https://purecloudlabs.github.io/genesys-react-components",
31
+ "devDependencies": {
32
+ "@rollup/plugin-commonjs": "^21.0.1",
33
+ "@rollup/plugin-node-resolve": "^13.0.6",
34
+ "@types/react": "^16",
35
+ "react": "^16",
36
+ "react-dom": "^16",
37
+ "rollup": "^2.60.2",
38
+ "rollup-plugin-peer-deps-external": "^2.2.4",
39
+ "rollup-plugin-postcss": "^4.0.2",
40
+ "rollup-plugin-typescript2": "^0.31.1",
41
+ "sass": "^1.44.0",
42
+ "typescript": "^4.5.2",
43
+ "uuid": "^9.0.0"
44
+ },
45
+ "peerDependencies": {
46
+ "genesys-dev-icons": "^1.5.0",
47
+ "moment": "^2.30.1",
48
+ "postcss": "^8.5.3",
49
+ "react": ">=16",
50
+ "react-dom": ">=16",
51
+ "react-syntax-highlighter": "^15.5.0",
52
+ "uuid": "^9.0.0"
53
+ },
54
+ "dependencies": {
55
+ "moment": "^2.30.1",
56
+ "postcss": "^8.5.3",
57
+ "react-syntax-highlighter": "^15.6.1"
58
+ }
59
+ }
package/src/index.ts CHANGED
@@ -15,6 +15,7 @@ import Tooltip from './tooltip/Tooltip';
15
15
  import CopyButton from './copybutton/CopyButton';
16
16
  import DataTable from './datatable/DataTable';
17
17
  import CodeFence from './codefence/CodeFence';
18
+ import LoadingSpinner from './loadingspinner/LoadingSpinner';
18
19
 
19
20
  export {
20
21
  DxAccordion,
@@ -33,6 +34,7 @@ export {
33
34
  AlertBlock,
34
35
  CodeFence,
35
36
  DataTable,
37
+ LoadingSpinner,
36
38
  };
37
39
 
38
40
  export interface StringChangedCallback {
@@ -0,0 +1,33 @@
1
+ .loading-spinner {
2
+ --loading-spinner-size: 10px;
3
+
4
+ width: var(--loading-spinner-size);
5
+ height: var(--loading-spinner-size);
6
+ border-top-color: var(--theme-card-icon-color);
7
+ border-right-color: transparent;
8
+ border-bottom-color: transparent;
9
+ border-style: solid;
10
+ border-width: calc(var(--loading-spinner-size) / 5);
11
+ border-left: dotted var(--theme-card-icon-color);
12
+ border-radius: 50%;
13
+ animation: spin 0.7s linear infinite;
14
+
15
+ &.small {
16
+ --loading-spinner-size: 10px;
17
+ }
18
+ &.medium {
19
+ --loading-spinner-size: 20px;
20
+ }
21
+ &.large {
22
+ --loading-spinner-size: 30px;
23
+ }
24
+ }
25
+
26
+ @keyframes spin {
27
+ from{
28
+ transform: rotate(0deg);
29
+ }
30
+ to{
31
+ transform: rotate(360deg);
32
+ }
33
+ }
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import './LoadingSpinner.scss';
3
+
4
+ interface IProps {
5
+ size?: 'small' | 'medium' | 'large';
6
+ }
7
+
8
+ export default function LoadingSpinner(props: IProps) {
9
+ return <div className={`loading-spinner ${props.size || 'medium'}`} />;
10
+ }