@libs-ui/components-buttons-button 0.1.1-1

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/README.md ADDED
@@ -0,0 +1,178 @@
1
+ # Button
2
+
3
+ ## Giới thiệu
4
+
5
+ `@libs-ui/components-buttons-button` là một component Button linh hoạt dùng cho ứng dụng Angular. Component này hỗ trợ:
6
+
7
+ - Nhiều kiểu button (primary, secondary, third, outline, outline-green, link, custom)
8
+ - Nhiều kích thước (large, medium, small, smaller)
9
+ - Trạng thái loading (`pending`) và disabled
10
+ - Hiển thị popover thông tin khi hover hoặc focus
11
+ - Xuất ra các sự kiện click và popover control
12
+
13
+ ## Tính năng
14
+
15
+ - Tùy chọn kiểu hiển thị: `button-primary`, `button-secondary`, `button-third`, `button-outline`, `button-outline-green`, `button-link`, `button-custom`
16
+ - Tùy chọn kích thước: `large` | `medium` | `small` | `smaller`
17
+ - Trạng thái loading dễ dàng với `isPending`
18
+ - Vô hiệu hóa button với `disable`
19
+ - Hỗ trợ popover nội dung tùy chỉnh
20
+
21
+ ## Cài đặt
22
+
23
+ ```bash
24
+ npm install @libs-ui/components-buttons-button
25
+ ```
26
+
27
+ hoặc
28
+
29
+ ```bash
30
+ yarn add @libs-ui/components-buttons-button
31
+ ```
32
+
33
+ ## Sử dụng
34
+
35
+ ### Inline Template
36
+
37
+ ```typescript
38
+ import { Component } from '@angular/core';
39
+ import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
40
+
41
+ @Component({
42
+ selector: 'app-example',
43
+ standalone: true,
44
+ imports: [LibsUiComponentsButtonsButtonComponent],
45
+ template: `
46
+ <libs_ui-components-buttons-button
47
+ [type]="'button-primary'"
48
+ [label]="'Click me'"
49
+ (outClick)="onClick()"></libs_ui-components-buttons-button>
50
+ `,
51
+ })
52
+ export class ExampleComponent {
53
+ onClick() {
54
+ console.log('Clicked');
55
+ }
56
+ }
57
+ ```
58
+
59
+ ### File HTML riêng
60
+
61
+ ```typescript
62
+ import { Component } from '@angular/core';
63
+ import { LibsUiComponentsButtonsButtonComponent } from '@libs-ui/components-buttons-button';
64
+
65
+ @Component({
66
+ selector: 'app-example',
67
+ standalone: true,
68
+ imports: [LibsUiComponentsButtonsButtonComponent],
69
+ templateUrl: './example.component.html',
70
+ })
71
+ export class ExampleComponent {}
72
+ ```
73
+
74
+ ```html
75
+ <libs_ui-components-buttons-button
76
+ [type]="'button-secondary'"
77
+ [label]="'Submit'"></libs_ui-components-buttons-button>
78
+ ```
79
+
80
+ ## Công nghệ sử dụng
81
+
82
+ - **Angular 18** với standalone components và Signals
83
+ - **Tailwind CSS** 3.x (phong cách demo)
84
+
85
+ ## API Reference
86
+
87
+ ### Inputs
88
+
89
+ | Tên | Kiểu | Mặc định | Mô tả |
90
+ | --------------------------------- | ---------------------------------------- | ---------------- | ---------------------------------------------------------------------- |
91
+ | type | `TYPE_BUTTON` | `button-primary` | Kiểu style của nút (ví dụ: button-primary, button-secondary, ...). |
92
+ | sizeButton | `TYPE_SIZE_BUTTON` | `medium` | Kích thước của nút (large, medium, small, smaller). |
93
+ | label | `string` | `' '` | Nội dung text hiển thị trên nút. |
94
+ | disable | `boolean` | `false` | Nếu true: vô hiệu hóa nút, không cho tương tác. |
95
+ | isPending | `boolean` | `false` | Nếu true: hiển thị trạng thái loading và vô hiệu hóa nút. |
96
+ | popover | `IPopover` | `{}` | Cấu hình chi tiết cho popover (nội dung, vị trí, chế độ hiển thị). |
97
+ | buttonCustom | `IColorButton` | undefined | Cấu hình màu custom khi type là button-custom hoặc button-link-custom. |
98
+ | imageLeft | `{ src: string; classInclude?: string }` | undefined | Thêm image/icon bên trái nút. |
99
+ | classInclude | `string` | `''` | Class CSS thêm cho container nút. |
100
+ | classIconLeft | `string` | `''` | Class CSS thêm cho icon bên trái. |
101
+ | classIconRight | `string` | `''` | Class CSS thêm cho icon bên phải. |
102
+ | classLabel | `string` | `''` | Class CSS thêm cho nhãn (label). |
103
+ | iconOnlyType | `boolean` | `false` | Chỉ hiển thị icon, không hiển thị nhãn. |
104
+ | ignoreStopPropagationEvent | `boolean` | `true` | Cho phép ngăn chặn hoặc không propagation sự kiện click. |
105
+ | zIndex | `number` | `10` | Giá trị z-index của popover. |
106
+ | widthLabelPopover | `number` | undefined | Chiều rộng của label popover (px). |
107
+ | styleIconLeft | `Record<string, any>` | undefined | Style inline cho icon trái. |
108
+ | styleButton | `Record<string, any>` | undefined | Style inline cho button. |
109
+ | ignoreFocusWhenInputTab | `boolean` | undefined | Bỏ qua focus khi nhấn Tab. |
110
+ | ignoreSetClickWhenShowPopover | `boolean` | undefined | Bỏ qua set click khi show popover. |
111
+ | ignorePointerEvent | `boolean` | undefined | Bỏ qua pointer events. |
112
+ | isActive | `boolean` | undefined | Trạng thái active của button. |
113
+ | isHandlerEnterDocumentClickButton | `boolean` | undefined | Cho phép xử lý event Enter trên document. |
114
+
115
+ ### Outputs
116
+
117
+ | Tên | Kiểu | Mô tả |
118
+ | ------------------- | ------------------------------------------------- | ---------------------------------------------------- |
119
+ | outClick | `(event: Event) => void` | Phát ra khi người dùng click vào nút. |
120
+ | outPopoverEvent | `(event: TYPE_POPOVER_EVENT) => void` | Phát ra các sự kiện của popover (show, hide, click). |
121
+ | outFunctionsControl | `(control: IPopoverFunctionControlEvent) => void` | Cung cấp API để điều khiển popover. |
122
+
123
+ ### Interfaces
124
+
125
+ #### `TYPE_BUTTON`
126
+
127
+ ```typescript
128
+ export type TYPE_BUTTON =
129
+ | 'button-primary'
130
+ | 'button-primary-revert'
131
+ | 'button-secondary'
132
+ | 'button-secondary-red'
133
+ | 'button-outline-secondary'
134
+ | 'button-third'
135
+ | 'button-outline'
136
+ | 'button-danger-high'
137
+ | 'button-outline-hover-danger'
138
+ | 'button-third-hover-danger'
139
+ | 'button-danger-low'
140
+ | 'button-green'
141
+ | 'button-violet'
142
+ | 'button-secondary-green'
143
+ | 'button-outline-green'
144
+ | 'button-custom'
145
+ | 'button-link-primary'
146
+ | 'button-link-third'
147
+ | 'button-link-danger-high'
148
+ | 'button-link-danger-low'
149
+ | 'button-link-green'
150
+ | 'button-link-violet'
151
+ | 'button-link-custom'
152
+ | string;
153
+ ```
154
+
155
+ Mô tả: Các giá trị style của nút được hỗ trợ.
156
+
157
+ #### `TYPE_SIZE_BUTTON`
158
+
159
+ ```typescript
160
+ export type TYPE_SIZE_BUTTON = 'large' | 'medium' | 'small' | 'smaller';
161
+ ```
162
+
163
+ Mô tả: Các giá trị kích thước của nút được hỗ trợ.
164
+
165
+ #### `IPopover`
166
+
167
+ ```typescript
168
+ export interface IPopover {
169
+ type?: TYPE_POPOVER_TYPE;
170
+ mode?: TYPE_POPOVER_MODE;
171
+ dataView?: string;
172
+ config?: IPopoverOverlay;
173
+ classInclude?: string;
174
+ ignoreShowPopover?: boolean;
175
+ }
176
+ ```
177
+
178
+ Mô tả: Cấu hình chi tiết cho popover (nội dung, vị trí, chế độ hiển thị).
@@ -0,0 +1,58 @@
1
+ import { AfterViewInit, OnDestroy } from '@angular/core';
2
+ import { IFlagMouse, IPopover, IPopoverFunctionControlEvent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';
3
+ import { TYPE_SPINNER } from '@libs-ui/components-spinner';
4
+ import { IColorButton } from '@libs-ui/services-config-project';
5
+ import { TYPE_SIZE_BUTTON } from './interfaces/button.interface';
6
+ import * as i0 from "@angular/core";
7
+ export declare class LibsUiComponentsButtonsButtonComponent implements AfterViewInit, OnDestroy {
8
+ private onDestroy;
9
+ private functionsControlPopover;
10
+ protected classBinding: import("@angular/core").WritableSignal<string>;
11
+ protected isClick: import("@angular/core").WritableSignal<boolean>;
12
+ protected typeIconLoading: import("@angular/core").WritableSignal<TYPE_SPINNER>;
13
+ protected typeButton: import("@angular/core").WritableSignal<boolean>;
14
+ private configProjectService;
15
+ readonly flagMouse: import("@angular/core").InputSignal<IFlagMouse>;
16
+ readonly type: import("@angular/core").InputSignal<string>;
17
+ readonly buttonCustom: import("@angular/core").InputSignal<IColorButton | undefined>;
18
+ readonly sizeButton: import("@angular/core").InputSignalWithTransform<TYPE_SIZE_BUTTON, TYPE_SIZE_BUTTON | undefined>;
19
+ readonly label: import("@angular/core").InputSignal<string>;
20
+ readonly disable: import("@angular/core").InputSignal<boolean>;
21
+ readonly isPending: import("@angular/core").InputSignal<boolean | undefined>;
22
+ readonly imageLeft: import("@angular/core").InputSignal<{
23
+ src: string;
24
+ classInclude?: string;
25
+ } | undefined>;
26
+ readonly classInclude: import("@angular/core").InputSignal<string>;
27
+ readonly classIconLeft: import("@angular/core").InputSignal<string>;
28
+ readonly classIconRight: import("@angular/core").InputSignal<string>;
29
+ readonly classLabel: import("@angular/core").InputSignal<string>;
30
+ readonly iconOnlyType: import("@angular/core").InputSignal<boolean>;
31
+ readonly popover: import("@angular/core").InputSignal<IPopover>;
32
+ readonly ignoreStopPropagationEvent: import("@angular/core").InputSignalWithTransform<boolean, boolean | undefined>;
33
+ readonly zIndex: import("@angular/core").InputSignal<number>;
34
+ readonly widthLabelPopover: import("@angular/core").InputSignal<number | undefined>;
35
+ readonly styleIconLeft: import("@angular/core").InputSignal<Record<string, any> | undefined>;
36
+ readonly styleButton: import("@angular/core").InputSignal<Record<string, any> | undefined>;
37
+ readonly ignoreFocusWhenInputTab: import("@angular/core").InputSignal<boolean | undefined>;
38
+ readonly ignoreSetClickWhenShowPopover: import("@angular/core").InputSignal<boolean | undefined>;
39
+ readonly ignorePointerEvent: import("@angular/core").InputSignal<boolean | undefined>;
40
+ readonly isActive: import("@angular/core").InputSignal<boolean | undefined>;
41
+ readonly isHandlerEnterDocumentClickButton: import("@angular/core").InputSignal<boolean | undefined>;
42
+ readonly outClick: import("@angular/core").OutputEmitterRef<Event>;
43
+ readonly outPopoverEvent: import("@angular/core").OutputEmitterRef<TYPE_POPOVER_EVENT>;
44
+ readonly outFunctionsControl: import("@angular/core").OutputEmitterRef<IPopoverFunctionControlEvent>;
45
+ private readonly buttonEl;
46
+ constructor();
47
+ ngAfterViewInit(): void;
48
+ protected handlerClick(e: Event): void;
49
+ protected handlerPopoverControlEvent(control: IPopoverFunctionControlEvent): Promise<void>;
50
+ get FunctionsControl(): IPopoverFunctionControlEvent | undefined;
51
+ private setClassByType;
52
+ private setClassAndIconLoadingByType;
53
+ private setVariableStyles;
54
+ protected handlerPopoverEvent(event: TYPE_POPOVER_EVENT): Promise<void>;
55
+ ngOnDestroy(): void;
56
+ static ɵfac: i0.ɵɵFactoryDeclaration<LibsUiComponentsButtonsButtonComponent, never>;
57
+ static ɵcmp: i0.ɵɵComponentDeclaration<LibsUiComponentsButtonsButtonComponent, "libs_ui-components-buttons-button", never, { "flagMouse": { "alias": "flagMouse"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "buttonCustom": { "alias": "buttonCustom"; "required": false; "isSignal": true; }; "sizeButton": { "alias": "sizeButton"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "disable": { "alias": "disable"; "required": false; "isSignal": true; }; "isPending": { "alias": "isPending"; "required": false; "isSignal": true; }; "imageLeft": { "alias": "imageLeft"; "required": false; "isSignal": true; }; "classInclude": { "alias": "classInclude"; "required": false; "isSignal": true; }; "classIconLeft": { "alias": "classIconLeft"; "required": false; "isSignal": true; }; "classIconRight": { "alias": "classIconRight"; "required": false; "isSignal": true; }; "classLabel": { "alias": "classLabel"; "required": false; "isSignal": true; }; "iconOnlyType": { "alias": "iconOnlyType"; "required": false; "isSignal": true; }; "popover": { "alias": "popover"; "required": false; "isSignal": true; }; "ignoreStopPropagationEvent": { "alias": "ignoreStopPropagationEvent"; "required": false; "isSignal": true; }; "zIndex": { "alias": "zIndex"; "required": false; "isSignal": true; }; "widthLabelPopover": { "alias": "widthLabelPopover"; "required": false; "isSignal": true; }; "styleIconLeft": { "alias": "styleIconLeft"; "required": false; "isSignal": true; }; "styleButton": { "alias": "styleButton"; "required": false; "isSignal": true; }; "ignoreFocusWhenInputTab": { "alias": "ignoreFocusWhenInputTab"; "required": false; "isSignal": true; }; "ignoreSetClickWhenShowPopover": { "alias": "ignoreSetClickWhenShowPopover"; "required": false; "isSignal": true; }; "ignorePointerEvent": { "alias": "ignorePointerEvent"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "isHandlerEnterDocumentClickButton": { "alias": "isHandlerEnterDocumentClickButton"; "required": false; "isSignal": true; }; }, { "outClick": "outClick"; "outPopoverEvent": "outPopoverEvent"; "outFunctionsControl": "outFunctionsControl"; }, never, never, true, never>;
58
+ }
@@ -0,0 +1,175 @@
1
+ /* eslint-disable @typescript-eslint/no-explicit-any */
2
+ import { NgStyle } from '@angular/common';
3
+ import { ChangeDetectionStrategy, Component, effect, inject, input, output, signal, untracked, viewChild } from '@angular/core';
4
+ import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
5
+ import { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';
6
+ import { LibsUiConfigProjectService } from '@libs-ui/services-config-project';
7
+ import { colorContrastFromOrigin, get, UtilsKeyCodeConstant } from '@libs-ui/utils';
8
+ import { TranslateModule } from '@ngx-translate/core';
9
+ import { fromEvent, Subject, timer } from 'rxjs';
10
+ import { takeUntil } from 'rxjs/operators';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@ngx-translate/core";
13
+ export class LibsUiComponentsButtonsButtonComponent {
14
+ // #region PROPERTY
15
+ onDestroy = new Subject();
16
+ functionsControlPopover = signal(undefined);
17
+ classBinding = signal('');
18
+ isClick = signal(false);
19
+ typeIconLoading = signal('spin-blue');
20
+ typeButton = signal(false);
21
+ configProjectService = inject(LibsUiConfigProjectService);
22
+ // #region INPUT
23
+ flagMouse = input({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false });
24
+ type = input('button-primary');
25
+ buttonCustom = input(); // bắt buộc khi type là button-custom hoặc button-link-custom
26
+ sizeButton = input('medium', { transform: (value) => value ?? 'medium' });
27
+ label = input(' ');
28
+ disable = input(false);
29
+ isPending = input();
30
+ imageLeft = input();
31
+ classInclude = input('');
32
+ classIconLeft = input('');
33
+ classIconRight = input('');
34
+ classLabel = input('');
35
+ iconOnlyType = input(false);
36
+ popover = input({});
37
+ ignoreStopPropagationEvent = input(true, { transform: (val) => val ?? true });
38
+ zIndex = input(10);
39
+ widthLabelPopover = input();
40
+ styleIconLeft = input();
41
+ styleButton = input();
42
+ ignoreFocusWhenInputTab = input(); // dùng để bỏ qua focus khi bấm nút TAB từ bán phím
43
+ ignoreSetClickWhenShowPopover = input();
44
+ ignorePointerEvent = input();
45
+ isActive = input();
46
+ isHandlerEnterDocumentClickButton = input();
47
+ // #region OUTPUT
48
+ outClick = output();
49
+ outPopoverEvent = output();
50
+ outFunctionsControl = output();
51
+ /* VIEW CHILD */
52
+ buttonEl = viewChild.required('buttonEl');
53
+ constructor() {
54
+ effect(() => {
55
+ this.type();
56
+ this.buttonCustom();
57
+ this.sizeButton();
58
+ untracked(() => this.setClassByType());
59
+ });
60
+ }
61
+ ngAfterViewInit() {
62
+ if (!this.isHandlerEnterDocumentClickButton()) {
63
+ return;
64
+ }
65
+ fromEvent(document, 'keyup')
66
+ .pipe(takeUntil(this.onDestroy))
67
+ .subscribe((e) => {
68
+ if (e.keyCode !== UtilsKeyCodeConstant.ENTER) {
69
+ return;
70
+ }
71
+ this.handlerClick(e);
72
+ });
73
+ }
74
+ /* FUNCTIONS */
75
+ handlerClick(e) {
76
+ if (!this.ignoreStopPropagationEvent()) {
77
+ e.stopPropagation();
78
+ }
79
+ this.buttonEl()?.nativeElement.blur();
80
+ if (this.disable() || this.isPending()) {
81
+ return;
82
+ }
83
+ this.outClick.emit(e);
84
+ this.isClick.set(true);
85
+ timer(100)
86
+ .pipe(takeUntil(this.onDestroy))
87
+ .subscribe(() => {
88
+ this.isClick.set(false);
89
+ });
90
+ }
91
+ async handlerPopoverControlEvent(control) {
92
+ this.functionsControlPopover.set(control);
93
+ this.outFunctionsControl.emit(control);
94
+ }
95
+ get FunctionsControl() {
96
+ return this.functionsControlPopover();
97
+ }
98
+ async setClassByType() {
99
+ if (this.type().search('button') === 0) {
100
+ this.typeButton.set(true);
101
+ }
102
+ this.setClassAndIconLoadingByType();
103
+ const config = this.type().includes('custom') ? this.buttonCustom() : get(this.configProjectService.ConfigButton(), this.type());
104
+ if (config) {
105
+ this.setVariableStyles(config.rootColor, config.configStepColor);
106
+ }
107
+ if (!this.sizeButton || !this.typeButton()) {
108
+ return this.classBinding.update((value) => `${value} ${this.classInclude()}`);
109
+ }
110
+ switch (this.sizeButton()) {
111
+ case 'large':
112
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-large`);
113
+ case 'medium':
114
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-medium`);
115
+ case 'small':
116
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-small`);
117
+ case 'smaller':
118
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-smaller`);
119
+ }
120
+ }
121
+ async setClassAndIconLoadingByType() {
122
+ if (!this.type) {
123
+ return;
124
+ }
125
+ if (this.type().includes('link')) {
126
+ this.classBinding.set('libs-ui-button libs-ui-button-theme libs-ui-button-link libs-ui-button-link-other-color');
127
+ return this.typeIconLoading.set('spin-blue');
128
+ }
129
+ this.classBinding.set('libs-ui-button libs-ui-button-theme libs-ui-button-other-color');
130
+ if (['button-secondary', 'button-third', 'button-outline', 'button-outline-green'].includes(this.type())) {
131
+ return this.typeIconLoading.set('spin-blue');
132
+ }
133
+ return this.typeIconLoading.set('spin-white');
134
+ }
135
+ async setVariableStyles(color, configStep) {
136
+ if (!color) {
137
+ return;
138
+ }
139
+ const colors = colorContrastFromOrigin(color);
140
+ Object.keys(configStep).forEach((key) => {
141
+ const valueStep = get(configStep, key);
142
+ const typeLink = this.type().includes('link');
143
+ if (typeof valueStep === 'string') {
144
+ this.buttonEl()?.nativeElement.style.setProperty(`--libs-ui-button${typeLink ? '-link' : ''}-other-color-${key.replace('_', '-')}`, valueStep);
145
+ return;
146
+ }
147
+ const color = colors.find((item) => item.step === Math.abs(valueStep));
148
+ this.buttonEl()?.nativeElement.style.setProperty(`--libs-ui-button${typeLink ? '-link' : ''}-other-color-${key.replace('_', '-')}`, get((color || {}), valueStep < 0 ? 'dark' : 'light'));
149
+ });
150
+ }
151
+ async handlerPopoverEvent(event) {
152
+ this.outPopoverEvent.emit(event);
153
+ if (event === 'click') {
154
+ return;
155
+ }
156
+ if (event === 'remove') {
157
+ this.isClick.set(false);
158
+ return;
159
+ }
160
+ if (!this.ignoreSetClickWhenShowPopover()) {
161
+ this.isClick.set(true);
162
+ }
163
+ }
164
+ ngOnDestroy() {
165
+ this.onDestroy.next();
166
+ this.onDestroy.complete();
167
+ }
168
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsButtonsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
169
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsButtonsButtonComponent, isStandalone: true, selector: "libs_ui-components-buttons-button", inputs: { flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, buttonCustom: { classPropertyName: "buttonCustom", publicName: "buttonCustom", isSignal: true, isRequired: false, transformFunction: null }, sizeButton: { classPropertyName: "sizeButton", publicName: "sizeButton", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, isPending: { classPropertyName: "isPending", publicName: "isPending", isSignal: true, isRequired: false, transformFunction: null }, imageLeft: { classPropertyName: "imageLeft", publicName: "imageLeft", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classIconLeft: { classPropertyName: "classIconLeft", publicName: "classIconLeft", isSignal: true, isRequired: false, transformFunction: null }, classIconRight: { classPropertyName: "classIconRight", publicName: "classIconRight", isSignal: true, isRequired: false, transformFunction: null }, classLabel: { classPropertyName: "classLabel", publicName: "classLabel", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyType: { classPropertyName: "iconOnlyType", publicName: "iconOnlyType", isSignal: true, isRequired: false, transformFunction: null }, popover: { classPropertyName: "popover", publicName: "popover", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, widthLabelPopover: { classPropertyName: "widthLabelPopover", publicName: "widthLabelPopover", isSignal: true, isRequired: false, transformFunction: null }, styleIconLeft: { classPropertyName: "styleIconLeft", publicName: "styleIconLeft", isSignal: true, isRequired: false, transformFunction: null }, styleButton: { classPropertyName: "styleButton", publicName: "styleButton", isSignal: true, isRequired: false, transformFunction: null }, ignoreFocusWhenInputTab: { classPropertyName: "ignoreFocusWhenInputTab", publicName: "ignoreFocusWhenInputTab", isSignal: true, isRequired: false, transformFunction: null }, ignoreSetClickWhenShowPopover: { classPropertyName: "ignoreSetClickWhenShowPopover", publicName: "ignoreSetClickWhenShowPopover", isSignal: true, isRequired: false, transformFunction: null }, ignorePointerEvent: { classPropertyName: "ignorePointerEvent", publicName: "ignorePointerEvent", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, isHandlerEnterDocumentClickButton: { classPropertyName: "isHandlerEnterDocumentClickButton", publicName: "isHandlerEnterDocumentClickButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outClick: "outClick", outPopoverEvent: "outPopoverEvent", outFunctionsControl: "outFunctionsControl" }, viewQueries: [{ propertyName: "buttonEl", first: true, predicate: ["buttonEl"], descendants: true, isSignal: true }], ngImport: i0, template: "@let constHtmlLabel = label() || ' ';\n<libs_ui-components-popover\n [type]=\"popover().type || 'other'\"\n [mode]=\"popover().mode || 'hover'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"popover().ignoreHiddenPopoverContentWhenMouseLeave || false\"\n [ignoreShowPopover]=\"popover().config ? !!popover().ignoreShowPopover : true\"\n [elementRefCustom]=\"popover().elementRefCustom\"\n [config]=\"popover().config || {}\"\n [flagMouse]=\"flagMouse()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n <button\n #buttonEl\n [class]=\"classBinding()\"\n [class.libs-ui-button-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable() && !ignorePointerEvent()\"\n [attr.isPending]=\"isPending()\"\n [attr.isClick]=\"isClick()\"\n [attr.tabindex]=\"ignoreFocusWhenInputTab() ? '-1' : '0'\"\n [attr.hasLabel]=\"(constHtmlLabel | translate) !== ' '\"\n [attr.hasIconLeft]=\"!!classIconLeft()\"\n [attr.hasIconRight]=\"!!classIconRight()\"\n [attr.active]=\"!!isActive()\"\n [ngStyle]=\"styleButton()\"\n (click)=\"handlerClick($event)\">\n @if (imageLeft(); as imageConfig) {\n <img\n [src]=\"imageConfig.src\"\n [class]=\"imageConfig.classInclude || 'mr-[8px]'\" />\n }\n @if (classIconLeft() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconLeft() + ' libs-ui-button-icon-left'\"\n [ngStyle]=\"styleIconLeft()\"></i>\n }\n @if (!iconOnlyType()) {\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{\n zIndex: zIndex(),\n width: widthLabelPopover(),\n }\"\n [class]=\"(classLabel() || '') + ' libs-ui-button-label'\"\n [innerHtml]=\"constHtmlLabel | translate\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\" />\n }\n @if (classIconRight() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconRight() + ' libs-ui-button-icon-right'\"></i>\n }\n @if (isPending()) {\n <div\n class=\"relative\"\n [class.w-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.left-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.ml-[8px]]=\"typeButton() && !iconOnlyType()\">\n <libs_ui-components-spinner\n [type]=\"typeIconLoading()\"\n [size]=\"sizeButton() === 'large' ? 'medium' : sizeButton() === 'smaller' ? 'smaller' : 'small'\" />\n </div>\n }\n </button>\n</libs_ui-components-popover>\n", styles: [".libs-ui-button{display:flex;align-items:center;text-align:center;color:#fff;cursor:pointer}.libs-ui-button.libs-ui-button-theme{display:flex;align-items:center;font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);text-align:center;color:#fff;border:none;border-radius:4px;cursor:pointer}.libs-ui-button.libs-ui-button-theme:focus,.libs-ui-button.libs-ui-button-theme[isClick=true]{outline:none;box-shadow:none}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-left[iconOnlyType=false]{margin-right:8px}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-right[iconOnlyType=false]{margin-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large{border-radius:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=true]{padding:9px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-large, 20px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=false]{padding:11px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-large .libs-ui-button-label{font-size:var(--libs-ui-button-size-large-font-size, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-large-line-height, 24px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=true]{padding:6px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=false]{padding:7px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-medium, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium .libs-ui-button-label{font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=true]{padding:4px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=false]{padding:5px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-small, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-small .libs-ui-button-label{font-size:var(--libs-ui-button-size-small-font-size, 12px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-small-line-height, 18px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=true]{padding:1px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=false]{padding:1px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-smaller, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller .libs-ui-button-label{font-size:var(--libs-ui-button-size-smaller-font-size, 11px);line-height:var(--libs-ui-button-size-smaller-line-height, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color{color:var(--libs-ui-button-other-color-text, white);background:var(--libs-ui-button-other-color-background, #226ff5);border:1px solid var(--libs-ui-button-other-color-border, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]{color:var(--libs-ui-button-other-color-text-hover, white);background:var(--libs-ui-button-other-color-background-hover, #4e8cf7);border:1px solid var(--libs-ui-button-other-color-border-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-hover, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]{color:var(--libs-ui-button-other-color-text-active, white);background:var(--libs-ui-button-other-color-background-active, #1b59c4);border:1px solid var(--libs-ui-button-other-color-border-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-active, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable{cursor:not-allowed;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme[isPending=true]{cursor:not-allowed;pointer-events:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link{padding:0;background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isClick=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]{color:var(--libs-ui-button-link-other-color-text-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable{cursor:not-allowed;pointer-events:none;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{cursor:not-allowed;pointer-events:none}.mo-button-custom-color-icon:before{color:inherit!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
170
+ }
171
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsButtonsButtonComponent, decorators: [{
172
+ type: Component,
173
+ args: [{ selector: 'libs_ui-components-buttons-button', standalone: true, imports: [NgStyle, TranslateModule, LibsUiComponentsSpinnerComponent, LibsUiComponentsPopoverComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let constHtmlLabel = label() || ' ';\n<libs_ui-components-popover\n [type]=\"popover().type || 'other'\"\n [mode]=\"popover().mode || 'hover'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"popover().ignoreHiddenPopoverContentWhenMouseLeave || false\"\n [ignoreShowPopover]=\"popover().config ? !!popover().ignoreShowPopover : true\"\n [elementRefCustom]=\"popover().elementRefCustom\"\n [config]=\"popover().config || {}\"\n [flagMouse]=\"flagMouse()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n <button\n #buttonEl\n [class]=\"classBinding()\"\n [class.libs-ui-button-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable() && !ignorePointerEvent()\"\n [attr.isPending]=\"isPending()\"\n [attr.isClick]=\"isClick()\"\n [attr.tabindex]=\"ignoreFocusWhenInputTab() ? '-1' : '0'\"\n [attr.hasLabel]=\"(constHtmlLabel | translate) !== ' '\"\n [attr.hasIconLeft]=\"!!classIconLeft()\"\n [attr.hasIconRight]=\"!!classIconRight()\"\n [attr.active]=\"!!isActive()\"\n [ngStyle]=\"styleButton()\"\n (click)=\"handlerClick($event)\">\n @if (imageLeft(); as imageConfig) {\n <img\n [src]=\"imageConfig.src\"\n [class]=\"imageConfig.classInclude || 'mr-[8px]'\" />\n }\n @if (classIconLeft() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconLeft() + ' libs-ui-button-icon-left'\"\n [ngStyle]=\"styleIconLeft()\"></i>\n }\n @if (!iconOnlyType()) {\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{\n zIndex: zIndex(),\n width: widthLabelPopover(),\n }\"\n [class]=\"(classLabel() || '') + ' libs-ui-button-label'\"\n [innerHtml]=\"constHtmlLabel | translate\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\" />\n }\n @if (classIconRight() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconRight() + ' libs-ui-button-icon-right'\"></i>\n }\n @if (isPending()) {\n <div\n class=\"relative\"\n [class.w-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.left-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.ml-[8px]]=\"typeButton() && !iconOnlyType()\">\n <libs_ui-components-spinner\n [type]=\"typeIconLoading()\"\n [size]=\"sizeButton() === 'large' ? 'medium' : sizeButton() === 'smaller' ? 'smaller' : 'small'\" />\n </div>\n }\n </button>\n</libs_ui-components-popover>\n", styles: [".libs-ui-button{display:flex;align-items:center;text-align:center;color:#fff;cursor:pointer}.libs-ui-button.libs-ui-button-theme{display:flex;align-items:center;font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);text-align:center;color:#fff;border:none;border-radius:4px;cursor:pointer}.libs-ui-button.libs-ui-button-theme:focus,.libs-ui-button.libs-ui-button-theme[isClick=true]{outline:none;box-shadow:none}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-left[iconOnlyType=false]{margin-right:8px}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-right[iconOnlyType=false]{margin-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large{border-radius:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=true]{padding:9px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-large, 20px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=false]{padding:11px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-large .libs-ui-button-label{font-size:var(--libs-ui-button-size-large-font-size, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-large-line-height, 24px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=true]{padding:6px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=false]{padding:7px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-medium, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium .libs-ui-button-label{font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=true]{padding:4px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=false]{padding:5px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-small, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-small .libs-ui-button-label{font-size:var(--libs-ui-button-size-small-font-size, 12px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-small-line-height, 18px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=true]{padding:1px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=false]{padding:1px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-smaller, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller .libs-ui-button-label{font-size:var(--libs-ui-button-size-smaller-font-size, 11px);line-height:var(--libs-ui-button-size-smaller-line-height, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color{color:var(--libs-ui-button-other-color-text, white);background:var(--libs-ui-button-other-color-background, #226ff5);border:1px solid var(--libs-ui-button-other-color-border, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]{color:var(--libs-ui-button-other-color-text-hover, white);background:var(--libs-ui-button-other-color-background-hover, #4e8cf7);border:1px solid var(--libs-ui-button-other-color-border-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-hover, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]{color:var(--libs-ui-button-other-color-text-active, white);background:var(--libs-ui-button-other-color-background-active, #1b59c4);border:1px solid var(--libs-ui-button-other-color-border-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-active, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable{cursor:not-allowed;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme[isPending=true]{cursor:not-allowed;pointer-events:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link{padding:0;background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isClick=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]{color:var(--libs-ui-button-link-other-color-text-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable{cursor:not-allowed;pointer-events:none;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{cursor:not-allowed;pointer-events:none}.mo-button-custom-color-icon:before{color:inherit!important}\n"] }]
174
+ }], ctorParameters: () => [] });
175
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9zcmMvYnV0dG9uLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9zcmMvYnV0dG9uLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHVEQUF1RDtBQUN2RCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDMUMsT0FBTyxFQUFpQix1QkFBdUIsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFjLE1BQU0sRUFBRSxLQUFLLEVBQWEsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3RLLE9BQU8sRUFBc0QsZ0NBQWdDLEVBQXNCLE1BQU0sNkJBQTZCLENBQUM7QUFDdkosT0FBTyxFQUFFLGdDQUFnQyxFQUFnQixNQUFNLDZCQUE2QixDQUFDO0FBRTdGLE9BQU8sRUFBZ0IsMEJBQTBCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUM1RixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsR0FBRyxFQUE0QixvQkFBb0IsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQzlHLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDakQsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7QUFZM0MsTUFBTSxPQUFPLHNDQUFzQztJQUNqRCxtQkFBbUI7SUFDWCxTQUFTLEdBQUcsSUFBSSxPQUFPLEVBQVEsQ0FBQztJQUNoQyx1QkFBdUIsR0FBRyxNQUFNLENBQTJDLFNBQVMsQ0FBQyxDQUFD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QUVFLG1DQUFtQyxjQUdqQyxJQUFJLFdBQ1AsQ0FBQyxPQUFPLEVBQUUsZUFBZSxFQUFFLGdDQUFnQyxFQUFFLGdDQUFnQyxDQUFDLG1CQUN0Rix1QkFBdUIsQ0FBQyxNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgTmdTdHlsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50LCBlZmZlY3QsIEVsZW1lbnRSZWYsIGluamVjdCwgaW5wdXQsIE9uRGVzdHJveSwgb3V0cHV0LCBzaWduYWwsIHVudHJhY2tlZCwgdmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBJRmxhZ01vdXNlLCBJUG9wb3ZlciwgSVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudCwgTGlic1VpQ29tcG9uZW50c1BvcG92ZXJDb21wb25lbnQsIFRZUEVfUE9QT1ZFUl9FVkVOVCB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBMaWJzVWlDb21wb25lbnRzU3Bpbm5lckNvbXBvbmVudCwgVFlQRV9TUElOTkVSIH0gZnJvbSAnQGxpYnMtdWkvY29tcG9uZW50cy1zcGlubmVyJztcbmltcG9ydCB7IElFdmVudCB9IGZyb20gJ0BsaWJzLXVpL2ludGVyZmFjZXMtdHlwZXMnO1xuaW1wb3J0IHsgSUNvbG9yQnV0dG9uLCBMaWJzVWlDb25maWdQcm9qZWN0U2VydmljZSB9IGZyb20gJ0BsaWJzLXVpL3NlcnZpY2VzLWNvbmZpZy1wcm9qZWN0JztcbmltcG9ydCB7IGNvbG9yQ29udHJhc3RGcm9tT3JpZ2luLCBnZXQsIElDb2xvckNvbnRyYXN0RnJvbU9yaWdpbiwgVXRpbHNLZXlDb2RlQ29uc3RhbnQgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGZyb21FdmVudCwgU3ViamVjdCwgdGltZXIgfSBmcm9tICdyeGpzJztcbmltcG9ydCB7IHRha2VVbnRpbCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcbmltcG9ydCB7IFRZUEVfQlVUVE9OLCBUWVBFX1NJWkVfQlVUVE9OIH0gZnJvbSAnLi9pbnRlcmZhY2VzL2J1dHRvbi5pbnRlcmZhY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhbmd1bGFyLWVzbGludC9jb21wb25lbnQtc2VsZWN0b3JcbiAgc2VsZWN0b3I6ICdsaWJzX3VpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vYnV0dG9uLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vYnV0dG9uLmNvbXBvbmVudC5zY3NzJ10sXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtOZ1N0eWxlLCBUcmFuc2xhdGVNb2R1bGUsIExpYnNVaUNvbXBvbmVudHNTcGlubmVyQ29tcG9uZW50LCBMaWJzVWlDb21wb25lbnRzUG9wb3ZlckNvbXBvbmVudF0sXG4gIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoLFxufSlcbmV4cG9ydCBjbGFzcyBMaWJzVWlDb21wb25lbnRzQnV0dG9uc0J1dHRvbkNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XG4gIC8vICNyZWdpb24gUFJPUEVSVFlcbiAgcHJpdmF0ZSBvbkRlc3Ryb3kgPSBuZXcgU3ViamVjdDx2b2lkPigpO1xuICBwcml2YXRlIGZ1bmN0aW9uc0NvbnRyb2xQb3BvdmVyID0gc2lnbmFsPElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbiAgcHJvdGVjdGVkIGNsYXNzQmluZGluZyA9IHNpZ25hbCgnJyk7XG4gIHByb3RlY3RlZCBpc0NsaWNrID0gc2lnbmFsKGZhbHNlKTtcbiAgcHJvdGVjdGVkIHR5cGVJY29uTG9hZGluZyA9IHNpZ25hbDxUWVBFX1NQSU5ORVI+KCdzcGluLWJsdWUnKTtcbiAgcHJvdGVjdGVkIHR5cGVCdXR0b24gPSBzaWduYWwoZmFsc2UpO1xuXG4gIHByaXZhdGUgY29uZmlnUHJvamVjdFNlcnZpY2UgPSBpbmplY3QoTGlic1VpQ29uZmlnUHJvamVjdFNlcnZpY2UpO1xuXG4gIC8vICNyZWdpb24gSU5QVVRcbiAgcmVhZG9ubHkgZmxhZ01vdXNlID0gaW5wdXQ8SUZsYWdNb3VzZT4oeyBpc01vdXNlRW50ZXI6IGZhbHNlLCBpc01vdXNlRW50ZXJDb250ZW50OiBmYWxzZSwgaXNDb250YWluZXJIYXNTY3JvbGw6IGZhbHNlIH0pO1xuICByZWFkb25seSB0eXBlID0gaW5wdXQ8VFlQRV9CVVRUT04+KCdidXR0b24tcHJpbWFyeScpO1xuICByZWFkb25seSBidXR0b25DdXN0b20gPSBpbnB1dDxJQ29sb3JCdXR0b24+KCk7IC8vIGLhuq90IGJ14buZYyBraGkgdHlwZSBsw6AgYnV0dG9uLWN1c3RvbSBob+G6t2MgYnV0dG9uLWxpbmstY3VzdG9tXG4gIHJlYWRvbmx5IHNpemVCdXR0b24gPSBpbnB1dDxUWVBFX1NJWkVfQlVUVE9OLCBUWVBFX1NJWkVfQlVUVE9OIHwgdW5kZWZpbmVkPignbWVkaXVtJywgeyB0cmFuc2Zvcm06ICh2YWx1ZSkgPT4gdmFsdWUgPz8gJ21lZGl1bScgfSk7XG4gIHJlYWRvbmx5IGxhYmVsID0gaW5wdXQ8c3RyaW5nPignICcpO1xuICByZWFkb25seSBkaXNhYmxlID0gaW5wdXQ8Ym9vbGVhbj4oZmFsc2UpO1xuICByZWFkb25seSBpc1BlbmRpbmcgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpbWFnZUxlZnQgPSBpbnB1dDx7IHNyYzogc3RyaW5nOyBjbGFzc0luY2x1ZGU/OiBzdHJpbmcgfT4oKTtcbiAgcmVhZG9ubHkgY2xhc3NJbmNsdWRlID0gaW5wdXQ8c3RyaW5nPignJyk7XG4gIHJlYWRvbmx5IGNsYXNzSWNvbkxlZnQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgY2xhc3NJY29uUmlnaHQgPSBpbnB1dDxzdHJpbmc+KCcnKTtcbiAgcmVhZG9ubHkgY2xhc3NMYWJlbCA9IGlucHV0PHN0cmluZz4oJycpO1xuICByZWFkb25seSBpY29uT25seVR5cGUgPSBpbnB1dDxib29sZWFuPihmYWxzZSk7XG4gIHJlYWRvbmx5IHBvcG92ZXIgPSBpbnB1dDxJUG9wb3Zlcj4oe30pO1xuICByZWFkb25seSBpZ25vcmVTdG9wUHJvcGFnYXRpb25FdmVudCA9IGlucHV0PGJvb2xlYW4sIGJvb2xlYW4gfCB1bmRlZmluZWQ+KHRydWUsIHsgdHJhbnNmb3JtOiAodmFsKSA9PiB2YWwgPz8gdHJ1ZSB9KTtcbiAgcmVhZG9ubHkgekluZGV4ID0gaW5wdXQ8bnVtYmVyPigxMCk7XG4gIHJlYWRvbmx5IHdpZHRoTGFiZWxQb3BvdmVyID0gaW5wdXQ8bnVtYmVyPigpO1xuICByZWFkb25seSBzdHlsZUljb25MZWZ0ID0gaW5wdXQ8UmVjb3JkPHN0cmluZywgYW55Pj4oKTtcbiAgcmVhZG9ubHkgc3R5bGVCdXR0b24gPSBpbnB1dDxSZWNvcmQ8c3RyaW5nLCBhbnk+PigpO1xuICByZWFkb25seSBpZ25vcmVGb2N1c1doZW5JbnB1dFRhYiA9IGlucHV0PGJvb2xlYW4+KCk7IC8vIGTDuW5nIMSR4buDIGLhu48gcXVhIGZvY3VzIGtoaSBi4bqlbSBuw7p0IFRBQiB04burIGLDoW4gcGjDrW1cbiAgcmVhZG9ubHkgaWdub3JlU2V0Q2xpY2tXaGVuU2hvd1BvcG92ZXIgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpZ25vcmVQb2ludGVyRXZlbnQgPSBpbnB1dDxib29sZWFuPigpO1xuICByZWFkb25seSBpc0FjdGl2ZSA9IGlucHV0PGJvb2xlYW4+KCk7XG4gIHJlYWRvbmx5IGlzSGFuZGxlckVudGVyRG9jdW1lbnRDbGlja0J1dHRvbiA9IGlucHV0PGJvb2xlYW4+KCk7XG5cbiAgLy8gI3JlZ2lvbiBPVVRQVVRcbiAgcmVhZG9ubHkgb3V0Q2xpY2sgPSBvdXRwdXQ8RXZlbnQ+KCk7XG4gIHJlYWRvbmx5IG91dFBvcG92ZXJFdmVudCA9IG91dHB1dDxUWVBFX1BPUE9WRVJfRVZFTlQ+KCk7XG4gIHJlYWRvbmx5IG91dEZ1bmN0aW9uc0NvbnRyb2wgPSBvdXRwdXQ8SVBvcG92ZXJGdW5jdGlvbkNvbnRyb2xFdmVudD4oKTtcblxuICAvKiBWSUVXIENISUxEICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYnV0dG9uRWwgPSB2aWV3Q2hpbGQucmVxdWlyZWQ8RWxlbWVudFJlZj4oJ2J1dHRvbkVsJyk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgZWZmZWN0KCgpID0+IHtcbiAgICAgIHRoaXMudHlwZSgpO1xuICAgICAgdGhpcy5idXR0b25DdXN0b20oKTtcbiAgICAgIHRoaXMuc2l6ZUJ1dHRvbigpO1xuICAgICAgdW50cmFja2VkKCgpID0+IHRoaXMuc2V0Q2xhc3NCeVR5cGUoKSk7XG4gICAgfSk7XG4gIH1cblxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlzSGFuZGxlckVudGVyRG9jdW1lbnRDbGlja0J1dHRvbigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZyb21FdmVudDxJRXZlbnQ+KGRvY3VtZW50LCAna2V5dXAnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKGUpID0+IHtcbiAgICAgICAgaWYgKGUua2V5Q29kZSAhPT0gVXRpbHNLZXlDb2RlQ29uc3RhbnQuRU5URVIpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5oYW5kbGVyQ2xpY2soZSk7XG4gICAgICB9KTtcbiAgfVxuXG4gIC8qIEZVTkNUSU9OUyAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlckNsaWNrKGU6IEV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLmlnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50KCkpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfVxuICAgIHRoaXMuYnV0dG9uRWwoKT8ubmF0aXZlRWxlbWVudC5ibHVyKCk7XG4gICAgaWYgKHRoaXMuZGlzYWJsZSgpIHx8IHRoaXMuaXNQZW5kaW5nKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5vdXRDbGljay5lbWl0KGUpO1xuICAgIHRoaXMuaXNDbGljay5zZXQodHJ1ZSk7XG4gICAgdGltZXIoMTAwKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMub25EZXN0cm95KSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmlzQ2xpY2suc2V0KGZhbHNlKTtcbiAgICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFzeW5jIGhhbmRsZXJQb3BvdmVyQ29udHJvbEV2ZW50KGNvbnRyb2w6IElQb3BvdmVyRnVuY3Rpb25Db250cm9sRXZlbnQpIHtcbiAgICB0aGlzLmZ1bmN0aW9uc0NvbnRyb2xQb3BvdmVyLnNldChjb250cm9sKTtcbiAgICB0aGlzLm91dEZ1bmN0aW9uc0NvbnRyb2wuZW1pdChjb250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgRnVuY3Rpb25zQ29udHJvbCgpOiBJUG9wb3ZlckZ1bmN0aW9uQ29udHJvbEV2ZW50IHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5mdW5jdGlvbnNDb250cm9sUG9wb3ZlcigpO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBzZXRDbGFzc0J5VHlwZSgpIHtcbiAgICBpZiAodGhpcy50eXBlKCkuc2VhcmNoKCdidXR0b24nKSA9PT0gMCkge1xuICAgICAgdGhpcy50eXBlQnV0dG9uLnNldCh0cnVlKTtcbiAgICB9XG4gICAgdGhpcy5zZXRDbGFzc0FuZEljb25Mb2FkaW5nQnlUeXBlKCk7XG4gICAgY29uc3QgY29uZmlnID0gdGhpcy50eXBlKCkuaW5jbHVkZXMoJ2N1c3RvbScpID8gdGhpcy5idXR0b25DdXN0b20oKSA6IGdldCh0aGlzLmNvbmZpZ1Byb2plY3RTZXJ2aWNlLkNvbmZpZ0J1dHRvbigpLCB0aGlzLnR5cGUoKSk7XG5cbiAgICBpZiAoY29uZmlnKSB7XG4gICAgICB0aGlzLnNldFZhcmlhYmxlU3R5bGVzKGNvbmZpZy5yb290Q29sb3IsIGNvbmZpZy5jb25maWdTdGVwQ29sb3IpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuc2l6ZUJ1dHRvbiB8fCAhdGhpcy50eXBlQnV0dG9uKCkpIHtcbiAgICAgIHJldHVybiB0aGlzLmNsYXNzQmluZGluZy51cGRhdGUoKHZhbHVlKSA9PiBgJHt2YWx1ZX0gJHt0aGlzLmNsYXNzSW5jbHVkZSgpfWApO1xuICAgIH1cblxuICAgIHN3aXRjaCAodGhpcy5zaXplQnV0dG9uKCkpIHtcbiAgICAgIGNhc2UgJ2xhcmdlJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xhc3NCaW5kaW5nLnVwZGF0ZSgodmFsdWUpID0+IGAke3ZhbHVlfSAke3RoaXMuY2xhc3NJbmNsdWRlKCl9IGxpYnMtdWktYnV0dG9uLWxhcmdlYCk7XG4gICAgICBjYXNlICdtZWRpdW0nOlxuICAgICAgICByZXR1cm4gdGhpcy5jbGFzc0JpbmRpbmcudXBkYXRlKCh2YWx1ZSkgPT4gYCR7dmFsdWV9ICR7dGhpcy5jbGFzc0luY2x1ZGUoKX0gbGlicy11aS1idXR0b24tbWVkaXVtYCk7XG5cbiAgICAgIGNhc2UgJ3NtYWxsJzpcbiAgICAgICAgcmV0dXJuIHRoaXMuY2xhc3NCaW5kaW5nLnVwZGF0ZSgodmFsdWUpID0+IGAke3ZhbHVlfSAke3RoaXMuY2xhc3NJbmNsdWRlKCl9IGxpYnMtdWktYnV0dG9uLXNtYWxsYCk7XG5cbiAgICAgIGNhc2UgJ3NtYWxsZXInOlxuICAgICAgICByZXR1cm4gdGhpcy5jbGFzc0JpbmRpbmcudXBkYXRlKCh2YWx1ZSkgPT4gYCR7dmFsdWV9ICR7dGhpcy5jbGFzc0luY2x1ZGUoKX0gbGlicy11aS1idXR0b24tc21hbGxlcmApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgc2V0Q2xhc3NBbmRJY29uTG9hZGluZ0J5VHlwZSgpIHtcbiAgICBpZiAoIXRoaXMudHlwZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy50eXBlKCkuaW5jbHVkZXMoJ2xpbmsnKSkge1xuICAgICAgdGhpcy5jbGFzc0JpbmRpbmcuc2V0KCdsaWJzLXVpLWJ1dHRvbiBsaWJzLXVpLWJ1dHRvbi10aGVtZSBsaWJzLXVpLWJ1dHRvbi1saW5rIGxpYnMtdWktYnV0dG9uLWxpbmstb3RoZXItY29sb3InKTtcbiAgICAgIHJldHVybiB0aGlzLnR5cGVJY29uTG9hZGluZy5zZXQoJ3NwaW4tYmx1ZScpO1xuICAgIH1cbiAgICB0aGlzLmNsYXNzQmluZGluZy5zZXQoJ2xpYnMtdWktYnV0dG9uIGxpYnMtdWktYnV0dG9uLXRoZW1lIGxpYnMtdWktYnV0dG9uLW90aGVyLWNvbG9yJyk7XG4gICAgaWYgKFsnYnV0dG9uLXNlY29uZGFyeScsICdidXR0b24tdGhpcmQnLCAnYnV0dG9uLW91dGxpbmUnLCAnYnV0dG9uLW91dGxpbmUtZ3JlZW4nXS5pbmNsdWRlcyh0aGlzLnR5cGUoKSkpIHtcbiAgICAgIHJldHVybiB0aGlzLnR5cGVJY29uTG9hZGluZy5zZXQoJ3NwaW4tYmx1ZScpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy50eXBlSWNvbkxvYWRpbmcuc2V0KCdzcGluLXdoaXRlJyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNldFZhcmlhYmxlU3R5bGVzKGNvbG9yOiBzdHJpbmcsIGNvbmZpZ1N0ZXA6IGFueSkge1xuICAgIGlmICghY29sb3IpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBjb2xvcnMgPSBjb2xvckNvbnRyYXN0RnJvbU9yaWdpbihjb2xvcik7XG5cbiAgICBPYmplY3Qua2V5cyhjb25maWdTdGVwKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlU3RlcCA9IGdldChjb25maWdTdGVwLCBrZXkpO1xuICAgICAgY29uc3QgdHlwZUxpbmsgPSB0aGlzLnR5cGUoKS5pbmNsdWRlcygnbGluaycpO1xuXG4gICAgICBpZiAodHlwZW9mIHZhbHVlU3RlcCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5idXR0b25FbCgpPy5uYXRpdmVFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KGAtLWxpYnMtdWktYnV0dG9uJHt0eXBlTGluayA/ICctbGluaycgOiAnJ30tb3RoZXItY29sb3ItJHtrZXkucmVwbGFjZSgnXycsICctJyl9YCwgdmFsdWVTdGVwKTtcblxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb2xvciA9IGNvbG9ycy5maW5kKChpdGVtKSA9PiBpdGVtLnN0ZXAgPT09IE1hdGguYWJzKHZhbHVlU3RlcCkpO1xuXG4gICAgICB0aGlzLmJ1dHRvbkVsKCk/Lm5hdGl2ZUVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoYC0tbGlicy11aS1idXR0b24ke3R5cGVMaW5rID8gJy1saW5rJyA6ICcnfS1vdGhlci1jb2xvci0ke2tleS5yZXBsYWNlKCdfJywgJy0nKX1gLCBnZXQoKGNvbG9yIHx8IHt9KSBhcyBJQ29sb3JDb250cmFzdEZyb21PcmlnaW4sIHZhbHVlU3RlcCA8IDAgPyAnZGFyaycgOiAnbGlnaHQnKSk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgaGFuZGxlclBvcG92ZXJFdmVudChldmVudDogVFlQRV9QT1BPVkVSX0VWRU5UKSB7XG4gICAgdGhpcy5vdXRQb3BvdmVyRXZlbnQuZW1pdChldmVudCk7XG4gICAgaWYgKGV2ZW50ID09PSAnY2xpY2snKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChldmVudCA9PT0gJ3JlbW92ZScpIHtcbiAgICAgIHRoaXMuaXNDbGljay5zZXQoZmFsc2UpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghdGhpcy5pZ25vcmVTZXRDbGlja1doZW5TaG93UG9wb3ZlcigpKSB7XG4gICAgICB0aGlzLmlzQ2xpY2suc2V0KHRydWUpO1xuICAgIH1cbiAgfVxuXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMub25EZXN0cm95Lm5leHQoKTtcbiAgICB0aGlzLm9uRGVzdHJveS5jb21wbGV0ZSgpO1xuICB9XG59XG4iLCJAbGV0IGNvbnN0SHRtbExhYmVsID0gbGFiZWwoKSB8fCAnICc7XG48bGlic191aS1jb21wb25lbnRzLXBvcG92ZXJcbiAgW3R5cGVdPVwicG9wb3ZlcigpLnR5cGUgfHwgJ290aGVyJ1wiXG4gIFttb2RlXT1cInBvcG92ZXIoKS5tb2RlIHx8ICdob3ZlcidcIlxuICBbaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZV09XCJwb3BvdmVyKCkuaWdub3JlSGlkZGVuUG9wb3ZlckNvbnRlbnRXaGVuTW91c2VMZWF2ZSB8fCBmYWxzZVwiXG4gIFtpZ25vcmVTaG93UG9wb3Zlcl09XCJwb3BvdmVyKCkuY29uZmlnID8gISFwb3BvdmVyKCkuaWdub3JlU2hvd1BvcG92ZXIgOiB0cnVlXCJcbiAgW2VsZW1lbnRSZWZDdXN0b21dPVwicG9wb3ZlcigpLmVsZW1lbnRSZWZDdXN0b21cIlxuICBbY29uZmlnXT1cInBvcG92ZXIoKS5jb25maWcgfHwge31cIlxuICBbZmxhZ01vdXNlXT1cImZsYWdNb3VzZSgpXCJcbiAgW2lnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50XT1cImlnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50KClcIlxuICAob3V0RnVuY3Rpb25zQ29udHJvbCk9XCJoYW5kbGVyUG9wb3ZlckNvbnRyb2xFdmVudCgkZXZlbnQpXCJcbiAgKG91dEV2ZW50KT1cImhhbmRsZXJQb3BvdmVyRXZlbnQoJGV2ZW50KVwiPlxuICA8YnV0dG9uXG4gICAgI2J1dHRvbkVsXG4gICAgW2NsYXNzXT1cImNsYXNzQmluZGluZygpXCJcbiAgICBbY2xhc3MubGlicy11aS1idXR0b24tZGlzYWJsZV09XCJkaXNhYmxlKClcIlxuICAgIFtjbGFzcy5wb2ludGVyLWV2ZW50cy1ub25lXT1cImRpc2FibGUoKSAmJiAhaWdub3JlUG9pbnRlckV2ZW50KClcIlxuICAgIFthdHRyLmlzUGVuZGluZ109XCJpc1BlbmRpbmcoKVwiXG4gICAgW2F0dHIuaXNDbGlja109XCJpc0NsaWNrKClcIlxuICAgIFthdHRyLnRhYmluZGV4XT1cImlnbm9yZUZvY3VzV2hlbklucHV0VGFiKCkgPyAnLTEnIDogJzAnXCJcbiAgICBbYXR0ci5oYXNMYWJlbF09XCIoY29uc3RIdG1sTGFiZWwgfCB0cmFuc2xhdGUpICE9PSAnICdcIlxuICAgIFthdHRyLmhhc0ljb25MZWZ0XT1cIiEhY2xhc3NJY29uTGVmdCgpXCJcbiAgICBbYXR0ci5oYXNJY29uUmlnaHRdPVwiISFjbGFzc0ljb25SaWdodCgpXCJcbiAgICBbYXR0ci5hY3RpdmVdPVwiISFpc0FjdGl2ZSgpXCJcbiAgICBbbmdTdHlsZV09XCJzdHlsZUJ1dHRvbigpXCJcbiAgICAoY2xpY2spPVwiaGFuZGxlckNsaWNrKCRldmVudClcIj5cbiAgICBAaWYgKGltYWdlTGVmdCgpOyBhcyBpbWFnZUNvbmZpZykge1xuICAgICAgPGltZ1xuICAgICAgICBbc3JjXT1cImltYWdlQ29uZmlnLnNyY1wiXG4gICAgICAgIFtjbGFzc109XCJpbWFnZUNvbmZpZy5jbGFzc0luY2x1ZGUgfHwgJ21yLVs4cHhdJ1wiIC8+XG4gICAgfVxuICAgIEBpZiAoY2xhc3NJY29uTGVmdCgpICYmICghaWNvbk9ubHlUeXBlKCkgfHwgKGljb25Pbmx5VHlwZSgpICYmICFpc1BlbmRpbmcoKSkpKSB7XG4gICAgICA8aVxuICAgICAgICBbYXR0ci5pY29uT25seVR5cGVdPVwiaWNvbk9ubHlUeXBlKClcIlxuICAgICAgICBbY2xhc3NdPVwiY2xhc3NJY29uTGVmdCgpICsgJyBsaWJzLXVpLWJ1dHRvbi1pY29uLWxlZnQnXCJcbiAgICAgICAgW25nU3R5bGVdPVwic3R5bGVJY29uTGVmdCgpXCI+PC9pPlxuICAgIH1cbiAgICBAaWYgKCFpY29uT25seVR5cGUoKSkge1xuICAgICAgPGxpYnNfdWktY29tcG9uZW50cy1wb3BvdmVyXG4gICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXG4gICAgICAgIFtjb25maWddPVwie1xuICAgICAgICAgIHpJbmRleDogekluZGV4KCksXG4gICAgICAgICAgd2lkdGg6IHdpZHRoTGFiZWxQb3BvdmVyKCksXG4gICAgICAgIH1cIlxuICAgICAgICBbY2xhc3NdPVwiKGNsYXNzTGFiZWwoKSB8fCAnJykgKyAnIGxpYnMtdWktYnV0dG9uLWxhYmVsJ1wiXG4gICAgICAgIFtpbm5lckh0bWxdPVwiY29uc3RIdG1sTGFiZWwgfCB0cmFuc2xhdGVcIlxuICAgICAgICBbaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnRdPVwiaWdub3JlU3RvcFByb3BhZ2F0aW9uRXZlbnQoKVwiIC8+XG4gICAgfVxuICAgIEBpZiAoY2xhc3NJY29uUmlnaHQoKSAmJiAoIWljb25Pbmx5VHlwZSgpIHx8IChpY29uT25seVR5cGUoKSAmJiAhaXNQZW5kaW5nKCkpKSkge1xuICAgICAgPGlcbiAgICAgICAgW2F0dHIuaWNvbk9ubHlUeXBlXT1cImljb25Pbmx5VHlwZSgpXCJcbiAgICAgICAgW2NsYXNzXT1cImNsYXNzSWNvblJpZ2h0KCkgKyAnIGxpYnMtdWktYnV0dG9uLWljb24tcmlnaHQnXCI+PC9pPlxuICAgIH1cbiAgICBAaWYgKGlzUGVuZGluZygpKSB7XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzPVwicmVsYXRpdmVcIlxuICAgICAgICBbY2xhc3Mudy1bMTZweF1dPVwiIXR5cGVCdXR0b24oKSAmJiAhaWNvbk9ubHlUeXBlKClcIlxuICAgICAgICBbY2xhc3MubGVmdC1bMTZweF1dPVwiIXR5cGVCdXR0b24oKSAmJiAhaWNvbk9ubHlUeXBlKClcIlxuICAgICAgICBbY2xhc3MubWwtWzhweF1dPVwidHlwZUJ1dHRvbigpICYmICFpY29uT25seVR5cGUoKVwiPlxuICAgICAgICA8bGlic191aS1jb21wb25lbnRzLXNwaW5uZXJcbiAgICAgICAgICBbdHlwZV09XCJ0eXBlSWNvbkxvYWRpbmcoKVwiXG4gICAgICAgICAgW3NpemVdPVwic2l6ZUJ1dHRvbigpID09PSAnbGFyZ2UnID8gJ21lZGl1bScgOiBzaXplQnV0dG9uKCkgPT09ICdzbWFsbGVyJyA/ICdzbWFsbGVyJyA6ICdzbWFsbCdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgfVxuICA8L2J1dHRvbj5cbjwvbGlic191aS1jb21wb25lbnRzLXBvcG92ZXI+XG4iXX0=
@@ -0,0 +1,3 @@
1
+ export * from './button.component';
2
+ export * from './interfaces';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsb0JBQW9CLENBQUM7QUFDbkMsY0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2J1dHRvbi5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9pbnRlcmZhY2VzJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnV0dG9uLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMtdWkvY29tcG9uZW50cy9idXR0b25zL2J1dHRvbi9zcmMvaW50ZXJmYWNlcy9idXR0b24uaW50ZXJmYWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUG9wb3ZlciB9IGZyb20gJ0BsaWJzLXVpL2NvbXBvbmVudHMtcG9wb3Zlcic7XG5pbXBvcnQgeyBJQ29sb3JCdXR0b24gfSBmcm9tICdAbGlicy11aS9zZXJ2aWNlcy1jb25maWctcHJvamVjdCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUJ1dHRvbiB7XG4gIGtleT86IHN0cmluZztcbiAgdHlwZT86IFRZUEVfQlVUVE9OO1xuICBzaXplQnV0dG9uPzogVFlQRV9TSVpFX0JVVFRPTjtcbiAgaWNvbk9ubHlUeXBlPzogYm9vbGVhbjtcbiAgbGFiZWw/OiBzdHJpbmc7XG4gIGRpc2FibGU/OiBib29sZWFuO1xuICBjbGFzc0luY2x1ZGU/OiBzdHJpbmc7XG4gIGNsYXNzSWNvbkxlZnQ/OiBzdHJpbmc7XG4gIGNsYXNzSWNvblJpZ2h0Pzogc3RyaW5nO1xuICBjbGFzc0xhYmVsPzogc3RyaW5nO1xuICBwb3BvdmVyPzogSVBvcG92ZXI7XG4gIGlnbm9yZVN0b3BQcm9wYWdhdGlvbkV2ZW50PzogYm9vbGVhbjtcbiAgekluZGV4PzogbnVtYmVyO1xuICBpc1BlbmRpbmc/OiBib29sZWFuO1xuICBhY3Rpb24/OiAoZGF0YT86IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgc3R5bGVJY29uTGVmdD86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIHN0eWxlQnV0dG9uPzogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgYnV0dG9uQ3VzdG9tPzogSUNvbG9yQnV0dG9uOyAvLyBi4bqvdCBideG7mWMga2hpIHR5cGUgbMOgIGJ1dHRvbi1jdXN0b21cbn1cblxuZXhwb3J0IHR5cGUgVFlQRV9CVVRUT04gPVxuICB8ICdidXR0b24tcHJpbWFyeSdcbiAgfCAnYnV0dG9uLXByaW1hcnktcmV2ZXJ0J1xuICB8ICdidXR0b24tc2Vjb25kYXJ5J1xuICB8ICdidXR0b24tc2Vjb25kYXJ5LXJlZCdcbiAgfCAnYnV0dG9uLW91dGxpbmUtc2Vjb25kYXJ5J1xuICB8ICdidXR0b24tdGhpcmQnXG4gIHwgJ2J1dHRvbi1vdXRsaW5lJ1xuICB8ICdidXR0b24tZGFuZ2VyLWhpZ2gnXG4gIHwgJ2J1dHRvbi1vdXRsaW5lLWhvdmVyLWRhbmdlcidcbiAgfCAnYnV0dG9uLXRoaXJkLWhvdmVyLWRhbmdlcidcbiAgfCAnYnV0dG9uLWRhbmdlci1sb3cnXG4gIHwgJ2J1dHRvbi1ncmVlbidcbiAgfCAnYnV0dG9uLXZpb2xldCdcbiAgfCAnYnV0dG9uLXNlY29uZGFyeS1ncmVlbidcbiAgfCAnYnV0dG9uLW91dGxpbmUtZ3JlZW4nXG4gIHwgJ2J1dHRvbi1jdXN0b20nXG4gIHwgJ2J1dHRvbi1saW5rLXByaW1hcnknXG4gIHwgJ2J1dHRvbi1saW5rLXRoaXJkJ1xuICB8ICdidXR0b24tbGluay1kYW5nZXItaGlnaCdcbiAgfCAnYnV0dG9uLWxpbmstZGFuZ2VyLWxvdydcbiAgfCAnYnV0dG9uLWxpbmstZ3JlZW4nXG4gIHwgJ2J1dHRvbi1saW5rLXZpb2xldCdcbiAgfCAnYnV0dG9uLWxpbmstY3VzdG9tJ1xuICB8IHN0cmluZztcblxuZXhwb3J0IHR5cGUgVFlQRV9TSVpFX0JVVFRPTiA9ICdsYXJnZScgfCAnbWVkaXVtJyB8ICdzbWFsbCcgfCAnc21hbGxlcic7XG4iXX0=
@@ -0,0 +1,2 @@
1
+ export * from './button.interface';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvYnV0dG9ucy9idXR0b24vc3JjL2ludGVyZmFjZXMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxvQkFBb0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vYnV0dG9uLmludGVyZmFjZSc7XG4iXX0=
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlicy11aS1jb21wb25lbnRzLWJ1dHRvbnMtYnV0dG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2J1dHRvbnMvYnV0dG9uL3NyYy9saWJzLXVpLWNvbXBvbmVudHMtYnV0dG9ucy1idXR0b24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFNBQVMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJhdGVkIGJ1bmRsZSBpbmRleC4gRG8gbm90IGVkaXQuXG4gKi9cblxuZXhwb3J0ICogZnJvbSAnLi9pbmRleCc7XG4iXX0=
@@ -0,0 +1,182 @@
1
+ import { NgStyle } from '@angular/common';
2
+ import * as i0 from '@angular/core';
3
+ import { signal, inject, input, output, viewChild, effect, untracked, ChangeDetectionStrategy, Component } from '@angular/core';
4
+ import { LibsUiComponentsPopoverComponent } from '@libs-ui/components-popover';
5
+ import { LibsUiComponentsSpinnerComponent } from '@libs-ui/components-spinner';
6
+ import { LibsUiConfigProjectService } from '@libs-ui/services-config-project';
7
+ import { UtilsKeyCodeConstant, get, colorContrastFromOrigin } from '@libs-ui/utils';
8
+ import * as i1 from '@ngx-translate/core';
9
+ import { TranslateModule } from '@ngx-translate/core';
10
+ import { Subject, fromEvent, timer } from 'rxjs';
11
+ import { takeUntil } from 'rxjs/operators';
12
+
13
+ /* eslint-disable @typescript-eslint/no-explicit-any */
14
+ class LibsUiComponentsButtonsButtonComponent {
15
+ // #region PROPERTY
16
+ onDestroy = new Subject();
17
+ functionsControlPopover = signal(undefined);
18
+ classBinding = signal('');
19
+ isClick = signal(false);
20
+ typeIconLoading = signal('spin-blue');
21
+ typeButton = signal(false);
22
+ configProjectService = inject(LibsUiConfigProjectService);
23
+ // #region INPUT
24
+ flagMouse = input({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false });
25
+ type = input('button-primary');
26
+ buttonCustom = input(); // bắt buộc khi type là button-custom hoặc button-link-custom
27
+ sizeButton = input('medium', { transform: (value) => value ?? 'medium' });
28
+ label = input(' ');
29
+ disable = input(false);
30
+ isPending = input();
31
+ imageLeft = input();
32
+ classInclude = input('');
33
+ classIconLeft = input('');
34
+ classIconRight = input('');
35
+ classLabel = input('');
36
+ iconOnlyType = input(false);
37
+ popover = input({});
38
+ ignoreStopPropagationEvent = input(true, { transform: (val) => val ?? true });
39
+ zIndex = input(10);
40
+ widthLabelPopover = input();
41
+ styleIconLeft = input();
42
+ styleButton = input();
43
+ ignoreFocusWhenInputTab = input(); // dùng để bỏ qua focus khi bấm nút TAB từ bán phím
44
+ ignoreSetClickWhenShowPopover = input();
45
+ ignorePointerEvent = input();
46
+ isActive = input();
47
+ isHandlerEnterDocumentClickButton = input();
48
+ // #region OUTPUT
49
+ outClick = output();
50
+ outPopoverEvent = output();
51
+ outFunctionsControl = output();
52
+ /* VIEW CHILD */
53
+ buttonEl = viewChild.required('buttonEl');
54
+ constructor() {
55
+ effect(() => {
56
+ this.type();
57
+ this.buttonCustom();
58
+ this.sizeButton();
59
+ untracked(() => this.setClassByType());
60
+ });
61
+ }
62
+ ngAfterViewInit() {
63
+ if (!this.isHandlerEnterDocumentClickButton()) {
64
+ return;
65
+ }
66
+ fromEvent(document, 'keyup')
67
+ .pipe(takeUntil(this.onDestroy))
68
+ .subscribe((e) => {
69
+ if (e.keyCode !== UtilsKeyCodeConstant.ENTER) {
70
+ return;
71
+ }
72
+ this.handlerClick(e);
73
+ });
74
+ }
75
+ /* FUNCTIONS */
76
+ handlerClick(e) {
77
+ if (!this.ignoreStopPropagationEvent()) {
78
+ e.stopPropagation();
79
+ }
80
+ this.buttonEl()?.nativeElement.blur();
81
+ if (this.disable() || this.isPending()) {
82
+ return;
83
+ }
84
+ this.outClick.emit(e);
85
+ this.isClick.set(true);
86
+ timer(100)
87
+ .pipe(takeUntil(this.onDestroy))
88
+ .subscribe(() => {
89
+ this.isClick.set(false);
90
+ });
91
+ }
92
+ async handlerPopoverControlEvent(control) {
93
+ this.functionsControlPopover.set(control);
94
+ this.outFunctionsControl.emit(control);
95
+ }
96
+ get FunctionsControl() {
97
+ return this.functionsControlPopover();
98
+ }
99
+ async setClassByType() {
100
+ if (this.type().search('button') === 0) {
101
+ this.typeButton.set(true);
102
+ }
103
+ this.setClassAndIconLoadingByType();
104
+ const config = this.type().includes('custom') ? this.buttonCustom() : get(this.configProjectService.ConfigButton(), this.type());
105
+ if (config) {
106
+ this.setVariableStyles(config.rootColor, config.configStepColor);
107
+ }
108
+ if (!this.sizeButton || !this.typeButton()) {
109
+ return this.classBinding.update((value) => `${value} ${this.classInclude()}`);
110
+ }
111
+ switch (this.sizeButton()) {
112
+ case 'large':
113
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-large`);
114
+ case 'medium':
115
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-medium`);
116
+ case 'small':
117
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-small`);
118
+ case 'smaller':
119
+ return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-smaller`);
120
+ }
121
+ }
122
+ async setClassAndIconLoadingByType() {
123
+ if (!this.type) {
124
+ return;
125
+ }
126
+ if (this.type().includes('link')) {
127
+ this.classBinding.set('libs-ui-button libs-ui-button-theme libs-ui-button-link libs-ui-button-link-other-color');
128
+ return this.typeIconLoading.set('spin-blue');
129
+ }
130
+ this.classBinding.set('libs-ui-button libs-ui-button-theme libs-ui-button-other-color');
131
+ if (['button-secondary', 'button-third', 'button-outline', 'button-outline-green'].includes(this.type())) {
132
+ return this.typeIconLoading.set('spin-blue');
133
+ }
134
+ return this.typeIconLoading.set('spin-white');
135
+ }
136
+ async setVariableStyles(color, configStep) {
137
+ if (!color) {
138
+ return;
139
+ }
140
+ const colors = colorContrastFromOrigin(color);
141
+ Object.keys(configStep).forEach((key) => {
142
+ const valueStep = get(configStep, key);
143
+ const typeLink = this.type().includes('link');
144
+ if (typeof valueStep === 'string') {
145
+ this.buttonEl()?.nativeElement.style.setProperty(`--libs-ui-button${typeLink ? '-link' : ''}-other-color-${key.replace('_', '-')}`, valueStep);
146
+ return;
147
+ }
148
+ const color = colors.find((item) => item.step === Math.abs(valueStep));
149
+ this.buttonEl()?.nativeElement.style.setProperty(`--libs-ui-button${typeLink ? '-link' : ''}-other-color-${key.replace('_', '-')}`, get((color || {}), valueStep < 0 ? 'dark' : 'light'));
150
+ });
151
+ }
152
+ async handlerPopoverEvent(event) {
153
+ this.outPopoverEvent.emit(event);
154
+ if (event === 'click') {
155
+ return;
156
+ }
157
+ if (event === 'remove') {
158
+ this.isClick.set(false);
159
+ return;
160
+ }
161
+ if (!this.ignoreSetClickWhenShowPopover()) {
162
+ this.isClick.set(true);
163
+ }
164
+ }
165
+ ngOnDestroy() {
166
+ this.onDestroy.next();
167
+ this.onDestroy.complete();
168
+ }
169
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsButtonsButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: LibsUiComponentsButtonsButtonComponent, isStandalone: true, selector: "libs_ui-components-buttons-button", inputs: { flagMouse: { classPropertyName: "flagMouse", publicName: "flagMouse", isSignal: true, isRequired: false, transformFunction: null }, type: { classPropertyName: "type", publicName: "type", isSignal: true, isRequired: false, transformFunction: null }, buttonCustom: { classPropertyName: "buttonCustom", publicName: "buttonCustom", isSignal: true, isRequired: false, transformFunction: null }, sizeButton: { classPropertyName: "sizeButton", publicName: "sizeButton", isSignal: true, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, disable: { classPropertyName: "disable", publicName: "disable", isSignal: true, isRequired: false, transformFunction: null }, isPending: { classPropertyName: "isPending", publicName: "isPending", isSignal: true, isRequired: false, transformFunction: null }, imageLeft: { classPropertyName: "imageLeft", publicName: "imageLeft", isSignal: true, isRequired: false, transformFunction: null }, classInclude: { classPropertyName: "classInclude", publicName: "classInclude", isSignal: true, isRequired: false, transformFunction: null }, classIconLeft: { classPropertyName: "classIconLeft", publicName: "classIconLeft", isSignal: true, isRequired: false, transformFunction: null }, classIconRight: { classPropertyName: "classIconRight", publicName: "classIconRight", isSignal: true, isRequired: false, transformFunction: null }, classLabel: { classPropertyName: "classLabel", publicName: "classLabel", isSignal: true, isRequired: false, transformFunction: null }, iconOnlyType: { classPropertyName: "iconOnlyType", publicName: "iconOnlyType", isSignal: true, isRequired: false, transformFunction: null }, popover: { classPropertyName: "popover", publicName: "popover", isSignal: true, isRequired: false, transformFunction: null }, ignoreStopPropagationEvent: { classPropertyName: "ignoreStopPropagationEvent", publicName: "ignoreStopPropagationEvent", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, widthLabelPopover: { classPropertyName: "widthLabelPopover", publicName: "widthLabelPopover", isSignal: true, isRequired: false, transformFunction: null }, styleIconLeft: { classPropertyName: "styleIconLeft", publicName: "styleIconLeft", isSignal: true, isRequired: false, transformFunction: null }, styleButton: { classPropertyName: "styleButton", publicName: "styleButton", isSignal: true, isRequired: false, transformFunction: null }, ignoreFocusWhenInputTab: { classPropertyName: "ignoreFocusWhenInputTab", publicName: "ignoreFocusWhenInputTab", isSignal: true, isRequired: false, transformFunction: null }, ignoreSetClickWhenShowPopover: { classPropertyName: "ignoreSetClickWhenShowPopover", publicName: "ignoreSetClickWhenShowPopover", isSignal: true, isRequired: false, transformFunction: null }, ignorePointerEvent: { classPropertyName: "ignorePointerEvent", publicName: "ignorePointerEvent", isSignal: true, isRequired: false, transformFunction: null }, isActive: { classPropertyName: "isActive", publicName: "isActive", isSignal: true, isRequired: false, transformFunction: null }, isHandlerEnterDocumentClickButton: { classPropertyName: "isHandlerEnterDocumentClickButton", publicName: "isHandlerEnterDocumentClickButton", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { outClick: "outClick", outPopoverEvent: "outPopoverEvent", outFunctionsControl: "outFunctionsControl" }, viewQueries: [{ propertyName: "buttonEl", first: true, predicate: ["buttonEl"], descendants: true, isSignal: true }], ngImport: i0, template: "@let constHtmlLabel = label() || ' ';\n<libs_ui-components-popover\n [type]=\"popover().type || 'other'\"\n [mode]=\"popover().mode || 'hover'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"popover().ignoreHiddenPopoverContentWhenMouseLeave || false\"\n [ignoreShowPopover]=\"popover().config ? !!popover().ignoreShowPopover : true\"\n [elementRefCustom]=\"popover().elementRefCustom\"\n [config]=\"popover().config || {}\"\n [flagMouse]=\"flagMouse()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n <button\n #buttonEl\n [class]=\"classBinding()\"\n [class.libs-ui-button-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable() && !ignorePointerEvent()\"\n [attr.isPending]=\"isPending()\"\n [attr.isClick]=\"isClick()\"\n [attr.tabindex]=\"ignoreFocusWhenInputTab() ? '-1' : '0'\"\n [attr.hasLabel]=\"(constHtmlLabel | translate) !== ' '\"\n [attr.hasIconLeft]=\"!!classIconLeft()\"\n [attr.hasIconRight]=\"!!classIconRight()\"\n [attr.active]=\"!!isActive()\"\n [ngStyle]=\"styleButton()\"\n (click)=\"handlerClick($event)\">\n @if (imageLeft(); as imageConfig) {\n <img\n [src]=\"imageConfig.src\"\n [class]=\"imageConfig.classInclude || 'mr-[8px]'\" />\n }\n @if (classIconLeft() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconLeft() + ' libs-ui-button-icon-left'\"\n [ngStyle]=\"styleIconLeft()\"></i>\n }\n @if (!iconOnlyType()) {\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{\n zIndex: zIndex(),\n width: widthLabelPopover(),\n }\"\n [class]=\"(classLabel() || '') + ' libs-ui-button-label'\"\n [innerHtml]=\"constHtmlLabel | translate\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\" />\n }\n @if (classIconRight() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconRight() + ' libs-ui-button-icon-right'\"></i>\n }\n @if (isPending()) {\n <div\n class=\"relative\"\n [class.w-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.left-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.ml-[8px]]=\"typeButton() && !iconOnlyType()\">\n <libs_ui-components-spinner\n [type]=\"typeIconLoading()\"\n [size]=\"sizeButton() === 'large' ? 'medium' : sizeButton() === 'smaller' ? 'smaller' : 'small'\" />\n </div>\n }\n </button>\n</libs_ui-components-popover>\n", styles: [".libs-ui-button{display:flex;align-items:center;text-align:center;color:#fff;cursor:pointer}.libs-ui-button.libs-ui-button-theme{display:flex;align-items:center;font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);text-align:center;color:#fff;border:none;border-radius:4px;cursor:pointer}.libs-ui-button.libs-ui-button-theme:focus,.libs-ui-button.libs-ui-button-theme[isClick=true]{outline:none;box-shadow:none}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-left[iconOnlyType=false]{margin-right:8px}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-right[iconOnlyType=false]{margin-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large{border-radius:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=true]{padding:9px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-large, 20px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=false]{padding:11px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-large .libs-ui-button-label{font-size:var(--libs-ui-button-size-large-font-size, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-large-line-height, 24px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=true]{padding:6px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=false]{padding:7px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-medium, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium .libs-ui-button-label{font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=true]{padding:4px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=false]{padding:5px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-small, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-small .libs-ui-button-label{font-size:var(--libs-ui-button-size-small-font-size, 12px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-small-line-height, 18px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=true]{padding:1px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=false]{padding:1px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-smaller, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller .libs-ui-button-label{font-size:var(--libs-ui-button-size-smaller-font-size, 11px);line-height:var(--libs-ui-button-size-smaller-line-height, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color{color:var(--libs-ui-button-other-color-text, white);background:var(--libs-ui-button-other-color-background, #226ff5);border:1px solid var(--libs-ui-button-other-color-border, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]{color:var(--libs-ui-button-other-color-text-hover, white);background:var(--libs-ui-button-other-color-background-hover, #4e8cf7);border:1px solid var(--libs-ui-button-other-color-border-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-hover, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]{color:var(--libs-ui-button-other-color-text-active, white);background:var(--libs-ui-button-other-color-background-active, #1b59c4);border:1px solid var(--libs-ui-button-other-color-border-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-active, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable{cursor:not-allowed;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme[isPending=true]{cursor:not-allowed;pointer-events:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link{padding:0;background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isClick=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]{color:var(--libs-ui-button-link-other-color-text-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable{cursor:not-allowed;pointer-events:none;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{cursor:not-allowed;pointer-events:none}.mo-button-custom-color-icon:before{color:inherit!important}\n"], dependencies: [{ kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i1.TranslatePipe, name: "translate" }, { kind: "component", type: LibsUiComponentsSpinnerComponent, selector: "libs_ui-components-spinner", inputs: ["type", "size"] }, { kind: "component", type: LibsUiComponentsPopoverComponent, selector: "libs_ui-components-popover,[LibsUiComponentsPopoverDirective]", inputs: ["debugId", "flagMouse", "type", "mode", "config", "ignoreShowPopover", "elementRefCustom", "initEventInElementRefCustom", "classInclude", "ignoreHiddenPopoverContentWhenMouseLeave", "ignoreStopPropagationEvent", "ignoreCursorPointerModeLikeClick", "isAddContentToParentDocument", "ignoreClickOutside"], outputs: ["outEvent", "outChangStageFlagMouse", "outEventPopoverContent", "outFunctionsControl"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
171
+ }
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LibsUiComponentsButtonsButtonComponent, decorators: [{
173
+ type: Component,
174
+ args: [{ selector: 'libs_ui-components-buttons-button', standalone: true, imports: [NgStyle, TranslateModule, LibsUiComponentsSpinnerComponent, LibsUiComponentsPopoverComponent], changeDetection: ChangeDetectionStrategy.OnPush, template: "@let constHtmlLabel = label() || ' ';\n<libs_ui-components-popover\n [type]=\"popover().type || 'other'\"\n [mode]=\"popover().mode || 'hover'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"popover().ignoreHiddenPopoverContentWhenMouseLeave || false\"\n [ignoreShowPopover]=\"popover().config ? !!popover().ignoreShowPopover : true\"\n [elementRefCustom]=\"popover().elementRefCustom\"\n [config]=\"popover().config || {}\"\n [flagMouse]=\"flagMouse()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n <button\n #buttonEl\n [class]=\"classBinding()\"\n [class.libs-ui-button-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable() && !ignorePointerEvent()\"\n [attr.isPending]=\"isPending()\"\n [attr.isClick]=\"isClick()\"\n [attr.tabindex]=\"ignoreFocusWhenInputTab() ? '-1' : '0'\"\n [attr.hasLabel]=\"(constHtmlLabel | translate) !== ' '\"\n [attr.hasIconLeft]=\"!!classIconLeft()\"\n [attr.hasIconRight]=\"!!classIconRight()\"\n [attr.active]=\"!!isActive()\"\n [ngStyle]=\"styleButton()\"\n (click)=\"handlerClick($event)\">\n @if (imageLeft(); as imageConfig) {\n <img\n [src]=\"imageConfig.src\"\n [class]=\"imageConfig.classInclude || 'mr-[8px]'\" />\n }\n @if (classIconLeft() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconLeft() + ' libs-ui-button-icon-left'\"\n [ngStyle]=\"styleIconLeft()\"></i>\n }\n @if (!iconOnlyType()) {\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{\n zIndex: zIndex(),\n width: widthLabelPopover(),\n }\"\n [class]=\"(classLabel() || '') + ' libs-ui-button-label'\"\n [innerHtml]=\"constHtmlLabel | translate\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\" />\n }\n @if (classIconRight() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconRight() + ' libs-ui-button-icon-right'\"></i>\n }\n @if (isPending()) {\n <div\n class=\"relative\"\n [class.w-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.left-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.ml-[8px]]=\"typeButton() && !iconOnlyType()\">\n <libs_ui-components-spinner\n [type]=\"typeIconLoading()\"\n [size]=\"sizeButton() === 'large' ? 'medium' : sizeButton() === 'smaller' ? 'smaller' : 'small'\" />\n </div>\n }\n </button>\n</libs_ui-components-popover>\n", styles: [".libs-ui-button{display:flex;align-items:center;text-align:center;color:#fff;cursor:pointer}.libs-ui-button.libs-ui-button-theme{display:flex;align-items:center;font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);text-align:center;color:#fff;border:none;border-radius:4px;cursor:pointer}.libs-ui-button.libs-ui-button-theme:focus,.libs-ui-button.libs-ui-button-theme[isClick=true]{outline:none;box-shadow:none}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-left[iconOnlyType=false]{margin-right:8px}.libs-ui-button.libs-ui-button-theme .libs-ui-button-icon-right[iconOnlyType=false]{margin-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large{border-radius:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=true]{padding:9px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-large, 20px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large[hasLabel=false]{padding:11px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-large span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-large .libs-ui-button-label{font-size:var(--libs-ui-button-size-large-font-size, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-large-line-height, 24px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=true]{padding:6px 16px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconLeft=true]{padding-left:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasIconRight=true]{padding-right:12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium[hasLabel=false]{padding:7px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-medium, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-medium .libs-ui-button-label{font-size:var(--libs-ui-button-size-medium-font-size, 12px);line-height:var(--libs-ui-button-size-medium-line-height, 18px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=true]{padding:4px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small[hasLabel=false]{padding:5px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-small, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-small span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-small .libs-ui-button-label{font-size:var(--libs-ui-button-size-small-font-size, 12px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500;line-height:var(--libs-ui-button-size-small-line-height, 18px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=true]{padding:1px 12px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconLeft=true]{padding-left:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasIconRight=true]{padding-right:8px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller[hasLabel=false]{padding:1px}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller>[class*=libs-ui-button-icon]{font-size:var(--libs-ui-button-size-icon-smaller, 16px)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller span,.libs-ui-button.libs-ui-button-theme.libs-ui-button-smaller .libs-ui-button-label{font-size:var(--libs-ui-button-size-smaller-font-size, 11px);line-height:var(--libs-ui-button-size-smaller-line-height, 16px);font-family:var(--libs-ui-font-family-name, \"Arial\");font-weight:500}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color{color:var(--libs-ui-button-other-color-text, white);background:var(--libs-ui-button-other-color-background, #226ff5);border:1px solid var(--libs-ui-button-other-color-border, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]{color:var(--libs-ui-button-other-color-text-hover, white);background:var(--libs-ui-button-other-color-background-hover, #4e8cf7);border:1px solid var(--libs-ui-button-other-color-border-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-hover, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]{color:var(--libs-ui-button-other-color-text-active, white);background:var(--libs-ui-button-other-color-background-active, #1b59c4);border:1px solid var(--libs-ui-button-other-color-border-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-active, white)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable{cursor:not-allowed;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important;background:var(--libs-ui-button-other-color-background-disable, #f8f9fa);border:1px solid var(--libs-ui-button-other-color-border-disable, #f8f9fa)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-disable:hover>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme[isPending=true]{cursor:not-allowed;pointer-events:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link{padding:0;background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isClick=true]{background:none;border:none}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text, #226ff5)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:hover>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isPending=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #4e8cf7)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true],.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]{color:var(--libs-ui-button-link-other-color-text-active, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:active>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[active=true]>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color:focus>[class*=libs-ui-button-icon]:before,.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-link-other-color[isClick=true]>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-link-other-color-text-hover, #1b59c4)}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable{cursor:not-allowed;pointer-events:none;color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link.libs-ui-button-disable>[class*=libs-ui-button-icon]:before{color:var(--libs-ui-button-other-color-text-disable, #cdd0d6)!important}.libs-ui-button.libs-ui-button-theme.libs-ui-button-link[isPending=true]{cursor:not-allowed;pointer-events:none}.mo-button-custom-color-icon:before{color:inherit!important}\n"] }]
175
+ }], ctorParameters: () => [] });
176
+
177
+ /**
178
+ * Generated bundle index. Do not edit.
179
+ */
180
+
181
+ export { LibsUiComponentsButtonsButtonComponent };
182
+ //# sourceMappingURL=libs-ui-components-buttons-button.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"libs-ui-components-buttons-button.mjs","sources":["../../../../../../libs-ui/components/buttons/button/src/button.component.ts","../../../../../../libs-ui/components/buttons/button/src/button.component.html","../../../../../../libs-ui/components/buttons/button/src/libs-ui-components-buttons-button.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { NgStyle } from '@angular/common';\nimport { AfterViewInit, ChangeDetectionStrategy, Component, effect, ElementRef, inject, input, OnDestroy, output, signal, untracked, viewChild } from '@angular/core';\nimport { IFlagMouse, IPopover, IPopoverFunctionControlEvent, LibsUiComponentsPopoverComponent, TYPE_POPOVER_EVENT } from '@libs-ui/components-popover';\nimport { LibsUiComponentsSpinnerComponent, TYPE_SPINNER } from '@libs-ui/components-spinner';\nimport { IEvent } from '@libs-ui/interfaces-types';\nimport { IColorButton, LibsUiConfigProjectService } from '@libs-ui/services-config-project';\nimport { colorContrastFromOrigin, get, IColorContrastFromOrigin, UtilsKeyCodeConstant } from '@libs-ui/utils';\nimport { TranslateModule } from '@ngx-translate/core';\nimport { fromEvent, Subject, timer } from 'rxjs';\nimport { takeUntil } from 'rxjs/operators';\nimport { TYPE_BUTTON, TYPE_SIZE_BUTTON } from './interfaces/button.interface';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'libs_ui-components-buttons-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n standalone: true,\n imports: [NgStyle, TranslateModule, LibsUiComponentsSpinnerComponent, LibsUiComponentsPopoverComponent],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class LibsUiComponentsButtonsButtonComponent implements AfterViewInit, OnDestroy {\n // #region PROPERTY\n private onDestroy = new Subject<void>();\n private functionsControlPopover = signal<IPopoverFunctionControlEvent | undefined>(undefined);\n\n protected classBinding = signal('');\n protected isClick = signal(false);\n protected typeIconLoading = signal<TYPE_SPINNER>('spin-blue');\n protected typeButton = signal(false);\n\n private configProjectService = inject(LibsUiConfigProjectService);\n\n // #region INPUT\n readonly flagMouse = input<IFlagMouse>({ isMouseEnter: false, isMouseEnterContent: false, isContainerHasScroll: false });\n readonly type = input<TYPE_BUTTON>('button-primary');\n readonly buttonCustom = input<IColorButton>(); // bắt buộc khi type là button-custom hoặc button-link-custom\n readonly sizeButton = input<TYPE_SIZE_BUTTON, TYPE_SIZE_BUTTON | undefined>('medium', { transform: (value) => value ?? 'medium' });\n readonly label = input<string>(' ');\n readonly disable = input<boolean>(false);\n readonly isPending = input<boolean>();\n readonly imageLeft = input<{ src: string; classInclude?: string }>();\n readonly classInclude = input<string>('');\n readonly classIconLeft = input<string>('');\n readonly classIconRight = input<string>('');\n readonly classLabel = input<string>('');\n readonly iconOnlyType = input<boolean>(false);\n readonly popover = input<IPopover>({});\n readonly ignoreStopPropagationEvent = input<boolean, boolean | undefined>(true, { transform: (val) => val ?? true });\n readonly zIndex = input<number>(10);\n readonly widthLabelPopover = input<number>();\n readonly styleIconLeft = input<Record<string, any>>();\n readonly styleButton = input<Record<string, any>>();\n readonly ignoreFocusWhenInputTab = input<boolean>(); // dùng để bỏ qua focus khi bấm nút TAB từ bán phím\n readonly ignoreSetClickWhenShowPopover = input<boolean>();\n readonly ignorePointerEvent = input<boolean>();\n readonly isActive = input<boolean>();\n readonly isHandlerEnterDocumentClickButton = input<boolean>();\n\n // #region OUTPUT\n readonly outClick = output<Event>();\n readonly outPopoverEvent = output<TYPE_POPOVER_EVENT>();\n readonly outFunctionsControl = output<IPopoverFunctionControlEvent>();\n\n /* VIEW CHILD */\n private readonly buttonEl = viewChild.required<ElementRef>('buttonEl');\n\n constructor() {\n effect(() => {\n this.type();\n this.buttonCustom();\n this.sizeButton();\n untracked(() => this.setClassByType());\n });\n }\n\n ngAfterViewInit(): void {\n if (!this.isHandlerEnterDocumentClickButton()) {\n return;\n }\n fromEvent<IEvent>(document, 'keyup')\n .pipe(takeUntil(this.onDestroy))\n .subscribe((e) => {\n if (e.keyCode !== UtilsKeyCodeConstant.ENTER) {\n return;\n }\n this.handlerClick(e);\n });\n }\n\n /* FUNCTIONS */\n protected handlerClick(e: Event) {\n if (!this.ignoreStopPropagationEvent()) {\n e.stopPropagation();\n }\n this.buttonEl()?.nativeElement.blur();\n if (this.disable() || this.isPending()) {\n return;\n }\n this.outClick.emit(e);\n this.isClick.set(true);\n timer(100)\n .pipe(takeUntil(this.onDestroy))\n .subscribe(() => {\n this.isClick.set(false);\n });\n }\n\n protected async handlerPopoverControlEvent(control: IPopoverFunctionControlEvent) {\n this.functionsControlPopover.set(control);\n this.outFunctionsControl.emit(control);\n }\n\n public get FunctionsControl(): IPopoverFunctionControlEvent | undefined {\n return this.functionsControlPopover();\n }\n\n private async setClassByType() {\n if (this.type().search('button') === 0) {\n this.typeButton.set(true);\n }\n this.setClassAndIconLoadingByType();\n const config = this.type().includes('custom') ? this.buttonCustom() : get(this.configProjectService.ConfigButton(), this.type());\n\n if (config) {\n this.setVariableStyles(config.rootColor, config.configStepColor);\n }\n if (!this.sizeButton || !this.typeButton()) {\n return this.classBinding.update((value) => `${value} ${this.classInclude()}`);\n }\n\n switch (this.sizeButton()) {\n case 'large':\n return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-large`);\n case 'medium':\n return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-medium`);\n\n case 'small':\n return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-small`);\n\n case 'smaller':\n return this.classBinding.update((value) => `${value} ${this.classInclude()} libs-ui-button-smaller`);\n }\n }\n\n private async setClassAndIconLoadingByType() {\n if (!this.type) {\n return;\n }\n if (this.type().includes('link')) {\n this.classBinding.set('libs-ui-button libs-ui-button-theme libs-ui-button-link libs-ui-button-link-other-color');\n return this.typeIconLoading.set('spin-blue');\n }\n this.classBinding.set('libs-ui-button libs-ui-button-theme libs-ui-button-other-color');\n if (['button-secondary', 'button-third', 'button-outline', 'button-outline-green'].includes(this.type())) {\n return this.typeIconLoading.set('spin-blue');\n }\n return this.typeIconLoading.set('spin-white');\n }\n\n private async setVariableStyles(color: string, configStep: any) {\n if (!color) {\n return;\n }\n\n const colors = colorContrastFromOrigin(color);\n\n Object.keys(configStep).forEach((key) => {\n const valueStep = get(configStep, key);\n const typeLink = this.type().includes('link');\n\n if (typeof valueStep === 'string') {\n this.buttonEl()?.nativeElement.style.setProperty(`--libs-ui-button${typeLink ? '-link' : ''}-other-color-${key.replace('_', '-')}`, valueStep);\n\n return;\n }\n const color = colors.find((item) => item.step === Math.abs(valueStep));\n\n this.buttonEl()?.nativeElement.style.setProperty(`--libs-ui-button${typeLink ? '-link' : ''}-other-color-${key.replace('_', '-')}`, get((color || {}) as IColorContrastFromOrigin, valueStep < 0 ? 'dark' : 'light'));\n });\n }\n\n protected async handlerPopoverEvent(event: TYPE_POPOVER_EVENT) {\n this.outPopoverEvent.emit(event);\n if (event === 'click') {\n return;\n }\n if (event === 'remove') {\n this.isClick.set(false);\n\n return;\n }\n if (!this.ignoreSetClickWhenShowPopover()) {\n this.isClick.set(true);\n }\n }\n\n ngOnDestroy(): void {\n this.onDestroy.next();\n this.onDestroy.complete();\n }\n}\n","@let constHtmlLabel = label() || ' ';\n<libs_ui-components-popover\n [type]=\"popover().type || 'other'\"\n [mode]=\"popover().mode || 'hover'\"\n [ignoreHiddenPopoverContentWhenMouseLeave]=\"popover().ignoreHiddenPopoverContentWhenMouseLeave || false\"\n [ignoreShowPopover]=\"popover().config ? !!popover().ignoreShowPopover : true\"\n [elementRefCustom]=\"popover().elementRefCustom\"\n [config]=\"popover().config || {}\"\n [flagMouse]=\"flagMouse()\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\"\n (outFunctionsControl)=\"handlerPopoverControlEvent($event)\"\n (outEvent)=\"handlerPopoverEvent($event)\">\n <button\n #buttonEl\n [class]=\"classBinding()\"\n [class.libs-ui-button-disable]=\"disable()\"\n [class.pointer-events-none]=\"disable() && !ignorePointerEvent()\"\n [attr.isPending]=\"isPending()\"\n [attr.isClick]=\"isClick()\"\n [attr.tabindex]=\"ignoreFocusWhenInputTab() ? '-1' : '0'\"\n [attr.hasLabel]=\"(constHtmlLabel | translate) !== ' '\"\n [attr.hasIconLeft]=\"!!classIconLeft()\"\n [attr.hasIconRight]=\"!!classIconRight()\"\n [attr.active]=\"!!isActive()\"\n [ngStyle]=\"styleButton()\"\n (click)=\"handlerClick($event)\">\n @if (imageLeft(); as imageConfig) {\n <img\n [src]=\"imageConfig.src\"\n [class]=\"imageConfig.classInclude || 'mr-[8px]'\" />\n }\n @if (classIconLeft() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconLeft() + ' libs-ui-button-icon-left'\"\n [ngStyle]=\"styleIconLeft()\"></i>\n }\n @if (!iconOnlyType()) {\n <libs_ui-components-popover\n [type]=\"'text'\"\n [config]=\"{\n zIndex: zIndex(),\n width: widthLabelPopover(),\n }\"\n [class]=\"(classLabel() || '') + ' libs-ui-button-label'\"\n [innerHtml]=\"constHtmlLabel | translate\"\n [ignoreStopPropagationEvent]=\"ignoreStopPropagationEvent()\" />\n }\n @if (classIconRight() && (!iconOnlyType() || (iconOnlyType() && !isPending()))) {\n <i\n [attr.iconOnlyType]=\"iconOnlyType()\"\n [class]=\"classIconRight() + ' libs-ui-button-icon-right'\"></i>\n }\n @if (isPending()) {\n <div\n class=\"relative\"\n [class.w-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.left-[16px]]=\"!typeButton() && !iconOnlyType()\"\n [class.ml-[8px]]=\"typeButton() && !iconOnlyType()\">\n <libs_ui-components-spinner\n [type]=\"typeIconLoading()\"\n [size]=\"sizeButton() === 'large' ? 'medium' : sizeButton() === 'smaller' ? 'smaller' : 'small'\" />\n </div>\n }\n </button>\n</libs_ui-components-popover>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './button.component';
2
+ export * from './interfaces';
@@ -0,0 +1,24 @@
1
+ import { IPopover } from '@libs-ui/components-popover';
2
+ import { IColorButton } from '@libs-ui/services-config-project';
3
+ export interface IButton {
4
+ key?: string;
5
+ type?: TYPE_BUTTON;
6
+ sizeButton?: TYPE_SIZE_BUTTON;
7
+ iconOnlyType?: boolean;
8
+ label?: string;
9
+ disable?: boolean;
10
+ classInclude?: string;
11
+ classIconLeft?: string;
12
+ classIconRight?: string;
13
+ classLabel?: string;
14
+ popover?: IPopover;
15
+ ignoreStopPropagationEvent?: boolean;
16
+ zIndex?: number;
17
+ isPending?: boolean;
18
+ action?: (data?: any) => Promise<void>;
19
+ styleIconLeft?: Record<string, any>;
20
+ styleButton?: Record<string, any>;
21
+ buttonCustom?: IColorButton;
22
+ }
23
+ export type TYPE_BUTTON = 'button-primary' | 'button-primary-revert' | 'button-secondary' | 'button-secondary-red' | 'button-outline-secondary' | 'button-third' | 'button-outline' | 'button-danger-high' | 'button-outline-hover-danger' | 'button-third-hover-danger' | 'button-danger-low' | 'button-green' | 'button-violet' | 'button-secondary-green' | 'button-outline-green' | 'button-custom' | 'button-link-primary' | 'button-link-third' | 'button-link-danger-high' | 'button-link-danger-low' | 'button-link-green' | 'button-link-violet' | 'button-link-custom' | string;
24
+ export type TYPE_SIZE_BUTTON = 'large' | 'medium' | 'small' | 'smaller';
@@ -0,0 +1 @@
1
+ export * from './button.interface';
package/package.json ADDED
@@ -0,0 +1,32 @@
1
+ {
2
+ "name": "@libs-ui/components-buttons-button",
3
+ "version": "0.1.1-1",
4
+ "peerDependencies": {
5
+ "@angular/common": ">=18.0.0",
6
+ "@angular/core": ">=18.0.0",
7
+ "@libs-ui/components-popover": "0.1.1-1",
8
+ "@libs-ui/components-spinner": "0.1.1-1",
9
+ "@libs-ui/services-config-project": "0.1.1-1",
10
+ "@libs-ui/utils": "0.1.1-1",
11
+ "@ngx-translate/core": "^15.0.0",
12
+ "rxjs": "~7.8.0",
13
+ "@libs-ui/interfaces-types": "0.1.1-1"
14
+ },
15
+ "sideEffects": false,
16
+ "module": "fesm2022/libs-ui-components-buttons-button.mjs",
17
+ "typings": "index.d.ts",
18
+ "exports": {
19
+ "./package.json": {
20
+ "default": "./package.json"
21
+ },
22
+ ".": {
23
+ "types": "./index.d.ts",
24
+ "esm2022": "./esm2022/libs-ui-components-buttons-button.mjs",
25
+ "esm": "./esm2022/libs-ui-components-buttons-button.mjs",
26
+ "default": "./fesm2022/libs-ui-components-buttons-button.mjs"
27
+ }
28
+ },
29
+ "dependencies": {
30
+ "tslib": "^2.3.0"
31
+ }
32
+ }