carbon-components-angular
Version:
Next generation components
191 lines • 17.1 kB
JavaScript
import { Directive, HostBinding, Input } from "@angular/core";
import * as i0 from "@angular/core";
/**
* A convenience directive for applying styling to a button. Get started with importing the module:
*
* ```typescript
* import { ButtonModule } from 'carbon-components-angular';
* ```
*
* Example:
*
* ```html
* <button cdsButton>A button</button>
* <button cdsButton="secondary">A secondary button</button>
* ```
*
* See the [vanilla carbon docs](http://www.carbondesignsystem.com/components/button/code) for more detail.
*
* [See demo](../../?path=/story/components-button--basic)
*/
export class Button {
constructor() {
/**
* Sets the button type
* Accepts `ButtonType` or nothing (empty string which is equivalent to "primary")
* Empty string has been added as an option for Angular 16+ to resolve type errors
*/
this.cdsButton = "primary";
/**
* Set to `true` for a skeleton state button
*/
this.skeleton = false;
/**
* Set to `true` if the button contains only an icon
* This should only be used for creating custom icon buttons, otherwise use
* `<cds-icon-button></cds-icon-button>` component
*/
this.iconOnly = false;
/**
* Set to `true` for a "expressive" style button
*/
this.isExpressive = false;
// a whole lot of HostBindings ... this way we don't have to touch the elementRef directly
this.baseClass = true;
}
/**
* @deprecated as of v5 - Use `cdsButton` input property instead
*/
set ibmButton(type) {
this.cdsButton = type;
}
get primaryButton() {
return this.cdsButton === "primary" || !this.cdsButton;
}
get secondaryButton() {
return this.cdsButton === "secondary";
}
get tertiaryButton() {
return this.cdsButton === "tertiary";
}
get ghostButton() {
return this.cdsButton === "ghost";
}
get dangerButton() {
return this.cdsButton === "danger" || this.cdsButton === "danger--primary";
}
get dangerTertiary() {
return this.cdsButton === "danger--tertiary";
}
get dangerGhost() {
return this.cdsButton === "danger--ghost";
}
/**
* @todo remove `cds--btn--${size}` classes in v12
*/
get smallSize() {
return this.size === "sm" && !this.isExpressive;
}
get mediumSize() {
return this.size === "md" && !this.isExpressive;
}
get largeSize() {
return this.size === "lg";
}
get extraLargeSize() {
return this.size === "xl";
}
get twoExtraLargeSize() {
return this.size === "2xl";
}
// Size classes
get smallLayoutSize() {
return this.size === "sm" && !this.isExpressive;
}
get mediumLayoutSize() {
return this.size === "md" && !this.isExpressive;
}
get largeLayoutSize() {
return this.size === "lg";
}
get extraLargeLayoutSize() {
return this.size === "xl";
}
get twoExtraLargeLayoutSize() {
return this.size === "2xl";
}
}
Button.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Directive });
Button.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "14.3.0", type: Button, selector: "[cdsButton], [ibmButton]", inputs: { ibmButton: "ibmButton", cdsButton: "cdsButton", size: "size", skeleton: "skeleton", iconOnly: "iconOnly", isExpressive: "isExpressive" }, host: { properties: { "class.cds--skeleton": "this.skeleton", "class.cds--btn--icon-only": "this.iconOnly", "class.cds--btn--expressive": "this.isExpressive", "class.cds--btn": "this.baseClass", "class.cds--btn--primary": "this.primaryButton", "class.cds--btn--secondary": "this.secondaryButton", "class.cds--btn--tertiary": "this.tertiaryButton", "class.cds--btn--ghost": "this.ghostButton", "class.cds--btn--danger": "this.dangerButton", "class.cds--btn--danger--tertiary": "this.dangerTertiary", "class.cds--btn--danger--ghost": "this.dangerGhost", "class.cds--btn--sm": "this.smallSize", "class.cds--btn--md": "this.mediumSize", "class.cds--btn--lg": "this.largeSize", "class.cds--btn--xl": "this.extraLargeSize", "class.cds--btn--2xl": "this.twoExtraLargeSize", "class.cds--layout--size-sm": "this.smallLayoutSize", "class.cds--layout--size-md": "this.mediumLayoutSize", "class.cds--layout--size-lg": "this.largeLayoutSize", "class.cds--layout--size-xl": "this.extraLargeLayoutSize", "class.cds--layout--size-2xl": "this.twoExtraLargeLayoutSize" } }, ngImport: i0 });
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: Button, decorators: [{
type: Directive,
args: [{
selector: "[cdsButton], [ibmButton]"
}]
}], propDecorators: { ibmButton: [{
type: Input
}], cdsButton: [{
type: Input
}], size: [{
type: Input
}], skeleton: [{
type: HostBinding,
args: ["class.cds--skeleton"]
}, {
type: Input
}], iconOnly: [{
type: HostBinding,
args: ["class.cds--btn--icon-only"]
}, {
type: Input
}], isExpressive: [{
type: HostBinding,
args: ["class.cds--btn--expressive"]
}, {
type: Input
}], baseClass: [{
type: HostBinding,
args: ["class.cds--btn"]
}], primaryButton: [{
type: HostBinding,
args: ["class.cds--btn--primary"]
}], secondaryButton: [{
type: HostBinding,
args: ["class.cds--btn--secondary"]
}], tertiaryButton: [{
type: HostBinding,
args: ["class.cds--btn--tertiary"]
}], ghostButton: [{
type: HostBinding,
args: ["class.cds--btn--ghost"]
}], dangerButton: [{
type: HostBinding,
args: ["class.cds--btn--danger"]
}], dangerTertiary: [{
type: HostBinding,
args: ["class.cds--btn--danger--tertiary"]
}], dangerGhost: [{
type: HostBinding,
args: ["class.cds--btn--danger--ghost"]
}], smallSize: [{
type: HostBinding,
args: ["class.cds--btn--sm"]
}], mediumSize: [{
type: HostBinding,
args: ["class.cds--btn--md"]
}], largeSize: [{
type: HostBinding,
args: ["class.cds--btn--lg"]
}], extraLargeSize: [{
type: HostBinding,
args: ["class.cds--btn--xl"]
}], twoExtraLargeSize: [{
type: HostBinding,
args: ["class.cds--btn--2xl"]
}], smallLayoutSize: [{
type: HostBinding,
args: ["class.cds--layout--size-sm"]
}], mediumLayoutSize: [{
type: HostBinding,
args: ["class.cds--layout--size-md"]
}], largeLayoutSize: [{
type: HostBinding,
args: ["class.cds--layout--size-lg"]
}], extraLargeLayoutSize: [{
type: HostBinding,
args: ["class.cds--layout--size-xl"]
}], twoExtraLargeLayoutSize: [{
type: HostBinding,
args: ["class.cds--layout--size-2xl"]
}] } });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmRpcmVjdGl2ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9idXR0b24vYnV0dG9uLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ04sU0FBUyxFQUNULFdBQVcsRUFDWCxLQUFLLEVBQ0wsTUFBTSxlQUFlLENBQUM7O0FBR3ZCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUlILE1BQU0sT0FBTyxNQUFNO0lBSG5CO1FBVUM7Ozs7V0FJRztRQUNNLGNBQVMsR0FBb0IsU0FBUyxDQUFDO1FBS2hEOztXQUVHO1FBQzBDLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFDOUQ7Ozs7V0FJRztRQUNnRCxhQUFRLEdBQUcsS0FBSyxDQUFDO1FBRXBFOztXQUVHO1FBQ2lELGlCQUFZLEdBQUcsS0FBSyxDQUFDO1FBRXpFLDBGQUEwRjtRQUMzRCxjQUFTLEdBQUcsSUFBSSxDQUFDO0tBMkRoRDtJQTVGQTs7T0FFRztJQUNILElBQWEsU0FBUyxDQUFDLElBQWdCO1FBQ3RDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUE2QkQsSUFBNEMsYUFBYTtRQUN4RCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssU0FBUyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUN4RCxDQUFDO0lBQ0QsSUFBOEMsZUFBZTtRQUM1RCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssV0FBVyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUE2QyxjQUFjO1FBQzFELE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxVQUFVLENBQUM7SUFDdEMsQ0FBQztJQUNELElBQTBDLFdBQVc7UUFDcEQsT0FBTyxJQUFJLENBQUMsU0FBUyxLQUFLLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBQ0QsSUFBMkMsWUFBWTtRQUN0RCxPQUFPLElBQUksQ0FBQyxTQUFTLEtBQUssUUFBUSxJQUFJLElBQUksQ0FB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QkFBOUQsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBR00sZUFBZTtzQkFBN0QsV0FBVzt1QkFBQyw0QkFBNEI7Z0JBR00sb0JBQW9CO3NCQUFsRSxXQUFXO3VCQUFDLDRCQUE0QjtnQkFHTyx1QkFBdUI7c0JBQXRFLFdBQVc7dUJBQUMsNkJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcblx0RGlyZWN0aXZlLFxuXHRIb3N0QmluZGluZyxcblx0SW5wdXRcbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcbmltcG9ydCB7IEJ1dHRvblNpemUsIEJ1dHRvblR5cGUgfSBmcm9tIFwiLi9idXR0b24udHlwZXNcIjtcblxuLyoqXG4gKiBBIGNvbnZlbmllbmNlIGRpcmVjdGl2ZSBmb3IgYXBwbHlpbmcgc3R5bGluZyB0byBhIGJ1dHRvbi4gR2V0IHN0YXJ0ZWQgd2l0aCBpbXBvcnRpbmcgdGhlIG1vZHVsZTpcbiAqXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBCdXR0b25Nb2R1bGUgfSBmcm9tICdjYXJib24tY29tcG9uZW50cy1hbmd1bGFyJztcbiAqIGBgYFxuICpcbiAqIEV4YW1wbGU6XG4gKlxuICogYGBgaHRtbFxuICogPGJ1dHRvbiBjZHNCdXR0b24+QSBidXR0b248L2J1dHRvbj5cbiAqIDxidXR0b24gY2RzQnV0dG9uPVwic2Vjb25kYXJ5XCI+QSBzZWNvbmRhcnkgYnV0dG9uPC9idXR0b24+XG4gKiBgYGBcbiAqXG4gKiBTZWUgdGhlIFt2YW5pbGxhIGNhcmJvbiBkb2NzXShodHRwOi8vd3d3LmNhcmJvbmRlc2lnbnN5c3RlbS5jb20vY29tcG9uZW50cy9idXR0b24vY29kZSkgZm9yIG1vcmUgZGV0YWlsLlxuICpcbiAqIFtTZWUgZGVtb10oLi4vLi4vP3BhdGg9L3N0b3J5L2NvbXBvbmVudHMtYnV0dG9uLS1iYXNpYylcbiAqL1xuQERpcmVjdGl2ZSh7XG5cdHNlbGVjdG9yOiBcIltjZHNCdXR0b25dLCBbaWJtQnV0dG9uXVwiXG59KVxuZXhwb3J0IGNsYXNzIEJ1dHRvbiB7XG5cdC8qKlxuXHQgKiBAZGVwcmVjYXRlZCBhcyBvZiB2NSAtIFVzZSBgY2RzQnV0dG9uYCBpbnB1dCBwcm9wZXJ0eSBpbnN0ZWFkXG5cdCAqL1xuXHRASW5wdXQoKSBzZXQgaWJtQnV0dG9uKHR5cGU6IEJ1dHRvblR5cGUpIHtcblx0XHR0aGlzLmNkc0J1dHRvbiA9IHR5cGU7XG5cdH1cblx0LyoqXG5cdCAqIFNldHMgdGhlIGJ1dHRvbiB0eXBlXG5cdCAqIEFjY2VwdHMgYEJ1dHRvblR5cGVgIG9yIG5vdGhpbmcgKGVtcHR5IHN0cmluZyB3aGljaCBpcyBlcXVpdmFsZW50IHRvIFwicHJpbWFyeVwiKVxuXHQgKiBFbXB0eSBzdHJpbmcgaGFzIGJlZW4gYWRkZWQgYXMgYW4gb3B0aW9uIGZvciBBbmd1bGFyIDE2KyB0byByZXNvbHZlIHR5cGUgZXJyb3JzXG5cdCAqL1xuXHRASW5wdXQoKSBjZHNCdXR0b246IEJ1dHRvblR5cGUgfCBcIlwiID0gXCJwcmltYXJ5XCI7XG5cdC8qKlxuXHQgKiBTcGVjaWZ5IHRoZSBzaXplIG9mIHRoZSBidXR0b25cblx0ICovXG5cdEBJbnB1dCgpIHNpemU6IEJ1dHRvblNpemU7XG5cdC8qKlxuXHQgKiBTZXQgdG8gYHRydWVgIGZvciBhIHNrZWxldG9uIHN0YXRlIGJ1dHRvblxuXHQgKi9cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1za2VsZXRvblwiKSBASW5wdXQoKSBza2VsZXRvbiA9IGZhbHNlO1xuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBpZiB0aGUgYnV0dG9uIGNvbnRhaW5zIG9ubHkgYW4gaWNvblxuXHQgKiBUaGlzIHNob3VsZCBvbmx5IGJlIHVzZWQgZm9yIGNyZWF0aW5nIGN1c3RvbSBpY29uIGJ1dHRvbnMsIG90aGVyd2lzZSB1c2Vcblx0ICogYDxjZHMtaWNvbi1idXR0b24+PC9jZHMtaWNvbi1idXR0b24+YCBjb21wb25lbnRcblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tYnRuLS1pY29uLW9ubHlcIikgQElucHV0KCkgaWNvbk9ubHkgPSBmYWxzZTtcblxuXHQvKipcblx0ICogU2V0IHRvIGB0cnVlYCBmb3IgYSBcImV4cHJlc3NpdmVcIiBzdHlsZSBidXR0b25cblx0ICovXG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tYnRuLS1leHByZXNzaXZlXCIpIEBJbnB1dCgpIGlzRXhwcmVzc2l2ZSA9IGZhbHNlO1xuXG5cdC8vIGEgd2hvbGUgbG90IG9mIEhvc3RCaW5kaW5ncyAuLi4gdGhpcyB3YXkgd2UgZG9uJ3QgaGF2ZSB0byB0b3VjaCB0aGUgZWxlbWVudFJlZiBkaXJlY3RseVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWJ0blwiKSBiYXNlQ2xhc3MgPSB0cnVlO1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWJ0bi0tcHJpbWFyeVwiKSBnZXQgcHJpbWFyeUJ1dHRvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5jZHNCdXR0b24gPT09IFwicHJpbWFyeVwiIHx8ICF0aGlzLmNkc0J1dHRvbjtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWJ0bi0tc2Vjb25kYXJ5XCIpIGdldCBzZWNvbmRhcnlCdXR0b24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuY2RzQnV0dG9uID09PSBcInNlY29uZGFyeVwiO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tYnRuLS10ZXJ0aWFyeVwiKSBnZXQgdGVydGlhcnlCdXR0b24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuY2RzQnV0dG9uID09PSBcInRlcnRpYXJ5XCI7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1idG4tLWdob3N0XCIpIGdldCBnaG9zdEJ1dHRvbigpIHtcblx0XHRyZXR1cm4gdGhpcy5jZHNCdXR0b24gPT09IFwiZ2hvc3RcIjtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWJ0bi0tZGFuZ2VyXCIpIGdldCBkYW5nZXJCdXR0b24oKSB7XG5cdFx0cmV0dXJuIHRoaXMuY2RzQnV0dG9uID09PSBcImRhbmdlclwiIHx8IHRoaXMuY2RzQnV0dG9uID09PSBcImRhbmdlci0tcHJpbWFyeVwiO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tYnRuLS1kYW5nZXItLXRlcnRpYXJ5XCIpIGdldCBkYW5nZXJUZXJ0aWFyeSgpIHtcblx0XHRyZXR1cm4gdGhpcy5jZHNCdXR0b24gPT09IFwiZGFuZ2VyLS10ZXJ0aWFyeVwiO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tYnRuLS1kYW5nZXItLWdob3N0XCIpIGdldCBkYW5nZXJHaG9zdCgpIHtcblx0XHRyZXR1cm4gdGhpcy5jZHNCdXR0b24gPT09IFwiZGFuZ2VyLS1naG9zdFwiO1xuXHR9XG5cdC8qKlxuXHQgKiBAdG9kbyByZW1vdmUgYGNkcy0tYnRuLS0ke3NpemV9YCBjbGFzc2VzIGluIHYxMlxuXHQgKi9cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1idG4tLXNtXCIpIGdldCBzbWFsbFNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZSA9PT0gXCJzbVwiICYmICF0aGlzLmlzRXhwcmVzc2l2ZTtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWJ0bi0tbWRcIikgZ2V0IG1lZGl1bVNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZSA9PT0gXCJtZFwiICYmICF0aGlzLmlzRXhwcmVzc2l2ZTtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWJ0bi0tbGdcIikgZ2V0IGxhcmdlU2l6ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5zaXplID09PSBcImxnXCI7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1idG4tLXhsXCIpIGdldCBleHRyYUxhcmdlU2l6ZSgpIHtcblx0XHRyZXR1cm4gdGhpcy5zaXplID09PSBcInhsXCI7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1idG4tLTJ4bFwiKSBnZXQgdHdvRXh0cmFMYXJnZVNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZSA9PT0gXCIyeGxcIjtcblx0fVxuXG5cdC8vIFNpemUgY2xhc3Nlc1xuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWxheW91dC0tc2l6ZS1zbVwiKSBnZXQgc21hbGxMYXlvdXRTaXplKCkge1xuXHRcdHJldHVybiB0aGlzLnNpemUgPT09IFwic21cIiAmJiAhdGhpcy5pc0V4cHJlc3NpdmU7XG5cdH1cblx0QEhvc3RCaW5kaW5nKFwiY2xhc3MuY2RzLS1sYXlvdXQtLXNpemUtbWRcIikgZ2V0IG1lZGl1bUxheW91dFNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZSA9PT0gXCJtZFwiICYmICF0aGlzLmlzRXhwcmVzc2l2ZTtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWxheW91dC0tc2l6ZS1sZ1wiKSBnZXQgbGFyZ2VMYXlvdXRTaXplKCkge1xuXHRcdHJldHVybiB0aGlzLnNpemUgPT09IFwibGdcIjtcblx0fVxuXHRASG9zdEJpbmRpbmcoXCJjbGFzcy5jZHMtLWxheW91dC0tc2l6ZS14bFwiKSBnZXQgZXh0cmFMYXJnZUxheW91dFNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZSA9PT0gXCJ4bFwiO1xuXHR9XG5cdEBIb3N0QmluZGluZyhcImNsYXNzLmNkcy0tbGF5b3V0LS1zaXplLTJ4bFwiKSBnZXQgdHdvRXh0cmFMYXJnZUxheW91dFNpemUoKSB7XG5cdFx0cmV0dXJuIHRoaXMuc2l6ZSA9PT0gXCIyeGxcIjtcblx0fVxuXG5cbn1cbiJdfQ==