UNPKG

carbon-components-angular

Version:
191 lines 17.1 kB
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==