reactive-bulma 2.11.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.
- package/LICENSE +1 -1
- package/dist/cjs/index.js +77 -34
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/molecules/PanelBlock/index.d.ts +4 -0
- package/dist/cjs/types/components/molecules/PanelTabs/index.d.ts +4 -0
- package/dist/cjs/types/components/molecules/index.d.ts +2 -1
- package/dist/cjs/types/components/{molecules → organisms}/FormField/index.d.ts +1 -1
- package/dist/cjs/types/components/organisms/Panel/index.d.ts +4 -0
- package/dist/cjs/types/components/organisms/index.d.ts +2 -0
- package/dist/cjs/types/functions/generators.d.ts +4 -0
- package/dist/cjs/types/functions/parsers.d.ts +1 -4
- package/dist/cjs/types/functions/tests/generators.test.d.ts +1 -0
- package/dist/cjs/types/index.d.ts +1 -0
- package/dist/cjs/types/interfaces/atomProps.d.ts +2 -2
- package/dist/cjs/types/interfaces/moleculeProps.d.ts +23 -14
- package/dist/cjs/types/interfaces/organismProps.d.ts +29 -0
- package/dist/cjs/types/types/domTypes.d.ts +3 -2
- package/dist/esm/index.js +75 -35
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/molecules/PanelBlock/index.d.ts +4 -0
- package/dist/esm/types/components/molecules/PanelTabs/index.d.ts +4 -0
- package/dist/esm/types/components/molecules/index.d.ts +2 -1
- package/dist/esm/types/components/{molecules → organisms}/FormField/index.d.ts +1 -1
- package/dist/esm/types/components/organisms/Panel/index.d.ts +4 -0
- package/dist/esm/types/components/organisms/index.d.ts +2 -0
- package/dist/esm/types/functions/generators.d.ts +4 -0
- package/dist/esm/types/functions/parsers.d.ts +1 -4
- package/dist/esm/types/functions/tests/generators.test.d.ts +1 -0
- package/dist/esm/types/index.d.ts +1 -0
- package/dist/esm/types/interfaces/atomProps.d.ts +2 -2
- package/dist/esm/types/interfaces/moleculeProps.d.ts +23 -14
- package/dist/esm/types/interfaces/organismProps.d.ts +29 -0
- package/dist/esm/types/types/domTypes.d.ts +3 -2
- package/dist/index.d.ts +59 -17
- package/package.json +11 -11
package/LICENSE
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
MIT License
|
2
2
|
|
3
|
-
Copyright (c)
|
3
|
+
Copyright (c) 2024 Nicolás Omar González Passerino
|
4
4
|
|
5
5
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
6
|
of this software and associated documentation files (the "Software"), to deal
|
package/dist/cjs/index.js
CHANGED
@@ -2861,13 +2861,6 @@ const parseTestId = (config) => {
|
|
2861
2861
|
}
|
2862
2862
|
return `test-${config.tag}${fixedClassString.replace(/ /gm, (_a = config.separator) !== null && _a !== void 0 ? _a : '')}`;
|
2863
2863
|
};
|
2864
|
-
const parseKey = (max = 5000, min = 1) => {
|
2865
|
-
max = Math.floor(max);
|
2866
|
-
min = Math.ceil(min);
|
2867
|
-
const secureRandomNumbers = new Uint32Array(1);
|
2868
|
-
window.crypto.getRandomValues(secureRandomNumbers);
|
2869
|
-
return Math.floor(secureRandomNumbers[0] * (max - min) + min).toString();
|
2870
|
-
};
|
2871
2864
|
|
2872
2865
|
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 }) => {
|
2873
2866
|
const buttonClasses = parseClasses([
|
@@ -3159,7 +3152,7 @@ const CheckBox = ({ testId = null, containerTestId = null, cssClasses = null, co
|
|
3159
3152
|
content));
|
3160
3153
|
};
|
3161
3154
|
|
3162
|
-
//
|
3155
|
+
// FUNCTIONS
|
3163
3156
|
const renderRadioButton = (config, index) => {
|
3164
3157
|
const { testId = null, label, name, isChecked = false, isDisabled = false, style = null, onChange } = config;
|
3165
3158
|
const radioButtonTestId = testId !== null && testId !== void 0 ? testId : `test-radio-button-item-${index}`;
|
@@ -3283,20 +3276,22 @@ const PaginationItem = ({ testId = null, cssClasses = null, style = null, text,
|
|
3283
3276
|
};
|
3284
3277
|
|
3285
3278
|
const TabItem = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, icon = null, text, onClick = null }) => {
|
3286
|
-
const tabItemContainerClasses = parseClasses([
|
3287
|
-
'tabItem-container',
|
3288
|
-
null,
|
3289
|
-
containerCssClasses
|
3290
|
-
]);
|
3291
|
-
const tabItemClasses = parseClasses(['tabItem', cssClasses]);
|
3292
3279
|
const tabItemContainerTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({
|
3293
|
-
tag: '
|
3294
|
-
parsedClasses:
|
3280
|
+
tag: 'tab-item-container',
|
3281
|
+
parsedClasses: containerCssClasses !== null && containerCssClasses !== void 0 ? containerCssClasses : ''
|
3295
3282
|
});
|
3296
|
-
const tabItemTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: '
|
3297
|
-
return (React.createElement("a", { "data-testid": tabItemContainerTestId, className:
|
3283
|
+
const tabItemTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'tab-item', parsedClasses: cssClasses !== null && cssClasses !== void 0 ? cssClasses : '' });
|
3284
|
+
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 },
|
3298
3285
|
icon ? React.createElement(Icon, Object.assign({}, icon)) : null,
|
3299
|
-
React.createElement("span", { "data-testid": tabItemTestId, className:
|
3286
|
+
React.createElement("span", { "data-testid": tabItemTestId, className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined }, text)));
|
3287
|
+
};
|
3288
|
+
|
3289
|
+
const generateKey = (max = 5000, min = 1) => {
|
3290
|
+
max = Math.floor(max);
|
3291
|
+
min = Math.ceil(min);
|
3292
|
+
const secureRandomNumbers = new Uint32Array(1);
|
3293
|
+
window.crypto.getRandomValues(secureRandomNumbers);
|
3294
|
+
return Math.floor(secureRandomNumbers[0] * (max - min) + min).toString();
|
3300
3295
|
};
|
3301
3296
|
|
3302
3297
|
const ButtonGroup = ({ testId = null, cssClasses = null, style = null, buttonList, isAttached = false, position = 'left' }) => {
|
@@ -3325,7 +3320,7 @@ const ButtonGroup = ({ testId = null, cssClasses = null, style = null, buttonLis
|
|
3325
3320
|
const shouldApplyColor = (hasSelectedButton && currentButtonItem.isSelected) ||
|
3326
3321
|
!hasSelectedButton;
|
3327
3322
|
const buttonConfig = Object.assign(Object.assign({}, currentButtonItem), { color: shouldApplyColor ? currentButtonItem.color : undefined });
|
3328
|
-
return (React.createElement(Button, Object.assign({ key: `button-group-item-${
|
3323
|
+
return (React.createElement(Button, Object.assign({ key: `button-group-item-${generateKey()}` }, buttonConfig)));
|
3329
3324
|
})));
|
3330
3325
|
};
|
3331
3326
|
|
@@ -3353,7 +3348,7 @@ const ColumnGroup = ({ testId = null, cssClasses = null, style = null, listOfCol
|
|
3353
3348
|
tag: 'columns',
|
3354
3349
|
parsedClasses: columnGroupClasses
|
3355
3350
|
});
|
3356
|
-
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-${
|
3351
|
+
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))))));
|
3357
3352
|
};
|
3358
3353
|
|
3359
3354
|
const Notification = ({ testId = null, cssClasses = null, style = null, children = null, deleteButton = null, color = null, isLightColor = null }) => {
|
@@ -3395,14 +3390,14 @@ const Breadcrumbs = ({ testId = 'breadcrumbs', containerTestId = null, cssClasse
|
|
3395
3390
|
]
|
3396
3391
|
});
|
3397
3392
|
return (React.createElement("nav", { "data-testid": breadcrumbsContainerTestId, className: breadcrumbsContainerClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined },
|
3398
|
-
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-${
|
3393
|
+
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)))))));
|
3399
3394
|
};
|
3400
3395
|
|
3401
3396
|
const renderDropdownMenu = (items) => (React.createElement("section", { className: 'dropdown-content' }, items.map((dropdownItemConfig, i) => {
|
3402
3397
|
const isFirstItemInMenu = items.length > 1 && i === 0;
|
3403
|
-
return isFirstItemInMenu ? (React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${
|
3404
|
-
React.createElement(DropdownItem, { key: `dropdown-item-${
|
3405
|
-
React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${
|
3398
|
+
return isFirstItemInMenu ? (React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${generateKey()}` }, dropdownItemConfig))) : (React.createElement("section", { key: `dropdown-item-${generateKey()}-section` },
|
3399
|
+
React.createElement(DropdownItem, { key: `dropdown-item-${generateKey()}-divider`, type: 'divider', itemText: 'divider' }),
|
3400
|
+
React.createElement(DropdownItem, Object.assign({ key: `dropdown-item-${generateKey()}` }, dropdownItemConfig))));
|
3406
3401
|
})));
|
3407
3402
|
const Dropdown = ({ testId = null, cssClasses = null, style = null, inputText, dropdownPointer = 'dropdown-menu', listOfItems }) => {
|
3408
3403
|
const [isMenuActive, setIsMenuActive] = reactExports.useState(false);
|
@@ -3434,12 +3429,12 @@ const MenuList = ({ testId = null, cssClasses = null, style = null, itemList })
|
|
3434
3429
|
const menuListTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'menu-list', parsedClasses: menuListClasses });
|
3435
3430
|
return (React.createElement("ul", { "data-testid": menuListTestId, className: menuListClasses, style: style !== null && style !== void 0 ? style : undefined }, itemList.map(item => {
|
3436
3431
|
if ('subListTitle' in item) {
|
3437
|
-
return (React.createElement("li", { key: `sub-list-menu-item-${
|
3432
|
+
return (React.createElement("li", { key: `sub-list-menu-item-${generateKey()}` },
|
3438
3433
|
React.createElement(MenuItem, Object.assign({}, item.subListTitle)),
|
3439
|
-
React.createElement("ul", null, item.subItems.map(subItem => (React.createElement(MenuItem, Object.assign({ key: `sub-list-menu-sub-item-${
|
3434
|
+
React.createElement("ul", null, item.subItems.map(subItem => (React.createElement(MenuItem, Object.assign({ key: `sub-list-menu-sub-item-${generateKey()}` }, subItem)))))));
|
3440
3435
|
}
|
3441
3436
|
else {
|
3442
|
-
return (React.createElement(MenuItem, Object.assign({ key: `sub-list-item-${
|
3437
|
+
return (React.createElement(MenuItem, Object.assign({ key: `sub-list-item-${generateKey()}` }, item)));
|
3443
3438
|
}
|
3444
3439
|
})));
|
3445
3440
|
};
|
@@ -3447,9 +3442,9 @@ const MenuList = ({ testId = null, cssClasses = null, style = null, itemList })
|
|
3447
3442
|
const Menu = ({ testId = null, cssClasses = null, style = null, menuSections }) => {
|
3448
3443
|
const menuClasses = parseClasses(['menu', cssClasses]);
|
3449
3444
|
const menuTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'menu', parsedClasses: menuClasses });
|
3450
|
-
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-${
|
3451
|
-
React.createElement("p", { key: `section-label-${
|
3452
|
-
React.createElement(MenuList, { key: `section-menu-list-${
|
3445
|
+
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()}` },
|
3446
|
+
React.createElement("p", { key: `section-label-${generateKey()}`, className: 'menu-label' }, section.label),
|
3447
|
+
React.createElement(MenuList, { key: `section-menu-list-${generateKey()}`, itemList: section.itemList }))))));
|
3453
3448
|
};
|
3454
3449
|
|
3455
3450
|
const renderEllipsis = (hasEllipsis) => hasEllipsis ? (React.createElement("li", null,
|
@@ -3474,7 +3469,7 @@ const renderPages = (pages, hasEllipsis, ellipsisItems) => {
|
|
3474
3469
|
}
|
3475
3470
|
if (!hasEllipsis ||
|
3476
3471
|
(pageIndex > ellipsisItems && pageIndex < lastEllipsisItemIndex)) {
|
3477
|
-
return (React.createElement(PaginationItem, Object.assign({ key: `pagination-item-${
|
3472
|
+
return (React.createElement(PaginationItem, Object.assign({ key: `pagination-item-${generateKey()}` }, pageItem)));
|
3478
3473
|
}
|
3479
3474
|
if (pageIndex === --length) {
|
3480
3475
|
return (React.createElement(React.Fragment, { key: `last-pagination-item` },
|
@@ -3546,7 +3541,7 @@ const Tabs = ({ testId = null, cssClasses = null, style = null, tabs, alignment
|
|
3546
3541
|
]);
|
3547
3542
|
const tabsTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'tabs', parsedClasses: tabsClasses });
|
3548
3543
|
return (React.createElement("section", { "data-testid": tabsTestId, className: tabsClasses, style: style !== null && style !== void 0 ? style : undefined },
|
3549
|
-
React.createElement("ul", null, tabs.map(tabConfig => (React.createElement("li", { key: `tab-item-${
|
3544
|
+
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))))))));
|
3550
3545
|
};
|
3551
3546
|
|
3552
3547
|
const renderIcon = (iconConfig) => iconConfig ? React.createElement(Icon, Object.assign({}, iconConfig)) : null;
|
@@ -3581,10 +3576,45 @@ const InputControl = ({ testId = null, cssClasses = null, style = null, inputCon
|
|
3581
3576
|
renderIcon(rightIcon ? Object.assign(Object.assign({}, rightIcon), { position: 'is-right' }) : undefined)));
|
3582
3577
|
};
|
3583
3578
|
|
3579
|
+
const convertConfigToComponent = ({ type, props }, testId, cssClasses, style, blockText) => {
|
3580
|
+
switch (type) {
|
3581
|
+
case 'icon': {
|
3582
|
+
const panelBlockIconClasses = parseClasses(['panel-icon', cssClasses]);
|
3583
|
+
const panelBlockIconTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'panel-icon', parsedClasses: panelBlockIconClasses });
|
3584
|
+
return (React.createElement(React.Fragment, null,
|
3585
|
+
React.createElement("span", { "data-testid": panelBlockIconTestId, className: panelBlockIconClasses, style: style !== null && style !== void 0 ? style : undefined },
|
3586
|
+
React.createElement(Icon, Object.assign({}, props))),
|
3587
|
+
blockText));
|
3588
|
+
}
|
3589
|
+
case 'control':
|
3590
|
+
return React.createElement(InputControl, Object.assign({}, props));
|
3591
|
+
case 'button':
|
3592
|
+
return React.createElement(Button, Object.assign({}, props));
|
3593
|
+
}
|
3594
|
+
};
|
3595
|
+
const PanelBlock = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, config, blockText = null, isActive = false, onClick }) => {
|
3596
|
+
const panelBlockLinkClasses = parseClasses([
|
3597
|
+
'panel-block',
|
3598
|
+
isActive ? 'is-active' : null,
|
3599
|
+
containerCssClasses
|
3600
|
+
]);
|
3601
|
+
const panelBlockLinkTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({ tag: 'panel-block', parsedClasses: panelBlockLinkClasses });
|
3602
|
+
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)));
|
3603
|
+
};
|
3604
|
+
|
3605
|
+
const PanelTabs = ({ testId = null, cssClasses = null, style = null, tabList }) => {
|
3606
|
+
const panelTabsClasses = parseClasses(['panel-tabs', cssClasses]);
|
3607
|
+
const panelTabsTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'panel-tabs', parsedClasses: panelTabsClasses });
|
3608
|
+
return (React.createElement("section", { "data-testid": panelTabsTestId, className: panelTabsClasses, style: style !== null && style !== void 0 ? style : undefined }, tabList.map(tabItem => {
|
3609
|
+
var _a;
|
3610
|
+
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));
|
3611
|
+
})));
|
3612
|
+
};
|
3613
|
+
|
3584
3614
|
const renderFieldLabel = (labelText) => labelText ? (React.createElement("label", { "data-testid": 'test-form-field-label', className: 'label' }, labelText)) : null;
|
3585
3615
|
const renderFieldBody = (inputControlConfig, isGrouped) => {
|
3586
3616
|
if (isGrouped) {
|
3587
|
-
return Array.isArray(inputControlConfig) ? (inputControlConfig.map((_singleConfig, i) => (React.createElement(InputControl, Object.assign({ key: `grouped-input-control-${
|
3617
|
+
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)));
|
3588
3618
|
}
|
3589
3619
|
else {
|
3590
3620
|
return Array.isArray(inputControlConfig) ? (React.createElement(InputControl, Object.assign({}, inputControlConfig[0]))) : (React.createElement(InputControl, Object.assign({}, inputControlConfig)));
|
@@ -3624,6 +3654,16 @@ const FormField = ({ testId = null, cssClasses = null, style = null, labelText =
|
|
3624
3654
|
renderFieldHelper(helperConfig)))));
|
3625
3655
|
};
|
3626
3656
|
|
3657
|
+
const generateHeader = (headerText) => (React.createElement("p", { className: 'panel-heading' }, headerText));
|
3658
|
+
const Panel = ({ testId = null, cssClasses = null, style = null, headerText, panelTabs = null, blockList, color = null }) => {
|
3659
|
+
const panelClasses = parseClasses(['panel', color, cssClasses]);
|
3660
|
+
const panelTestId = testId !== null && testId !== void 0 ? testId : parseTestId({ tag: 'panel', parsedClasses: panelClasses });
|
3661
|
+
return (React.createElement("article", { "data-testid": panelTestId, className: panelClasses, style: style !== null && style !== void 0 ? style : undefined },
|
3662
|
+
generateHeader(headerText),
|
3663
|
+
panelTabs ? React.createElement(PanelTabs, Object.assign({}, panelTabs)) : null,
|
3664
|
+
blockList.map(blockConfig => (React.createElement(PanelBlock, Object.assign({ key: `panel-block-item-${generateKey()}` }, blockConfig))))));
|
3665
|
+
};
|
3666
|
+
|
3627
3667
|
exports.Block = Block;
|
3628
3668
|
exports.Box = Box;
|
3629
3669
|
exports.BreadcrumbItem = BreadcrumbItem;
|
@@ -3651,6 +3691,9 @@ exports.Modal = Modal;
|
|
3651
3691
|
exports.Notification = Notification;
|
3652
3692
|
exports.Pagination = Pagination;
|
3653
3693
|
exports.PaginationItem = PaginationItem;
|
3694
|
+
exports.Panel = Panel;
|
3695
|
+
exports.PanelBlock = PanelBlock;
|
3696
|
+
exports.PanelTabs = PanelTabs;
|
3654
3697
|
exports.ProgressBar = ProgressBar;
|
3655
3698
|
exports.RadioButton = RadioButton;
|
3656
3699
|
exports.Select = Select;
|