reactive-bulma 2.10.0 → 2.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +1 -1
  2. package/dist/cjs/index.js +159 -38
  3. package/dist/cjs/index.js.map +1 -1
  4. package/dist/cjs/types/components/molecules/InputControl/index.d.ts +4 -0
  5. package/dist/cjs/types/components/molecules/PanelBlock/index.d.ts +4 -0
  6. package/dist/cjs/types/components/molecules/PanelTabs/index.d.ts +4 -0
  7. package/dist/cjs/types/components/molecules/index.d.ts +3 -0
  8. package/dist/cjs/types/components/organisms/FormField/index.d.ts +4 -0
  9. package/dist/cjs/types/components/organisms/Panel/index.d.ts +4 -0
  10. package/dist/cjs/types/components/organisms/index.d.ts +2 -0
  11. package/dist/cjs/types/functions/generators.d.ts +4 -0
  12. package/dist/cjs/types/functions/parsers.d.ts +0 -8
  13. package/dist/cjs/types/functions/tests/generators.test.d.ts +1 -0
  14. package/dist/cjs/types/index.d.ts +1 -0
  15. package/dist/cjs/types/interfaces/atomProps.d.ts +22 -16
  16. package/dist/cjs/types/interfaces/commonProps.d.ts +1 -1
  17. package/dist/cjs/types/interfaces/functionProps.d.ts +5 -0
  18. package/dist/cjs/types/interfaces/moleculeProps.d.ts +48 -9
  19. package/dist/cjs/types/interfaces/organismProps.d.ts +29 -0
  20. package/dist/cjs/types/types/domTypes.d.ts +3 -2
  21. package/dist/cjs/types/types/styleTypes.d.ts +5 -3
  22. package/dist/esm/index.js +155 -39
  23. package/dist/esm/index.js.map +1 -1
  24. package/dist/esm/types/components/molecules/InputControl/index.d.ts +4 -0
  25. package/dist/esm/types/components/molecules/PanelBlock/index.d.ts +4 -0
  26. package/dist/esm/types/components/molecules/PanelTabs/index.d.ts +4 -0
  27. package/dist/esm/types/components/molecules/index.d.ts +3 -0
  28. package/dist/esm/types/components/organisms/FormField/index.d.ts +4 -0
  29. package/dist/esm/types/components/organisms/Panel/index.d.ts +4 -0
  30. package/dist/esm/types/components/organisms/index.d.ts +2 -0
  31. package/dist/esm/types/functions/generators.d.ts +4 -0
  32. package/dist/esm/types/functions/parsers.d.ts +0 -8
  33. package/dist/esm/types/functions/tests/generators.test.d.ts +1 -0
  34. package/dist/esm/types/index.d.ts +1 -0
  35. package/dist/esm/types/interfaces/atomProps.d.ts +22 -16
  36. package/dist/esm/types/interfaces/commonProps.d.ts +1 -1
  37. package/dist/esm/types/interfaces/functionProps.d.ts +5 -0
  38. package/dist/esm/types/interfaces/moleculeProps.d.ts +48 -9
  39. package/dist/esm/types/interfaces/organismProps.d.ts +29 -0
  40. package/dist/esm/types/types/domTypes.d.ts +3 -2
  41. package/dist/esm/types/types/styleTypes.d.ts +5 -3
  42. package/dist/index.d.ts +110 -26
  43. package/package.json +11 -11
package/dist/esm/index.js CHANGED
@@ -2859,13 +2859,6 @@ const parseTestId = (config) => {
2859
2859
  }
2860
2860
  return `test-${config.tag}${fixedClassString.replace(/ /gm, (_a = config.separator) !== null && _a !== void 0 ? _a : '')}`;
2861
2861
  };
2862
- const parseKey = (max = 5000, min = 1) => {
2863
- max = Math.floor(max);
2864
- min = Math.ceil(min);
2865
- const secureRandomNumbers = new Uint32Array(1);
2866
- window.crypto.getRandomValues(secureRandomNumbers);
2867
- return Math.floor(secureRandomNumbers[0] * (max - min) + min).toString();
2868
- };
2869
2862
 
2870
2863
  const Button = ({ testId = null, cssClasses = null, style = null, type = 'button', text = null, isDisabled = false, color = null, isLightColor = false, isInvertedColor = false, isOutlined = false, isRounded = false, isLoading = false, isStatic = false, isSelected = false, size = null, onClick = null }) => {
2871
2864
  const buttonClasses = parseClasses([
@@ -2985,11 +2978,12 @@ const generateIconContainer = (icon, color) => {
2985
2978
  });
2986
2979
  return (React.createElement("span", { "data-testid": containerTestId, className: containerClasses }, icon));
2987
2980
  };
2988
- const Icon = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, iconLabel, text = null, color = null, size = null, colorMode = null, isSpinning = false }) => {
2981
+ const Icon = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, iconLabel, text = null, color = null, size = null, colorMode = null, isSpinning = false, position = null }) => {
2989
2982
  const iconContainerClasses = parseClasses([
2990
2983
  'icon',
2991
2984
  color,
2992
2985
  size,
2986
+ position,
2993
2987
  containerCssClasses
2994
2988
  ]);
2995
2989
  const iconClasses = parseClasses([
@@ -3022,7 +3016,7 @@ const Icon = ({ testId = null, containerTestId = null, cssClasses = null, contai
3022
3016
  return text ? generateIconContainer(iconComponent, color) : iconComponent;
3023
3017
  };
3024
3018
 
3025
- const Input = ({ testId = null, cssClasses = null, style = null, type, text = null, isDisabled = false, isReadonly = false, color = null, size = null, isRounded = null, isHovered = null, isFocused = null, onClick = null, onChange = null }) => {
3019
+ const Input = ({ testId = null, cssClasses = null, style = null, type, text = null, placeholder = null, isDisabled = false, isReadonly = false, color = null, size = null, isRounded = null, isHovered = null, isFocused = null, onClick = null, onChange = null }) => {
3026
3020
  const inputClasses = parseClasses([
3027
3021
  'input',
3028
3022
  color,
@@ -3036,7 +3030,7 @@ const Input = ({ testId = null, cssClasses = null, style = null, type, text = nu
3036
3030
  tag: 'input',
3037
3031
  parsedClasses: inputClasses
3038
3032
  });
3039
- return (React.createElement("input", { "data-testid": inputTestId, type: type, defaultValue: text !== null && text !== void 0 ? text : undefined, disabled: isDisabled, readOnly: isReadonly, className: inputClasses, style: style !== null && style !== void 0 ? style : undefined, onClick: onClick !== null && onClick !== void 0 ? onClick : undefined, onChange: onChange !== null && onChange !== void 0 ? onChange : undefined }));
3033
+ return (React.createElement("input", { "data-testid": inputTestId, type: type, placeholder: placeholder !== null && placeholder !== void 0 ? placeholder : undefined, defaultValue: text !== null && text !== void 0 ? text : undefined, disabled: isDisabled, readOnly: isReadonly, className: inputClasses, style: style !== null && style !== void 0 ? style : undefined, onClick: onClick !== null && onClick !== void 0 ? onClick : undefined, onChange: onChange !== null && onChange !== void 0 ? onChange : undefined }));
3040
3034
  };
3041
3035
 
3042
3036
  const TextArea = ({ testId = null, cssClasses = null, style = null, text = null, cols = null, rows = null, isDisabled = false, isReadonly = false, isFixedSize = false, color = null, size = null, isHovered = null, isFocused = null, onClick = null, onChange = null }) => {
@@ -3156,7 +3150,7 @@ const CheckBox = ({ testId = null, containerTestId = null, cssClasses = null, co
3156
3150
  content));
3157
3151
  };
3158
3152
 
3159
- // PARSERS
3153
+ // FUNCTIONS
3160
3154
  const renderRadioButton = (config, index) => {
3161
3155
  const { testId = null, label, name, isChecked = false, isDisabled = false, style = null, onChange } = config;
3162
3156
  const radioButtonTestId = testId !== null && testId !== void 0 ? testId : `test-radio-button-item-${index}`;
@@ -3249,7 +3243,7 @@ const MenuItem = ({ testId = null, cssClasses = null, style = null, text, isActi
3249
3243
  return (React.createElement("a", { "data-testid": menuItemTestId, className: menuItemClasses, style: style !== null && style !== void 0 ? style : undefined, "aria-hidden": 'true', onClick: onClick !== null && onClick !== void 0 ? onClick : undefined }, text));
3250
3244
  };
3251
3245
 
3252
- const Image = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, src, fixedSize = 'is-1by1', isRounded = false }) => {
3246
+ const Image = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, src, alt = null, fixedSize = 'is-1by1', isRounded = false }) => {
3253
3247
  const imageContainerClasses = parseClasses([
3254
3248
  'image',
3255
3249
  fixedSize,
@@ -3262,7 +3256,7 @@ const Image = ({ testId = null, containerTestId = null, cssClasses = null, conta
3262
3256
  const imageContainerTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({ tag: 'image', parsedClasses: imageContainerClasses });
3263
3257
  const imageTestId = testId !== null && testId !== void 0 ? testId : `${imageContainerTestId}-img`;
3264
3258
  return (React.createElement("figure", { "data-testid": imageContainerTestId, className: imageContainerClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined },
3265
- React.createElement("img", { "data-testid": imageTestId, className: imageClasses, style: style !== null && style !== void 0 ? style : undefined, src: src })));
3259
+ React.createElement("img", { "data-testid": imageTestId, className: imageClasses, style: style !== null && style !== void 0 ? style : undefined, src: src, alt: alt !== null && alt !== void 0 ? alt : undefined })));
3266
3260
  };
3267
3261
 
3268
3262
  const PaginationItem = ({ testId = null, cssClasses = null, style = null, text, labelText = 'Page', currentLabelText = 'Go to page', isSelected = null, onClick = null }) => {
@@ -3280,20 +3274,22 @@ const PaginationItem = ({ testId = null, cssClasses = null, style = null, text,
3280
3274
  };
3281
3275
 
3282
3276
  const TabItem = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, icon = null, text, onClick = null }) => {
3283
- const tabItemContainerClasses = parseClasses([
3284
- 'tabItem-container',
3285
- null,
3286
- containerCssClasses
3287
- ]);
3288
- const tabItemClasses = parseClasses(['tabItem', cssClasses]);
3289
3277
  const tabItemContainerTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({
3290
- tag: 'tabItem-container',
3291
- parsedClasses: tabItemContainerClasses
3278
+ tag: 'tab-item-container',
3279
+ parsedClasses: containerCssClasses !== null && containerCssClasses !== void 0 ? containerCssClasses : ''
3292
3280
  });
3293
- const tabItemTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'tabItem', parsedClasses: tabItemClasses });
3294
- return (React.createElement("a", { "data-testid": tabItemContainerTestId, className: tabItemContainerClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined, "aria-hidden": 'true', onClick: onClick !== null && onClick !== void 0 ? onClick : undefined },
3281
+ const tabItemTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'tab-item', parsedClasses: cssClasses !== null && cssClasses !== void 0 ? cssClasses : '' });
3282
+ return (React.createElement("a", { "data-testid": tabItemContainerTestId, className: containerCssClasses !== null && containerCssClasses !== void 0 ? containerCssClasses : undefined, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined, "aria-hidden": 'true', onClick: onClick !== null && onClick !== void 0 ? onClick : undefined },
3295
3283
  icon ? React.createElement(Icon, Object.assign({}, icon)) : null,
3296
- React.createElement("span", { "data-testid": tabItemTestId, className: tabItemClasses, style: style !== null && style !== void 0 ? style : undefined }, text)));
3284
+ React.createElement("span", { "data-testid": tabItemTestId, className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined }, text)));
3285
+ };
3286
+
3287
+ const generateKey = (max = 5000, min = 1) => {
3288
+ max = Math.floor(max);
3289
+ min = Math.ceil(min);
3290
+ const secureRandomNumbers = new Uint32Array(1);
3291
+ window.crypto.getRandomValues(secureRandomNumbers);
3292
+ return Math.floor(secureRandomNumbers[0] * (max - min) + min).toString();
3297
3293
  };
3298
3294
 
3299
3295
  const ButtonGroup = ({ testId = null, cssClasses = null, style = null, buttonList, isAttached = false, position = 'left' }) => {
@@ -3322,7 +3318,7 @@ const ButtonGroup = ({ testId = null, cssClasses = null, style = null, buttonLis
3322
3318
  const shouldApplyColor = (hasSelectedButton && currentButtonItem.isSelected) ||
3323
3319
  !hasSelectedButton;
3324
3320
  const buttonConfig = Object.assign(Object.assign({}, currentButtonItem), { color: shouldApplyColor ? currentButtonItem.color : undefined });
3325
- return (React.createElement(Button, Object.assign({ key: `button-group-item-${parseKey()}` }, buttonConfig)));
3321
+ return (React.createElement(Button, Object.assign({ key: `button-group-item-${generateKey()}` }, buttonConfig)));
3326
3322
  })));
3327
3323
  };
3328
3324
 
@@ -3350,7 +3346,7 @@ const ColumnGroup = ({ testId = null, cssClasses = null, style = null, listOfCol
3350
3346
  tag: 'columns',
3351
3347
  parsedClasses: columnGroupClasses
3352
3348
  });
3353
- return (React.createElement("section", { "data-testid": columnGroupTestId, className: columnGroupClasses, style: style !== null && style !== void 0 ? style : undefined }, listOfColumns.map(columnItemConfig => (React.createElement(Column, Object.assign({ key: `column-group-item-${parseKey()}` }, columnItemConfig))))));
3349
+ return (React.createElement("section", { "data-testid": columnGroupTestId, className: columnGroupClasses, style: style !== null && style !== void 0 ? style : undefined }, listOfColumns.map(columnItemConfig => (React.createElement(Column, Object.assign({ key: `column-group-item-${generateKey()}` }, columnItemConfig))))));
3354
3350
  };
3355
3351
 
3356
3352
  const Notification = ({ testId = null, cssClasses = null, style = null, children = null, deleteButton = null, color = null, isLightColor = null }) => {
@@ -3392,14 +3388,14 @@ const Breadcrumbs = ({ testId = 'breadcrumbs', containerTestId = null, cssClasse
3392
3388
  ]
3393
3389
  });
3394
3390
  return (React.createElement("nav", { "data-testid": breadcrumbsContainerTestId, className: breadcrumbsContainerClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined },
3395
- React.createElement("ul", { "data-testid": testId, className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined }, items.map(itemConfig => (React.createElement(BreadcrumbItem, Object.assign({ key: `breadcrumb-item-${parseKey()}` }, itemConfig)))))));
3391
+ React.createElement("ul", { "data-testid": testId, className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined }, items.map(itemConfig => (React.createElement(BreadcrumbItem, Object.assign({ key: `breadcrumb-item-${generateKey()}` }, itemConfig)))))));
3396
3392
  };
3397
3393
 
3398
3394
  const renderDropdownMenu = (items) => (React.createElement("section", { className: 'dropdown-content' }, items.map((dropdownItemConfig, i) => {
3399
3395
  const isFirstItemInMenu = items.length > 1 && i === 0;
3400
- return isFirstItemInMenu ? (React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${parseKey()}` }, dropdownItemConfig))) : (React.createElement("section", { key: `dropdown-item-${parseKey()}-section` },
3401
- React.createElement(DropdownItem, { key: `dropdown-item-${parseKey()}-divider`, type: 'divider', itemText: 'divider' }),
3402
- React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${parseKey()}` }, dropdownItemConfig))));
3396
+ return isFirstItemInMenu ? (React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${generateKey()}` }, dropdownItemConfig))) : (React.createElement("section", { key: `dropdown-item-${generateKey()}-section` },
3397
+ React.createElement(DropdownItem, { key: `dropdown-item-${generateKey()}-divider`, type: 'divider', itemText: 'divider' }),
3398
+ React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${generateKey()}` }, dropdownItemConfig))));
3403
3399
  })));
3404
3400
  const Dropdown = ({ testId = null, cssClasses = null, style = null, inputText, dropdownPointer = 'dropdown-menu', listOfItems }) => {
3405
3401
  const [isMenuActive, setIsMenuActive] = reactExports.useState(false);
@@ -3431,12 +3427,12 @@ const MenuList = ({ testId = null, cssClasses = null, style = null, itemList })
3431
3427
  const menuListTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'menu-list', parsedClasses: menuListClasses });
3432
3428
  return (React.createElement("ul", { "data-testid": menuListTestId, className: menuListClasses, style: style !== null && style !== void 0 ? style : undefined }, itemList.map(item => {
3433
3429
  if ('subListTitle' in item) {
3434
- return (React.createElement("li", { key: `sub-list-menu-item-${parseKey()}` },
3430
+ return (React.createElement("li", { key: `sub-list-menu-item-${generateKey()}` },
3435
3431
  React.createElement(MenuItem, Object.assign({}, item.subListTitle)),
3436
- React.createElement("ul", null, item.subItems.map(subItem => (React.createElement(MenuItem, Object.assign({ key: `sub-list-menu-sub-item-${parseKey()}` }, subItem)))))));
3432
+ React.createElement("ul", null, item.subItems.map(subItem => (React.createElement(MenuItem, Object.assign({ key: `sub-list-menu-sub-item-${generateKey()}` }, subItem)))))));
3437
3433
  }
3438
3434
  else {
3439
- return (React.createElement(MenuItem, Object.assign({ key: `sub-list-item-${parseKey()}` }, item)));
3435
+ return (React.createElement(MenuItem, Object.assign({ key: `sub-list-item-${generateKey()}` }, item)));
3440
3436
  }
3441
3437
  })));
3442
3438
  };
@@ -3444,9 +3440,9 @@ const MenuList = ({ testId = null, cssClasses = null, style = null, itemList })
3444
3440
  const Menu = ({ testId = null, cssClasses = null, style = null, menuSections }) => {
3445
3441
  const menuClasses = parseClasses(['menu', cssClasses]);
3446
3442
  const menuTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'menu', parsedClasses: menuClasses });
3447
- return (React.createElement("aside", { "data-testid": menuTestId, className: menuClasses, style: style !== null && style !== void 0 ? style : undefined }, menuSections.map(section => (React.createElement(React.Fragment, { key: `section-${parseKey()}` },
3448
- React.createElement("p", { key: `section-label-${parseKey()}`, className: 'menu-label' }, section.label),
3449
- React.createElement(MenuList, { key: `section-menu-list-${parseKey()}`, itemList: section.itemList }))))));
3443
+ return (React.createElement("aside", { "data-testid": menuTestId, className: menuClasses, style: style !== null && style !== void 0 ? style : undefined }, menuSections.map(section => (React.createElement(React.Fragment, { key: `section-${generateKey()}` },
3444
+ React.createElement("p", { key: `section-label-${generateKey()}`, className: 'menu-label' }, section.label),
3445
+ React.createElement(MenuList, { key: `section-menu-list-${generateKey()}`, itemList: section.itemList }))))));
3450
3446
  };
3451
3447
 
3452
3448
  const renderEllipsis = (hasEllipsis) => hasEllipsis ? (React.createElement("li", null,
@@ -3471,7 +3467,7 @@ const renderPages = (pages, hasEllipsis, ellipsisItems) => {
3471
3467
  }
3472
3468
  if (!hasEllipsis ||
3473
3469
  (pageIndex > ellipsisItems && pageIndex < lastEllipsisItemIndex)) {
3474
- return (React.createElement(PaginationItem, Object.assign({ key: `pagination-item-${parseKey()}` }, pageItem)));
3470
+ return (React.createElement(PaginationItem, Object.assign({ key: `pagination-item-${generateKey()}` }, pageItem)));
3475
3471
  }
3476
3472
  if (pageIndex === --length) {
3477
3473
  return (React.createElement(React.Fragment, { key: `last-pagination-item` },
@@ -3543,8 +3539,128 @@ const Tabs = ({ testId = null, cssClasses = null, style = null, tabs, alignment
3543
3539
  ]);
3544
3540
  const tabsTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'tabs', parsedClasses: tabsClasses });
3545
3541
  return (React.createElement("section", { "data-testid": tabsTestId, className: tabsClasses, style: style !== null && style !== void 0 ? style : undefined },
3546
- React.createElement("ul", null, tabs.map(tabConfig => (React.createElement("li", { key: `tab-item-${parseKey()}`, className: tabConfig.isActive ? 'is-active' : undefined }, React.createElement(TabItem, Object.assign({}, tabConfig))))))));
3542
+ React.createElement("ul", null, tabs.map(tabConfig => (React.createElement("li", { key: `tab-item-${generateKey()}`, className: tabConfig.isActive ? 'is-active' : undefined }, React.createElement(TabItem, Object.assign({}, tabConfig))))))));
3543
+ };
3544
+
3545
+ const renderIcon = (iconConfig) => iconConfig ? React.createElement(Icon, Object.assign({}, iconConfig)) : null;
3546
+ const InputControl = ({ testId = null, cssClasses = null, style = null, inputConfig, leftIcon = null, rightIcon = null, size = null, isLoading = null, isExpanded = null }) => {
3547
+ const inputControlClasses = parseClasses([
3548
+ 'control',
3549
+ size,
3550
+ leftIcon ? 'has-icons-left' : null,
3551
+ rightIcon ? 'has-icons-right' : null,
3552
+ isLoading ? 'is-loading' : null,
3553
+ isExpanded ? 'is-expanded' : null,
3554
+ cssClasses
3555
+ ]);
3556
+ const inputControlTestId = testId !== null && testId !== void 0 ? testId : parseTestId({
3557
+ tag: 'control',
3558
+ parsedClasses: inputControlClasses,
3559
+ rules: [
3560
+ {
3561
+ regExp: /has-|is-/gm,
3562
+ replacer: '-'
3563
+ },
3564
+ {
3565
+ regExp: /control/gm,
3566
+ replacer: ''
3567
+ }
3568
+ ]
3569
+ });
3570
+ const reflectedInputConfig = Object.assign(Object.assign({}, inputConfig), { size: size !== null && size !== void 0 ? size : inputConfig === null || inputConfig === void 0 ? void 0 : inputConfig.size });
3571
+ return (React.createElement("section", { "data-testid": inputControlTestId, className: inputControlClasses, style: style !== null && style !== void 0 ? style : undefined },
3572
+ React.createElement(Input, Object.assign({}, reflectedInputConfig)),
3573
+ renderIcon(leftIcon ? Object.assign(Object.assign({}, leftIcon), { position: 'is-left' }) : undefined),
3574
+ renderIcon(rightIcon ? Object.assign(Object.assign({}, rightIcon), { position: 'is-right' }) : undefined)));
3575
+ };
3576
+
3577
+ const convertConfigToComponent = ({ type, props }, testId, cssClasses, style, blockText) => {
3578
+ switch (type) {
3579
+ case 'icon': {
3580
+ const panelBlockIconClasses = parseClasses(['panel-icon', cssClasses]);
3581
+ const panelBlockIconTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'panel-icon', parsedClasses: panelBlockIconClasses });
3582
+ return (React.createElement(React.Fragment, null,
3583
+ React.createElement("span", { "data-testid": panelBlockIconTestId, className: panelBlockIconClasses, style: style !== null && style !== void 0 ? style : undefined },
3584
+ React.createElement(Icon, Object.assign({}, props))),
3585
+ blockText));
3586
+ }
3587
+ case 'control':
3588
+ return React.createElement(InputControl, Object.assign({}, props));
3589
+ case 'button':
3590
+ return React.createElement(Button, Object.assign({}, props));
3591
+ }
3592
+ };
3593
+ const PanelBlock = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, config, blockText = null, isActive = false, onClick }) => {
3594
+ const panelBlockLinkClasses = parseClasses([
3595
+ 'panel-block',
3596
+ isActive ? 'is-active' : null,
3597
+ containerCssClasses
3598
+ ]);
3599
+ const panelBlockLinkTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({ tag: 'panel-block', parsedClasses: panelBlockLinkClasses });
3600
+ return (React.createElement("a", { "data-testid": panelBlockLinkTestId, className: panelBlockLinkClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined, "aria-hidden": 'true', onClick: onClick !== null && onClick !== void 0 ? onClick : undefined }, convertConfigToComponent(config, testId, cssClasses, style, blockText)));
3601
+ };
3602
+
3603
+ const PanelTabs = ({ testId = null, cssClasses = null, style = null, tabList }) => {
3604
+ const panelTabsClasses = parseClasses(['panel-tabs', cssClasses]);
3605
+ const panelTabsTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'panel-tabs', parsedClasses: panelTabsClasses });
3606
+ return (React.createElement("section", { "data-testid": panelTabsTestId, className: panelTabsClasses, style: style !== null && style !== void 0 ? style : undefined }, tabList.map(tabItem => {
3607
+ var _a;
3608
+ return (React.createElement("a", { key: `tab-item-${generateKey()}`, className: tabItem.isActive ? 'is-active' : undefined, "aria-hidden": 'true', onClick: (_a = tabItem.onClick) !== null && _a !== void 0 ? _a : undefined }, tabItem.text));
3609
+ })));
3610
+ };
3611
+
3612
+ const renderFieldLabel = (labelText) => labelText ? (React.createElement("label", { "data-testid": 'test-form-field-label', className: 'label' }, labelText)) : null;
3613
+ const renderFieldBody = (inputControlConfig, isGrouped) => {
3614
+ if (isGrouped) {
3615
+ return Array.isArray(inputControlConfig) ? (inputControlConfig.map((_singleConfig, i) => (React.createElement(InputControl, Object.assign({ key: `grouped-input-control-${generateKey()}`, testId: `test-grouped-input-control-${i}` }, _singleConfig))))) : (React.createElement(InputControl, Object.assign({}, inputControlConfig)));
3616
+ }
3617
+ else {
3618
+ return Array.isArray(inputControlConfig) ? (React.createElement(InputControl, Object.assign({}, inputControlConfig[0]))) : (React.createElement(InputControl, Object.assign({}, inputControlConfig)));
3619
+ }
3620
+ };
3621
+ const renderFieldHelper = (helperConfig) => {
3622
+ if (!helperConfig)
3623
+ return null;
3624
+ const fieldHelperClasses = parseClasses(['help', helperConfig.color]);
3625
+ const fieldHelperTestId = parseTestId({
3626
+ tag: 'form-field-help',
3627
+ parsedClasses: fieldHelperClasses,
3628
+ rules: [{ regExp: /help|is/gm, replacer: '' }]
3629
+ });
3630
+ return (React.createElement("p", { "data-testid": fieldHelperTestId, className: fieldHelperClasses }, helperConfig.text));
3631
+ };
3632
+ const FormField = ({ testId = null, cssClasses = null, style = null, labelText = null, inputControlConfig, helperConfig = null, isHorizontal = false, isGrouped = false }) => {
3633
+ var _a;
3634
+ const formFieldClasses = parseClasses([
3635
+ 'field',
3636
+ isHorizontal ? 'is-horizontal' : null,
3637
+ isGrouped ? 'is-grouped' : null,
3638
+ cssClasses
3639
+ ]);
3640
+ const formFieldTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'field', parsedClasses: formFieldClasses });
3641
+ if (!isGrouped &&
3642
+ ((_a = inputControlConfig === null || inputControlConfig === void 0 ? void 0 : inputControlConfig.inputConfig) === null || _a === void 0 ? void 0 : _a.color) &&
3643
+ helperConfig) {
3644
+ helperConfig = Object.assign(Object.assign({}, helperConfig), { color: inputControlConfig.inputConfig.color });
3645
+ }
3646
+ return (React.createElement("section", { "data-testid": formFieldTestId, className: formFieldClasses, style: style !== null && style !== void 0 ? style : undefined },
3647
+ isHorizontal ? (React.createElement("section", { className: 'field-label' }, renderFieldLabel(labelText))) : (renderFieldLabel(labelText)),
3648
+ isHorizontal ? (React.createElement("section", { className: 'field-body' },
3649
+ renderFieldBody(inputControlConfig, isGrouped),
3650
+ renderFieldHelper(helperConfig))) : (React.createElement(React.Fragment, null,
3651
+ renderFieldBody(inputControlConfig, isGrouped),
3652
+ renderFieldHelper(helperConfig)))));
3653
+ };
3654
+
3655
+ const generateHeader = (headerText) => (React.createElement("p", { className: 'panel-heading' }, headerText));
3656
+ const Panel = ({ testId = null, cssClasses = null, style = null, headerText, panelTabs = null, blockList, color = null }) => {
3657
+ const panelClasses = parseClasses(['panel', color, cssClasses]);
3658
+ const panelTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'panel', parsedClasses: panelClasses });
3659
+ return (React.createElement("article", { "data-testid": panelTestId, className: panelClasses, style: style !== null && style !== void 0 ? style : undefined },
3660
+ generateHeader(headerText),
3661
+ panelTabs ? React.createElement(PanelTabs, Object.assign({}, panelTabs)) : null,
3662
+ blockList.map(blockConfig => (React.createElement(PanelBlock, Object.assign({ key: `panel-block-item-${generateKey()}` }, blockConfig))))));
3547
3663
  };
3548
3664
 
3549
- export { Block, Box, BreadcrumbItem, Breadcrumbs, Button, ButtonGroup, CheckBox as Checkbox, Column, ColumnGroup, Delete, Dropdown, DropdownItem, DropdownTrigger, File, Icon, Image, Input, Menu, MenuItem, MenuList, Message, Modal, Notification, Pagination, PaginationItem, ProgressBar, RadioButton, Select, TabItem, Tabs, Tag, TextArea, Title };
3665
+ export { Block, Box, BreadcrumbItem, Breadcrumbs, Button, ButtonGroup, CheckBox as Checkbox, Column, ColumnGroup, Delete, Dropdown, DropdownItem, DropdownTrigger, File, FormField, Icon, Image, Input, InputControl, Menu, MenuItem, MenuList, Message, Modal, Notification, Pagination, PaginationItem, Panel, PanelBlock, PanelTabs, ProgressBar, RadioButton, Select, TabItem, Tabs, Tag, TextArea, Title };
3550
3666
  //# sourceMappingURL=index.js.map