@ballistix.digital/react-components 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -79,6 +79,7 @@ type TProps$e = {
79
79
  isLoading?: boolean;
80
80
  onClose?: () => void;
81
81
  styles?: TBadgeElementStyles;
82
+ dataCy?: string;
82
83
  };
83
84
  declare const BadgeElement: FC<TProps$e>;
84
85
 
@@ -91,6 +92,7 @@ type TButtonElementProps = {
91
92
  figure?: 'block' | 'rounded';
92
93
  status?: 'idle' | 'loading' | 'success' | 'error';
93
94
  isDisabled?: boolean;
95
+ dataCy?: string;
94
96
  styles?: TButtonElementStyles;
95
97
  onClick?: (e?: MouseEvent$1<HTMLButtonElement>) => void;
96
98
  };
@@ -131,6 +133,7 @@ type TProps$c = {
131
133
  children: ReactElement | ReactElement[];
132
134
  label?: string | ReactElement;
133
135
  trigger?: ReactNode;
136
+ dataCy?: string;
134
137
  type?: 'button' | 'compact';
135
138
  direction?: 'bottom-left' | 'bottom-right' | 'top-left' | 'top-right';
136
139
  isEscapingOverflow?: boolean;
@@ -682,6 +685,7 @@ type TModalOverlayProps = {
682
685
  }) => ReactNode;
683
686
  size?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
684
687
  styles?: TModalOverlayStyles;
688
+ dataCy?: string;
685
689
  onOpen?: () => void;
686
690
  onClose?: () => void;
687
691
  };
package/dist/index.esm.js CHANGED
@@ -403,7 +403,7 @@ var styles$s = {
403
403
  };
404
404
 
405
405
  var BadgeElement = function (props) {
406
- var children = props.children, _a = props.color, color = _a === void 0 ? 'gray' : _a, _b = props.type, type = _b === void 0 ? 'normal' : _b, _c = props.size, size = _c === void 0 ? 'sm' : _c, _d = props.figure, figure = _d === void 0 ? 'block' : _d, isDisabled = props.isDisabled, isLoading = props.isLoading, onClose = props.onClose, stylesOverrides = props.styles;
406
+ var children = props.children, _a = props.color, color = _a === void 0 ? 'gray' : _a, _b = props.type, type = _b === void 0 ? 'normal' : _b, _c = props.size, size = _c === void 0 ? 'sm' : _c, _d = props.figure, figure = _d === void 0 ? 'block' : _d, isDisabled = props.isDisabled, isLoading = props.isLoading, onClose = props.onClose, stylesOverrides = props.styles, dataCy = props.dataCy;
407
407
  var handleGenerateStyle = function () {
408
408
  var result = deepCopyObject(styles$r.base);
409
409
  var keys = calculateNestedKeys(styles$r.base);
@@ -417,7 +417,7 @@ var BadgeElement = function (props) {
417
417
  if (isLoading) {
418
418
  return (jsx("span", { className: toClassName(styles.container, 'h-4 w-12 animate-pulse'), children: type === 'indicator' && (jsx("svg", { className: styles.indicator, fill: "currentColor", viewBox: "0 0 8 8", children: jsx("circle", { cx: 4, cy: 4, r: 3 }) })) }));
419
419
  }
420
- return (jsxs("span", { className: styles.container, children: [type === 'indicator' && (jsx("svg", { className: styles.indicator, fill: "currentColor", viewBox: "0 0 8 8", children: jsx("circle", { cx: 4, cy: 4, r: 3 }) })), children, type === 'close' && (jsxs("button", { type: "button", className: styles.button, onClick: onClose, children: [jsx("span", { className: "sr-only", children: "Remove large option" }), xIcon] }))] }));
420
+ return (jsxs("span", { className: styles.container, "data-cy": dataCy, children: [type === 'indicator' && (jsx("svg", { className: styles.indicator, fill: "currentColor", viewBox: "0 0 8 8", children: jsx("circle", { cx: 4, cy: 4, r: 3 }) })), children, type === 'close' && (jsxs("button", { type: "button", className: styles.button, onClick: onClose, children: [jsx("span", { className: "sr-only", children: "Remove large option" }), xIcon] }))] }));
421
421
  };
422
422
 
423
423
  var base$o = {
@@ -528,7 +528,7 @@ var styles$r = {
528
528
  };
529
529
 
530
530
  var ButtonElement = function (props) {
531
- var children = props.children, innerRef = props.innerRef, _a = props.htmlType, htmlType = _a === void 0 ? 'button' : _a, _b = props.type, type = _b === void 0 ? 'primary' : _b, _c = props.size, size = _c === void 0 ? 'md' : _c, _d = props.figure, figure = _d === void 0 ? 'block' : _d, _e = props.status, status = _e === void 0 ? 'idle' : _e, isDisabled = props.isDisabled, stylesOverrides = props.styles, onClick = props.onClick;
531
+ var children = props.children, innerRef = props.innerRef, _a = props.htmlType, htmlType = _a === void 0 ? 'button' : _a, dataCy = props.dataCy, _b = props.type, type = _b === void 0 ? 'primary' : _b, _c = props.size, size = _c === void 0 ? 'md' : _c, _d = props.figure, figure = _d === void 0 ? 'block' : _d, _e = props.status, status = _e === void 0 ? 'idle' : _e, isDisabled = props.isDisabled, stylesOverrides = props.styles, onClick = props.onClick;
532
532
  var handleGenerateStyle = function () {
533
533
  var result = deepCopyObject(styles$q.base);
534
534
  var keys = calculateNestedKeys(styles$q.base);
@@ -540,7 +540,7 @@ var ButtonElement = function (props) {
540
540
  var styles = handleGenerateStyle();
541
541
  return (jsxs("button", { type: htmlType, className: styles.container, disabled: isDisabled || status !== 'idle', onClick: function (e) {
542
542
  onClick && onClick(e);
543
- }, ref: innerRef, children: [status === 'idle' && children, status === 'loading' && (jsxs("div", { className: styles.content, children: [jsx(IconElement, { type: "regular", accessor: "spinner", className: styles.spinner }), jsx("div", { children: children })] })), status === 'error' && (jsxs("div", { className: styles.content, children: [jsx(IconElement, { type: "regular", accessor: "circle-exclamation", className: styles.icon }), jsx("div", { children: children })] })), status === 'success' && (jsxs("div", { className: styles.content, children: [jsx(IconElement, { type: "regular", accessor: "circle-check", className: styles.icon }), jsx("div", { children: children })] }))] }));
543
+ }, ref: innerRef, "data-cy": dataCy, children: [status === 'idle' && children, status === 'loading' && (jsxs("div", { className: styles.content, children: [jsx(IconElement, { type: "regular", accessor: "spinner", className: styles.spinner }), jsx("div", { children: children })] })), status === 'error' && (jsxs("div", { className: styles.content, children: [jsx(IconElement, { type: "regular", accessor: "circle-exclamation", className: styles.icon }), jsx("div", { children: children })] })), status === 'success' && (jsxs("div", { className: styles.content, children: [jsx(IconElement, { type: "regular", accessor: "circle-check", className: styles.icon }), jsx("div", { children: children })] }))] }));
544
544
  };
545
545
 
546
546
  var base$n = {
@@ -649,7 +649,7 @@ var styles$p = {
649
649
  };
650
650
 
651
651
  var Container$3 = function (props) {
652
- var children = props.children, label = props.label, trigger = props.trigger, _a = props.type, type = _a === void 0 ? 'button' : _a, _b = props.direction, direction = _b === void 0 ? 'bottom-left' : _b, _c = props.isEscapingOverflow, isEscapingOverflow = _c === void 0 ? false : _c, stylesOverrides = props.styles;
652
+ var children = props.children, label = props.label, trigger = props.trigger, dataCy = props.dataCy, _a = props.type, type = _a === void 0 ? 'button' : _a, _b = props.direction, direction = _b === void 0 ? 'bottom-left' : _b, _c = props.isEscapingOverflow, isEscapingOverflow = _c === void 0 ? false : _c, stylesOverrides = props.styles;
653
653
  var handleGenerateStyle = function () {
654
654
  var result = deepCopyObject(styles$o.base);
655
655
  var keys = calculateNestedKeys(styles$o.base);
@@ -660,7 +660,7 @@ var Container$3 = function (props) {
660
660
  };
661
661
  var styles = handleGenerateStyle();
662
662
  return (jsxs(Menu, { as: "div", className: toClassName(styles.container, !isEscapingOverflow && 'relative'), children: [jsxs("div", { children: [type === 'button' &&
663
- (!trigger ? (jsxs(Menu.Button, { className: styles.button, children: [label, jsx(ChevronDownIcon, { className: "-mr-1 ml-2 h-5 w-5", "aria-hidden": "true" })] })) : (jsx(Menu.Button, { children: trigger }))), type === 'compact' && (jsxs(Menu.Button, { className: styles.compact, children: [jsx("span", { className: "sr-only", children: label }), jsx(EllipsisVerticalIcon, { className: styles.dots, "aria-hidden": "true" })] }))] }), jsx(Transition, { as: Fragment, enter: "transition ease-out duration-100", enterFrom: "transform opacity-0 scale-95", enterTo: "transform opacity-100 scale-100", leave: "transition ease-in duration-75", leaveFrom: "transform opacity-100 scale-100", leaveTo: "transform opacity-0 scale-95", children: jsx(Menu.Items, { className: styles.items, children: children }) })] }));
663
+ (!trigger ? (jsxs(Menu.Button, { className: styles.button, "data-cy": dataCy, children: [label, jsx(ChevronDownIcon, { className: "-mr-1 ml-2 h-5 w-5", "aria-hidden": "true" })] })) : (jsx(Menu.Button, { "data-cy": dataCy, children: trigger }))), type === 'compact' && (jsxs(Menu.Button, { className: styles.compact, "data-cy": dataCy, children: [jsx("span", { className: "sr-only", children: label }), jsx(EllipsisVerticalIcon, { className: styles.dots, "aria-hidden": "true" })] }))] }), jsx(Transition, { as: Fragment, enter: "transition ease-out duration-100", enterFrom: "transform opacity-0 scale-95", enterTo: "transform opacity-100 scale-100", leave: "transition ease-in duration-75", leaveFrom: "transform opacity-100 scale-100", leaveTo: "transform opacity-0 scale-95", children: jsx(Menu.Items, { className: styles.items, children: children }) })] }));
664
664
  };
665
665
  var DropdownElement = {
666
666
  Container: Container$3,
@@ -718,8 +718,10 @@ var InputGroupForm = function (props) {
718
718
  var styles = handleGenerateStyle();
719
719
  var invalidIcon = (jsx(ExclamationCircleIcon, { className: "h-5 w-5 text-red-500", "aria-hidden": "true" }));
720
720
  var isClearable = !trailing && isValid && onClear && value !== '' && value;
721
+ var inputDataCy = "form-input-".concat(name);
722
+ var errorDataCy = "form-input-error-".concat(name);
721
723
  return (jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.head, children: [label && (jsx("label", { htmlFor: name, className: styles.label, children: label })), !required && !isRequired && typeof label === 'string' && (jsx("span", { className: styles.hint, children: "Optional" })), required && required({ isRequired: isRequired })] }), jsxs("div", { className: styles.body, children: [leading && jsx("div", { className: styles.leading, children: leading }), !htmlType ||
722
- (htmlType !== 'area' && (jsxs("div", { className: "flex items-center", children: [jsx("input", { type: mask !== undefined ? 'text' : htmlType, ref: mask && ref, name: name, id: name, className: toClassName(styles.input, htmlType === 'color' && '!h-10'), placeholder: placeholder, defaultValue: isSolo ? value : undefined, value: isSolo ? undefined : value, min: min, max: max, maxLength: maxLength, disabled: isDisabled, onChange: onChange, onBlur: onBlur }), htmlType === 'text' && isClearable && (jsx("div", { className: "right-5 px-2 absolute cursor-pointer hover:opacity-60", onClick: onClear, children: jsx(IconElement, { accessor: "times", className: "text-gray-500" }) })), htmlType === 'date' && isClearable && (jsx("div", { className: "right-10 px-2 absolute cursor-pointer hover:opacity-60", onClick: onClear, children: jsx(IconElement, { accessor: "times", className: "text-gray-500" }) }))] }))), htmlType === 'area' && (jsx("textarea", { rows: rows, name: name, id: name, className: styles.input, placeholder: placeholder, defaultValue: isSolo ? value : undefined, value: isSolo ? undefined : value, maxLength: maxLength, disabled: isDisabled, onChange: onChange, onBlur: onBlur })), type === 'floored' && (jsx("div", { className: "absolute inset-x-0 bottom-0 border-t border-gray-300 peer-focus:border-t-2 peer-focus:border-primary-600", "aria-hidden": "true" })), trailing && isValid && (jsx("div", { className: styles.trailing, children: trailing })), isTouched && !isValid && (jsx("div", { className: styles.trailing, children: invalidIcon }))] }), jsxs("div", { className: styles.foot, children: [description && !(error && isTouched) && (jsx("p", { className: styles.description, children: description })), error && isTouched && jsx("p", { className: styles.error, children: error })] })] }));
724
+ (htmlType !== 'area' && (jsxs("div", { className: "flex items-center", children: [jsx("input", { type: mask !== undefined ? 'text' : htmlType, ref: mask && ref, name: name, id: name, "data-cy": inputDataCy, className: toClassName(styles.input, htmlType === 'color' && '!h-10'), placeholder: placeholder, defaultValue: isSolo ? value : undefined, value: isSolo ? undefined : value, min: min, max: max, maxLength: maxLength, disabled: isDisabled, onChange: onChange, onBlur: onBlur }), htmlType === 'text' && isClearable && (jsx("div", { className: "right-5 px-2 absolute cursor-pointer hover:opacity-60", onClick: onClear, children: jsx(IconElement, { accessor: "times", className: "text-gray-500" }) })), htmlType === 'date' && isClearable && (jsx("div", { className: "right-10 px-2 absolute cursor-pointer hover:opacity-60", onClick: onClear, children: jsx(IconElement, { accessor: "times", className: "text-gray-500" }) }))] }))), htmlType === 'area' && (jsx("textarea", { rows: rows, name: name, id: name, "data-cy": inputDataCy, className: styles.input, placeholder: placeholder, defaultValue: isSolo ? value : undefined, value: isSolo ? undefined : value, maxLength: maxLength, disabled: isDisabled, onChange: onChange, onBlur: onBlur })), type === 'floored' && (jsx("div", { className: "absolute inset-x-0 bottom-0 border-t border-gray-300 peer-focus:border-t-2 peer-focus:border-primary-600", "aria-hidden": "true" })), trailing && isValid && (jsx("div", { className: styles.trailing, children: trailing })), isTouched && !isValid && (jsx("div", { className: styles.trailing, children: invalidIcon }))] }), jsxs("div", { className: styles.foot, children: [description && !(error && isTouched) && (jsx("p", { className: styles.description, children: description })), error && isTouched && (jsx("p", { className: styles.error, "data-cy": errorDataCy, children: error }))] })] }));
723
725
  };
724
726
 
725
727
  var base$k = {
@@ -1282,6 +1284,8 @@ var SelectMenuForm = function (props) {
1282
1284
  var _j = useState(true), isFocus = _j[0], setIsFocus = _j[1];
1283
1285
  var _k = useState(value !== null && value !== void 0 ? value : null), state = _k[0], setState = _k[1];
1284
1286
  var isValid = error === undefined;
1287
+ var selectDataCy = "form-select-".concat(name);
1288
+ var errorDataCy = "form-select-error-".concat(name);
1285
1289
  var handleGenerateStyle = function () {
1286
1290
  var result = deepCopyObject(styles$h.base);
1287
1291
  var keys = calculateNestedKeys(styles$h.base);
@@ -1314,37 +1318,37 @@ var SelectMenuForm = function (props) {
1314
1318
  useEffect(function () {
1315
1319
  setState(value);
1316
1320
  }, [value]);
1317
- return (jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.head, children: [label && (jsx("label", { htmlFor: name, className: styles.label, children: label })), !required && !isRequired && typeof label === 'string' && (jsx("span", { className: styles.hint, children: "Optional" })), required && required({ isRequired: isRequired })] }), jsxs("div", { className: styles.container, children: [jsx(Select, { primaryColor: "primary",
1318
- //
1319
- placeholder: placeholder === null || placeholder === void 0 ? void 0 : placeholder.select, noOptionsMessage: (jsx("p", { className: styles.emptyState, children: (_a = placeholder === null || placeholder === void 0 ? void 0 : placeholder.emptyState) !== null && _a !== void 0 ? _a : 'No results found' })), searchInputPlaceholder: placeholder === null || placeholder === void 0 ? void 0 : placeholder.searchInput,
1320
- //
1321
- loading: isLoading, isDisabled: isDisabled, isClearable: isClearable, isMultiple: isMultiple, isSearchable: isSearchable,
1322
- //
1323
- options: options,
1324
- //
1325
- value: state, onChange: handleChange, onSearchInputChange: onSearchInputChange,
1326
- //
1327
- classNames: {
1328
- menuButton: function () {
1329
- return toClassName(styles.input, state === null && '[&>*]:!text-gray-300 ', state === null &&
1330
- !isValid &&
1331
- isTouched &&
1332
- '[&>*]:!text-red-300');
1333
- },
1334
- menu: styles.menu,
1335
- tagItem: function () { return styles.tagItem; },
1336
- tagItemText: styles.tagItemText,
1337
- tagItemIconContainer: styles.tagItemIconContainer,
1338
- tagItemIcon: styles.tagItemIcon,
1339
- list: styles.list,
1340
- listItem: function () { return styles.listItem; },
1341
- listDisabledItem: styles.listDisabledItem,
1342
- listGroupLabel: styles.listGroupLabel,
1343
- searchContainer: styles.searchContainer,
1344
- searchBox: styles.searchBox,
1345
- searchIcon: styles.searchIcon,
1346
- closeIcon: styles.closeIcon,
1347
- } }), !isSolo && (jsxs("div", { className: styles.foot, children: [description && !(error && isTouched) && (jsx("p", { className: styles.description, children: description })), error && isTouched && (jsx("p", { className: styles.error, children: JSON.stringify(error).replaceAll('"', '') }))] }))] })] }));
1321
+ return (jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.head, children: [label && (jsx("label", { htmlFor: name, className: styles.label, children: label })), !required && !isRequired && typeof label === 'string' && (jsx("span", { className: styles.hint, children: "Optional" })), required && required({ isRequired: isRequired })] }), jsxs("div", { className: styles.container, children: [jsx("div", { "data-cy": selectDataCy, children: jsx(Select, { primaryColor: "primary",
1322
+ //
1323
+ placeholder: placeholder === null || placeholder === void 0 ? void 0 : placeholder.select, noOptionsMessage: (jsx("p", { className: styles.emptyState, children: (_a = placeholder === null || placeholder === void 0 ? void 0 : placeholder.emptyState) !== null && _a !== void 0 ? _a : 'No results found' })), searchInputPlaceholder: placeholder === null || placeholder === void 0 ? void 0 : placeholder.searchInput,
1324
+ //
1325
+ loading: isLoading, isDisabled: isDisabled, isClearable: isClearable, isMultiple: isMultiple, isSearchable: isSearchable,
1326
+ //
1327
+ options: options,
1328
+ //
1329
+ value: state, onChange: handleChange, onSearchInputChange: onSearchInputChange,
1330
+ //
1331
+ classNames: {
1332
+ menuButton: function () {
1333
+ return toClassName(styles.input, state === null && '[&>*]:!text-gray-300 ', state === null &&
1334
+ !isValid &&
1335
+ isTouched &&
1336
+ '[&>*]:!text-red-300');
1337
+ },
1338
+ menu: styles.menu,
1339
+ tagItem: function () { return styles.tagItem; },
1340
+ tagItemText: styles.tagItemText,
1341
+ tagItemIconContainer: styles.tagItemIconContainer,
1342
+ tagItemIcon: styles.tagItemIcon,
1343
+ list: styles.list,
1344
+ listItem: function () { return styles.listItem; },
1345
+ listDisabledItem: styles.listDisabledItem,
1346
+ listGroupLabel: styles.listGroupLabel,
1347
+ searchContainer: styles.searchContainer,
1348
+ searchBox: styles.searchBox,
1349
+ searchIcon: styles.searchIcon,
1350
+ closeIcon: styles.closeIcon,
1351
+ } }) }), !isSolo && (jsxs("div", { className: styles.foot, children: [description && !(error && isTouched) && (jsx("p", { className: styles.description, children: description })), error && isTouched && (jsx("p", { className: styles.error, "data-cy": errorDataCy, children: JSON.stringify(error).replaceAll('"', '') }))] }))] })] }));
1348
1352
  };
1349
1353
 
1350
1354
  var PanelPaginationNavigation = function (props) {
@@ -1836,7 +1840,7 @@ var TableList2 = function (props) {
1836
1840
  setTableState(id, state);
1837
1841
  }
1838
1842
  }, [id, state]);
1839
- return (jsxs("div", { className: styles.container, children: [jsx("div", { className: styles.head, children: head && head(state) }), jsx("div", { className: styles.body.content, children: jsx("div", { className: styles.body.wrapper, children: jsx("div", { className: styles.body.styleWrapper, children: jsxs("div", { className: styles.body.tableWrapper, children: [jsxs("table", { className: styles.body.table.container, children: [jsx("thead", { className: styles.body.table.head.container, children: table === null || table === void 0 ? void 0 : table.getHeaderGroups().map(function (headerGroup) { return (jsx("tr", { children: headerGroup.headers.map(function (header) {
1843
+ return (jsxs("div", { className: styles.container, "data-cy": "table-list-".concat(id), children: [jsx("div", { className: styles.head, children: head && head(state) }), jsx("div", { className: styles.body.content, children: jsx("div", { className: styles.body.wrapper, children: jsx("div", { className: styles.body.styleWrapper, children: jsxs("div", { className: styles.body.tableWrapper, children: [jsxs("table", { className: styles.body.table.container, children: [jsx("thead", { className: styles.body.table.head.container, children: table === null || table === void 0 ? void 0 : table.getHeaderGroups().map(function (headerGroup) { return (jsx("tr", { children: headerGroup.headers.map(function (header) {
1840
1844
  // Default sort icon to show a user that the column is sortable
1841
1845
  var SortIconElement = ChevronUpDownIcon;
1842
1846
  if (header.column.getIsSorted()) {
@@ -2312,7 +2316,7 @@ var styles$a = {
2312
2316
  };
2313
2317
 
2314
2318
  var ModalOverlay = function (props) {
2315
- var children = props.children, trigger = props.trigger, _a = props.size, size = _a === void 0 ? 'md' : _a, stylesOverrides = props.styles, onOpen = props.onOpen, onClose = props.onClose;
2319
+ var children = props.children, trigger = props.trigger, _a = props.size, size = _a === void 0 ? 'md' : _a, stylesOverrides = props.styles, dataCy = props.dataCy, onOpen = props.onOpen, onClose = props.onClose;
2316
2320
  var _b = useState(trigger ? false : true), isOpen = _b[0], setIsOpen = _b[1];
2317
2321
  var options = useMemo(function () { return ({
2318
2322
  handleOpen: function () { return setIsOpen(true); },
@@ -2337,7 +2341,7 @@ var ModalOverlay = function (props) {
2337
2341
  onClose && onClose();
2338
2342
  }
2339
2343
  }, [isOpen, onClose]);
2340
- return (jsxs(Fragment$1, { children: [jsx(Transition.Root, { show: isOpen, as: Fragment, children: jsxs(Dialog, { as: "div", className: styles.container, onClose: setIsOpen, children: [jsx(Transition.Child, { as: Fragment, enter: styles.background.transition.enter, enterFrom: styles.background.transition.enterFrom, enterTo: styles.background.transition.enterTo, leave: styles.background.transition.leave, leaveFrom: styles.background.transition.leaveFrom, leaveTo: styles.background.transition.leaveTo, children: jsx("div", { className: styles.background.container }) }), jsx("div", { className: styles.layout.container, children: jsx("div", { className: styles.layout.content, children: jsx(Transition.Child, { as: Fragment, enter: styles.panel.transition.enter, enterFrom: styles.panel.transition.enterFrom, enterTo: styles.panel.transition.enterTo, leave: styles.panel.transition.leave, leaveFrom: styles.panel.transition.leaveFrom, leaveTo: styles.panel.transition.leaveTo, children: jsx(Dialog.Panel, { className: styles.panel.container, children: children(options) }) }) }) })] }) }), trigger && trigger(options)] }));
2344
+ return (jsxs(Fragment$1, { children: [jsx(Transition.Root, { show: isOpen, as: Fragment, children: jsxs(Dialog, { as: "div", className: styles.container, onClose: setIsOpen, children: [jsx(Transition.Child, { as: Fragment, enter: styles.background.transition.enter, enterFrom: styles.background.transition.enterFrom, enterTo: styles.background.transition.enterTo, leave: styles.background.transition.leave, leaveFrom: styles.background.transition.leaveFrom, leaveTo: styles.background.transition.leaveTo, children: jsx("div", { className: styles.background.container }) }), jsx("div", { className: styles.layout.container, children: jsx("div", { className: styles.layout.content, "data-cy": dataCy, children: jsx(Transition.Child, { as: Fragment, enter: styles.panel.transition.enter, enterFrom: styles.panel.transition.enterFrom, enterTo: styles.panel.transition.enterTo, leave: styles.panel.transition.leave, leaveFrom: styles.panel.transition.leaveFrom, leaveTo: styles.panel.transition.leaveTo, children: jsx(Dialog.Panel, { className: styles.panel.container, children: children(options) }) }) }) })] }) }), trigger && trigger(options)] }));
2341
2345
  };
2342
2346
 
2343
2347
  var base$7 = {
@@ -2672,6 +2676,8 @@ var DateMenuForm = function (props) {
2672
2676
  return result;
2673
2677
  };
2674
2678
  var styles = handleGenerateStyle();
2679
+ var inputDataCy = "form-date-".concat(name);
2680
+ var errorDataCy = "form-date-error-".concat(name);
2675
2681
  // Simulate onClear event.
2676
2682
  useEffect(function () {
2677
2683
  if (state.startDate === null && state.endDate === null) {
@@ -2679,13 +2685,13 @@ var DateMenuForm = function (props) {
2679
2685
  }
2680
2686
  // eslint-disable-next-line react-hooks/exhaustive-deps
2681
2687
  }, [state]);
2682
- return (jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.head, children: [label && (jsx("label", { htmlFor: name, className: styles.label, children: label })), !required && !isRequired && typeof label === 'string' && (jsx("span", { className: styles.hint, children: "Optional" })), required && required({ isRequired: isRequired })] }), jsxs("div", { className: styles.container, children: [jsx(Datepicker, { inputName: name, inputId: name, i18n: i18n, useRange: size === 'expanded', placeholder: placeholder, asSingle: !isRanged, separator: separator, startFrom: startFrom, displayFormat: displayFormat, disabled: isDisabled, popoverDirection: direction, minDate: minDate, maxDate: maxDate, toggleIcon: icon,
2688
+ return (jsxs("div", { className: styles.container, children: [jsxs("div", { className: styles.head, children: [label && (jsx("label", { htmlFor: name, className: styles.label, children: label })), !required && !isRequired && typeof label === 'string' && (jsx("span", { className: styles.hint, children: "Optional" })), required && required({ isRequired: isRequired })] }), jsxs("div", { className: styles.container, "data-cy": inputDataCy, children: [jsx(Datepicker, { inputName: name, inputId: name, i18n: i18n, useRange: size === 'expanded', placeholder: placeholder, asSingle: !isRanged, separator: separator, startFrom: startFrom, displayFormat: displayFormat, disabled: isDisabled, popoverDirection: direction, minDate: minDate, maxDate: maxDate, toggleIcon: icon,
2683
2689
  //
2684
2690
  value: state,
2685
2691
  //
2686
2692
  onChange: handleValueChange,
2687
2693
  //
2688
- inputClassName: styles.input, startWeekOn: startWeekOn }), !isSolo && (jsxs("div", { className: styles.foot, children: [description && !(error && isTouched) && (jsx("p", { className: styles.description, children: description })), error && isTouched && (jsx("p", { className: styles.error, children: typeof error === 'string'
2694
+ inputClassName: styles.input, startWeekOn: startWeekOn }), !isSolo && (jsxs("div", { className: styles.foot, children: [description && !(error && isTouched) && (jsx("p", { className: styles.description, children: description })), error && isTouched && (jsx("p", { className: styles.error, "data-cy": errorDataCy, children: typeof error === 'string'
2689
2695
  ? error
2690
2696
  : (_a = error === null || error === void 0 ? void 0 : error.startDate) !== null && _a !== void 0 ? _a : error === null || error === void 0 ? void 0 : error.endDate }))] }))] })] }));
2691
2697
  };
@@ -2781,7 +2787,7 @@ var CheckboxInputGroupForm = function (props) {
2781
2787
  var styles = handleGenerateStyle();
2782
2788
  return (jsx(FormikProvider, { value: form, children: jsxs("div", { children: [jsx("legend", { className: styles.sr, children: name }), jsx("div", { className: styles.list, children: jsx(FieldArray, { name: name, render: function (_a) {
2783
2789
  var remove = _a.remove, push = _a.push;
2784
- return (jsx(Fragment$1, { children: options === null || options === void 0 ? void 0 : options.map(function (option) { return (jsxs("div", { className: styles.item.container, children: [jsx("div", { className: styles.item.head, children: jsx("input", { id: option.value, name: option.value, "aria-describedby": "".concat(option.value, "-description"), type: "checkbox", checked: values === null || values === void 0 ? void 0 : values.includes(option.value), className: styles.item.input, disabled: isDisabled, onChange: function (value) {
2790
+ return (jsx(Fragment$1, { children: options === null || options === void 0 ? void 0 : options.map(function (option) { return (jsxs("div", { className: styles.item.container, children: [jsx("div", { className: styles.item.head, children: jsx("input", { id: option.value, name: option.value, "data-cy": "form-".concat(name, "-checkbox-").concat(option.value), "aria-describedby": "".concat(option.value, "-description"), type: "checkbox", checked: values === null || values === void 0 ? void 0 : values.includes(option.value), className: styles.item.input, disabled: isDisabled, onChange: function (value) {
2785
2791
  var isChecked = value.currentTarget.checked;
2786
2792
  if (isChecked) {
2787
2793
  push(option.value);