reactive-bulma 1.20.1 → 2.0.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/README.md +37 -21
- package/dist/cjs/index.js +67 -20
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/components/atoms/RadioButton/index.d.ts +4 -0
- package/dist/cjs/types/components/atoms/index.d.ts +2 -0
- package/dist/cjs/types/functions/parsers.d.ts +4 -4
- package/dist/cjs/types/interfaces/atomProps.d.ts +12 -2
- package/dist/cjs/types/interfaces/functionProps.d.ts +2 -2
- package/dist/esm/index.js +66 -21
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/components/atoms/RadioButton/index.d.ts +4 -0
- package/dist/esm/types/components/atoms/index.d.ts +2 -0
- package/dist/esm/types/functions/parsers.d.ts +4 -4
- package/dist/esm/types/interfaces/atomProps.d.ts +12 -2
- package/dist/esm/types/interfaces/functionProps.d.ts +2 -2
- package/dist/index.d.ts +33 -1
- package/package.json +34 -32
@@ -11,3 +11,5 @@ export { default as TextArea } from './TextArea';
|
|
11
11
|
export { default as Delete } from './Delete';
|
12
12
|
export { default as Select } from './Select';
|
13
13
|
export { default as File } from './File';
|
14
|
+
export { default as Checkbox } from './Checkbox';
|
15
|
+
export { default as RadioButton } from './RadioButton';
|
@@ -1,14 +1,14 @@
|
|
1
1
|
import { ParseTestIdProps } from '../interfaces/functionProps';
|
2
2
|
/**
|
3
|
-
* @param { Array<string | null> } _classes Required
|
3
|
+
* @param { Array<string | null> } _classes `Required`. Array of classNames on `string` (or `null`) values
|
4
4
|
* @returns { string } A single string product of merge all classNames, separated by spaces
|
5
5
|
*/
|
6
6
|
export declare const parseClasses: (_classes: Array<string | null | undefined>) => string;
|
7
7
|
/**
|
8
8
|
* @param { ParseTestIdProps } config Configuration object
|
9
|
-
* @param { string } config.tag Required
|
10
|
-
* @param { string } config.parsedClasses Required
|
11
|
-
* @param { {
|
9
|
+
* @param { string } config.tag `Required`. Component tag used between to build the final testId string.
|
10
|
+
* @param { string } config.parsedClasses `Required`. A single string of previously parsed classes what will be joined with `tag` property.
|
11
|
+
* @param { { regExp?: RegExp, replacer?: string }[] } config.rules Optional. An array of objects used with a regular expression to check each case and a replacer for each one, giving oportunity to handle specific cases of component class names.
|
12
12
|
* @returns A single string product of merge all classNames, separated by `separator` value
|
13
13
|
*/
|
14
14
|
export declare const parseTestId: (config: ParseTestIdProps) => string;
|
@@ -220,14 +220,24 @@ export interface CheckBoxProps extends BasicProps {
|
|
220
220
|
/** `Function` Click function, alone does not nothing, but can be reused for other components */
|
221
221
|
onChange?: () => void;
|
222
222
|
}
|
223
|
-
interface RadioButtonItemProps {
|
223
|
+
export interface RadioButtonItemProps extends Pick<BasicProps, 'testId' | 'style'> {
|
224
|
+
/** `Attribute` `Required` Sets checkbox's text*/
|
224
225
|
label: string;
|
225
|
-
name
|
226
|
+
/** `Attribute` Sets the name that will relate this checkbox with the others */
|
227
|
+
name?: string;
|
228
|
+
/** `Attribute` Shows the checkbox as checked or unchecked */
|
226
229
|
isChecked?: boolean;
|
230
|
+
/** `Attribute` Will disable the checkbox */
|
227
231
|
isDisabled?: boolean;
|
232
|
+
/** `Function` Click function, alone does not nothing, but can be reused for other components */
|
233
|
+
onChange?: () => void;
|
228
234
|
}
|
229
235
|
export interface RadioButtonProps extends BasicProps {
|
236
|
+
/** `Attribute` `Required` Indicates the options contained to be selected */
|
230
237
|
options: RadioButtonItemProps[];
|
238
|
+
/** `Attribute` `Required` Sets the name that will relate this checkbox with the others */
|
239
|
+
name: string;
|
240
|
+
/** `Function` Click function, alone does not nothing, but can be reused for other components */
|
231
241
|
onChange?: () => void;
|
232
242
|
}
|
233
243
|
export {};
|
package/dist/esm/index.js
CHANGED
@@ -2833,15 +2833,15 @@ var reactExports = react.exports;
|
|
2833
2833
|
var React = /*@__PURE__*/getDefaultExportFromCjs(reactExports);
|
2834
2834
|
|
2835
2835
|
/**
|
2836
|
-
* @param { Array<string | null> } _classes Required
|
2836
|
+
* @param { Array<string | null> } _classes `Required`. Array of classNames on `string` (or `null`) values
|
2837
2837
|
* @returns { string } A single string product of merge all classNames, separated by spaces
|
2838
2838
|
*/
|
2839
2839
|
const parseClasses = (_classes) => _classes.filter(_class => _class).join(' ');
|
2840
2840
|
/**
|
2841
2841
|
* @param { ParseTestIdProps } config Configuration object
|
2842
|
-
* @param { string } config.tag Required
|
2843
|
-
* @param { string } config.parsedClasses Required
|
2844
|
-
* @param { {
|
2842
|
+
* @param { string } config.tag `Required`. Component tag used between to build the final testId string.
|
2843
|
+
* @param { string } config.parsedClasses `Required`. A single string of previously parsed classes what will be joined with `tag` property.
|
2844
|
+
* @param { { regExp?: RegExp, replacer?: string }[] } config.rules Optional. An array of objects used with a regular expression to check each case and a replacer for each one, giving oportunity to handle specific cases of component class names.
|
2845
2845
|
* @returns A single string product of merge all classNames, separated by `separator` value
|
2846
2846
|
*/
|
2847
2847
|
const parseTestId = (config) => {
|
@@ -2849,7 +2849,7 @@ const parseTestId = (config) => {
|
|
2849
2849
|
let fixedClassString = config.parsedClasses;
|
2850
2850
|
if (config.rules) {
|
2851
2851
|
for (const rule of config.rules) {
|
2852
|
-
fixedClassString = fixedClassString.replace(rule.
|
2852
|
+
fixedClassString = fixedClassString.replace(rule.regExp, rule.replacer);
|
2853
2853
|
}
|
2854
2854
|
}
|
2855
2855
|
else {
|
@@ -2972,8 +2972,8 @@ const generateIconContainer = (icon, color) => {
|
|
2972
2972
|
parsedClasses: (_a = color === null || color === void 0 ? void 0 : color.toString()) !== null && _a !== void 0 ? _a : '',
|
2973
2973
|
rules: [
|
2974
2974
|
{
|
2975
|
-
|
2976
|
-
|
2975
|
+
regExp: /has-text/gm,
|
2976
|
+
replacer: ''
|
2977
2977
|
}
|
2978
2978
|
]
|
2979
2979
|
});
|
@@ -2999,12 +2999,12 @@ const Icon = ({ testId = null, containerTestId = null, cssClasses = null, contai
|
|
2999
2999
|
parsedClasses: iconClasses,
|
3000
3000
|
rules: [
|
3001
3001
|
{
|
3002
|
-
|
3003
|
-
|
3002
|
+
regExp: /mdi-|mdi--/gm,
|
3003
|
+
replacer: ''
|
3004
3004
|
},
|
3005
3005
|
{
|
3006
|
-
|
3007
|
-
|
3006
|
+
regExp: /mdi /gm,
|
3007
|
+
replacer: '-'
|
3008
3008
|
}
|
3009
3009
|
],
|
3010
3010
|
separator: '-'
|
@@ -3048,12 +3048,12 @@ const TextArea = ({ testId = null, cssClasses = null, style = null, text = null,
|
|
3048
3048
|
parsedClasses: textAreaClasses,
|
3049
3049
|
rules: [
|
3050
3050
|
{
|
3051
|
-
|
3052
|
-
|
3051
|
+
regExp: /textarea/gm,
|
3052
|
+
replacer: ''
|
3053
3053
|
},
|
3054
3054
|
{
|
3055
|
-
|
3056
|
-
|
3055
|
+
regExp: /is-|has-/gm,
|
3056
|
+
replacer: '-'
|
3057
3057
|
}
|
3058
3058
|
]
|
3059
3059
|
});
|
@@ -3086,7 +3086,7 @@ const Select = ({ testId = null, containerTestId = null, cssClasses = null, cont
|
|
3086
3086
|
});
|
3087
3087
|
const containerSelectTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : `${selectTestId}-container`;
|
3088
3088
|
return (React.createElement("section", { "data-testid": containerSelectTestId, className: containerSelectClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined },
|
3089
|
-
React.createElement("select", { "data-testid": selectTestId, className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined, multiple: isMultiple, size: showOptions }, options.map(({ id, name, selected }, i) => (React.createElement("option", { "data-testid": `${selectTestId}-option-${i}`, key: id.toString(),
|
3089
|
+
React.createElement("select", { "data-testid": selectTestId, className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined, multiple: isMultiple, size: showOptions }, options.map(({ id, name, selected }, i) => (React.createElement("option", { "data-testid": `${selectTestId}-option-${i}`, key: id.toString(), defaultChecked: selected !== null && selected !== void 0 ? selected : false, onClick: onClick !== null && onClick !== void 0 ? onClick : undefined }, name))))));
|
3090
3090
|
};
|
3091
3091
|
|
3092
3092
|
const File = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, fileName = null, uploadIcon = { iconLabel: 'upload' }, uploadText = 'Choose a file…', buttonOnRight = false, isFullWidth = false, isBoxed = false, color = null, size = null, onClick = null }) => {
|
@@ -3105,12 +3105,12 @@ const File = ({ testId = null, containerTestId = null, cssClasses = null, contai
|
|
3105
3105
|
parsedClasses: fileContainerClasses,
|
3106
3106
|
rules: [
|
3107
3107
|
{
|
3108
|
-
|
3109
|
-
|
3108
|
+
regExp: /has/gm,
|
3109
|
+
replacer: '-has'
|
3110
3110
|
},
|
3111
3111
|
{
|
3112
|
-
|
3113
|
-
|
3112
|
+
regExp: /is|file/gm,
|
3113
|
+
replacer: ''
|
3114
3114
|
}
|
3115
3115
|
]
|
3116
3116
|
});
|
@@ -3125,5 +3125,50 @@ const File = ({ testId = null, containerTestId = null, cssClasses = null, contai
|
|
3125
3125
|
fileName ? React.createElement("span", { className: 'file-name' }, fileName) : null)));
|
3126
3126
|
};
|
3127
3127
|
|
3128
|
-
|
3128
|
+
const parseContentTestId = (content) => {
|
3129
|
+
if (typeof content === 'string')
|
3130
|
+
return `-${content === null || content === void 0 ? void 0 : content.toString()}`;
|
3131
|
+
if (content !== null)
|
3132
|
+
return '-with-component';
|
3133
|
+
return '';
|
3134
|
+
};
|
3135
|
+
const CheckBox = ({ testId = null, containerTestId = null, cssClasses = null, containerCssClasses = null, style = null, containerStyle = null, content = null, isDisabled = null, onChange = null }) => {
|
3136
|
+
const checkboxContainerClasses = parseClasses([
|
3137
|
+
'checkbox',
|
3138
|
+
containerCssClasses
|
3139
|
+
]);
|
3140
|
+
const checkboxContainerTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({
|
3141
|
+
tag: 'checkbox-container',
|
3142
|
+
parsedClasses: parseContentTestId(content)
|
3143
|
+
});
|
3144
|
+
const checkboxTestId = testId !== null && testId !== void 0 ? testId : parseTestId({
|
3145
|
+
tag: 'checkbox',
|
3146
|
+
parsedClasses: parseContentTestId(content)
|
3147
|
+
});
|
3148
|
+
return (React.createElement("label", { "data-testid": checkboxContainerTestId, className: checkboxContainerClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined },
|
3149
|
+
React.createElement("input", { "data-testid": checkboxTestId, type: 'checkbox', className: cssClasses !== null && cssClasses !== void 0 ? cssClasses : undefined, style: style !== null && style !== void 0 ? style : undefined, disabled: isDisabled !== null && isDisabled !== void 0 ? isDisabled : false, onChange: onChange !== null && onChange !== void 0 ? onChange : undefined }),
|
3150
|
+
content));
|
3151
|
+
};
|
3152
|
+
|
3153
|
+
// PARSERS
|
3154
|
+
const renderRadioButton = (config, index) => {
|
3155
|
+
const { testId = null, label, name, isChecked = false, isDisabled = false, style = null, onChange } = config;
|
3156
|
+
const radioButtonTestId = testId !== null && testId !== void 0 ? testId : `test-radio-button-item-${index}`;
|
3157
|
+
return (React.createElement("label", { key: index, className: 'radio' },
|
3158
|
+
React.createElement("input", { "data-testid": radioButtonTestId, type: 'radio', style: style !== null && style !== void 0 ? style : undefined, name: name, defaultChecked: isChecked, disabled: isDisabled, onChange: onChange }),
|
3159
|
+
label));
|
3160
|
+
};
|
3161
|
+
const RadioButton = ({ containerTestId = null, containerCssClasses = null, containerStyle = null, options, name, onChange = null }) => {
|
3162
|
+
const radioButtonContainerClasses = parseClasses([
|
3163
|
+
'control',
|
3164
|
+
containerCssClasses
|
3165
|
+
]);
|
3166
|
+
const radioButtonContainerTestId = containerTestId !== null && containerTestId !== void 0 ? containerTestId : parseTestId({
|
3167
|
+
tag: 'container-',
|
3168
|
+
parsedClasses: radioButtonContainerClasses
|
3169
|
+
});
|
3170
|
+
return (React.createElement("section", { "data-testid": radioButtonContainerTestId, className: radioButtonContainerClasses, style: containerStyle !== null && containerStyle !== void 0 ? containerStyle : undefined }, options.map((_option, i) => renderRadioButton(Object.assign(Object.assign({}, _option), { name, onChange: onChange !== null && onChange !== void 0 ? onChange : undefined }), i))));
|
3171
|
+
};
|
3172
|
+
|
3173
|
+
export { Block, Box, Button, CheckBox as Checkbox, Column, Delete, File, Icon, Input, ProgressBar, RadioButton, Select, Tag, TextArea, Title };
|
3129
3174
|
//# sourceMappingURL=index.js.map
|