Closed
Description
I am trying this pattern, could the rest: ChildDom[]
allow undefined
or null
, more like rest: (ChildDom|undefined|null)[]
export const Button = (props?: ButtonProps) => {
const componentClasses = classNames(
Classes.BUTTON,
props?.active ? Classes.ACTIVE : null,
props?.minimal ? Classes.MINIMAL : null,
props?.outlined ? Classes.OUTLINED : null,
props?.fill ? Classes.FILL : null,
props?.small ? Classes.SMALL : null,
props?.alignText ? AlignmentClassMap[props?.alignText] : null,
props?.intent ? IntentClassMap[props?.intent] : null
);
const createText = () => {
if (props?.text) {
return span({ class: Classes.BUTTON_TEXT }, props.text);
}
};
const createIcon = (icon?: IconName) => {
if (icon) {
return Icon({ icon });
}
};
return button({ class: componentClasses }, createText(), createIcon());
};
Button.displayName = `${DISPLAYNAME_PREFIX}.Button`;
Otherwise I have to do this which is a bit uglier
export const Button = (props?: ButtonProps) => {
const componentClasses = classNames(
Classes.BUTTON,
props?.active ? Classes.ACTIVE : null,
props?.minimal ? Classes.MINIMAL : null,
props?.outlined ? Classes.OUTLINED : null,
props?.fill ? Classes.FILL : null,
props?.small ? Classes.SMALL : null,
props?.alignText ? AlignmentClassMap[props?.alignText] : null,
props?.intent ? IntentClassMap[props?.intent] : null
);
const children: ChildDom[] = [];
if (props?.text) {
children.push(span({ class: Classes.BUTTON_TEXT }, props.text));
}
if (props?.icon) {
children.push(Icon({ icon: props?.icon }));
}
return button({ class: componentClasses }, ...children);
};
Button.displayName = `${DISPLAYNAME_PREFIX}.Button`;
Sometimes components might return nothing due to logic inside so it would be useful to ignore undefined
or null
Metadata
Metadata
Assignees
Labels
No labels