genesys-react-components 1.0.5-DEVENGAGE-2953-codefence-not-indenting.657 → 1.0.5

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.
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import './AlertBlock.scss';
3
3
  interface IProps {
4
4
  title?: string;
@@ -9,5 +9,5 @@ interface IProps {
9
9
  children?: any;
10
10
  className?: string;
11
11
  }
12
- export default function AlertBlock(props: IProps): JSX.Element;
12
+ export default function AlertBlock(props: IProps): React.JSX.Element;
13
13
  export {};
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import './CodeFence.scss';
3
3
  declare global {
4
4
  interface Window {
@@ -13,11 +13,11 @@ interface IProps {
13
13
  title?: string;
14
14
  language?: string;
15
15
  showLineNumbers?: boolean;
16
- indentation?: string | number;
16
+ indentation?: string;
17
17
  className?: string;
18
18
  jsonEditor?: boolean;
19
19
  innerRef?: any;
20
20
  disableSyntaxHighlighting?: boolean;
21
21
  }
22
- export default function CodeFence(props: IProps): JSX.Element;
22
+ export default function CodeFence(props: IProps): React.JSX.Element;
23
23
  export {};
@@ -1,9 +1,9 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import './CopyButton.scss';
3
3
  interface IProps {
4
4
  copyText: string;
5
5
  className?: string;
6
6
  tooltipPosition?: 'top' | 'right' | 'bottom' | 'left';
7
7
  }
8
- export default function CopyButton(props: IProps): JSX.Element;
8
+ export default function CopyButton(props: IProps): React.JSX.Element;
9
9
  export {};
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DataTableRow } from '..';
3
3
  import './DataTable.scss';
4
4
  interface IProps {
@@ -9,5 +9,5 @@ interface IProps {
9
9
  sortable?: boolean;
10
10
  filterable?: boolean;
11
11
  }
12
- export default function DataTable(props: IProps): JSX.Element;
12
+ export default function DataTable(props: IProps): React.JSX.Element;
13
13
  export {};
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DxAccordionProps } from '..';
3
3
  import './DxAccordion.scss';
4
- export default function DxAccordion(props: DxAccordionProps): JSX.Element;
4
+ export default function DxAccordion(props: DxAccordionProps): React.JSX.Element;
@@ -4,5 +4,5 @@ interface IProps {
4
4
  children: React.ReactNode;
5
5
  className?: string;
6
6
  }
7
- export default function DxAccordionGroup(props: IProps): JSX.Element;
7
+ export default function DxAccordionGroup(props: IProps): React.JSX.Element;
8
8
  export {};
@@ -9,5 +9,5 @@ interface IProps {
9
9
  onClick?: VoidEventCallback;
10
10
  onClickRaw?: React.MouseEventHandler<HTMLButtonElement>;
11
11
  }
12
- export default function DxButton(props: IProps): JSX.Element;
12
+ export default function DxButton(props: IProps): React.JSX.Element;
13
13
  export {};
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { CheckedChangedCallback } from '..';
3
3
  import './DxCheckbox.scss';
4
4
  interface IProps {
@@ -13,5 +13,5 @@ interface IProps {
13
13
  useRadioType?: boolean;
14
14
  disabled?: boolean;
15
15
  }
16
- export default function DxCheckbox(props: IProps): JSX.Element;
16
+ export default function DxCheckbox(props: IProps): React.JSX.Element;
17
17
  export {};
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DxItemGroupProps } from '..';
3
3
  import './DxItemGroup.scss';
4
4
  import './radiobutton.scss';
5
5
  import './dropdown.scss';
6
6
  import './multiselect.scss';
7
- export default function DxItemGroup(props: DxItemGroupProps): JSX.Element;
7
+ export default function DxItemGroup(props: DxItemGroupProps): React.JSX.Element;
@@ -7,5 +7,5 @@ interface IProps {
7
7
  className?: string;
8
8
  children: React.ReactNode;
9
9
  }
10
- export default function DxLabel(props: IProps): JSX.Element;
10
+ export default function DxLabel(props: IProps): React.JSX.Element;
11
11
  export {};
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DxTabPanelProps } from '..';
3
3
  import './DxTabPanel.scss';
4
- export default function DxTabPanel(props: DxTabPanelProps): JSX.Element;
4
+ export default function DxTabPanel(props: DxTabPanelProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DxTabbedContentProps } from '..';
3
3
  import './DxTabbedContent.scss';
4
- export default function DxTabbedContent(props: DxTabbedContentProps): JSX.Element;
4
+ export default function DxTabbedContent(props: DxTabbedContentProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DxTextboxProps } from '..';
3
3
  import './DxTextbox.scss';
4
- export default function DxTextbox(props: DxTextboxProps): JSX.Element;
4
+ export default function DxTextbox(props: DxTextboxProps): React.JSX.Element;
@@ -1,4 +1,4 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import { DxToggleProps } from '..';
3
3
  import './DxToggle.scss';
4
- export default function DxToggle(props: DxToggleProps): JSX.Element;
4
+ export default function DxToggle(props: DxToggleProps): React.JSX.Element;
package/build/index.js CHANGED
@@ -282,8 +282,20 @@ function DxTextbox(props) {
282
282
  }, []);
283
283
  // Value prop updated
284
284
  useEffect(() => {
285
- // Ignore value changed if initial value was set; they're mutually exclusive
286
- if (!props.initialValue) {
285
+ //Set initial value of date to avoid invalid format error
286
+ if (inputType === 'date') {
287
+ let parsedDate;
288
+ if (props.initialValue) {
289
+ parsedDate = parseDate(props.initialValue);
290
+ }
291
+ else {
292
+ parsedDate = parseDate(props.value);
293
+ }
294
+ const formattedDate = formatDate(parsedDate === null || parsedDate === void 0 ? void 0 : parsedDate.toISOString());
295
+ setValue(formattedDate);
296
+ // Ignore value changed if initial value was set; they're mutually exclusive
297
+ }
298
+ else if (!props.initialValue && inputType !== 'date') {
287
299
  setValue(props.value || '');
288
300
  }
289
301
  }, [props.value]);
@@ -349,6 +361,23 @@ function DxTextbox(props) {
349
361
  return;
350
362
  }
351
363
  }
364
+ //Formats date to fit required HTML format
365
+ const formatDate = (inputDate) => {
366
+ const date = new Date(inputDate);
367
+ if (isNaN(date.getTime()))
368
+ return ''; // Return empty if invalid date
369
+ // Format as YYYY-MM-DD for HTML date input
370
+ const year = date.getFullYear();
371
+ const month = String(date.getMonth() + 1).padStart(2, '0');
372
+ const day = String(date.getDate()).padStart(2, '0');
373
+ return `${year}-${month}-${day}`;
374
+ };
375
+ const parseDate = (input) => {
376
+ if (!input)
377
+ return;
378
+ const date = new Date(input);
379
+ return isNaN(date.getTime()) ? null : date;
380
+ };
352
381
  // Normalize input type
353
382
  let inputType = props.inputType;
354
383
  if (inputType === 'integer' || inputType === 'decimal')
@@ -956,24 +985,6 @@ styleInject(css_248z);
956
985
  function CodeFence(props) {
957
986
  var _a;
958
987
  const [collapsed, setCollapsed] = useState(props.noCollapse ? false : props.autoCollapse || false);
959
- const [value, setValue] = useState(props.value);
960
- useEffect(() => {
961
- try {
962
- if (props.language && props.language.toLowerCase() === 'json') {
963
- const indentation = props.indentation
964
- ? typeof props.indentation === 'string'
965
- ? parseInt(props.indentation)
966
- : props.indentation
967
- : 2;
968
- const parseJ = JSON.parse(value);
969
- const tempVal = JSON.stringify(parseJ, null, indentation);
970
- setValue(tempVal);
971
- }
972
- }
973
- catch (e) {
974
- console.log(e);
975
- }
976
- }, [props.indentation]);
977
988
  const bodyClassNames = ['fence-body'];
978
989
  if (props.jsonEditor)
979
990
  bodyClassNames.push('json-editor-body');
@@ -982,18 +993,20 @@ function CodeFence(props) {
982
993
  classNames.push(props.className);
983
994
  if (props.noCollapse)
984
995
  classNames.push('nocollapse');
996
+ if (props.indentation)
997
+ classNames.push(`indent-${props.indentation}`);
985
998
  if (props.jsonEditor)
986
999
  classNames.push('json-editor-fence');
987
- const disableHighlighting = props.disableSyntaxHighlighting || value.length > 100000;
1000
+ const disableHighlighting = props.disableSyntaxHighlighting || props.value.length > 100000;
988
1001
  return (React.createElement("div", { className: classNames.join(' ') },
989
- props.noHeader || typeof value !== 'string' ? ('') : (React.createElement("div", { className: `fence-header${props.noCollapse ? '' : ' clickable'}`, onClick: () => setCollapsed(props.noCollapse ? false : !collapsed) },
1002
+ props.noHeader || typeof props.value !== 'string' ? ('') : (React.createElement("div", { className: `fence-header${props.noCollapse ? '' : ' clickable'}`, onClick: () => setCollapsed(props.noCollapse ? false : !collapsed) },
990
1003
  props.noCollapse ? undefined : (React.createElement(GenesysDevIcon, { icon: collapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp })),
991
- React.createElement(CopyButton, { copyText: value }),
1004
+ React.createElement(CopyButton, { copyText: props.value }),
992
1005
  React.createElement("span", { className: "fence-title" }, props.title))),
993
1006
  collapsed ? undefined : (React.createElement("div", { ref: props.innerRef || undefined, className: bodyClassNames.join(' ') },
994
1007
  disableHighlighting && (React.createElement("pre", null,
995
- React.createElement("code", null, value))),
996
- !disableHighlighting && (React.createElement(PrismAsync, { language: (_a = props.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(), style: vscDarkPlus, showLineNumbers: props.showLineNumbers }, value))))));
1008
+ React.createElement("code", null, props.value))),
1009
+ !disableHighlighting && (React.createElement(PrismAsync, { language: (_a = props.language) === null || _a === void 0 ? void 0 : _a.toLowerCase(), style: vscDarkPlus, showLineNumbers: props.showLineNumbers }, props.value))))));
997
1010
  }
998
1011
 
999
1012
  export { AlertBlock, CodeFence, CopyButton, DataTable, DxAccordion, DxAccordionGroup, DxButton, DxCheckbox, DxItemGroup, DxLabel, DxTabPanel, DxTabbedContent, DxTextbox, DxToggle, LoadingPlaceholder, Tooltip };
@@ -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';\nimport { DxAccordionProps } from '..';\n\nimport './DxAccordion.scss';\n\nexport default function DxAccordion(props: DxAccordionProps) {\n\tconst [isOpen, setIsOpen] = useState(props.showOpen || false);\n\tconst [expandTrigger, setExpandTrigger] = useState(props.expandTrigger);\n\tconst [showOpenTrigger, setShowOpenTrigger] = useState(props.showOpenTrigger);\n\n\t// This one forcibly opens the component\n\tReact.useEffect(() => {\n\t\tif (props.expandTrigger !== expandTrigger) {\n\t\t\tsetIsOpen(true);\n\t\t\tsetExpandTrigger(props.expandTrigger);\n\t\t}\n\t}, [props.expandTrigger, expandTrigger]);\n\n\t// This one forcibly recalculates the state based on the value for props.showOpen\n\tReact.useEffect(() => {\n\t\tif (props.showOpenTrigger !== showOpenTrigger) {\n\t\t\tsetIsOpen(props.showOpen);\n\t\t\tsetShowOpenTrigger(props.showOpenTrigger);\n\t\t}\n\t}, [props.showOpenTrigger, showOpenTrigger, props.showOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (props.showOpen === true || props.showOpen === false) setIsOpen(props.showOpen);\n\t}, [props.showOpen]);\n\n\tlet style = {} as React.CSSProperties;\n\tif (props.headingColor) style.color = props.headingColor;\n\n\tlet icon;\n\tif (props.headingIcon) icon = <GenesysDevIcon icon={props.headingIcon} className=\"heading-icon\" />;\n\n\treturn (\n\t\t<div id={props.containerId || undefined} className={`dx-accordion${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"accordion-heading\" style={style} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t<span className=\"accordion-heading__left\">\n\t\t\t\t\t{icon} {props.title}\n\t\t\t\t</span>{' '}\n\t\t\t\t<GenesysDevIcon icon={isOpen ? GenesysDevIcons.AppChevronUp : GenesysDevIcons.AppChevronDown} />\n\t\t\t</div>\n\t\t\t{isOpen ? <div className=\"accordion-content\">{props.children}</div> : undefined}\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './DxAccordionGroup.scss';\n\ninterface IProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport default function DxAccordionGroup(props: IProps) {\n\treturn <div className={`dx-accordion-group${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import React from 'react';\nimport { VoidEventCallback } from '..';\n\nimport './DxButton.scss';\n\ninterface IProps {\n\ttype?: 'primary' | 'secondary' | 'link';\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\tonClick?: VoidEventCallback;\n\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 className={classNames.join(' ')} type=\"button\" onClick={handleClick} disabled={props.disabled === true}>\n\t\t\t{props.children}\n\t\t</button>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React from 'react';\n\nimport './DxLabel.scss';\n\ninterface IProps {\n\tlabel?: string;\n\tdescription?: string;\n\tuseFieldset?: boolean;\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\nexport default function DxLabel(props: IProps) {\n\tconst hasLabel = props.label && props.label !== '';\n\n\tconst description = props.description ? (\n\t\t<div className='input-description'>\n\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppInfoSolid} />\n\t\t\t<span>{props.description}</span>\n\t\t</div>\n\t) : undefined;\n\n\tconst contents = (\n\t\t<React.Fragment>\n\t\t\t{' '}\n\t\t\t{hasLabel ? <span className='label-text'>{props.label}</span> : undefined}\n\t\t\t{props.children}\n\t\t\t{description}\n\t\t</React.Fragment>\n\t);\n\n\tconst className = `dx-label${props.className ? ' ' + props.className : ''}`;\n\n\tif (props.useFieldset) {\n\t\treturn <fieldset className={className}>{contents}</fieldset>;\n\t}\n\treturn <label className={className}>{contents}</label>;\n}\n","import React, { useEffect, useState } from 'react';\nimport { CheckedChangedCallback } from '..';\n\nimport './DxCheckbox.scss';\n\ninterface IProps {\n\tlabel: string;\n\titemValue: string;\n\tdescription?: string;\n\tchecked?: boolean;\n\tinitiallyChecked?: boolean;\n\tname?: string;\n\tclassName?: string;\n\tonCheckChanged?: CheckedChangedCallback;\n\tuseRadioType?: boolean;\n\tdisabled?: boolean;\n}\n\nexport default function DxCheckbox(props: IProps) {\n\tlet initialValue: boolean = props.checked !== undefined ? props.checked : props.initiallyChecked || false;\n\n\tconst [checked, setChecked] = useState<boolean>(initialValue);\n\n\tuseEffect(() => {\n\t\tif (props.checked === undefined || props.checked === checked) return;\n\t\tsetChecked(props.checked);\n\t}, [props.checked]);\n\n\tuseEffect(() => {\n\t\tif (props.onCheckChanged) props.onCheckChanged(checked);\n\t}, [checked]);\n\n\treturn (\n\t\t<label className={`dx-checkbox${props.className ? ' ' + props.className : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t<input\n\t\t\t\ttype={props.useRadioType ? 'radio' : 'checkbox'}\n\t\t\t\tname={props.name}\n\t\t\t\tvalue={props.itemValue}\n\t\t\t\tchecked={checked}\n\t\t\t\tonChange={(e) => setChecked(e.target.checked)}\n\t\t\t\tdisabled={props.disabled === true}\n\t\t\t/>\n\t\t\t<span className='label-text'>{props.label}</span>\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { DxItemGroupItem, DxItemGroupItemValue, DxItemGroupProps, ItemChangedCallback, ItemGroupChangedCallback } from '..';\n\nimport './DxItemGroup.scss';\nimport './radiobutton.scss';\nimport './dropdown.scss';\nimport './multiselect.scss';\nimport DxLabel from '../dxlabel/DxLabel';\nimport DxCheckbox from './DxCheckbox';\n\nexport default function DxItemGroup(props: DxItemGroupProps) {\n\tconst [data, setData] = useState<DxItemGroupItemValue[]>(\n\t\tprops.items.map((item) => {\n\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t})\n\t);\n\tconst [id] = useState(uuid());\n\tconst [title, setTitle] = useState(props.title);\n\tconst [description, setDescription] = useState(props.description);\n\tconst [format, setFormat] = useState(props.format);\n\tconst [disabled, setDisabled] = useState(props.disabled);\n\tconst [className, setClassName] = useState(props.className);\n\n\t// data changed\n\tuseEffect(() => {\n\t\tif (props.onItemsChanged) props.onItemsChanged(data);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [data]);\n\n\t// Recalculate on props changed\n\tuseEffect(() => {\n\t\tsetTitle(props.title);\n\t\tsetDescription(props.description);\n\t\tsetFormat(props.format);\n\t\tsetDisabled(props.disabled);\n\t\tsetClassName(props.className);\n\t}, [props.title, props.description, props.format, props.items, props.disabled, props.className]);\n\n\tuseEffect(() => {\n\t\tsetData(\n\t\t\tprops.items.map((item) => {\n\t\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t\t})\n\t\t);\n\t}, [props.items]);\n\t// Handle individual item changed\n\tconst itemChanged = (idx: number, item: DxItemGroupItem, checked: boolean) => {\n\t\tif (props.onItemChanged) props.onItemChanged(item, checked);\n\t\tlet newData = [...data];\n\t\t// Unselect everything if it's radio buttons\n\t\tif (format === 'radio') newData.forEach((value) => (value.isSelected = false));\n\t\t// Set the selected state of the new item\n\t\tnewData[idx].isSelected = checked;\n\t\tsetData(newData);\n\t};\n\n\tconst selectChanged = (e: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst options = e.target.options;\n\t\tlet newData = [...data];\n\t\t// Assign selected value for each item in the list\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\tconst thisItem = newData.find((value) => value.item.value === options[i].value);\n\t\t\tthisItem.isSelected = options[i].selected;\n\t\t}\n\t\t// Update entire data list\n\t\tsetData(newData);\n\t\t// Trigger individual update\n\t\tconst changedItemIdx = newData.findIndex((value) => value.item.value === e.target.value);\n\t\tif (changedItemIdx >= 0) itemChanged(changedItemIdx, newData[changedItemIdx].item, newData[changedItemIdx].isSelected);\n\t};\n\n\tswitch (format) {\n\t\tcase 'multiselect':\n\t\tcase 'dropdown': {\n\t\t\tconst isMulti = format === 'multiselect';\n\t\t\treturn (\n\t\t\t\t<DxLabel label={title} description={description} className={className}>\n\t\t\t\t\t<div className={`dx-item-group${isMulti ? ' dx-multiselect-group' : ' dx-select-group'}${disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tmultiple={isMulti}\n\t\t\t\t\t\t\tdisabled={disabled === true}\n\t\t\t\t\t\t\tonChange={(e) => selectChanged(e)}\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tisMulti\n\t\t\t\t\t\t\t\t\t? data.filter((item) => item.isSelected)?.map((item) => item.item.value)\n\t\t\t\t\t\t\t\t\t: data.find((item) => item.isSelected)?.item.value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t\t<option key={i} value={d.item.value} disabled={d.item.disabled}>\n\t\t\t\t\t\t\t\t\t{d.item.label}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\tdefault: {\n\t\t\treturn (\n\t\t\t\t<DxLabel\n\t\t\t\t\tlabel={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\tclassName={`dx-item-group${disabled ? ' disabled' : ''}${className ? ' ' + className : ''}`}\n\t\t\t\t\tuseFieldset={true}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLDivElement>) => {\n\t\t\t\t\t\t\tconst i = data.findIndex((d) => d.item.value === (e.target as any)?.value);\n\t\t\t\t\t\t\tif (i < 0) return;\n\t\t\t\t\t\t\titemChanged(i, data[i].item, (e.target as any)?.checked);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t<DxCheckbox\n\t\t\t\t\t\t\t\tkey={d.item.value}\n\t\t\t\t\t\t\t\tname={format === 'checkbox' ? `${id}-${d.item.value}` : id}\n\t\t\t\t\t\t\t\tlabel={d.item.label}\n\t\t\t\t\t\t\t\titemValue={d.item.value}\n\t\t\t\t\t\t\t\tchecked={d.isSelected}\n\t\t\t\t\t\t\t\tuseRadioType={format === 'radio'}\n\t\t\t\t\t\t\t\tdisabled={disabled || d.item.disabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t}\n}\n","import React, { useState } from 'react';\nimport { DxTabbedContentProps } from '..';\n\nimport './DxTabbedContent.scss';\n\nexport default function DxTabbedContent(props: DxTabbedContentProps) {\n\tconst [activeTab, setActiveTab] = useState(props.initialTabId || 0);\n\n\treturn (\n\t\t<div className={`dx-tabbed-content${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"tab-titles\">\n\t\t\t\t{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 <div className={`dx-tab-panel${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useEffect, useRef, useState } from 'react';\nimport DxLabel from '../dxlabel/DxLabel';\nimport { DxTextboxProps } from '..';\n\nimport './DxTextbox.scss';\n\nexport default function DxTextbox(props: DxTextboxProps) {\n\tconst [debounceMs, setDebounceMs] = useState(props.changeDebounceMs || 300);\n\tconst [value, setValue] = useState(props.initialValue || props.value || '');\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [escapePressed, setEscapePressed] = useState(Date.now());\n\tconst [step, setStep] = useState<string | number | undefined>(undefined);\n\tlet [timer, setTimer] = useState(undefined as unknown as ReturnType<typeof setTimeout>);\n\n\t// Constructor\n\tuseEffect(() => {\n\t\t// Register global key bindings\n\t\tdocument.addEventListener('keydown', globalKeyBindings, false);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', globalKeyBindings, false);\n\t\t};\n\t}, []);\n\n\t// Value prop updated\n\tuseEffect(() => {\n\t\t// Ignore value changed if initial value was set; they're mutually exclusive\n\t\tif (!props.initialValue) {\n\t\t\tsetValue(props.value || '');\n\t\t}\n\t}, [props.value]);\n\n\t// Escape pressed\n\tuseEffect(() => {\n\t\tif (!isFocused || !props.clearOnEscape) 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\t\t\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\t\n\t// Normalize input type\n\tlet inputType: React.HTMLInputTypeAttribute | undefined = props.inputType;\n\tif (inputType === 'integer' || inputType === 'decimal') inputType = 'number';\n\n\tlet component;\n\tswitch (inputType) {\n\t\tcase 'textarea': {\n\t\t\tcomponent = (\n\t\t\t\t<textarea\n\t\t\t\t\tclassName=\"dx-textarea\"\n\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\tref={inputRef}\n\t\t\t\t\tvalue={value}\n\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\tsetIsFocused(true);\n\t\t\t\t\t\tif (props.onFocus) props.onFocus();\n\t\t\t\t\t}}\n\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\tsetIsFocused(false);\n\t\t\t\t\t\tif (props.onBlur) props.onBlur();\n\t\t\t\t\t}}\n\t\t\t\t\tdisabled={props.disabled === true}\n\t\t\t\t\tautoFocus={props.autoFocus}\n\t\t\t\t/>\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\t\t// TODO: special handling for other inputType values\n\t\tdefault: {\n\t\t\tcomponent = (\n\t\t\t\t<div className={`dx-textbox${hasLabel ? ' with-label' : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t{props.icon ? <GenesysDevIcon icon={props.icon} className=\"input-icon\" /> : undefined}\n\t\t\t\t\t<input\n\t\t\t\t\t\tclassName=\"dx-input\"\n\t\t\t\t\t\ttype={inputType}\n\t\t\t\t\t\tstep={step}\n\t\t\t\t\t\tvalue={value}\n\t\t\t\t\t\tplaceholder={props.placeholder}\n\t\t\t\t\t\tonChange={(e) => setValue(e.target.value)}\n\t\t\t\t\t\tref={inputRef}\n\t\t\t\t\t\tonFocus={() => {\n\t\t\t\t\t\t\tsetIsFocused(true);\n\t\t\t\t\t\t\tif (props.onFocus) props.onFocus();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tonBlur={() => {\n\t\t\t\t\t\t\tsetIsFocused(false);\n\t\t\t\t\t\t\tif (props.onBlur) props.onBlur();\n\t\t\t\t\t\t}}\n\t\t\t\t\t\tdisabled={props.disabled === true}\n\t\t\t\t\t\tautoFocus={props.autoFocus}\n\t\t\t\t\t/>\n\t\t\t\t\t{props.clearButton && (value || isFocused) && !props.disabled ? (\n\t\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppTimes} className=\"clear-icon\" onClick={() => setValue('')} />\n\t\t\t\t\t) : undefined}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t}\n\n\t// Render\n\treturn (\n\t\t<DxLabel label={props.label} description={props.description} className={props.className}>\n\t\t\t{component}\n\t\t</DxLabel>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport { BooleanChangedCallback, DxToggleProps } from '..';\n\nimport './DxToggle.scss';\nimport DxLabel from '../dxlabel/DxLabel';\n\nexport default function DxToggle(props: DxToggleProps) {\n\tlet initialValue: boolean | undefined = props.value !== undefined ? props.value : props.initialValue;\n\tif (!props.isTriState) initialValue = initialValue || false;\n\n\tconst [value, setValue] = useState<boolean | undefined>(initialValue);\n\n\tconst trueIcon = props.trueIcon || GenesysDevIcons.AppCheck;\n\tconst falseIcon = props.falseIcon || GenesysDevIcons.AppTimes;\n\n\tuseEffect(() => {\n\t\tif (props.initialValue || props.value === value || (!props.isTriState && props.value === undefined)) return;\n\t\tsetValue(props.value);\n\t}, [props.value]);\n\n\tuseEffect(() => {\n\t\tif (props.onChange) props.onChange(value);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\tconst 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 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 './AlertBlock.scss';\n\ninterface IProps {\n\ttitle?: string;\n\talertType?: 'info' | 'success' | 'critical' | 'warning' | 'toast';\n\tcollapsible?: boolean;\n\tautoCollapse?: boolean;\n\tindentation?: number;\n\tchildren?: any;\n\tclassName?: string;\n}\n\nexport default function AlertBlock(props: IProps) {\n\tconst isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false;\n\tconst [isCollapsed, setIsCollapsed] = useState(isCollapsible ? props.autoCollapse || false : false);\n\n\tlet title;\n\tif (props.title) {\n\t\ttitle = (\n\t\t\t<div\n\t\t\t\tclassName={`alert-title${isCollapsible ? ' clickable' : ''}${isCollapsed ? ' collapsed' : ''}`}\n\t\t\t\tonClick={isCollapsible ? () => setIsCollapsed(!isCollapsed) : undefined}\n\t\t\t>\n\t\t\t\t{props.title}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet icon;\n\tswitch (props.alertType) {\n\t\tcase 'info': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppInfoSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'success': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppSuccessSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'critical': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppCriticalSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'warning': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppWarnSolid} />;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (icon && isCollapsible) {\n\t\ticon = (\n\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t//TODO: remove the card fence classes and build a proper collapser\n\treturn (\n\t\t<div\n\t\t\tclassName={`alert-container${props.indentation && props.indentation > 0 ? ` indent-${props.indentation}` : ''} ${\n\t\t\t\tprops.className || ''\n\t\t\t}`}\n\t\t>\n\t\t\t<div className={`alert alert-${props.alertType}`} role=\"alert\">\n\t\t\t\t{icon}\n\t\t\t\t<div className=\"alert-content\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{isCollapsed ? undefined : <div>{props.children}</div>}\n\t\t\t\t</div>\n\t\t\t\t{isCollapsible ? (\n\t\t\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t\t\t<GenesysDevIcon icon={isCollapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />\n\t\t\t\t\t</span>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './LoadingPlaceholder.scss';\n\n// SimCity loading messages! https://gist.github.com/erikcox/7e96d031d00d7ecb1a2f\nconst MESSAGES = [\n\t'Adding Hidden Agendas',\n\t'Adjusting Bell Curves',\n\t'Aesthesizing Industrial Areas',\n\t'Aligning Covariance Matrices',\n\t'Applying Feng Shui Shaders',\n\t'Applying Theatre Soda Layer',\n\t'Asserting Packed Exemplars',\n\t'Attempting to Lock Back-Buffer',\n\t'Binding Sapling Root System',\n\t'Building Data Trees',\n\t'Bureacritizing Bureaucracies',\n\t'Calculating Inverse Probability Matrices',\n\t'Calculating Llama Expectoration Trajectory',\n\t'Calibrating Blue Skies',\n\t'Charging Ozone Layer',\n\t'Coalescing Cloud Formations',\n\t'Cohorting Exemplars',\n\t'Collecting Meteor Particles',\n\t'Compounding Inert Tessellations',\n\t'Compressing Fish Files',\n\t'Computing Optimal Bin Packing',\n\t'Concatenating Sub-Contractors',\n\t'Containing Existential Buffer',\n\t'Debunching Unionized Commercial Services',\n\t'Deciding What Message to Display Next',\n\t'Decomposing Singular Values',\n\t'Decrementing Tectonic Plates',\n\t'Deleting Ferry Routes',\n\t'Depixelating Inner Mountain Surface Back Faces',\n\t'Deunionizing Bulldozers',\n\t'Dicing Models',\n\t'Diluting Livestock Nutrition Variables',\n\t'Downloading Satellite Terrain Data',\n\t'Exposing Flash Variables to Streak System',\n\t'Extracting Resources',\n\t'Flushing Pipe Network',\n\t'Gathering Particle Sources',\n\t'Generating Jobs',\n\t'Gesticulating Mimes',\n\t'Graphing Whale Migration',\n\t'Hiding Willio Webnet Mask',\n\t'Increasing Accuracy of RCI Simulators',\n\t'Increasing Magmafacation',\n\t'Initializing My Sim Tracking Mechanism',\n\t'Initializing Robotic Click-Path AI',\n\t'Inserting Sublimated Messages',\n\t'Integrating Curves',\n\t'Integrating Illumination Form Factors',\n\t'Integrating Population Graphs',\n\t'Iterating Cellular Automata',\n\t'Lecturing Errant Subsystems',\n\t'Modeling Object Components',\n\t'Mopping Occupant Leaks',\n\t'Normalizing Power',\n\t'Obfuscating Quigley Matrix',\n\t'Partitioning Singularities',\n\t'Perturbing Matrices',\n\t'Polishing Water Highlights',\n\t'Populating Lot Templates',\n\t'Preparing Sprites for Random Walks',\n\t'Prioritizing Landmarks',\n\t'Projecting Law Enforcement Pastry Intake',\n\t'Realigning Alternate Time Frames',\n\t'Relaxing Splines',\n\t'Removing Road Network Speed Bumps',\n\t'Removing Texture Gradients',\n\t'Removing Vehicle Avoidance Behavior',\n\t'Reticulating Splines',\n\t'Retracting Phong Shader',\n\t'Retrieving from Back Store',\n\t'Reverse Engineering Image Consultant',\n\t'Routing Neural Network Infanstructure',\n\t'Scattering Rhino Food Sources',\n\t'Scrubbing Terrain',\n\t'Searching for Llamas',\n\t'Seeding Architecture Simulation Parameters',\n\t'Sequencing Particles',\n\t'Setting Advisor Moods',\n\t'Setting Inner Deity Indicators',\n\t'Setting Universal Physical Constants',\n\t'Sonically Enhancing Occupant-Free Timber',\n\t'Speculating Stock Market Indices',\n\t'Splatting Transforms',\n\t'Stratifying Ground Layers',\n\t'Sub-Sampling Water Data',\n\t'Synthesizing Gravity',\n\t'Synthesizing Wavelets',\n\t'Time-Compressing Simulator Clock',\n\t'Unable to Reveal Current Activity',\n];\n\ninterface IProps {\n\ttext?: string;\n}\n\nexport default function LoadingPlaceholder(props: IProps) {\n\treturn (\n\t\t<div className=\"loading-placeholder\">\n\t\t\t<span className=\"text\">{props.text || MESSAGES[Math.floor(Math.random() * (MESSAGES.length - 1))]}</span>\n\t\t\t<div></div>\n\t\t\t<div></div>\n\t\t</div>\n\t);\n}\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nimport './Tooltip.scss';\n\ninterface IProps {\n\ttext: string;\n\tposition?: 'top' | 'right' | 'bottom' | 'left';\n\tchildren?: ReactNode;\n\tclassName?: string;\n\t// Setting this to any value enables manual control\n\tisShowing?: boolean;\n}\n\n// Inspired by https://paladini.dev/posts/how-to-make-an-extremely-reusable-tooltip-component-with-react--and-nothing-else/\nexport default function Tooltip(props: IProps) {\n\tconst [isShowing, setIsShowing] = useState(false);\n\tconst timeout = useRef<NodeJS.Timeout | undefined>();\n\n\tuseEffect(() => {\n\t\tif (props.isShowing === undefined) return;\n\t\tsetIsShowing(props.isShowing === true);\n\t}, [props.isShowing]);\n\n\tconst showTip = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n\t\t// Ignore mouse events from the tooltip itself\n\t\tif ((e.target as HTMLDivElement).className.includes('tooltip-tip')) return;\n\t\t// Ignore mouse events when manually controlled\n\t\tif (props.isShowing !== undefined) return;\n\t\ttimeout.current = setTimeout(() => {\n\t\t\tsetIsShowing(true);\n\t\t}, 100);\n\t};\n\n\tconst hideTip = () => {\n\t\tif (props.isShowing !== undefined) return;\n\t\tif (timeout.current) clearInterval(timeout.current);\n\t\tsetIsShowing(false);\n\t};\n\n\treturn (\n\t\t<div className={`tooltip-container ${props.className || ''}`} onMouseEnter={showTip} onMouseLeave={hideTip}>\n\t\t\t{props.children}\n\t\t\t<div className={`tooltip-tip ${props.position || 'top'}${isShowing ? ' visible' : ''}`}>{props.text}</div>\n\t\t</div>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport Tooltip from '../tooltip/Tooltip';\n\nimport './CopyButton.scss';\n\ninterface IProps {\n\tcopyText: string;\n\tclassName?: string;\n\ttooltipPosition?: 'top' | 'right' | 'bottom' | 'left';\n}\n\nexport default function CopyButton(props: IProps) {\n\tlet [copyState, setCopyState] = useState(false);\n\n\t// Copy function will set the component state to indicate we have copied the record and then show the tool tip. With the copyState set to true we will see 'Copied'\n\tconst copyCode = (e: React.MouseEvent<HTMLElement>) => {\n\t\te.stopPropagation();\n\t\tsetCopyState(true);\n\t\tnavigator.clipboard.writeText(props.copyText);\n\t\treturn;\n\t};\n\n\t// Once we lose focus on the copy button, we want to set the copyState to false so that we can hide the tool tip and set the default tool tip to ''\n\tconst loseFocus = () => {\n\t\tsetCopyState(false);\n\t\treturn;\n\t};\n\n\tconst buttonClasses = ['copy-button'];\n\tif (props.className) buttonClasses.push(props.className);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<Tooltip isShowing={copyState} text=\"Copied\" position={props.tooltipPosition}>\n\t\t\t\t<button type=\"button\" className={buttonClasses.join(' ')} onClick={copyCode} onMouseOut={loseFocus}>\n\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppCopy} />\n\t\t\t\t</button>\n\t\t\t</Tooltip>\n\t\t</React.Fragment>\n\t);\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport DxTextbox from '../dxtextbox/DxTextbox';\nimport DxToggle from '../dxtoggle/DxToggle';\nimport moment from 'moment';\nimport React, { useEffect, useState, ReactNode } from 'react';\nimport CopyButton from '../copybutton/CopyButton';\nimport { DataTableRow } from '..';\nimport './DataTable.scss';\n\ninterface IProps {\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 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, { useEffect, 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';\n\nimport './CodeFence.scss';\n\ndeclare global {\n\tinterface Window {\n\t\tPrism: any;\n\t}\n}\n\ninterface IProps {\n\tvalue: string;\n\tnoCollapse?: boolean;\n\tnoHeader?: boolean;\n\tautoCollapse?: boolean;\n\ttitle?: string;\n\tlanguage?: string;\n\tshowLineNumbers?: boolean;\n\tindentation?: string | number;\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\tconst [value, setValue] = useState<string>(props.value);\n\n\tuseEffect(() => {\n\t\ttry {\n\t\t\tif (props.language && props.language.toLowerCase() === 'json') {\n\t\t\t\tconst indentation = props.indentation\n\t\t\t\t\t? typeof props.indentation === 'string'\n\t\t\t\t\t\t? parseInt(props.indentation)\n\t\t\t\t\t\t: props.indentation\n\t\t\t\t\t: 2;\n\t\t\t\tconst parseJ = JSON.parse(value);\n\t\t\t\tconst tempVal = JSON.stringify(parseJ, null, indentation);\n\t\t\t\tsetValue(tempVal);\n\t\t\t}\n\t\t} catch (e) {\n\t\t\tconsole.log(e);\n\t\t}\n\t}, [props.indentation]);\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.jsonEditor) classNames.push('json-editor-fence');\n\n\tconst disableHighlighting = props.disableSyntaxHighlighting || value.length > 100000;\n\n\treturn (\n\t\t<div className={classNames.join(' ')}>\n\t\t\t{props.noHeader || typeof 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={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>{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{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"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport { DxAccordionProps } from '..';\n\nimport './DxAccordion.scss';\n\nexport default function DxAccordion(props: DxAccordionProps) {\n\tconst [isOpen, setIsOpen] = useState(props.showOpen || false);\n\tconst [expandTrigger, setExpandTrigger] = useState(props.expandTrigger);\n\tconst [showOpenTrigger, setShowOpenTrigger] = useState(props.showOpenTrigger);\n\n\t// This one forcibly opens the component\n\tReact.useEffect(() => {\n\t\tif (props.expandTrigger !== expandTrigger) {\n\t\t\tsetIsOpen(true);\n\t\t\tsetExpandTrigger(props.expandTrigger);\n\t\t}\n\t}, [props.expandTrigger, expandTrigger]);\n\n\t// This one forcibly recalculates the state based on the value for props.showOpen\n\tReact.useEffect(() => {\n\t\tif (props.showOpenTrigger !== showOpenTrigger) {\n\t\t\tsetIsOpen(props.showOpen);\n\t\t\tsetShowOpenTrigger(props.showOpenTrigger);\n\t\t}\n\t}, [props.showOpenTrigger, showOpenTrigger, props.showOpen]);\n\n\tReact.useEffect(() => {\n\t\tif (props.showOpen === true || props.showOpen === false) setIsOpen(props.showOpen);\n\t}, [props.showOpen]);\n\n\tlet style = {} as React.CSSProperties;\n\tif (props.headingColor) style.color = props.headingColor;\n\n\tlet icon;\n\tif (props.headingIcon) icon = <GenesysDevIcon icon={props.headingIcon} className=\"heading-icon\" />;\n\n\treturn (\n\t\t<div id={props.containerId || undefined} className={`dx-accordion${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"accordion-heading\" style={style} onClick={() => setIsOpen(!isOpen)}>\n\t\t\t\t<span className=\"accordion-heading__left\">\n\t\t\t\t\t{icon} {props.title}\n\t\t\t\t</span>{' '}\n\t\t\t\t<GenesysDevIcon icon={isOpen ? GenesysDevIcons.AppChevronUp : GenesysDevIcons.AppChevronDown} />\n\t\t\t</div>\n\t\t\t{isOpen ? <div className=\"accordion-content\">{props.children}</div> : undefined}\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './DxAccordionGroup.scss';\n\ninterface IProps {\n\tchildren: React.ReactNode;\n\tclassName?: string;\n}\n\nexport default function DxAccordionGroup(props: IProps) {\n\treturn <div className={`dx-accordion-group${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import React from 'react';\nimport { VoidEventCallback } from '..';\n\nimport './DxButton.scss';\n\ninterface IProps {\n\ttype?: 'primary' | 'secondary' | 'link';\n\tdisabled?: boolean;\n\tchildren?: React.ReactNode;\n\tclassName?: string;\n\tonClick?: VoidEventCallback;\n\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 className={classNames.join(' ')} type=\"button\" onClick={handleClick} disabled={props.disabled === true}>\n\t\t\t{props.children}\n\t\t</button>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React from 'react';\n\nimport './DxLabel.scss';\n\ninterface IProps {\n\tlabel?: string;\n\tdescription?: string;\n\tuseFieldset?: boolean;\n\tclassName?: string;\n\tchildren: React.ReactNode;\n}\n\nexport default function DxLabel(props: IProps) {\n\tconst hasLabel = props.label && props.label !== '';\n\n\tconst description = props.description ? (\n\t\t<div className='input-description'>\n\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppInfoSolid} />\n\t\t\t<span>{props.description}</span>\n\t\t</div>\n\t) : undefined;\n\n\tconst contents = (\n\t\t<React.Fragment>\n\t\t\t{' '}\n\t\t\t{hasLabel ? <span className='label-text'>{props.label}</span> : undefined}\n\t\t\t{props.children}\n\t\t\t{description}\n\t\t</React.Fragment>\n\t);\n\n\tconst className = `dx-label${props.className ? ' ' + props.className : ''}`;\n\n\tif (props.useFieldset) {\n\t\treturn <fieldset className={className}>{contents}</fieldset>;\n\t}\n\treturn <label className={className}>{contents}</label>;\n}\n","import React, { useEffect, useState } from 'react';\nimport { CheckedChangedCallback } from '..';\n\nimport './DxCheckbox.scss';\n\ninterface IProps {\n\tlabel: string;\n\titemValue: string;\n\tdescription?: string;\n\tchecked?: boolean;\n\tinitiallyChecked?: boolean;\n\tname?: string;\n\tclassName?: string;\n\tonCheckChanged?: CheckedChangedCallback;\n\tuseRadioType?: boolean;\n\tdisabled?: boolean;\n}\n\nexport default function DxCheckbox(props: IProps) {\n\tlet initialValue: boolean = props.checked !== undefined ? props.checked : props.initiallyChecked || false;\n\n\tconst [checked, setChecked] = useState<boolean>(initialValue);\n\n\tuseEffect(() => {\n\t\tif (props.checked === undefined || props.checked === checked) return;\n\t\tsetChecked(props.checked);\n\t}, [props.checked]);\n\n\tuseEffect(() => {\n\t\tif (props.onCheckChanged) props.onCheckChanged(checked);\n\t}, [checked]);\n\n\treturn (\n\t\t<label className={`dx-checkbox${props.className ? ' ' + props.className : ''}${props.disabled ? ' disabled' : ''}`}>\n\t\t\t<input\n\t\t\t\ttype={props.useRadioType ? 'radio' : 'checkbox'}\n\t\t\t\tname={props.name}\n\t\t\t\tvalue={props.itemValue}\n\t\t\t\tchecked={checked}\n\t\t\t\tonChange={(e) => setChecked(e.target.checked)}\n\t\t\t\tdisabled={props.disabled === true}\n\t\t\t/>\n\t\t\t<span className='label-text'>{props.label}</span>\n\t\t</label>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { v4 as uuid } from 'uuid';\nimport { DxItemGroupItem, DxItemGroupItemValue, DxItemGroupProps, ItemChangedCallback, ItemGroupChangedCallback } from '..';\n\nimport './DxItemGroup.scss';\nimport './radiobutton.scss';\nimport './dropdown.scss';\nimport './multiselect.scss';\nimport DxLabel from '../dxlabel/DxLabel';\nimport DxCheckbox from './DxCheckbox';\n\nexport default function DxItemGroup(props: DxItemGroupProps) {\n\tconst [data, setData] = useState<DxItemGroupItemValue[]>(\n\t\tprops.items.map((item) => {\n\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t})\n\t);\n\tconst [id] = useState(uuid());\n\tconst [title, setTitle] = useState(props.title);\n\tconst [description, setDescription] = useState(props.description);\n\tconst [format, setFormat] = useState(props.format);\n\tconst [disabled, setDisabled] = useState(props.disabled);\n\tconst [className, setClassName] = useState(props.className);\n\n\t// data changed\n\tuseEffect(() => {\n\t\tif (props.onItemsChanged) props.onItemsChanged(data);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [data]);\n\n\t// Recalculate on props changed\n\tuseEffect(() => {\n\t\tsetTitle(props.title);\n\t\tsetDescription(props.description);\n\t\tsetFormat(props.format);\n\t\tsetDisabled(props.disabled);\n\t\tsetClassName(props.className);\n\t}, [props.title, props.description, props.format, props.items, props.disabled, props.className]);\n\n\tuseEffect(() => {\n\t\tsetData(\n\t\t\tprops.items.map((item) => {\n\t\t\t\treturn { item, isSelected: item.isSelected !== undefined ? item.isSelected : false };\n\t\t\t})\n\t\t);\n\t}, [props.items]);\n\t// Handle individual item changed\n\tconst itemChanged = (idx: number, item: DxItemGroupItem, checked: boolean) => {\n\t\tif (props.onItemChanged) props.onItemChanged(item, checked);\n\t\tlet newData = [...data];\n\t\t// Unselect everything if it's radio buttons\n\t\tif (format === 'radio') newData.forEach((value) => (value.isSelected = false));\n\t\t// Set the selected state of the new item\n\t\tnewData[idx].isSelected = checked;\n\t\tsetData(newData);\n\t};\n\n\tconst selectChanged = (e: React.ChangeEvent<HTMLSelectElement>) => {\n\t\tconst options = e.target.options;\n\t\tlet newData = [...data];\n\t\t// Assign selected value for each item in the list\n\t\tfor (let i = 0; i < options.length; i++) {\n\t\t\tconst thisItem = newData.find((value) => value.item.value === options[i].value);\n\t\t\tthisItem.isSelected = options[i].selected;\n\t\t}\n\t\t// Update entire data list\n\t\tsetData(newData);\n\t\t// Trigger individual update\n\t\tconst changedItemIdx = newData.findIndex((value) => value.item.value === e.target.value);\n\t\tif (changedItemIdx >= 0) itemChanged(changedItemIdx, newData[changedItemIdx].item, newData[changedItemIdx].isSelected);\n\t};\n\n\tswitch (format) {\n\t\tcase 'multiselect':\n\t\tcase 'dropdown': {\n\t\t\tconst isMulti = format === 'multiselect';\n\t\t\treturn (\n\t\t\t\t<DxLabel label={title} description={description} className={className}>\n\t\t\t\t\t<div className={`dx-item-group${isMulti ? ' dx-multiselect-group' : ' dx-select-group'}${disabled ? ' disabled' : ''}`}>\n\t\t\t\t\t\t<select\n\t\t\t\t\t\t\tmultiple={isMulti}\n\t\t\t\t\t\t\tdisabled={disabled === true}\n\t\t\t\t\t\t\tonChange={(e) => selectChanged(e)}\n\t\t\t\t\t\t\tvalue={\n\t\t\t\t\t\t\t\tisMulti\n\t\t\t\t\t\t\t\t\t? data.filter((item) => item.isSelected)?.map((item) => item.item.value)\n\t\t\t\t\t\t\t\t\t: data.find((item) => item.isSelected)?.item.value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t\t<option key={i} value={d.item.value} disabled={d.item.disabled}>\n\t\t\t\t\t\t\t\t\t{d.item.label}\n\t\t\t\t\t\t\t\t</option>\n\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</select>\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t\tcase 'checkbox':\n\t\tcase 'radio':\n\t\tdefault: {\n\t\t\treturn (\n\t\t\t\t<DxLabel\n\t\t\t\t\tlabel={title}\n\t\t\t\t\tdescription={description}\n\t\t\t\t\tclassName={`dx-item-group${disabled ? ' disabled' : ''}${className ? ' ' + className : ''}`}\n\t\t\t\t\tuseFieldset={true}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tonChange={(e: React.ChangeEvent<HTMLDivElement>) => {\n\t\t\t\t\t\t\tconst i = data.findIndex((d) => d.item.value === (e.target as any)?.value);\n\t\t\t\t\t\t\tif (i < 0) return;\n\t\t\t\t\t\t\titemChanged(i, data[i].item, (e.target as any)?.checked);\n\t\t\t\t\t\t}}\n\t\t\t\t\t>\n\t\t\t\t\t\t{data.map((d, i) => (\n\t\t\t\t\t\t\t<DxCheckbox\n\t\t\t\t\t\t\t\tkey={d.item.value}\n\t\t\t\t\t\t\t\tname={format === 'checkbox' ? `${id}-${d.item.value}` : id}\n\t\t\t\t\t\t\t\tlabel={d.item.label}\n\t\t\t\t\t\t\t\titemValue={d.item.value}\n\t\t\t\t\t\t\t\tchecked={d.isSelected}\n\t\t\t\t\t\t\t\tuseRadioType={format === 'radio'}\n\t\t\t\t\t\t\t\tdisabled={disabled || d.item.disabled}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t))}\n\t\t\t\t\t</div>\n\t\t\t\t</DxLabel>\n\t\t\t);\n\t\t}\n\t}\n}\n","import React, { useState } from 'react';\nimport { DxTabbedContentProps } from '..';\n\nimport './DxTabbedContent.scss';\n\nexport default function DxTabbedContent(props: DxTabbedContentProps) {\n\tconst [activeTab, setActiveTab] = useState(props.initialTabId || 0);\n\n\treturn (\n\t\t<div className={`dx-tabbed-content${props.className ? ' ' + props.className : ''}`}>\n\t\t\t<div className=\"tab-titles\">\n\t\t\t\t{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 <div className={`dx-tab-panel${props.className ? ' ' + props.className : ''}`}>{props.children}</div>;\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useEffect, useRef, useState } from 'react';\nimport DxLabel from '../dxlabel/DxLabel';\nimport { DxTextboxProps } from '..';\n\nimport './DxTextbox.scss';\n\nexport default function DxTextbox(props: DxTextboxProps) {\n\tconst [debounceMs, setDebounceMs] = useState(props.changeDebounceMs || 300);\n\tconst [value, setValue] = useState(props.initialValue || props.value || '');\n\tconst [isFocused, setIsFocused] = useState(false);\n\tconst [escapePressed, setEscapePressed] = useState(Date.now());\n\tconst [step, setStep] = useState<string | number | undefined>(undefined);\n\tlet [timer, setTimer] = useState(undefined as unknown as ReturnType<typeof setTimeout>);\n\n\t// Constructor\n\tuseEffect(() => {\n\t\t// Register global key bindings\n\t\tdocument.addEventListener('keydown', globalKeyBindings, false);\n\n\t\treturn () => {\n\t\t\tdocument.removeEventListener('keydown', globalKeyBindings, false);\n\t\t};\n\t}, []);\n\n\t// Value prop updated\n\tuseEffect(() => {\n\t\t//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\tconst date = new Date(input);\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 label={props.label} description={props.description} className={props.className}>\n\t\t\t{component}\n\t\t</DxLabel>\n\t);\n}\n","import React, { useEffect, useState } from 'react';\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport { BooleanChangedCallback, DxToggleProps } from '..';\n\nimport './DxToggle.scss';\nimport DxLabel from '../dxlabel/DxLabel';\n\nexport default function DxToggle(props: DxToggleProps) {\n\tlet initialValue: boolean | undefined = props.value !== undefined ? props.value : props.initialValue;\n\tif (!props.isTriState) initialValue = initialValue || false;\n\n\tconst [value, setValue] = useState<boolean | undefined>(initialValue);\n\n\tconst trueIcon = props.trueIcon || GenesysDevIcons.AppCheck;\n\tconst falseIcon = props.falseIcon || GenesysDevIcons.AppTimes;\n\n\tuseEffect(() => {\n\t\tif (props.initialValue || props.value === value || (!props.isTriState && props.value === undefined)) return;\n\t\tsetValue(props.value);\n\t}, [props.value]);\n\n\tuseEffect(() => {\n\t\tif (props.onChange) props.onChange(value);\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps\n\t}, [value]);\n\n\tconst 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 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 './AlertBlock.scss';\n\ninterface IProps {\n\ttitle?: string;\n\talertType?: 'info' | 'success' | 'critical' | 'warning' | 'toast';\n\tcollapsible?: boolean;\n\tautoCollapse?: boolean;\n\tindentation?: number;\n\tchildren?: any;\n\tclassName?: string;\n}\n\nexport default function AlertBlock(props: IProps) {\n\tconst isCollapsible = props.collapsible === false ? false : props.collapsible || props.autoCollapse || false;\n\tconst [isCollapsed, setIsCollapsed] = useState(isCollapsible ? props.autoCollapse || false : false);\n\n\tlet title;\n\tif (props.title) {\n\t\ttitle = (\n\t\t\t<div\n\t\t\t\tclassName={`alert-title${isCollapsible ? ' clickable' : ''}${isCollapsed ? ' collapsed' : ''}`}\n\t\t\t\tonClick={isCollapsible ? () => setIsCollapsed(!isCollapsed) : undefined}\n\t\t\t>\n\t\t\t\t{props.title}\n\t\t\t</div>\n\t\t);\n\t}\n\n\tlet icon;\n\tswitch (props.alertType) {\n\t\tcase 'info': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppInfoSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'success': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppSuccessSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'critical': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppCriticalSolid} />;\n\t\t\tbreak;\n\t\t}\n\t\tcase 'warning': {\n\t\t\ticon = <GenesysDevIcon className=\"info-icon\" icon={GenesysDevIcons.AppWarnSolid} />;\n\t\t\tbreak;\n\t\t}\n\t}\n\tif (icon && isCollapsible) {\n\t\ticon = (\n\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t{icon}\n\t\t\t</span>\n\t\t);\n\t}\n\n\t//TODO: remove the card fence classes and build a proper collapser\n\treturn (\n\t\t<div\n\t\t\tclassName={`alert-container${props.indentation && props.indentation > 0 ? ` indent-${props.indentation}` : ''} ${\n\t\t\t\tprops.className || ''\n\t\t\t}`}\n\t\t>\n\t\t\t<div className={`alert alert-${props.alertType}`} role=\"alert\">\n\t\t\t\t{icon}\n\t\t\t\t<div className=\"alert-content\">\n\t\t\t\t\t{title}\n\t\t\t\t\t{isCollapsed ? undefined : <div>{props.children}</div>}\n\t\t\t\t</div>\n\t\t\t\t{isCollapsible ? (\n\t\t\t\t\t<span className=\"clickable\" onClick={() => setIsCollapsed(!isCollapsed)}>\n\t\t\t\t\t\t<GenesysDevIcon icon={isCollapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />\n\t\t\t\t\t</span>\n\t\t\t\t) : undefined}\n\t\t\t</div>\n\t\t</div>\n\t);\n}\n","import React from 'react';\n\nimport './LoadingPlaceholder.scss';\n\n// SimCity loading messages! https://gist.github.com/erikcox/7e96d031d00d7ecb1a2f\nconst MESSAGES = [\n\t'Adding Hidden Agendas',\n\t'Adjusting Bell Curves',\n\t'Aesthesizing Industrial Areas',\n\t'Aligning Covariance Matrices',\n\t'Applying Feng Shui Shaders',\n\t'Applying Theatre Soda Layer',\n\t'Asserting Packed Exemplars',\n\t'Attempting to Lock Back-Buffer',\n\t'Binding Sapling Root System',\n\t'Building Data Trees',\n\t'Bureacritizing Bureaucracies',\n\t'Calculating Inverse Probability Matrices',\n\t'Calculating Llama Expectoration Trajectory',\n\t'Calibrating Blue Skies',\n\t'Charging Ozone Layer',\n\t'Coalescing Cloud Formations',\n\t'Cohorting Exemplars',\n\t'Collecting Meteor Particles',\n\t'Compounding Inert Tessellations',\n\t'Compressing Fish Files',\n\t'Computing Optimal Bin Packing',\n\t'Concatenating Sub-Contractors',\n\t'Containing Existential Buffer',\n\t'Debunching Unionized Commercial Services',\n\t'Deciding What Message to Display Next',\n\t'Decomposing Singular Values',\n\t'Decrementing Tectonic Plates',\n\t'Deleting Ferry Routes',\n\t'Depixelating Inner Mountain Surface Back Faces',\n\t'Deunionizing Bulldozers',\n\t'Dicing Models',\n\t'Diluting Livestock Nutrition Variables',\n\t'Downloading Satellite Terrain Data',\n\t'Exposing Flash Variables to Streak System',\n\t'Extracting Resources',\n\t'Flushing Pipe Network',\n\t'Gathering Particle Sources',\n\t'Generating Jobs',\n\t'Gesticulating Mimes',\n\t'Graphing Whale Migration',\n\t'Hiding Willio Webnet Mask',\n\t'Increasing Accuracy of RCI Simulators',\n\t'Increasing Magmafacation',\n\t'Initializing My Sim Tracking Mechanism',\n\t'Initializing Robotic Click-Path AI',\n\t'Inserting Sublimated Messages',\n\t'Integrating Curves',\n\t'Integrating Illumination Form Factors',\n\t'Integrating Population Graphs',\n\t'Iterating Cellular Automata',\n\t'Lecturing Errant Subsystems',\n\t'Modeling Object Components',\n\t'Mopping Occupant Leaks',\n\t'Normalizing Power',\n\t'Obfuscating Quigley Matrix',\n\t'Partitioning Singularities',\n\t'Perturbing Matrices',\n\t'Polishing Water Highlights',\n\t'Populating Lot Templates',\n\t'Preparing Sprites for Random Walks',\n\t'Prioritizing Landmarks',\n\t'Projecting Law Enforcement Pastry Intake',\n\t'Realigning Alternate Time Frames',\n\t'Relaxing Splines',\n\t'Removing Road Network Speed Bumps',\n\t'Removing Texture Gradients',\n\t'Removing Vehicle Avoidance Behavior',\n\t'Reticulating Splines',\n\t'Retracting Phong Shader',\n\t'Retrieving from Back Store',\n\t'Reverse Engineering Image Consultant',\n\t'Routing Neural Network Infanstructure',\n\t'Scattering Rhino Food Sources',\n\t'Scrubbing Terrain',\n\t'Searching for Llamas',\n\t'Seeding Architecture Simulation Parameters',\n\t'Sequencing Particles',\n\t'Setting Advisor Moods',\n\t'Setting Inner Deity Indicators',\n\t'Setting Universal Physical Constants',\n\t'Sonically Enhancing Occupant-Free Timber',\n\t'Speculating Stock Market Indices',\n\t'Splatting Transforms',\n\t'Stratifying Ground Layers',\n\t'Sub-Sampling Water Data',\n\t'Synthesizing Gravity',\n\t'Synthesizing Wavelets',\n\t'Time-Compressing Simulator Clock',\n\t'Unable to Reveal Current Activity',\n];\n\ninterface IProps {\n\ttext?: string;\n}\n\nexport default function LoadingPlaceholder(props: IProps) {\n\treturn (\n\t\t<div className=\"loading-placeholder\">\n\t\t\t<span className=\"text\">{props.text || MESSAGES[Math.floor(Math.random() * (MESSAGES.length - 1))]}</span>\n\t\t\t<div></div>\n\t\t\t<div></div>\n\t\t</div>\n\t);\n}\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nimport './Tooltip.scss';\n\ninterface IProps {\n\ttext: string;\n\tposition?: 'top' | 'right' | 'bottom' | 'left';\n\tchildren?: ReactNode;\n\tclassName?: string;\n\t// Setting this to any value enables manual control\n\tisShowing?: boolean;\n}\n\n// Inspired by https://paladini.dev/posts/how-to-make-an-extremely-reusable-tooltip-component-with-react--and-nothing-else/\nexport default function Tooltip(props: IProps) {\n\tconst [isShowing, setIsShowing] = useState(false);\n\tconst timeout = useRef<NodeJS.Timeout | undefined>();\n\n\tuseEffect(() => {\n\t\tif (props.isShowing === undefined) return;\n\t\tsetIsShowing(props.isShowing === true);\n\t}, [props.isShowing]);\n\n\tconst showTip = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n\t\t// Ignore mouse events from the tooltip itself\n\t\tif ((e.target as HTMLDivElement).className.includes('tooltip-tip')) return;\n\t\t// Ignore mouse events when manually controlled\n\t\tif (props.isShowing !== undefined) return;\n\t\ttimeout.current = setTimeout(() => {\n\t\t\tsetIsShowing(true);\n\t\t}, 100);\n\t};\n\n\tconst hideTip = () => {\n\t\tif (props.isShowing !== undefined) return;\n\t\tif (timeout.current) clearInterval(timeout.current);\n\t\tsetIsShowing(false);\n\t};\n\n\treturn (\n\t\t<div className={`tooltip-container ${props.className || ''}`} onMouseEnter={showTip} onMouseLeave={hideTip}>\n\t\t\t{props.children}\n\t\t\t<div className={`tooltip-tip ${props.position || 'top'}${isShowing ? ' visible' : ''}`}>{props.text}</div>\n\t\t</div>\n\t);\n}\n","import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport React, { useState } from 'react';\nimport Tooltip from '../tooltip/Tooltip';\n\nimport './CopyButton.scss';\n\ninterface IProps {\n\tcopyText: string;\n\tclassName?: string;\n\ttooltipPosition?: 'top' | 'right' | 'bottom' | 'left';\n}\n\nexport default function CopyButton(props: IProps) {\n\tlet [copyState, setCopyState] = useState(false);\n\n\t// Copy function will set the component state to indicate we have copied the record and then show the tool tip. With the copyState set to true we will see 'Copied'\n\tconst copyCode = (e: React.MouseEvent<HTMLElement>) => {\n\t\te.stopPropagation();\n\t\tsetCopyState(true);\n\t\tnavigator.clipboard.writeText(props.copyText);\n\t\treturn;\n\t};\n\n\t// Once we lose focus on the copy button, we want to set the copyState to false so that we can hide the tool tip and set the default tool tip to ''\n\tconst loseFocus = () => {\n\t\tsetCopyState(false);\n\t\treturn;\n\t};\n\n\tconst buttonClasses = ['copy-button'];\n\tif (props.className) buttonClasses.push(props.className);\n\n\treturn (\n\t\t<React.Fragment>\n\t\t\t<Tooltip isShowing={copyState} text=\"Copied\" position={props.tooltipPosition}>\n\t\t\t\t<button type=\"button\" className={buttonClasses.join(' ')} onClick={copyCode} onMouseOut={loseFocus}>\n\t\t\t\t\t<GenesysDevIcon icon={GenesysDevIcons.AppCopy} />\n\t\t\t\t</button>\n\t\t\t</Tooltip>\n\t\t</React.Fragment>\n\t);\n}\n","/* eslint-disable react-hooks/exhaustive-deps */\nimport { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';\nimport DxTextbox from '../dxtextbox/DxTextbox';\nimport DxToggle from '../dxtoggle/DxToggle';\nimport moment from 'moment';\nimport React, { useEffect, useState, ReactNode } from 'react';\nimport CopyButton from '../copybutton/CopyButton';\nimport { DataTableRow } from '..';\nimport './DataTable.scss';\n\ninterface IProps {\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 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';\n\nimport './CodeFence.scss';\n\ndeclare global {\n\tinterface Window {\n\t\tPrism: any;\n\t}\n}\n\ninterface IProps {\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 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,7 +1,7 @@
1
- /// <reference types="react" />
1
+ import React from 'react';
2
2
  import './LoadingPlaceholder.scss';
3
3
  interface IProps {
4
4
  text?: string;
5
5
  }
6
- export default function LoadingPlaceholder(props: IProps): JSX.Element;
6
+ export default function LoadingPlaceholder(props: IProps): React.JSX.Element;
7
7
  export {};
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import React, { ReactNode } from 'react';
2
2
  import './Tooltip.scss';
3
3
  interface IProps {
4
4
  text: string;
@@ -7,5 +7,5 @@ interface IProps {
7
7
  className?: string;
8
8
  isShowing?: boolean;
9
9
  }
10
- export default function Tooltip(props: IProps): JSX.Element;
10
+ export default function Tooltip(props: IProps): React.JSX.Element;
11
11
  export {};
package/package.json CHANGED
@@ -1,60 +1,59 @@
1
1
  {
2
- "name": "genesys-react-components",
3
- "version": "1.0.5-DEVENGAGE-2953-codefence-not-indenting.657",
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
- "genesys-dev-icons": "^0.4.1",
36
- "react": "^16",
37
- "react-dom": "^16",
38
- "rollup": "^2.60.2",
39
- "rollup-plugin-peer-deps-external": "^2.2.4",
40
- "rollup-plugin-postcss": "^4.0.2",
41
- "rollup-plugin-typescript2": "^0.31.1",
42
- "sass": "^1.44.0",
43
- "typescript": "^4.5.2",
44
- "uuid": "^9.0.0"
45
- },
46
- "peerDependencies": {
47
- "genesys-dev-icons": "^1.0.0",
48
- "moment": "^2.29.4",
49
- "postcss": "^8.4.6",
50
- "react": ">=16",
51
- "react-dom": ">=16",
52
- "react-syntax-highlighter": "^15.5.0",
53
- "uuid": "^9.0.0"
54
- },
55
- "dependencies": {
56
- "moment": "^2.30.1",
57
- "postcss": "^8.4.35",
58
- "react-syntax-highlighter": "^15.5.0"
59
- }
60
- }
2
+ "name": "genesys-react-components",
3
+ "version": "1.0.5",
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.0.0",
47
+ "moment": "^2.29.4",
48
+ "postcss": "^8.4.6",
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.29.4",
56
+ "postcss": "^8.4.6",
57
+ "react-syntax-highlighter": "^15.5.0"
58
+ }
59
+ }
@@ -1,5 +1,5 @@
1
1
  import { GenesysDevIcon, GenesysDevIcons } from 'genesys-dev-icons';
2
- import React, { useEffect, useState } from 'react';
2
+ import React, { useState } from 'react';
3
3
  import { PrismAsync as SyntaxHighlighter } from 'react-syntax-highlighter';
4
4
  import { vscDarkPlus } from 'react-syntax-highlighter/dist/cjs/styles/prism/index.js';
5
5
 
@@ -21,7 +21,7 @@ interface IProps {
21
21
  title?: string;
22
22
  language?: string;
23
23
  showLineNumbers?: boolean;
24
- indentation?: string | number;
24
+ indentation?: string;
25
25
  className?: string;
26
26
  jsonEditor?: boolean;
27
27
  innerRef?: any;
@@ -30,24 +30,6 @@ interface IProps {
30
30
 
31
31
  export default function CodeFence(props: IProps) {
32
32
  const [collapsed, setCollapsed] = useState(props.noCollapse ? false : props.autoCollapse || false);
33
- const [value, setValue] = useState<string>(props.value);
34
-
35
- useEffect(() => {
36
- try {
37
- if (props.language && props.language.toLowerCase() === 'json') {
38
- const indentation = props.indentation
39
- ? typeof props.indentation === 'string'
40
- ? parseInt(props.indentation)
41
- : props.indentation
42
- : 2;
43
- const parseJ = JSON.parse(value);
44
- const tempVal = JSON.stringify(parseJ, null, indentation);
45
- setValue(tempVal);
46
- }
47
- } catch (e) {
48
- console.log(e);
49
- }
50
- }, [props.indentation]);
51
33
 
52
34
  const bodyClassNames: string[] = ['fence-body'];
53
35
  if (props.jsonEditor) bodyClassNames.push('json-editor-body');
@@ -55,13 +37,14 @@ export default function CodeFence(props: IProps) {
55
37
  const classNames: string[] = ['fence'];
56
38
  if (props.className) classNames.push(props.className);
57
39
  if (props.noCollapse) classNames.push('nocollapse');
40
+ if (props.indentation) classNames.push(`indent-${props.indentation}`);
58
41
  if (props.jsonEditor) classNames.push('json-editor-fence');
59
42
 
60
- const disableHighlighting = props.disableSyntaxHighlighting || value.length > 100000;
43
+ const disableHighlighting = props.disableSyntaxHighlighting || props.value.length > 100000;
61
44
 
62
45
  return (
63
46
  <div className={classNames.join(' ')}>
64
- {props.noHeader || typeof value !== 'string' ? (
47
+ {props.noHeader || typeof props.value !== 'string' ? (
65
48
  ''
66
49
  ) : (
67
50
  <div
@@ -72,7 +55,7 @@ export default function CodeFence(props: IProps) {
72
55
  {props.noCollapse ? undefined : (
73
56
  <GenesysDevIcon icon={collapsed ? GenesysDevIcons.AppChevronDown : GenesysDevIcons.AppChevronUp} />
74
57
  )}
75
- <CopyButton copyText={value} />
58
+ <CopyButton copyText={props.value} />
76
59
  <span className="fence-title">{props.title}</span>
77
60
  </div>
78
61
  )}
@@ -80,12 +63,12 @@ export default function CodeFence(props: IProps) {
80
63
  <div ref={props.innerRef || undefined} className={bodyClassNames.join(' ')}>
81
64
  {disableHighlighting && (
82
65
  <pre>
83
- <code>{value}</code>
66
+ <code>{props.value}</code>
84
67
  </pre>
85
68
  )}
86
69
  {!disableHighlighting && (
87
70
  <SyntaxHighlighter language={props.language?.toLowerCase()} style={vscDarkPlus} showLineNumbers={props.showLineNumbers}>
88
- {value}
71
+ {props.value}
89
72
  </SyntaxHighlighter>
90
73
  )}
91
74
  </div>
@@ -25,8 +25,18 @@ export default function DxTextbox(props: DxTextboxProps) {
25
25
 
26
26
  // Value prop updated
27
27
  useEffect(() => {
28
- // Ignore value changed if initial value was set; they're mutually exclusive
29
- if (!props.initialValue) {
28
+ //Set initial value of date to avoid invalid format error
29
+ if (inputType === 'date') {
30
+ let parsedDate: Date;
31
+ if (props.initialValue) {
32
+ parsedDate = parseDate(props.initialValue);
33
+ } else {
34
+ parsedDate = parseDate(props.value);
35
+ }
36
+ const formattedDate = formatDate(parsedDate?.toISOString());
37
+ setValue(formattedDate);
38
+ // Ignore value changed if initial value was set; they're mutually exclusive
39
+ } else if (!props.initialValue && inputType !== 'date') {
30
40
  setValue(props.value || '');
31
41
  }
32
42
  }, [props.value]);
@@ -84,7 +94,7 @@ export default function DxTextbox(props: DxTextboxProps) {
84
94
  if (props.onKeyboardEvent) {
85
95
  props.onKeyboardEvent(event);
86
96
  }
87
-
97
+
88
98
  // Escape - cancel search
89
99
  if (event.key === 'Escape' && props.clearOnEscape) {
90
100
  event.stopPropagation();
@@ -93,7 +103,25 @@ export default function DxTextbox(props: DxTextboxProps) {
93
103
  return;
94
104
  }
95
105
  }
96
-
106
+
107
+ //Formats date to fit required HTML format
108
+ const formatDate = (inputDate: string) => {
109
+ const date = new Date(inputDate);
110
+ if (isNaN(date.getTime())) return ''; // Return empty if invalid date
111
+
112
+ // Format as YYYY-MM-DD for HTML date input
113
+ const year = date.getFullYear();
114
+ const month = String(date.getMonth() + 1).padStart(2, '0');
115
+ const day = String(date.getDate()).padStart(2, '0');
116
+ return `${year}-${month}-${day}`;
117
+ };
118
+
119
+ const parseDate = (input: string) => {
120
+ if (!input) return;
121
+ const date = new Date(input);
122
+ return isNaN(date.getTime()) ? null : date;
123
+ };
124
+
97
125
  // Normalize input type
98
126
  let inputType: React.HTMLInputTypeAttribute | undefined = props.inputType;
99
127
  if (inputType === 'integer' || inputType === 'decimal') inputType = 'number';