@cute-widgets/base 20.0.2 → 20.0.4
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/CHANGELOG.md +35 -1
- package/abstract/index.d.ts +5 -2
- package/button/index.d.ts +7 -6
- package/card/index.d.ts +9 -6
- package/core/directives/index.d.ts +2 -32
- package/core/index.d.ts +35 -28
- package/core/interfaces/index.d.ts +1 -1
- package/core/layout/index.d.ts +34 -27
- package/core/nav/index.d.ts +1 -2
- package/expansion/index.d.ts +5 -18
- package/fesm2022/cute-widgets-base-abstract.mjs +20 -5
- package/fesm2022/cute-widgets-base-abstract.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-button-toggle.mjs +2 -2
- package/fesm2022/cute-widgets-base-button-toggle.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-button.mjs +12 -11
- package/fesm2022/cute-widgets-base-button.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-card.mjs +46 -29
- package/fesm2022/cute-widgets-base-card.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-chips.mjs +6 -6
- package/fesm2022/cute-widgets-base-chips.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-directives.mjs +5 -73
- package/fesm2022/cute-widgets-base-core-directives.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-interfaces.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-layout.mjs +64 -40
- package/fesm2022/cute-widgets-base-core-layout.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core-nav.mjs +1 -2
- package/fesm2022/cute-widgets-base-core-nav.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-core.mjs +64 -40
- package/fesm2022/cute-widgets-base-core.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-dialog.mjs +1 -1
- package/fesm2022/cute-widgets-base-dialog.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-expansion.mjs +19 -13
- package/fesm2022/cute-widgets-base-expansion.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-list.mjs +2 -2
- package/fesm2022/cute-widgets-base-list.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-navbar.mjs +6 -0
- package/fesm2022/cute-widgets-base-navbar.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-paginator.mjs +12 -10
- package/fesm2022/cute-widgets-base-paginator.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-radio.mjs +1 -2
- package/fesm2022/cute-widgets-base-radio.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-select.mjs +2 -2
- package/fesm2022/cute-widgets-base-select.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-sidenav.mjs +31 -30
- package/fesm2022/cute-widgets-base-sidenav.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-snack-bar.mjs +2 -2
- package/fesm2022/cute-widgets-base-snack-bar.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-sort.mjs +63 -260
- package/fesm2022/cute-widgets-base-sort.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-table.mjs +22 -16
- package/fesm2022/cute-widgets-base-table.mjs.map +1 -1
- package/fesm2022/cute-widgets-base-tree.mjs +11 -2
- package/fesm2022/cute-widgets-base-tree.mjs.map +1 -1
- package/fesm2022/cute-widgets-base.mjs +3 -1
- package/fesm2022/cute-widgets-base.mjs.map +1 -1
- package/navbar/index.d.ts +6 -0
- package/package.json +18 -17
- package/paginator/index.d.ts +5 -16
- package/radio/index.d.ts +0 -1
- package/sidenav/index.d.ts +1 -2
- package/sort/index.d.ts +25 -138
- package/table/index.d.ts +24 -21
- package/tree/index.d.ts +5 -0
|
@@ -29,7 +29,7 @@ const CUTE_BUTTON_CONFIG = new InjectionToken('CUTE_BUTTON_CONFIG');
|
|
|
29
29
|
*/
|
|
30
30
|
const CUTE_BUTTON_BASE = new InjectionToken('CuteButtonBase');
|
|
31
31
|
class CuteButtonBase extends CuteFocusableControl {
|
|
32
|
-
/** Button's appearance style in the following format: `{style}-button
|
|
32
|
+
/** Button's appearance style in the following format: `{style}-button`. */
|
|
33
33
|
get inputButtonStyle() { return this._inputButtonStyle; }
|
|
34
34
|
set inputButtonStyle(value) {
|
|
35
35
|
this._inputButtonStyle = value || "base-button";
|
|
@@ -60,7 +60,7 @@ class CuteButtonBase extends CuteFocusableControl {
|
|
|
60
60
|
this._buttonStyle = this._inputButtonStyle;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
/** Whether to disable the ripple effect on button clicking */
|
|
63
|
+
/** Whether to disable the ripple effect on button clicking. */
|
|
64
64
|
get disableRipple() { return this._ripple.disabled; }
|
|
65
65
|
set disableRipple(value) { this._ripple.disabled = value; }
|
|
66
66
|
/**
|
|
@@ -123,8 +123,8 @@ class CuteButtonBase extends CuteFocusableControl {
|
|
|
123
123
|
this._isAnchor = false;
|
|
124
124
|
this._inputButtonStyle = "base-button";
|
|
125
125
|
this._buttonStyle = "base";
|
|
126
|
-
/** Whether to
|
|
127
|
-
this.
|
|
126
|
+
/** Whether to enable label wrapping. */
|
|
127
|
+
this.wrapLabel = false;
|
|
128
128
|
/** Whether to show the collapse/expand indicator based on the `aria-expanded` current value. */
|
|
129
129
|
this.withAriaExpandedIndicator = false;
|
|
130
130
|
const config = inject(CUTE_BUTTON_CONFIG, { optional: true });
|
|
@@ -238,13 +238,14 @@ class CuteButtonBase extends CuteFocusableControl {
|
|
|
238
238
|
}
|
|
239
239
|
}
|
|
240
240
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButtonBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
241
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteButtonBase, isStandalone: true, inputs: { inputButtonStyle: ["cuteButton", "inputButtonStyle"], magnitude: "magnitude",
|
|
241
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "16.1.0", version: "20.3.15", type: CuteButtonBase, isStandalone: true, inputs: { inputButtonStyle: ["cuteButton", "inputButtonStyle"], magnitude: "magnitude", wrapLabel: ["wrapLabel", "wrapLabel", booleanAttribute], disableRipple: "disableRipple", ariaDisabled: ["aria-disabled", "ariaDisabled", booleanAttribute], withAriaExpandedIndicator: ["withAriaExpandedIndicator", "withAriaExpandedIndicator", booleanAttribute], disabledInteractive: ["disabledInteractive", "disabledInteractive", booleanAttribute], visuallyHiddenLabel: "visuallyHiddenLabel" }, host: { listeners: { "keydown": "_haltDisabledEvents($event)" }, properties: { "attr.magnitude": "magnitude", "style.--bs-focus-ring-color": "color? \"rgba(var(\"+bsColorVarName+\"), var(--bs-focus-ring-opacity))\" : \"var(--bs-border-color-translucent)\"", "class": "this.classNames", "style.--bs-btn-close-focus-shadow": "this._closeButtonShadowColor", "class.cute-btn-xxl": "this.buttonLargestBinding", "class.cute-btn-xl": "this.buttonLargerBinding", "class.btn-lg": "this.buttonLargeBinding", "class.btn-sm": "this.buttonSmallBinding", "class.cute-btn-xs": "this.buttonSmallerBinding", "class.cute-btn-xxs": "this.buttonSmallestBinding", "style.--cute-icon-button-color-rgb": "this.iconButtonColorBinding", "style.--cute-base-button-color-rgb": "this.baseButtonColorBinding" }, classAttribute: "btn" }, queries: [{ propertyName: "_icons", predicate: CuteIcon }], usesInheritance: true, ngImport: i0 }); }
|
|
242
242
|
}
|
|
243
243
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButtonBase, decorators: [{
|
|
244
244
|
type: Directive,
|
|
245
245
|
args: [{
|
|
246
246
|
host: {
|
|
247
247
|
class: 'btn',
|
|
248
|
+
'[attr.magnitude]': 'magnitude',
|
|
248
249
|
'[style.--bs-focus-ring-color]': 'color? "rgba(var("+bsColorVarName+"), var(--bs-focus-ring-opacity))" : "var(--bs-border-color-translucent)"',
|
|
249
250
|
'(keydown)': '_haltDisabledEvents($event)',
|
|
250
251
|
}
|
|
@@ -257,8 +258,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
257
258
|
args: ["cuteButton"]
|
|
258
259
|
}], magnitude: [{
|
|
259
260
|
type: Input
|
|
260
|
-
}],
|
|
261
|
-
type: Input
|
|
261
|
+
}], wrapLabel: [{
|
|
262
|
+
type: Input,
|
|
263
|
+
args: [{ transform: booleanAttribute }]
|
|
262
264
|
}], disableRipple: [{
|
|
263
265
|
type: Input
|
|
264
266
|
}], ariaDisabled: [{
|
|
@@ -321,9 +323,9 @@ class CuteButton extends CuteButtonBase {
|
|
|
321
323
|
this.toThemeColor = toThemeColor;
|
|
322
324
|
}
|
|
323
325
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButton, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
324
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteButton, isStandalone: true, selector: "button[cuteButton],\n button[cute-button],\n a[cuteButton],\n a[cute-button],\n ", host: { properties: { "class.cute-anchor": "_isAnchor", "class.btn-close": "buttonStyle == \"close\"", "class.rounded-pill": "buttonStyle==\"pill\"", "class.rounded-circle": "buttonStyle==\"circle\"", "class.raised": "buttonStyle==\"raised\" && !disabled", "class.icon-link": "toThemeColor(color)==\"link\"", "class.cute-button-expandable": "withAriaExpandedIndicator", "class.
|
|
326
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.15", type: CuteButton, isStandalone: true, selector: "button[cuteButton],\n button[cute-button],\n a[cuteButton],\n a[cute-button],\n ", host: { properties: { "class.cute-anchor": "_isAnchor", "class.btn-close": "buttonStyle == \"close\"", "class.rounded-pill": "buttonStyle==\"pill\"", "class.rounded-circle": "buttonStyle==\"circle\"", "class.raised": "buttonStyle==\"raised\" && !disabled", "class.icon-link": "toThemeColor(color)==\"link\"", "class.cute-button-expandable": "withAriaExpandedIndicator", "class.disabled": "(_isAnchor || buttonStyle==\"icon\" || disabledInteractive) && disabled", "class.cute-button-disabled-interactive": "disabledInteractive", "class.cute-unthemed": "!color", "attr.tabindex": "_getTabIndex()", "attr.disabled": "_getDisabledAttribute()", "attr.aria-disabled": "_getAriaDisabled()", "attr.id": "id || null", "attr.aria-label": "ariaLabel || null" }, classAttribute: "cute-button" }, providers: [
|
|
325
327
|
{ provide: CUTE_BUTTON_BASE, useExisting: CuteButton }
|
|
326
|
-
], exportAs: ["cuteButton"], usesInheritance: true, ngImport: i0, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;box-shadow:none}.cute-button:has(>:not(.cute-ripple):nth-child(2)),.cute-anchor:has(>:not(.cute-ripple):nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label,.cute-anchor .cute-button-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
328
|
+
], exportAs: ["cuteButton"], usesInheritance: true, ngImport: i0, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__wrap]=\"wrapLabel\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;box-shadow:none}.cute-button:has(>:nth-child(2)),.cute-anchor:has(>:nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label:not(.cute-button-label__wrap),.cute-anchor .cute-button-label:not(.cute-button-label__wrap){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
327
329
|
}
|
|
328
330
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteButton, decorators: [{
|
|
329
331
|
type: Component,
|
|
@@ -341,7 +343,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
341
343
|
'[class.icon-link]': 'toThemeColor(color)=="link"',
|
|
342
344
|
'[class.cute-button-expandable]': 'withAriaExpandedIndicator',
|
|
343
345
|
//'[class.focus-ring]': 'buttonStyle=="base" && hasClass("cdk-keyboard-focused")', // See: CuteButtonBase.ngDoCheck()
|
|
344
|
-
'[class.nowrap]': 'nowrap',
|
|
345
346
|
'[class.disabled]': '(_isAnchor || buttonStyle=="icon" || disabledInteractive) && disabled',
|
|
346
347
|
'[class.cute-button-disabled-interactive]': 'disabledInteractive',
|
|
347
348
|
'[class.cute-unthemed]': '!color',
|
|
@@ -352,7 +353,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
352
353
|
'[attr.aria-label]': 'ariaLabel || null',
|
|
353
354
|
}, providers: [
|
|
354
355
|
{ provide: CUTE_BUTTON_BASE, useExisting: CuteButton }
|
|
355
|
-
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;box-shadow:none}.cute-button:has(>:not(.cute-ripple):nth-child(2)),.cute-anchor:has(>:not(.cute-ripple):nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label,.cute-anchor .cute-button-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n"] }]
|
|
356
|
+
], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__wrap]=\"wrapLabel\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n", styles: [".cute-ripple-element{--cute-ripple-duration: .5s;--cute-ripple-bg-color: rgba(255, 255, 255, .18);position:absolute;border-radius:50%;pointer-events:none;transform:scale3d(0,0,0);animation:cute-ripple-element-animation var(--cute-ripple-duration) cubic-bezier(.65,.05,.36,1);background-color:var(--cute-ripple-bg-color);will-change:transform,opacity}@media (forced-colors: active){.cute-ripple-element{display:none}}@keyframes cute-ripple-element-animation{to{transform:scale(8);opacity:0}}.cute-button,.cute-anchor{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;overflow:visible;box-shadow:none}.cute-button:has(>:nth-child(2)),.cute-anchor:has(>:nth-child(2)){gap:.5em}.cute-button.dropdown-toggle,.cute-anchor.dropdown-toggle{gap:.375em}.cute-button.dropdown-toggle-split,.cute-anchor.dropdown-toggle-split{gap:0}.cute-button .cute-icon-wrapper,.cute-anchor .cute-icon-wrapper{display:contents}.cute-button .cute-icon-wrapper:empty,.cute-anchor .cute-icon-wrapper:empty{display:none}.cute-button .cute-button-label:not(.cute-button-label__wrap),.cute-anchor .cute-button-label:not(.cute-button-label__wrap){min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cute-button .cute-button-label .badge,.cute-anchor .cute-button-label .badge{line-height:var(--bs-btn-line-height);top:0}.cute-button .cute-button-label:empty,.cute-anchor .cute-button-label:empty{display:none}.cute-button.cute-button-disabled-interactive,.cute-anchor.cute-button-disabled-interactive{cursor:pointer}.cute-button.cute-button-disabled-interactive:disabled,.cute-button.cute-button-disabled-interactive.disabled,.cute-anchor.cute-button-disabled-interactive:disabled,.cute-anchor.cute-button-disabled-interactive.disabled{pointer-events:auto;cursor:default;box-shadow:none;--bs-btn-active-bg: var(--bs-btn-disabled-bg);--bs-btn-active-border-color: var(--bs-btn-disabled-border-color);--bs-btn-active-color: var(--bs-btn-disabled-color)}.cute-button.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-button.cute-button-disabled-interactive.disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive:disabled.cute-icon-button,.cute-anchor.cute-button-disabled-interactive.disabled.cute-icon-button{--bs-btn-active-bg: transparent;--bs-btn-active-border-color: transparent;--bs-btn-hover-bg: transparent}.cute-button.cute-base-button,.cute-anchor.cute-base-button{font-weight:500;--cute-base-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-base-button-color-rgb), .08);--bs-btn-active-border-color: rgba(var(--cute-base-button-color-rgb), .12);--bs-btn-disabled-border-color: transparent;--bs-btn-hover-bg: rgba(var(--cute-base-button-color-rgb), .06)}.cute-button.cute-flat-button.cute-unthemed,.cute-anchor.cute-flat-button.cute-unthemed{--bs-btn-bg: var(--bs-tertiary-bg);--bs-btn-hover-bg: var(--bs-secondary-bg);--bs-btn-active-bg: var(--bs-secondary-bg);border-color:transparent}.cute-button.raised,.cute-anchor.raised{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f;transition:box-shadow .2s cubic-bezier(.4,0,.2,1)}.cute-button.raised:hover,.cute-button.raised:focus,.cute-anchor.raised:hover,.cute-anchor.raised:focus{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.cute-button.raised:active,.cute-anchor.raised:active{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.raised:disabled,.cute-button.raised.disabled,.cute-anchor.raised:disabled,.cute-anchor.raised.disabled{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.cute-button.btn-light:disabled,.cute-button.btn-light.disabled,.cute-anchor.btn-light:disabled,.cute-anchor.btn-light.disabled{background-color:#0000001a}.cute-button>[role=img],.cute-button i[class],.cute-anchor>[role=img],.cute-anchor i[class]{align-self:center;pointer-events:none;overflow:visible}.cute-button.cute-fab-button,.cute-anchor.cute-fab-button{--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;padding:0;padding-top:revert;gap:0;border-radius:50%;flex-shrink:0;-webkit-tap-highlight-color:rgba(0,0,0,0);box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.cute-button.cute-fab-button[magnitude=largest],.cute-anchor.cute-fab-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-fab-button[magnitude=larger],.cute-anchor.cute-fab-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-fab-button[magnitude=large],.cute-anchor.cute-fab-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-fab-button[magnitude=middle],.cute-anchor.cute-fab-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-fab-button[magnitude=small],.cute-anchor.cute-fab-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-fab-button[magnitude=smaller],.cute-anchor.cute-fab-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-fab-button[magnitude=smallest],.cute-anchor.cute-fab-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-fab-button svg,.cute-anchor.cute-fab-button svg{vertical-align:baseline}.cute-button.cute-fab-button:active,.cute-anchor.cute-fab-button:active{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.cute-button.cute-fab-button:active.btn-light,.cute-anchor.cute-fab-button:active.btn-light{border-color:#00000040}.cute-button.cute-fab-button:hover,.cute-button.cute-fab-button.cdk-focused,.cute-anchor.cute-fab-button:hover,.cute-anchor.cute-fab-button.cdk-focused{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.cute-button.cute-fab-button:disabled,.cute-button.cute-fab-button.disabled,.cute-anchor.cute-fab-button:disabled,.cute-anchor.cute-fab-button.disabled{border:0;box-shadow:none}.cute-button.cute-fab-button:disabled>[role=img],.cute-button.cute-fab-button:disabled i[class],.cute-button.cute-fab-button.disabled>[role=img],.cute-button.cute-fab-button.disabled i[class],.cute-anchor.cute-fab-button:disabled>[role=img],.cute-anchor.cute-fab-button:disabled i[class],.cute-anchor.cute-fab-button.disabled>[role=img],.cute-anchor.cute-fab-button.disabled i[class]{color:#00000061!important}.cute-button.cute-icon-button,.cute-anchor.cute-icon-button{overflow:hidden;border-radius:50%;border:0;padding:0;gap:0!important;--icon-size: 40px;width:var(--icon-size);height:var(--icon-size);min-width:var(--icon-size);line-height:1;--cute-icon-button-color-rgb: var(--bs-body-color-rgb);--bs-btn-active-bg: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-active-border-color: rgba(var(--cute-icon-button-color-rgb), .12);--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .06)}.cute-button.cute-icon-button[magnitude=largest],.cute-anchor.cute-icon-button[magnitude=largest]{--icon-size: 64px}.cute-button.cute-icon-button[magnitude=larger],.cute-anchor.cute-icon-button[magnitude=larger]{--icon-size: 56px}.cute-button.cute-icon-button[magnitude=large],.cute-anchor.cute-icon-button[magnitude=large]{--icon-size: 48px}.cute-button.cute-icon-button[magnitude=middle],.cute-anchor.cute-icon-button[magnitude=middle]{--icon-size: 40px}.cute-button.cute-icon-button[magnitude=small],.cute-anchor.cute-icon-button[magnitude=small]{--icon-size: 32px}.cute-button.cute-icon-button[magnitude=smaller],.cute-anchor.cute-icon-button[magnitude=smaller]{--icon-size: 24px}.cute-button.cute-icon-button[magnitude=smallest],.cute-anchor.cute-icon-button[magnitude=smallest]{--icon-size: 16px}.cute-button.cute-icon-button svg,.cute-anchor.cute-icon-button svg{vertical-align:baseline}.cute-button.cute-icon-button.cdk-focused,.cute-anchor.cute-icon-button.cdk-focused{--bs-btn-hover-bg: rgba(var(--cute-icon-button-color-rgb), .04)}.cute-btn-xxs,.cute-btn-group-xxs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .5rem}.cute-btn-xs,.cute-btn-group-xs>.btn{--bs-btn-padding-y: .25rem;--bs-btn-padding-x: .5rem;--bs-btn-font-size: .75rem}.cute-btn-xl,.cute-btn-group-xl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 1.5rem}.cute-btn-xxl,.cute-btn-group-xxl>.btn{--bs-btn-padding-y: .5rem;--bs-btn-padding-x: 1rem;--bs-btn-font-size: 2.5rem}[dir=rtl] .btn-group>.btn:not(:first-child):not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:not(:first-child)>.btn{border-radius:0}[dir=rtl] .btn-group>.btn:nth-child(n+3),[dir=rtl] .btn-group>:not(.btn-check)+.btn,[dir=rtl] .btn-group>.btn-group:not(:last-child)>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:first-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:first-child,[dir=rtl] .btn-group>.btn-group:first-child>.btn{border-radius:0 var(--bs-btn-border-radius) var(--bs-btn-border-radius) 0}[dir=rtl] .btn-group>.btn:last-child:not(.dropdown-toggle),[dir=rtl] .btn-group>.btn.dropdown-toggle-split:last-child,[dir=rtl] .btn-group>.btn-group:last-child>.btn{border-radius:var(--bs-btn-border-radius) 0 0 var(--bs-btn-border-radius)}.cute-button-expandable{padding:.25rem .5rem;font-weight:600;color:var(--bs-emphasis-color);background-color:transparent}.cute-button-expandable:hover,.cute-button-expandable:focus{color:rgba(var(--bs-emphasis-color-rgb),.85);background-color:var(--bs-tertiary-bg)}.cute-button-expandable:before{width:1.25em;line-height:0;content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%280,0,0,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\");transition:transform .35s ease;transform-origin:.5em 50%;transform:scale(.85)}[data-bs-theme=dark] .cute-button-expandable:before{content:url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='rgba%28255,255,255,.5%29' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M5 14l6-6-6-6'/%3e%3c/svg%3e\")}[dir=rtl] .cute-button-expandable:before{transform:rotate(180deg) scale(.85);margin-left:.25em;text-align:end}.cute-button-expandable[aria-expanded=true]{color:rgba(var(--bs-emphasis-color-rgb),.85)}.cute-button-expandable[aria-expanded=true]:before{transform:rotate(90deg) scale(.85)}\n"] }]
|
|
356
357
|
}], ctorParameters: () => [] });
|
|
357
358
|
|
|
358
359
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cute-widgets-base-button.mjs","sources":["../../../../projects/cute-widgets/base/button/src/button-base.directive.ts","../../../../projects/cute-widgets/base/button/src/button.component.ts","../../../../projects/cute-widgets/base/button/src/button.component.html","../../../../projects/cute-widgets/base/button/src/button-group.directive.ts","../../../../projects/cute-widgets/base/button/src/button-toolbar.directive.ts","../../../../projects/cute-widgets/base/button/src/button.module.ts","../../../../projects/cute-widgets/base/button/cute-widgets-base-button.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n inject,\r\n Input,\r\n NgZone,\r\n HostBinding,\r\n InjectionToken,\r\n ContentChildren,\r\n QueryList,\r\n booleanAttribute, DoCheck,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {CuteIcon} from \"@cute-widgets/base/icon\";\r\nimport {RelativeSize7, ThemeColor} from \"@cute-widgets/base/core\";\r\nimport {Ripple, RippleManager, RippleOptions} from \"@cute-widgets/base/core/ripple\";\r\nimport {fromEvent, Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {toColorCssClass, toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/** Button's appearance style */\r\nexport type CuteButtonStyle =\r\n \"base-button\"\r\n |\"flat-button\"\r\n |\"outline-button\"\r\n |\"raised-button\"\r\n |\"pill-button\"\r\n |\"circle-button\"\r\n |\"close-button\"\r\n |\"icon-button\"\r\n |\"fab-button\"\r\n /** Appearance styles for Angular Material compatibility */\r\n |\"text\"\r\n |\"filled\"\r\n |\"elevated\"\r\n |\"outlined\"\r\n |\"tonal\";\r\n\r\n\r\n/** Object that can be used to configure the default options for the button component. */\r\nexport interface CuteButtonConfig {\r\n /** Whether disabled buttons should be interactive. */\r\n disabledInteractive?: boolean;\r\n\r\n /** Default palette color to apply to buttons. */\r\n color?: ThemeColor;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options the button component. */\r\nexport const CUTE_BUTTON_CONFIG = new InjectionToken<CuteButtonConfig>('CUTE_BUTTON_CONFIG');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteButtonBase`.\r\n * It serves as an alternative token to the actual `CuteButtonBase` class, which\r\n * could cause unnecessary retention of the class and its component metadata.\r\n */\r\nexport const CUTE_BUTTON_BASE = new InjectionToken<CuteButtonBase>(\r\n 'CuteButtonBase'\r\n);\r\n\r\n\r\n@Directive({\r\n host: {\r\n class: 'btn',\r\n '[style.--bs-focus-ring-color]': 'color? \"rgba(var(\"+bsColorVarName+\"), var(--bs-focus-ring-opacity))\" : \"var(--bs-border-color-translucent)\"',\r\n '(keydown)': '_haltDisabledEvents($event)',\r\n }\r\n})\r\nexport abstract class CuteButtonBase extends CuteFocusableControl implements DoCheck {\r\n\r\n private _cleanupClick: (() => void) | undefined;\r\n private _destroyed$ = new Subject<void>()\r\n\r\n protected readonly _ripple: Ripple;\r\n protected readonly _ngZone: NgZone = inject(NgZone);\r\n protected readonly _isAnchor: boolean = false;\r\n\r\n @ContentChildren(CuteIcon) private _icons: QueryList<CuteIcon> | undefined;\r\n\r\n /** Button's appearance style in the following format: `{style}-button` */\r\n @Input(\"cuteButton\") //, transform: (v: any): ButtonStyle=>{return !v ? \"base-button\" : v}})\r\n get inputButtonStyle(): CuteButtonStyle {return this._inputButtonStyle;}\r\n set inputButtonStyle(value: CuteButtonStyle | undefined | \"\") {\r\n this._inputButtonStyle = value || \"base-button\";\r\n\r\n // Transform Angular Material's style\r\n switch (this._inputButtonStyle) {\r\n case \"text\": this._inputButtonStyle = \"base-button\"; break;\r\n case \"elevated\": this._inputButtonStyle = \"raised-button\"; break;\r\n case \"outlined\": this._inputButtonStyle = \"outline-button\"; break;\r\n case \"filled\": this._inputButtonStyle = \"flat-button\"; break;\r\n case \"tonal\": this._inputButtonStyle = \"flat-button\"; break;\r\n }\r\n\r\n const dashPos = this._inputButtonStyle.lastIndexOf(\"-\");\r\n if (dashPos >= 0) {\r\n // Format: {style}-button\r\n this._buttonStyle = this._inputButtonStyle.substring(0, dashPos).trim().toLowerCase() || \"base\";\r\n } else {\r\n this._buttonStyle = this._inputButtonStyle;\r\n }\r\n }\r\n private _inputButtonStyle: CuteButtonStyle = \"base-button\";\r\n private _buttonStyle: string = \"base\";\r\n\r\n /** Relative size of the Button */\r\n @Input() magnitude: RelativeSize7 | undefined;\r\n\r\n /** Whether to disable text wrapping */\r\n @Input() nowrap: boolean = false;\r\n\r\n /** Whether to disable the ripple effect on button clicking */\r\n @Input()\r\n get disableRipple(): boolean {return this._ripple.disabled}\r\n set disableRipple(value: boolean) { this._ripple.disabled = value; }\r\n\r\n /** `aria-disabled` value of the button. */\r\n @Input({transform: booleanAttribute, alias: 'aria-disabled'})\r\n ariaDisabled: boolean | undefined;\r\n\r\n /** Whether to show the collapse/expand indicator based on the `aria-expanded` current value. */\r\n @Input({transform: booleanAttribute})\r\n withAriaExpandedIndicator: boolean = false;\r\n\r\n /**\r\n * Natively disabled buttons prevent focus and any pointer events from reaching the button.\r\n * In some scenarios, this might not be desirable, because it can prevent users from finding out\r\n * why the button is disabled (e.g., via tooltip).\r\n *\r\n * Enabling this input will change the button so that it is styled to be disabled and will be\r\n * marked as `aria-disabled`, but it will allow the button to receive events and focus.\r\n *\r\n * Note that by enabling this, you need to set the `tabindex` yourself if the button isn't\r\n * meant to be tabbable, and you have to prevent the button action (e.g., form submissions).\r\n */\r\n @Input({transform: booleanAttribute})\r\n get disabledInteractive(): boolean | undefined {return this._disabledInteractive;}\r\n set disabledInteractive(value: boolean | undefined) {this._disabledInteractive = value;}\r\n private _disabledInteractive: boolean | undefined;\r\n\r\n /** Label text that applied for visually hidden button */\r\n @Input()\r\n visuallyHiddenLabel: string | undefined;\r\n\r\n @HostBinding(\"class\")\r\n protected get classNames(): string {\r\n let classes = \"cute-\"+this._inputButtonStyle; // e.g. `cute-outline-button`\r\n if (this.color) {\r\n classes += [\"base\",\"close\",\"icon\"].indexOf(this.buttonStyle)==-1\r\n ? \" btn-\"+(this.buttonStyle==\"outline\" ? \"outline-\" : \"\") + toThemeColor(this.color)\r\n : this.buttonStyle==\"base\"\r\n ? (\" \" + (this.color==\"link\" ? \"btn-link\" : toColorCssClass(this.color)))\r\n : \"\";\r\n }\r\n return classes;\r\n }\r\n\r\n /** Focus shadow color for `close-button` */\r\n @HostBinding(\"style.--bs-btn-close-focus-shadow\")\r\n protected get _closeButtonShadowColor(): string {\r\n return (this.color && this.buttonStyle == \"close\") ? \"0 0 0 0.25rem rgba(var(--bs-\"+this.color+\"-rgb), 0.25)\" : \"\";\r\n }\r\n\r\n @HostBinding(\"class.cute-btn-xxl\")\r\n protected get buttonLargestBinding(): boolean {return this.magnitude == \"largest\"}\r\n @HostBinding(\"class.cute-btn-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.btn-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n @HostBinding(\"class.cute-btn-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.cute-btn-xxs\")\r\n protected get buttonSmallestBinding(): boolean {return this.magnitude == \"smallest\"}\r\n\r\n @HostBinding(\"style.--cute-icon-button-color-rgb\")\r\n protected get iconButtonColorBinding(): string {\r\n return this.buttonStyle==\"icon\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n @HostBinding(\"style.--cute-base-button-color-rgb\")\r\n protected get baseButtonColorBinding(): string {\r\n return this.buttonStyle==\"base\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n\r\n /** Returns button style name. */\r\n get buttonStyle(): string {\r\n return this._buttonStyle;\r\n }\r\n\r\n protected get bsColorVarName(): string {\r\n if (this.color) {\r\n if (this.color==\"link\") {\r\n return `--bs-${this.color}-color-rgb`;\r\n }\r\n return `--bs-${this.color}-rgb`;\r\n }\r\n return \"\";\r\n }\r\n\r\n protected constructor(...args: unknown[]);\r\n protected constructor() {\r\n super();\r\n const config = inject(CUTE_BUTTON_CONFIG, {optional: true});\r\n this.disabledInteractive = config?.disabledInteractive ?? false;\r\n this._ripple = RippleManager.getInstance(this._nativeElement);\r\n\r\n this._isAnchor = (this._nativeElement.tagName == \"A\");\r\n }\r\n\r\n protected override generateId(): string {\r\n return \"\"; // `cute-button-${++nextUniqueId}`;\r\n }\r\n\r\n protected _getTabIndex() {\r\n if (this._isAnchor) {\r\n return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;\r\n }\r\n return this.tabIndex;\r\n }\r\n\r\n private _setupAsAnchor() {\r\n this._cleanupClick = this._ngZone.runOutsideAngular(() =>\r\n this._renderer.listen(this._nativeElement, 'click', (event: Event) => {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }),\r\n );\r\n }\r\n\r\n protected override setDisabledState(newState: boolean): boolean {\r\n if (this._isAnchor) {\r\n if (newState) {\r\n this._savedTabIndex = this.tabIndex;\r\n this.tabIndex = -1;\r\n } else {\r\n this.tabIndex = this._savedTabIndex;\r\n }\r\n }\r\n return super.setDisabledState(newState);\r\n }\r\n private _savedTabIndex: number|undefined;\r\n\r\n protected _getAriaDisabled() {\r\n if (this.ariaDisabled != null) {\r\n return this.ariaDisabled;\r\n }\r\n if (this._isAnchor) {\r\n return this.disabled || null;\r\n }\r\n return this.disabled && this.disabledInteractive ? true : null;\r\n }\r\n\r\n protected _getDisabledAttribute() {\r\n //return this.disabledInteractive || !this.disabled ? null : true;\r\n return this.disabled ? true : null;\r\n }\r\n\r\n protected _haltDisabledEvents (event: Event): void {\r\n // A disabled button shouldn't apply any actions\r\n if (this.disabled && (this.disabledInteractive || this._isAnchor)) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n };\r\n\r\n /** Whether to apply a `focus-ring` css-class to the button when it focused via keyboard interaction */\r\n protected get displayFocusRing(): boolean {\r\n return this.buttonStyle == \"base\" && this.hasClass(\"cdk-keyboard-focused\");\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this._focusMonitor.monitor(this._elementRef, true);\r\n\r\n [\"mousedown\", \"mouseup\", \"click\"].forEach((type) => {\r\n fromEvent<MouseEvent>(this._nativeElement, type, { capture: true })\r\n .pipe(takeUntil(this._destroyed$))\r\n .subscribe((ev)=> this._onMouseEvent(ev));\r\n });\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this._icons && this.buttonStyle == \"icon\") {\r\n this._icons.forEach(icon => {icon.defaultColor = this.color;});\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n // Some internal tests depend on the timing of this,\r\n // otherwise we could bind it in the constructor.\r\n if (this._isAnchor) {\r\n this._setupAsAnchor();\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n // This line was added due to \"Expression Changed After Checked...\" error raised if we place it in the @HostBinding\r\n this.toggleClass(\"focus-ring\", this.displayFocusRing);\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._cleanupClick?.();\r\n this._ripple.stop();\r\n this._destroyed$.next();\r\n this._destroyed$.complete();\r\n }\r\n\r\n /** mouse events handler */\r\n private _onMouseEvent(event: MouseEvent) {\r\n\r\n this._haltDisabledEvents(event);\r\n\r\n if (!event.defaultPrevented && event.type == \"mousedown\") {\r\n this._launchRipple(event);\r\n }\r\n }\r\n\r\n private _launchRipple(event: MouseEvent): void {\r\n if (this._ripple && !this._ripple.disabled) {\r\n const options: RippleOptions = {};\r\n if (this.buttonStyle == \"icon\") {\r\n options.centered = true;\r\n options.color = \"rgba(var(--cute-icon-button-color), 0.25)\";\r\n }\r\n this._ripple.launch(event, options);\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CuteButtonBase, CUTE_BUTTON_BASE} from \"./button-base.directive\";\r\nimport {toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n@Component({\r\n selector: `button[cuteButton],\r\n button[cute-button],\r\n a[cuteButton],\r\n a[cute-button],\r\n `,\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n exportAs: \"cuteButton\",\r\n imports: [CommonModule],\r\n host: {\r\n 'class': 'cute-button',\r\n '[class.cute-anchor]': '_isAnchor',\r\n '[class.btn-close]': 'buttonStyle == \"close\"',\r\n '[class.rounded-pill]': 'buttonStyle==\"pill\"',\r\n '[class.rounded-circle]': 'buttonStyle==\"circle\"',\r\n '[class.raised]': 'buttonStyle==\"raised\" && !disabled',\r\n '[class.icon-link]': 'toThemeColor(color)==\"link\"',\r\n '[class.cute-button-expandable]': 'withAriaExpandedIndicator',\r\n //'[class.focus-ring]': 'buttonStyle==\"base\" && hasClass(\"cdk-keyboard-focused\")', // See: CuteButtonBase.ngDoCheck()\r\n '[class.nowrap]': 'nowrap',\r\n '[class.disabled]': '(_isAnchor || buttonStyle==\"icon\" || disabledInteractive) && disabled',\r\n '[class.cute-button-disabled-interactive]': 'disabledInteractive',\r\n '[class.cute-unthemed]': '!color',\r\n '[attr.tabindex]': '_getTabIndex()', //'disabled ? -1 : tabIndex',\r\n '[attr.disabled]': '_getDisabledAttribute()',\r\n '[attr.aria-disabled]': '_getAriaDisabled()',\r\n '[attr.id]': 'id || null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n },\r\n providers: [\r\n { provide: CUTE_BUTTON_BASE, useExisting: CuteButton }\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteButton extends CuteButtonBase {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected readonly toThemeColor = toThemeColor;\r\n}\r\n","<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n booleanAttribute,\r\n ContentChildren,\r\n Directive,\r\n HostBinding,\r\n Input,\r\n QueryList\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\nimport {CUTE_BUTTON_BASE, CuteButtonBase, CuteButtonStyle} from \"./button-base.directive\";\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n/**\r\n * Group a series of buttons together on a single line or stack them in a vertical column.\r\n */\r\n@Directive({\r\n selector: \"cute-button-group\",\r\n exportAs: \"cuteButtonGroup\",\r\n host: {\r\n 'role': 'group',\r\n 'class': 'cute-button-group',\r\n '[class]': '\"btn-group\" +(vertical?\"-vertical\":\"\")',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null'\r\n },\r\n standalone: true\r\n})\r\nexport class CuteButtonGroup extends CuteFocusableControl {\r\n\r\n /** Whether to place the nested buttons in the vertical direction. */\r\n @Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n /** The relative size of the buttons group. */\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Default style for the content buttons */\r\n @Input() buttonStyle: CuteButtonStyle | undefined;\r\n\r\n @HostBinding(\"class.cute-btn-group-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-group-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.cute-btn-group-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.btn-group-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n\r\n /** Child buttons. */\r\n @ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n _buttons: QueryList<CuteButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-group-${++uniqueIdCounter}`;\r\n }\r\n\r\n protected override setDisabledState(newState: BooleanInput, emitEvent?: boolean): boolean {\r\n let res = super.setDisabledState(newState, emitEvent);\r\n if (res && this._buttons) {\r\n this._buttons.forEach(btn => {\r\n btn.disabled = coerceBooleanProperty(newState);\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n this._buttons?.forEach(b => {\r\n b.defaultColor = this.color ?? \"primary\";\r\n b.disabled = this.disabled;\r\n if (b.buttonStyle == \"base\") {\r\n b.inputButtonStyle = this.buttonStyle ?? \"flat-button\";\r\n }\r\n });\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n Directive,\r\n Input, numberAttribute,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n@Directive({\r\n selector: \"cute-button-toolbar\",\r\n exportAs: \"cuteButtonToolbar\",\r\n host: {\r\n 'role': 'toolbar',\r\n 'class': 'btn-toolbar',\r\n '[class]': '\"gap-\"+gap',\r\n '[attr.gap]': 'null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null'\r\n },\r\n standalone: true\r\n})\r\nexport class CuteButtonToolbar extends CuteFocusableControl {\r\n\r\n //@Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n private _gap:number = 0;\r\n\r\n /** The gutter between buttons */\r\n @Input({transform: numberAttribute})\r\n get gap(): number {return this._gap;}\r\n set gap(value: number) {\r\n const MAX_GAP= 5;\r\n value = Math.round(value);\r\n if (value >= 0 && value <= MAX_GAP) {\r\n this._gap = value;\r\n } else if (value > MAX_GAP) {\r\n this._gap = MAX_GAP;\r\n } else {\r\n this._gap = 0;\r\n }\r\n }\r\n\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Child buttons. */\r\n //@ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n //_buttons: QueryList<ButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-toolbar-${++uniqueIdCounter}`;\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteButton} from \"./button.component\";\r\nimport {CuteButtonGroup} from \"./button-group.directive\";\r\nimport {CuteButtonToolbar} from \"./button-toolbar.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteButton,\r\n CuteButtonGroup,\r\n CuteButtonToolbar,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteButtonModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uniqueIdCounter"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cute-widgets-base-button.mjs","sources":["../../../../projects/cute-widgets/base/button/src/button-base.directive.ts","../../../../projects/cute-widgets/base/button/src/button.component.ts","../../../../projects/cute-widgets/base/button/src/button.component.html","../../../../projects/cute-widgets/base/button/src/button-group.directive.ts","../../../../projects/cute-widgets/base/button/src/button-toolbar.directive.ts","../../../../projects/cute-widgets/base/button/src/button.module.ts","../../../../projects/cute-widgets/base/button/cute-widgets-base-button.ts"],"sourcesContent":["/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n Directive,\r\n inject,\r\n Input,\r\n NgZone,\r\n HostBinding,\r\n InjectionToken,\r\n ContentChildren,\r\n QueryList,\r\n booleanAttribute, DoCheck,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {CuteIcon} from \"@cute-widgets/base/icon\";\r\nimport {RelativeSize7, ThemeColor} from \"@cute-widgets/base/core\";\r\nimport {Ripple, RippleManager, RippleOptions} from \"@cute-widgets/base/core/ripple\";\r\nimport {fromEvent, Subject} from \"rxjs\";\r\nimport {takeUntil} from \"rxjs/operators\";\r\nimport {toColorCssClass, toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n/** Button's appearance style */\r\nexport type CuteButtonStyle =\r\n \"base-button\"\r\n |\"flat-button\"\r\n |\"outline-button\"\r\n |\"raised-button\"\r\n |\"pill-button\"\r\n |\"circle-button\"\r\n |\"close-button\"\r\n |\"icon-button\"\r\n |\"fab-button\"\r\n /** Appearance styles for Angular Material compatibility */\r\n |\"text\"\r\n |\"filled\"\r\n |\"elevated\"\r\n |\"outlined\"\r\n |\"tonal\";\r\n\r\n\r\n/** Object that can be used to configure the default options for the button component. */\r\nexport interface CuteButtonConfig {\r\n /** Whether disabled buttons should be interactive. */\r\n disabledInteractive?: boolean;\r\n\r\n /** Default palette color to apply to buttons. */\r\n color?: ThemeColor;\r\n}\r\n\r\n/** Injection token that can be used to provide the default options the button component. */\r\nexport const CUTE_BUTTON_CONFIG = new InjectionToken<CuteButtonConfig>('CUTE_BUTTON_CONFIG');\r\n\r\n/**\r\n * Injection token that can be used to reference instances of `CuteButtonBase`.\r\n * It serves as an alternative token to the actual `CuteButtonBase` class, which\r\n * could cause unnecessary retention of the class and its component metadata.\r\n */\r\nexport const CUTE_BUTTON_BASE = new InjectionToken<CuteButtonBase>(\r\n 'CuteButtonBase'\r\n);\r\n\r\n\r\n@Directive({\r\n host: {\r\n class: 'btn',\r\n '[attr.magnitude]': 'magnitude',\r\n '[style.--bs-focus-ring-color]': 'color? \"rgba(var(\"+bsColorVarName+\"), var(--bs-focus-ring-opacity))\" : \"var(--bs-border-color-translucent)\"',\r\n '(keydown)': '_haltDisabledEvents($event)',\r\n }\r\n})\r\nexport abstract class CuteButtonBase extends CuteFocusableControl implements DoCheck {\r\n\r\n private _cleanupClick: (() => void) | undefined;\r\n private _destroyed$ = new Subject<void>()\r\n\r\n protected readonly _ripple: Ripple;\r\n protected readonly _ngZone: NgZone = inject(NgZone);\r\n protected readonly _isAnchor: boolean = false;\r\n\r\n @ContentChildren(CuteIcon) private _icons: QueryList<CuteIcon> | undefined;\r\n\r\n /** Button's appearance style in the following format: `{style}-button`. */\r\n @Input(\"cuteButton\") //, transform: (v: any): ButtonStyle=>{return !v ? \"base-button\" : v}})\r\n get inputButtonStyle(): CuteButtonStyle {return this._inputButtonStyle;}\r\n set inputButtonStyle(value: CuteButtonStyle | undefined | \"\") {\r\n this._inputButtonStyle = value || \"base-button\";\r\n\r\n // Transform Angular Material's style\r\n switch (this._inputButtonStyle) {\r\n case \"text\": this._inputButtonStyle = \"base-button\"; break;\r\n case \"elevated\": this._inputButtonStyle = \"raised-button\"; break;\r\n case \"outlined\": this._inputButtonStyle = \"outline-button\"; break;\r\n case \"filled\": this._inputButtonStyle = \"flat-button\"; break;\r\n case \"tonal\": this._inputButtonStyle = \"flat-button\"; break;\r\n }\r\n\r\n const dashPos = this._inputButtonStyle.lastIndexOf(\"-\");\r\n if (dashPos >= 0) {\r\n // Format: {style}-button\r\n this._buttonStyle = this._inputButtonStyle.substring(0, dashPos).trim().toLowerCase() || \"base\";\r\n } else {\r\n this._buttonStyle = this._inputButtonStyle;\r\n }\r\n }\r\n private _inputButtonStyle: CuteButtonStyle = \"base-button\";\r\n private _buttonStyle: string = \"base\";\r\n\r\n /** Relative size of the Button. */\r\n @Input() magnitude: RelativeSize7 | undefined;\r\n\r\n /** Whether to enable label wrapping. */\r\n @Input({transform: booleanAttribute})\r\n wrapLabel: boolean = false;\r\n\r\n /** Whether to disable the ripple effect on button clicking. */\r\n @Input()\r\n get disableRipple(): boolean {return this._ripple.disabled}\r\n set disableRipple(value: boolean) { this._ripple.disabled = value; }\r\n\r\n /** `aria-disabled` value of the button. */\r\n @Input({transform: booleanAttribute, alias: 'aria-disabled'})\r\n ariaDisabled: boolean | undefined;\r\n\r\n /** Whether to show the collapse/expand indicator based on the `aria-expanded` current value. */\r\n @Input({transform: booleanAttribute})\r\n withAriaExpandedIndicator: boolean = false;\r\n\r\n /**\r\n * Natively disabled buttons prevent focus and any pointer events from reaching the button.\r\n * In some scenarios, this might not be desirable, because it can prevent users from finding out\r\n * why the button is disabled (e.g., via tooltip).\r\n *\r\n * Enabling this input will change the button so that it is styled to be disabled and will be\r\n * marked as `aria-disabled`, but it will allow the button to receive events and focus.\r\n *\r\n * Note that by enabling this, you need to set the `tabindex` yourself if the button isn't\r\n * meant to be tabbable, and you have to prevent the button action (e.g., form submissions).\r\n */\r\n @Input({transform: booleanAttribute})\r\n get disabledInteractive(): boolean | undefined {return this._disabledInteractive;}\r\n set disabledInteractive(value: boolean | undefined) {this._disabledInteractive = value;}\r\n private _disabledInteractive: boolean | undefined;\r\n\r\n /** Label text that applied for visually hidden button */\r\n @Input()\r\n visuallyHiddenLabel: string | undefined;\r\n\r\n @HostBinding(\"class\")\r\n protected get classNames(): string {\r\n let classes = \"cute-\"+this._inputButtonStyle; // e.g. `cute-outline-button`\r\n if (this.color) {\r\n classes += [\"base\",\"close\",\"icon\"].indexOf(this.buttonStyle)==-1\r\n ? \" btn-\"+(this.buttonStyle==\"outline\" ? \"outline-\" : \"\") + toThemeColor(this.color)\r\n : this.buttonStyle==\"base\"\r\n ? (\" \" + (this.color==\"link\" ? \"btn-link\" : toColorCssClass(this.color)))\r\n : \"\";\r\n }\r\n return classes;\r\n }\r\n\r\n /** Focus shadow color for `close-button` */\r\n @HostBinding(\"style.--bs-btn-close-focus-shadow\")\r\n protected get _closeButtonShadowColor(): string {\r\n return (this.color && this.buttonStyle == \"close\") ? \"0 0 0 0.25rem rgba(var(--bs-\"+this.color+\"-rgb), 0.25)\" : \"\";\r\n }\r\n\r\n @HostBinding(\"class.cute-btn-xxl\")\r\n protected get buttonLargestBinding(): boolean {return this.magnitude == \"largest\"}\r\n @HostBinding(\"class.cute-btn-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.btn-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n @HostBinding(\"class.cute-btn-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.cute-btn-xxs\")\r\n protected get buttonSmallestBinding(): boolean {return this.magnitude == \"smallest\"}\r\n\r\n @HostBinding(\"style.--cute-icon-button-color-rgb\")\r\n protected get iconButtonColorBinding(): string {\r\n return this.buttonStyle==\"icon\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n @HostBinding(\"style.--cute-base-button-color-rgb\")\r\n protected get baseButtonColorBinding(): string {\r\n return this.buttonStyle==\"base\" ? \"var(\"+(this.color ? this.bsColorVarName : \"--bs-body-color-rgb\")+\")\" : \"\";\r\n }\r\n\r\n /** Returns button style name. */\r\n get buttonStyle(): string {\r\n return this._buttonStyle;\r\n }\r\n\r\n protected get bsColorVarName(): string {\r\n if (this.color) {\r\n if (this.color==\"link\") {\r\n return `--bs-${this.color}-color-rgb`;\r\n }\r\n return `--bs-${this.color}-rgb`;\r\n }\r\n return \"\";\r\n }\r\n\r\n protected constructor(...args: unknown[]);\r\n protected constructor() {\r\n super();\r\n const config = inject(CUTE_BUTTON_CONFIG, {optional: true});\r\n this.disabledInteractive = config?.disabledInteractive ?? false;\r\n this._ripple = RippleManager.getInstance(this._nativeElement);\r\n\r\n this._isAnchor = (this._nativeElement.tagName == \"A\");\r\n }\r\n\r\n protected override generateId(): string {\r\n return \"\"; // `cute-button-${++nextUniqueId}`;\r\n }\r\n\r\n protected _getTabIndex() {\r\n if (this._isAnchor) {\r\n return this.disabled && !this.disabledInteractive ? -1 : this.tabIndex;\r\n }\r\n return this.tabIndex;\r\n }\r\n\r\n private _setupAsAnchor() {\r\n this._cleanupClick = this._ngZone.runOutsideAngular(() =>\r\n this._renderer.listen(this._nativeElement, 'click', (event: Event) => {\r\n if (this.disabled) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n }),\r\n );\r\n }\r\n\r\n protected override setDisabledState(newState: boolean): boolean {\r\n if (this._isAnchor) {\r\n if (newState) {\r\n this._savedTabIndex = this.tabIndex;\r\n this.tabIndex = -1;\r\n } else {\r\n this.tabIndex = this._savedTabIndex;\r\n }\r\n }\r\n return super.setDisabledState(newState);\r\n }\r\n private _savedTabIndex: number|undefined;\r\n\r\n protected _getAriaDisabled() {\r\n if (this.ariaDisabled != null) {\r\n return this.ariaDisabled;\r\n }\r\n if (this._isAnchor) {\r\n return this.disabled || null;\r\n }\r\n return this.disabled && this.disabledInteractive ? true : null;\r\n }\r\n\r\n protected _getDisabledAttribute() {\r\n //return this.disabledInteractive || !this.disabled ? null : true;\r\n return this.disabled ? true : null;\r\n }\r\n\r\n protected _haltDisabledEvents (event: Event): void {\r\n // A disabled button shouldn't apply any actions\r\n if (this.disabled && (this.disabledInteractive || this._isAnchor)) {\r\n event.preventDefault();\r\n event.stopImmediatePropagation();\r\n }\r\n };\r\n\r\n /** Whether to apply a `focus-ring` css-class to the button when it focused via keyboard interaction */\r\n protected get displayFocusRing(): boolean {\r\n return this.buttonStyle == \"base\" && this.hasClass(\"cdk-keyboard-focused\");\r\n }\r\n\r\n override ngOnInit() {\r\n super.ngOnInit();\r\n\r\n this._focusMonitor.monitor(this._elementRef, true);\r\n\r\n [\"mousedown\", \"mouseup\", \"click\"].forEach((type) => {\r\n fromEvent<MouseEvent>(this._nativeElement, type, { capture: true })\r\n .pipe(takeUntil(this._destroyed$))\r\n .subscribe((ev)=> this._onMouseEvent(ev));\r\n });\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n if (this._icons && this.buttonStyle == \"icon\") {\r\n this._icons.forEach(icon => {icon.defaultColor = this.color;});\r\n }\r\n }\r\n\r\n override ngAfterViewInit() {\r\n super.ngAfterViewInit();\r\n\r\n // Some internal tests depend on the timing of this,\r\n // otherwise we could bind it in the constructor.\r\n if (this._isAnchor) {\r\n this._setupAsAnchor();\r\n }\r\n }\r\n\r\n ngDoCheck() {\r\n // This line was added due to \"Expression Changed After Checked...\" error raised if we place it in the @HostBinding\r\n this.toggleClass(\"focus-ring\", this.displayFocusRing);\r\n }\r\n\r\n override ngOnDestroy() {\r\n super.ngOnDestroy();\r\n this._cleanupClick?.();\r\n this._ripple.stop();\r\n this._destroyed$.next();\r\n this._destroyed$.complete();\r\n }\r\n\r\n /** mouse events handler */\r\n private _onMouseEvent(event: MouseEvent) {\r\n\r\n this._haltDisabledEvents(event);\r\n\r\n if (!event.defaultPrevented && event.type == \"mousedown\") {\r\n this._launchRipple(event);\r\n }\r\n }\r\n\r\n private _launchRipple(event: MouseEvent): void {\r\n if (this._ripple && !this._ripple.disabled) {\r\n const options: RippleOptions = {};\r\n if (this.buttonStyle == \"icon\") {\r\n options.centered = true;\r\n options.color = \"rgba(var(--cute-icon-button-color), 0.25)\";\r\n }\r\n this._ripple.launch(event, options);\r\n }\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * This code is a modification of the `@angular/material` original\r\n * code licensed under MIT-style License (https://angular.dev/license).\r\n */\r\nimport {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport {CommonModule} from \"@angular/common\";\r\nimport {CuteButtonBase, CUTE_BUTTON_BASE} from \"./button-base.directive\";\r\nimport {toThemeColor} from \"@cute-widgets/base/core\";\r\n\r\n@Component({\r\n selector: `button[cuteButton],\r\n button[cute-button],\r\n a[cuteButton],\r\n a[cute-button],\r\n `,\r\n templateUrl: './button.component.html',\r\n styleUrls: ['./button.component.scss'],\r\n exportAs: \"cuteButton\",\r\n imports: [CommonModule],\r\n host: {\r\n 'class': 'cute-button',\r\n '[class.cute-anchor]': '_isAnchor',\r\n '[class.btn-close]': 'buttonStyle == \"close\"',\r\n '[class.rounded-pill]': 'buttonStyle==\"pill\"',\r\n '[class.rounded-circle]': 'buttonStyle==\"circle\"',\r\n '[class.raised]': 'buttonStyle==\"raised\" && !disabled',\r\n '[class.icon-link]': 'toThemeColor(color)==\"link\"',\r\n '[class.cute-button-expandable]': 'withAriaExpandedIndicator',\r\n //'[class.focus-ring]': 'buttonStyle==\"base\" && hasClass(\"cdk-keyboard-focused\")', // See: CuteButtonBase.ngDoCheck()\r\n '[class.disabled]': '(_isAnchor || buttonStyle==\"icon\" || disabledInteractive) && disabled',\r\n '[class.cute-button-disabled-interactive]': 'disabledInteractive',\r\n '[class.cute-unthemed]': '!color',\r\n '[attr.tabindex]': '_getTabIndex()', //'disabled ? -1 : tabIndex',\r\n '[attr.disabled]': '_getDisabledAttribute()',\r\n '[attr.aria-disabled]': '_getAriaDisabled()',\r\n '[attr.id]': 'id || null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n },\r\n providers: [\r\n { provide: CUTE_BUTTON_BASE, useExisting: CuteButton }\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class CuteButton extends CuteButtonBase {\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected readonly toThemeColor = toThemeColor;\r\n}\r\n","<!--\r\n For capturing HTML-elements such as <i class..> or <img src=\"\"...> and others\r\n we need apply [cuteButtonIcon] attribute to them.\r\n-->\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons:not([iconPositionEnd]),\r\n .bi:not([iconPositionEnd]),\r\n cute-icon:not([iconPositionEnd]),\r\n cute-avatar:not([iconPositionEnd]),\r\n [cuteButtonIcon]:not([iconPositionEnd])\">\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-button-label\" [class.cute-button-label__wrap]=\"wrapLabel\">\r\n <ng-content>\r\n @if(visuallyHiddenLabel) {\r\n <span class=\"visually-hidden\"> {{visuallyHiddenLabel}} </span>\r\n }\r\n </ng-content>\r\n</span>\r\n\r\n<span class=\"cute-icon-wrapper\">\r\n <ng-content select=\".material-icons[iconPositionEnd],\r\n .bi:[iconPositionEnd],\r\n cute-icon[iconPositionEnd],\r\n cute-avatar:[iconPositionEnd],\r\n [cuteButtonIcon][iconPositionEnd]\">\r\n </ng-content>\r\n</span>\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n booleanAttribute,\r\n ContentChildren,\r\n Directive,\r\n HostBinding,\r\n Input,\r\n QueryList\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\nimport {CUTE_BUTTON_BASE, CuteButtonBase, CuteButtonStyle} from \"./button-base.directive\";\r\nimport {BooleanInput, coerceBooleanProperty} from \"@angular/cdk/coercion\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n/**\r\n * Group a series of buttons together on a single line or stack them in a vertical column.\r\n */\r\n@Directive({\r\n selector: \"cute-button-group\",\r\n exportAs: \"cuteButtonGroup\",\r\n host: {\r\n 'role': 'group',\r\n 'class': 'cute-button-group',\r\n '[class]': '\"btn-group\" +(vertical?\"-vertical\":\"\")',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null'\r\n },\r\n standalone: true\r\n})\r\nexport class CuteButtonGroup extends CuteFocusableControl {\r\n\r\n /** Whether to place the nested buttons in the vertical direction. */\r\n @Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n /** The relative size of the buttons group. */\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Default style for the content buttons */\r\n @Input() buttonStyle: CuteButtonStyle | undefined;\r\n\r\n @HostBinding(\"class.cute-btn-group-xl\")\r\n protected get buttonLargerBinding(): boolean {return this.magnitude == \"larger\"}\r\n @HostBinding(\"class.btn-group-lg\")\r\n protected get buttonLargeBinding(): boolean {return this.magnitude == \"large\"}\r\n @HostBinding(\"class.cute-btn-group-xs\")\r\n protected get buttonSmallerBinding(): boolean {return this.magnitude == \"smaller\"}\r\n @HostBinding(\"class.btn-group-sm\")\r\n protected get buttonSmallBinding(): boolean {return this.magnitude == \"small\"}\r\n\r\n /** Child buttons. */\r\n @ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n _buttons: QueryList<CuteButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-group-${++uniqueIdCounter}`;\r\n }\r\n\r\n protected override setDisabledState(newState: BooleanInput, emitEvent?: boolean): boolean {\r\n let res = super.setDisabledState(newState, emitEvent);\r\n if (res && this._buttons) {\r\n this._buttons.forEach(btn => {\r\n btn.disabled = coerceBooleanProperty(newState);\r\n });\r\n }\r\n return res;\r\n }\r\n\r\n override ngAfterContentInit() {\r\n super.ngAfterContentInit();\r\n\r\n this._buttons?.forEach(b => {\r\n b.defaultColor = this.color ?? \"primary\";\r\n b.disabled = this.disabled;\r\n if (b.buttonStyle == \"base\") {\r\n b.inputButtonStyle = this.buttonStyle ?? \"flat-button\";\r\n }\r\n });\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {\r\n Directive,\r\n Input, numberAttribute,\r\n} from \"@angular/core\";\r\nimport {CuteFocusableControl} from \"@cute-widgets/base/abstract\";\r\nimport {RelativeSize5} from \"@cute-widgets/base/core/types\";\r\n\r\n// Counter used to generate unique IDs.\r\nlet uniqueIdCounter = 0;\r\n\r\n@Directive({\r\n selector: \"cute-button-toolbar\",\r\n exportAs: \"cuteButtonToolbar\",\r\n host: {\r\n 'role': 'toolbar',\r\n 'class': 'btn-toolbar',\r\n '[class]': '\"gap-\"+gap',\r\n '[attr.gap]': 'null',\r\n '[attr.aria-label]': 'ariaLabel || null',\r\n '[attr.aria-labelledby]': 'ariaLabelledby || null',\r\n '[attr.aria-describedby]': 'ariaDescribedby || null',\r\n '[id]': 'id || null'\r\n },\r\n standalone: true\r\n})\r\nexport class CuteButtonToolbar extends CuteFocusableControl {\r\n\r\n //@Input({transform: booleanAttribute}) vertical: boolean = false;\r\n\r\n private _gap:number = 0;\r\n\r\n /** The gutter between buttons */\r\n @Input({transform: numberAttribute})\r\n get gap(): number {return this._gap;}\r\n set gap(value: number) {\r\n const MAX_GAP= 5;\r\n value = Math.round(value);\r\n if (value >= 0 && value <= MAX_GAP) {\r\n this._gap = value;\r\n } else if (value > MAX_GAP) {\r\n this._gap = MAX_GAP;\r\n } else {\r\n this._gap = 0;\r\n }\r\n }\r\n\r\n @Input() magnitude: RelativeSize5 | undefined;\r\n\r\n /** Child buttons. */\r\n //@ContentChildren(CUTE_BUTTON_BASE, {descendants: true})\r\n //_buttons: QueryList<ButtonBase> | undefined;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n protected override generateId(): string {\r\n return `button-toolbar-${++uniqueIdCounter}`;\r\n }\r\n\r\n}\r\n","/**\r\n * @license Apache-2.0\r\n *\r\n * Copyright (c) 2025 CuteWidgets Team. All Rights Reserved.\r\n *\r\n * You may not use this file except in compliance with the License\r\n * that can be found at http://www.apache.org/licenses/LICENSE-2.0\r\n */\r\nimport {NgModule, Type} from '@angular/core';\r\nimport {CommonModule} from '@angular/common';\r\nimport {CuteButton} from \"./button.component\";\r\nimport {CuteButtonGroup} from \"./button-group.directive\";\r\nimport {CuteButtonToolbar} from \"./button-toolbar.directive\";\r\n\r\nconst TYPES: (any | Type<any>)[] = [\r\n CuteButton,\r\n CuteButtonGroup,\r\n CuteButtonToolbar,\r\n];\r\n\r\n@NgModule({\r\n imports: [CommonModule, ...TYPES],\r\n exports: TYPES,\r\n declarations: [],\r\n})\r\nexport class CuteButtonModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["uniqueIdCounter"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Directive, SecurityContext, inject,
|
|
2
|
+
import { Directive, SecurityContext, inject, contentChild, Input, ChangeDetectionStrategy, ViewEncapsulation, Component, HostAttributeToken, isDevMode, NgModule } from '@angular/core';
|
|
3
3
|
import { CuteLayoutControl } from '@cute-widgets/base/abstract';
|
|
4
4
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
5
5
|
import { CommonModule } from '@angular/common';
|
|
@@ -98,12 +98,16 @@ class CuteCard extends CuteLayoutControl {
|
|
|
98
98
|
constructor() {
|
|
99
99
|
super();
|
|
100
100
|
this._sanitizer = inject(DomSanitizer);
|
|
101
|
+
/** `CuteCardHeader` element if it was defined in the `CuteCard` template. */
|
|
102
|
+
this._header = contentChild(CuteCardHeader, ...(ngDevMode ? [{ debugName: "_header", descendants: false }] : [{ descendants: false }]));
|
|
103
|
+
/** `CuteCardFooter` element if it was defined in the `CuteCard` template. */
|
|
104
|
+
this._footer = contentChild(CuteCardFooter, ...(ngDevMode ? [{ debugName: "_footer", descendants: false }] : [{ descendants: false }]));
|
|
101
105
|
}
|
|
102
106
|
generateId() {
|
|
103
107
|
return `cute-card-${++nextId}`;
|
|
104
108
|
}
|
|
105
109
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCard, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
106
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
110
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "20.3.15", type: CuteCard, isStandalone: true, selector: "cute-card", inputs: { backgroundImage: "backgroundImage" }, host: { properties: { "class.cute-card-with-background-image": "backgroundImage", "attr.backgroundImage": "null" }, classAttribute: "cute-card card" }, queries: [{ propertyName: "_header", first: true, predicate: CuteCardHeader, isSignal: true }, { propertyName: "_footer", first: true, predicate: CuteCardFooter, isSignal: true }], exportAs: ["cuteCard"], usesInheritance: true, ngImport: i0, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"[cute-card-top-image]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"[cute-card-bottom-image]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\r\n", styles: [".cute-card{--cute-card-image-height: auto;padding:0;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.cute-card .cute-card-image{height:var(--cute-card-image-height);object-fit:cover}.cute-card .cute-card-image.img-fluid{height:auto}.cute-card.cute-thematic-widget .list-group-item{opacity:.65}.cute-card.cute-card-with-background-image,.cute-card .card-img-overlay{background-color:transparent!important}.cute-card.cute-card-with-background-image .list-group,.cute-card .card-img-overlay .list-group{--bs-bg-opacity: .25}.cute-card.cute-card-with-background-image .list-group-item,.cute-card .card-img-overlay .list-group-item{opacity:.65}.cute-card .cute-card-avatar{border-radius:50%}.cute-card .cute-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;width:100%;min-height:52px;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.cute-card .cute-card-footer{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
107
111
|
}
|
|
108
112
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCard, decorators: [{
|
|
109
113
|
type: Component,
|
|
@@ -111,16 +115,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
111
115
|
'class': 'cute-card card',
|
|
112
116
|
'[class.cute-card-with-background-image]': 'backgroundImage',
|
|
113
117
|
'[attr.backgroundImage]': 'null',
|
|
114
|
-
}, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"
|
|
118
|
+
}, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"cute-card-header\"></ng-content>\r\n<ng-content select=\"[cute-card-top-image]\"></ng-content>\r\n<ng-content></ng-content>\r\n<ng-content select=\"[cute-card-bottom-image]\"></ng-content>\r\n<ng-content select=\"cute-card-footer\"></ng-content>\r\n", styles: [".cute-card{--cute-card-image-height: auto;padding:0;overflow:hidden;background-repeat:no-repeat;background-position:center center;background-size:cover}.cute-card .cute-card-image{height:var(--cute-card-image-height);object-fit:cover}.cute-card .cute-card-image.img-fluid{height:auto}.cute-card.cute-thematic-widget .list-group-item{opacity:.65}.cute-card.cute-card-with-background-image,.cute-card .card-img-overlay{background-color:transparent!important}.cute-card.cute-card-with-background-image .list-group,.cute-card .card-img-overlay .list-group{--bs-bg-opacity: .25}.cute-card.cute-card-with-background-image .list-group-item,.cute-card .card-img-overlay .list-group-item{opacity:.65}.cute-card .cute-card-avatar{border-radius:50%}.cute-card .cute-card-actions{display:flex;flex-direction:row;align-items:center;box-sizing:border-box;width:100%;min-height:52px;padding:var(--bs-card-spacer-y) var(--bs-card-spacer-x)}.cute-card .cute-card-footer{display:flex;flex-direction:row;align-items:center;box-sizing:border-box}\n"] }]
|
|
115
119
|
}], ctorParameters: () => [], propDecorators: { backgroundImage: [{
|
|
116
120
|
type: Input
|
|
117
|
-
}], _header: [{
|
|
118
|
-
type: ContentChild,
|
|
119
|
-
args: [CuteCardHeader, { descendants: false }]
|
|
120
|
-
}], _footer: [{
|
|
121
|
-
type: ContentChild,
|
|
122
|
-
args: [CuteCardFooter, { descendants: false }]
|
|
123
|
-
}] } });
|
|
121
|
+
}], _header: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CuteCardHeader), { ...{ descendants: false }, isSignal: true }] }], _footer: [{ type: i0.ContentChild, args: [i0.forwardRef(() => CuteCardFooter), { ...{ descendants: false }, isSignal: true }] }] } });
|
|
124
122
|
|
|
125
123
|
/**
|
|
126
124
|
* @license Apache-2.0
|
|
@@ -176,12 +174,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
176
174
|
* `CuteCardImage` provides no behaviors, instead serving as a purely visual treatment.
|
|
177
175
|
*/
|
|
178
176
|
class CuteCardImage {
|
|
179
|
-
|
|
180
|
-
this.card = inject(CuteCard);
|
|
181
|
-
/** Image position in the card layout */
|
|
182
|
-
this.position = "top";
|
|
183
|
-
}
|
|
184
|
-
/** Image height in pixels */
|
|
177
|
+
/** The intrinsic height of the image, in pixels. */
|
|
185
178
|
get height() { return this._height; }
|
|
186
179
|
set height(value) {
|
|
187
180
|
if (typeof value === "string") {
|
|
@@ -191,26 +184,50 @@ class CuteCardImage {
|
|
|
191
184
|
}
|
|
192
185
|
this._height = value;
|
|
193
186
|
}
|
|
187
|
+
constructor() {
|
|
188
|
+
this.card = inject(CuteCard);
|
|
189
|
+
/** Image position in the card layout */
|
|
190
|
+
this._position = "top";
|
|
191
|
+
let attribs = [];
|
|
192
|
+
attribs[0] = inject(new HostAttributeToken("cute-card-top-image"), { optional: true });
|
|
193
|
+
attribs[1] = inject(new HostAttributeToken("cute-card-bottom-image"), { optional: true });
|
|
194
|
+
attribs[2] = inject(new HostAttributeToken("cute-card-fluid-image"), { optional: true });
|
|
195
|
+
if (attribs.filter(v => v != null).length > 1 && isDevMode()) {
|
|
196
|
+
throw new Error("Only one attribute with name 'cute-card-*-image' should be applied.");
|
|
197
|
+
}
|
|
198
|
+
// We take into account the first value only
|
|
199
|
+
const attrInd = attribs.findIndex(v => v != null);
|
|
200
|
+
switch (attrInd) {
|
|
201
|
+
case 0:
|
|
202
|
+
this._position = "top";
|
|
203
|
+
break;
|
|
204
|
+
case 1:
|
|
205
|
+
this._position = "bottom";
|
|
206
|
+
break;
|
|
207
|
+
case 2:
|
|
208
|
+
this._position = "fluid";
|
|
209
|
+
break;
|
|
210
|
+
}
|
|
211
|
+
this.card.markForCheck();
|
|
212
|
+
}
|
|
194
213
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardImage, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
195
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardImage, isStandalone: true, selector: "[cute-card-image], [
|
|
214
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardImage, isStandalone: true, selector: "[cute-card-image], [cute-card-top-image], [cute-card-bottom-image], [cute-card-fluid-image]", inputs: { height: "height" }, host: { properties: { "class": "'card-img'+(_position=='top'||_position=='bottom' ? '-'+_position : '')", "class.img-fluid": "_position==\"fluid\"", "attr.height": "height", "style.border-radius": "_position=='top' && card?._header() ? 0 : (_position=='bottom' && card?._footer() ? 0 : undefined)", "style.--cute-card-image-height": "height>=0 ? height+\"px\" : undefined" }, classAttribute: "cute-card-image" }, ngImport: i0 }); }
|
|
196
215
|
}
|
|
197
216
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardImage, decorators: [{
|
|
198
217
|
type: Directive,
|
|
199
218
|
args: [{
|
|
200
|
-
selector: '[cute-card-image], [
|
|
219
|
+
selector: '[cute-card-image], [cute-card-top-image], [cute-card-bottom-image], [cute-card-fluid-image]',
|
|
201
220
|
host: {
|
|
202
221
|
'class': 'cute-card-image',
|
|
203
|
-
'[class]': "'card-img'+(
|
|
204
|
-
|
|
205
|
-
'[
|
|
206
|
-
'[style.border-radius]': "
|
|
222
|
+
'[class]': "'card-img'+(_position=='top'||_position=='bottom' ? '-'+_position : '')",
|
|
223
|
+
'[class.img-fluid]': '_position=="fluid"',
|
|
224
|
+
'[attr.height]': 'height',
|
|
225
|
+
'[style.border-radius]': "_position=='top' && card?._header() ? 0 : (_position=='bottom' && card?._footer() ? 0 : undefined)",
|
|
207
226
|
'[style.--cute-card-image-height]': 'height>=0 ? height+"px" : undefined'
|
|
208
227
|
},
|
|
209
228
|
standalone: true,
|
|
210
229
|
}]
|
|
211
|
-
}], propDecorators: {
|
|
212
|
-
type: Input
|
|
213
|
-
}], height: [{
|
|
230
|
+
}], ctorParameters: () => [], propDecorators: { height: [{
|
|
214
231
|
type: Input
|
|
215
232
|
}] } });
|
|
216
233
|
|
|
@@ -234,14 +251,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImpo
|
|
|
234
251
|
*/
|
|
235
252
|
class CuteCardBody {
|
|
236
253
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardBody, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
237
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardBody, isStandalone: true, selector: "cute-card-body, cute-card-content", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-body card-body" }, exportAs: ["cuteCardBody"], ngImport: i0, template: "<ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n</ng-content>\r\n<div class=\"card-text
|
|
254
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardBody, isStandalone: true, selector: "cute-card-body, cute-card-content", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-body card-body" }, exportAs: ["cuteCardBody"], ngImport: i0, template: "<div class=\"cute-card-title__wrapper\">\r\n <ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n </ng-content>\r\n</div>\r\n<div class=\"card-text\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".cute-card-body{display:flex;flex-direction:column;position:relative;gap:.5rem}.cute-card-body .cute-card-title__wrapper:empty{display:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
238
255
|
}
|
|
239
256
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardBody, decorators: [{
|
|
240
257
|
type: Component,
|
|
241
258
|
args: [{ selector: 'cute-card-body, cute-card-content', exportAs: 'cuteCardBody', host: {
|
|
242
259
|
'class': 'cute-card-body card-body',
|
|
243
260
|
'[class]': 'color ? "text-"+color : ""',
|
|
244
|
-
}, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n</ng-content>\r\n<div class=\"card-text
|
|
261
|
+
}, standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"cute-card-title__wrapper\">\r\n <ng-content select=\"cute-card-title, cute-card-subtitle,\r\n [cute-card-title], [cute-card-subtitle],\r\n [cuteCardTitle], [cuteCardSubtitle]\">\r\n </ng-content>\r\n</div>\r\n<div class=\"card-text\">\r\n <ng-content></ng-content>\r\n</div>\r\n", styles: [".cute-card-body{display:flex;flex-direction:column;position:relative;gap:.5rem}.cute-card-body .cute-card-title__wrapper:empty{display:none}\n"] }]
|
|
245
262
|
}], propDecorators: { color: [{
|
|
246
263
|
type: Input
|
|
247
264
|
}] } });
|
|
@@ -371,14 +388,14 @@ class CuteCardSubtitle {
|
|
|
371
388
|
this.color = "secondary";
|
|
372
389
|
}
|
|
373
390
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardSubtitle, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
374
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardSubtitle, isStandalone: true, selector: "cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-subtitle card-subtitle
|
|
391
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.3.15", type: CuteCardSubtitle, isStandalone: true, selector: "cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]", inputs: { color: "color" }, host: { properties: { "class": "color ? \"text-\"+color : \"\"" }, classAttribute: "cute-card-subtitle card-subtitle" }, ngImport: i0 }); }
|
|
375
392
|
}
|
|
376
393
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.15", ngImport: i0, type: CuteCardSubtitle, decorators: [{
|
|
377
394
|
type: Directive,
|
|
378
395
|
args: [{
|
|
379
396
|
selector: `cute-card-subtitle, [cute-card-subtitle], [cuteCardSubtitle]`,
|
|
380
397
|
host: {
|
|
381
|
-
'class': 'cute-card-subtitle card-subtitle
|
|
398
|
+
'class': 'cute-card-subtitle card-subtitle',
|
|
382
399
|
'[class]': 'color ? "text-"+color : ""',
|
|
383
400
|
},
|
|
384
401
|
standalone: true
|