@seniorsistemas/angular-components 17.27.1-fix-interactive-content-46e38731 → 17.27.1-fix-interactive-content-22e06381
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/button/lib/button/button.component.d.ts +3 -3
- package/button/lib/button/button.module.d.ts +1 -6
- package/confirm-dialog/README.md +226 -0
- package/confirm-dialog/index.d.ts +5 -0
- package/confirm-dialog/lib/confirm-dialog.model.d.ts +8 -0
- package/confirm-dialog/lib/confirm-dialog.service.d.ts +8 -0
- package/confirm-dialog/lib/popup-confirm-dialog/popup-confirm-dialog.component.d.ts +7 -0
- package/confirm-dialog/package.json +3 -0
- package/confirm-dialog/public-api.d.ts +2 -0
- package/dialog/index.d.ts +5 -0
- package/dialog/lib/src/dialog/dialog.component.d.ts +29 -0
- package/dialog/lib/src/dialog/models/active-dialog.d.ts +11 -0
- package/dialog/lib/src/dialog/models/dialog-models.d.ts +18 -0
- package/dialog/lib/src/dialog/services/dialog.service.d.ts +24 -0
- package/dialog/lib/src/dialog/services/internal-dialog.service.d.ts +10 -0
- package/dialog/package.json +3 -0
- package/dialog/public-api.d.ts +4 -0
- package/dynamic-form/lib/dynamic-form/components/lookup/lookup.component.d.ts +2 -2
- package/dynamic-form/lib/dynamic-form/dynamic-form.module.d.ts +2 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs +16 -25
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs +54 -0
- package/fesm2022/seniorsistemas-angular-components-confirm-dialog.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +221 -0
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -0
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +72 -67
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +11 -7
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs +15 -10
- package/fesm2022/seniorsistemas-angular-components-image-cropper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs +1 -0
- package/fesm2022/seniorsistemas-angular-components-interactive-content.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-select.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-structure.mjs +4 -14
- package/fesm2022/seniorsistemas-angular-components-structure.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs +22 -15
- package/fesm2022/seniorsistemas-angular-components-text-area-ia.mjs.map +1 -1
- package/fieldset/lib/fieldset/fieldset.component.d.ts +7 -5
- package/image-cropper/lib/image-cropper/image-cropper.component.d.ts +2 -0
- package/image-cropper/lib/image-cropper/image-cropper.module.d.ts +6 -5
- package/package.json +16 -2
- package/structure/lib/structure/header.component.d.ts +0 -2
- package/tailwind.css +65 -2
- package/text-area-ia/lib/text-area-ia/text-area-ia.module.d.ts +7 -6
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { EventEmitter, Component, HostBinding, Input, Output, NgModule } from '@angular/core';
|
|
3
|
-
import {
|
|
4
|
-
import * as i1 from '@angular/
|
|
5
|
-
import { CommonModule } from '@angular/common';
|
|
6
|
-
import * as i2 from '@seniorsistemas/angular-components/badge';
|
|
3
|
+
import { NgClass, NgStyle } from '@angular/common';
|
|
4
|
+
import * as i1 from '@seniorsistemas/angular-components/badge';
|
|
7
5
|
import { BadgeModule } from '@seniorsistemas/angular-components/badge';
|
|
8
|
-
import * as
|
|
6
|
+
import * as i2 from '@seniorsistemas/angular-components/tiered-menu';
|
|
9
7
|
import { TieredMenuModule } from '@seniorsistemas/angular-components/tiered-menu';
|
|
10
|
-
import * as
|
|
8
|
+
import * as i3 from '@seniorsistemas/angular-components/tooltip';
|
|
11
9
|
import { TooltipModule } from '@seniorsistemas/angular-components/tooltip';
|
|
12
|
-
import {
|
|
10
|
+
import { randomHash } from '@seniorsistemas/angular-components/utils';
|
|
13
11
|
|
|
14
12
|
class ButtonComponent {
|
|
15
13
|
minWidth = '40px';
|
|
@@ -49,13 +47,19 @@ class ButtonComponent {
|
|
|
49
47
|
return this.animation === 'rotate';
|
|
50
48
|
}
|
|
51
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
52
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ButtonComponent, selector: "s-button", inputs: { id: "id", label: "label", tooltip: "tooltip", tooltipPosition: "tooltipPosition", iconClass: "iconClass", rightIconClass: "rightIconClass", caret: "caret", styleClass: "styleClass", baseZIndex: "baseZIndex", disabled: "disabled", auxiliary: "auxiliary", type: "type", priority: "priority", menuOptions: "menuOptions", size: "size", slide: "slide", animation: "animation", badge: "badge", iconColor: "iconColor" }, outputs: { clicked: "clicked" }, host: { properties: { "class.s-button-with-badge": "!!badge", "style.min-width": "this.minWidth" } }, usesOnChanges: true, ngImport: i0, template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-only-icon': iconClass && !label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon': true,\n 's-button-icon-margin-right': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || menuOptions.length,\n 's-button-icon-margin-left': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"badge\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button{align-items:center;display:inline-flex;justify-content:center;border:1px solid;border-radius:4px;color:#fff;cursor:pointer;font-family:Open Sans,sans-serif;font-size:14px;height:35px;max-width:100%;min-width:40px;outline:none;overflow:visible;padding:5px 10px;position:relative;text-decoration:none;text-transform:none;transition:background-color .2s ease-out,border-color .2s ease-out,color .2s ease-out}button:disabled{background-image:none;cursor:text;filter:Alpha(Opacity=50);opacity:.5}button.s-button-auxiliary{border-radius:20px}button.s-button-size-small{height:25px}button.s-button-size-small.s-button-only-icon{max-width:24px;max-height:24px;min-width:24px}button.s-button-size-default{height:35px}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}button .s-button-icon,button .s-button-right-icon,button .s-button-menu-icon,button.s-button-with-icon.s-button-multiple:not(.s-button-with-text) .s-button-icon{align-items:center;display:inline-flex;justify-content:center}button.s-button-multiple .s-button-text{align-items:left;display:inline-flex;justify-content:left}button.s-button-with-icon .s-button-text{align-items:right;display:inline-flex;justify-content:right}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .s-button-icon,button.s-button-priority-primary .s-button-right-icon,button.s-button-priority-primary .s-button-text,button.s-button-priority-primary .s-button-menu-icon{color:#fff}button.s-button-priority-primary:hover{background-color:#2a6496}button.s-button-priority-primary:focus{background-color:#2a6496;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#245682;border-color:#245682}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .s-button-icon,button.s-button-priority-secondary .s-button-right-icon,button.s-button-priority-secondary .s-button-text,button.s-button-priority-secondary .s-button-menu-icon{color:#fff}button.s-button-priority-secondary:hover{background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#495e6a;border-color:#495e6a}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-default{background-color:#fff;border-color:#ccc}button.s-button-priority-default .s-button-icon,button.s-button-priority-default .s-button-right-icon,button.s-button-priority-default .s-button-text,button.s-button-priority-default .s-button-menu-icon{color:#333}button.s-button-priority-default:hover{background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-auxiliary.s-button-only-icon{border-radius:50%}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover{background-color:transparent}button.s-button-priority-link:hover .s-button-icon,button.s-button-priority-link:hover .s-button-right-icon,button.s-button-priority-link:hover .s-button-text,button.s-button-priority-link:hover .s-button-menu-icon{color:#2a6496}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2a6496}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#245682}.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}.s-button-priority-danger .s-button-icon,.s-button-priority-danger .s-button-right-icon,.s-button-priority-danger .s-button-text,.s-button-priority-danger .s-button-menu-icon{color:#fff}.s-button-priority-danger:hover{background-color:#642525}.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}.s-button-priority-danger:active:not(:disabled),.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}.s-button-priority-danger .menu-options-icon{color:#fff}.s-button-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-button-menu-icon{right:10px;transition:transform .2s ease-out}.s-button-icon-margin-left{margin-left:10px}.s-button-icon-margin-right{margin-right:10px}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover.s-button--rotate-animation .s-button-icon,.s-button--slide:hover.s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.badge{z-index:99;position:relative;right:15px;bottom:16px}.menu-options-icon{color:#212533}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i2.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign"], outputs: ["selected"] }, { kind: "directive", type: i3.TieredMenuDirective, selector: "[sTieredMenu]", inputs: ["items", "focusedItem", "triggerEvent"] }, { kind: "directive", type: i4.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef"] }] });
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: ButtonComponent, isStandalone: true, selector: "s-button", inputs: { id: "id", label: "label", tooltip: "tooltip", tooltipPosition: "tooltipPosition", iconClass: "iconClass", rightIconClass: "rightIconClass", caret: "caret", styleClass: "styleClass", baseZIndex: "baseZIndex", disabled: "disabled", auxiliary: "auxiliary", type: "type", priority: "priority", menuOptions: "menuOptions", size: "size", slide: "slide", animation: "animation", badge: "badge", iconColor: "iconColor" }, outputs: { clicked: "clicked" }, host: { properties: { "class.s-button-with-badge": "!!badge", "style.min-width": "this.minWidth" } }, usesOnChanges: true, ngImport: i0, template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-only-icon': iconClass && !label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon': true,\n 's-button-icon-margin-right': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || menuOptions.length,\n 's-button-icon-margin-left': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"badge\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button{align-items:center;display:inline-flex;justify-content:center;border:1px solid;border-radius:4px;color:#fff;cursor:pointer;font-family:Open Sans,sans-serif;font-size:14px;height:35px;max-width:100%;min-width:40px;outline:none;overflow:visible;padding:5px 10px;position:relative;text-decoration:none;text-transform:none;transition:background-color .2s ease-out,border-color .2s ease-out,color .2s ease-out}button:disabled{background-image:none;cursor:text;filter:Alpha(Opacity=50);opacity:.5}button.s-button-auxiliary{border-radius:20px}button.s-button-size-small{height:25px}button.s-button-size-small.s-button-only-icon{max-width:24px;max-height:24px;min-width:24px}button.s-button-size-default{height:35px}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}button .s-button-icon,button .s-button-right-icon,button .s-button-menu-icon,button.s-button-with-icon.s-button-multiple:not(.s-button-with-text) .s-button-icon{align-items:center;display:inline-flex;justify-content:center}button.s-button-multiple .s-button-text{align-items:left;display:inline-flex;justify-content:left}button.s-button-with-icon .s-button-text{align-items:right;display:inline-flex;justify-content:right}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .s-button-icon,button.s-button-priority-primary .s-button-right-icon,button.s-button-priority-primary .s-button-text,button.s-button-priority-primary .s-button-menu-icon{color:#fff}button.s-button-priority-primary:hover{background-color:#2a6496}button.s-button-priority-primary:focus{background-color:#2a6496;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#245682;border-color:#245682}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .s-button-icon,button.s-button-priority-secondary .s-button-right-icon,button.s-button-priority-secondary .s-button-text,button.s-button-priority-secondary .s-button-menu-icon{color:#fff}button.s-button-priority-secondary:hover{background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#495e6a;border-color:#495e6a}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-default{background-color:#fff;border-color:#ccc}button.s-button-priority-default .s-button-icon,button.s-button-priority-default .s-button-right-icon,button.s-button-priority-default .s-button-text,button.s-button-priority-default .s-button-menu-icon{color:#333}button.s-button-priority-default:hover{background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-auxiliary.s-button-only-icon{border-radius:50%}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover{background-color:transparent}button.s-button-priority-link:hover .s-button-icon,button.s-button-priority-link:hover .s-button-right-icon,button.s-button-priority-link:hover .s-button-text,button.s-button-priority-link:hover .s-button-menu-icon{color:#2a6496}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2a6496}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#245682}.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}.s-button-priority-danger .s-button-icon,.s-button-priority-danger .s-button-right-icon,.s-button-priority-danger .s-button-text,.s-button-priority-danger .s-button-menu-icon{color:#fff}.s-button-priority-danger:hover{background-color:#642525}.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}.s-button-priority-danger:active:not(:disabled),.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}.s-button-priority-danger .menu-options-icon{color:#fff}.s-button-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-button-menu-icon{right:10px;transition:transform .2s ease-out}.s-button-icon-margin-left{margin-left:10px}.s-button-icon-margin-right{margin-right:10px}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover.s-button--rotate-animation .s-button-icon,.s-button--slide:hover.s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.badge{z-index:99;position:relative;right:15px;bottom:16px}.menu-options-icon{color:#212533}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "ngmodule", type: BadgeModule }, { kind: "component", type: i1.BadgeComponent, selector: "s-badge", inputs: ["type", "color", "title", "text", "selectable", "iconClass", "iconPosition", "infoSign"], outputs: ["selected"] }, { kind: "ngmodule", type: TieredMenuModule }, { kind: "directive", type: i2.TieredMenuDirective, selector: "[sTieredMenu]", inputs: ["items", "focusedItem", "triggerEvent"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i3.TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef"] }] });
|
|
53
51
|
}
|
|
54
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonComponent, decorators: [{
|
|
55
53
|
type: Component,
|
|
56
54
|
args: [{ selector: 's-button', host: {
|
|
57
55
|
'[class.s-button-with-badge]': '!!badge'
|
|
58
|
-
},
|
|
56
|
+
}, standalone: true, imports: [
|
|
57
|
+
NgClass,
|
|
58
|
+
NgStyle,
|
|
59
|
+
BadgeModule,
|
|
60
|
+
TieredMenuModule,
|
|
61
|
+
TooltipModule,
|
|
62
|
+
], template: "<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-only-icon': iconClass && !label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon': true,\n 's-button-icon-margin-right': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || menuOptions.length,\n 's-button-icon-margin-left': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"badge\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n", styles: [":host{display:inline-flex;position:relative}:host.s-button-with-badge{margin-right:-15px}button{align-items:center;display:inline-flex;justify-content:center;border:1px solid;border-radius:4px;color:#fff;cursor:pointer;font-family:Open Sans,sans-serif;font-size:14px;height:35px;max-width:100%;min-width:40px;outline:none;overflow:visible;padding:5px 10px;position:relative;text-decoration:none;text-transform:none;transition:background-color .2s ease-out,border-color .2s ease-out,color .2s ease-out}button:disabled{background-image:none;cursor:text;filter:Alpha(Opacity=50);opacity:.5}button.s-button-auxiliary{border-radius:20px}button.s-button-size-small{height:25px}button.s-button-size-small.s-button-only-icon{max-width:24px;max-height:24px;min-width:24px}button.s-button-size-default{height:35px}button.s-button-with-text,button.s-button-with-icon.s-button-multiple{min-width:80px}button.s-button-with-icon.s-button-with-text.s-button-multiple{min-width:100px}button.s-button-multiple.s-button-size-small.s-button-empty{width:25px;min-width:25px}button .s-button-icon,button .s-button-right-icon,button .s-button-menu-icon,button.s-button-with-icon.s-button-multiple:not(.s-button-with-text) .s-button-icon{align-items:center;display:inline-flex;justify-content:center}button.s-button-multiple .s-button-text{align-items:left;display:inline-flex;justify-content:left}button.s-button-with-icon .s-button-text{align-items:right;display:inline-flex;justify-content:right}button.s-button-priority-primary{background-color:#428bca;border-color:#428bca}button.s-button-priority-primary .s-button-icon,button.s-button-priority-primary .s-button-right-icon,button.s-button-priority-primary .s-button-text,button.s-button-priority-primary .s-button-menu-icon{color:#fff}button.s-button-priority-primary:hover{background-color:#2a6496}button.s-button-priority-primary:focus{background-color:#2a6496;border-color:#22dce6}button.s-button-priority-primary:active:not(:disabled),button.s-button-priority-primary.s-button-active:not(:disabled){background-color:#245682;border-color:#245682}button.s-button-priority-primary .menu-options-icon{color:#fff}button.s-button-priority-secondary{background-color:#7892a1;border-color:#7892a1}button.s-button-priority-secondary .s-button-icon,button.s-button-priority-secondary .s-button-right-icon,button.s-button-priority-secondary .s-button-text,button.s-button-priority-secondary .s-button-menu-icon{color:#fff}button.s-button-priority-secondary:hover{background-color:#546b79}button.s-button-priority-secondary:focus{background-color:#546b79;border-color:#22dce6}button.s-button-priority-secondary:active:not(:disabled),button.s-button-priority-secondary.s-button-active:not(:disabled){background-color:#495e6a;border-color:#495e6a}button.s-button-priority-secondary .menu-options-icon{color:#fff}button.s-button-priority-default{background-color:#fff;border-color:#ccc}button.s-button-priority-default .s-button-icon,button.s-button-priority-default .s-button-right-icon,button.s-button-priority-default .s-button-text,button.s-button-priority-default .s-button-menu-icon{color:#333}button.s-button-priority-default:hover{background-color:#d9d9d9}button.s-button-priority-default:focus{background-color:#d9d9d9;border-color:#22dce6}button.s-button-priority-default:active:not(:disabled),button.s-button-priority-default.s-button-active:not(:disabled){background-color:#ccc;border-color:#ccc}button.s-button-priority-default .menu-options-icon{color:#333}button.s-button-auxiliary.s-button-only-icon{border-radius:50%}button.s-button-priority-link{background-color:transparent;border-color:transparent}button.s-button-priority-link .s-button-icon,button.s-button-priority-link .s-button-right-icon,button.s-button-priority-link .s-button-text,button.s-button-priority-link .s-button-menu-icon{color:#428bca}button.s-button-priority-link:hover{background-color:transparent}button.s-button-priority-link:hover .s-button-icon,button.s-button-priority-link:hover .s-button-right-icon,button.s-button-priority-link:hover .s-button-text,button.s-button-priority-link:hover .s-button-menu-icon{color:#2a6496}button.s-button-priority-link:focus{background-color:transparent;border-color:#22dce6}button.s-button-priority-link:focus .s-button-icon,button.s-button-priority-link:focus .s-button-right-icon,button.s-button-priority-link:focus .s-button-text,button.s-button-priority-link:focus .s-button-menu-icon{color:#2a6496}button.s-button-priority-link:active:not(:disabled),button.s-button-priority-link.s-button-active:not(:disabled){background-color:transparent;border-color:transparent}button.s-button-priority-link:active:not(:disabled) .s-button-icon,button.s-button-priority-link:active:not(:disabled) .s-button-right-icon,button.s-button-priority-link:active:not(:disabled) .s-button-text,button.s-button-priority-link:active:not(:disabled) .s-button-menu-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-right-icon,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-text,button.s-button-priority-link.s-button-active:not(:disabled) .s-button-menu-icon{color:#245682}.s-button-priority-danger{background-color:#9c3a3a;border-color:#9c3a3a}.s-button-priority-danger .s-button-icon,.s-button-priority-danger .s-button-right-icon,.s-button-priority-danger .s-button-text,.s-button-priority-danger .s-button-menu-icon{color:#fff}.s-button-priority-danger:hover{background-color:#642525}.s-button-priority-danger:focus{background-color:#642525;border-color:#22dce6}.s-button-priority-danger:active:not(:disabled),.s-button-priority-danger.s-button-active:not(:disabled){background-color:#521e1e;border-color:#521e1e}.s-button-priority-danger .menu-options-icon{color:#fff}.s-button-text{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.s-button-menu-icon{right:10px;transition:transform .2s ease-out}.s-button-icon-margin-left{margin-left:10px}.s-button-icon-margin-right{margin-right:10px}.s-button-active .s-button-menu-icon{transform:rotateX(180deg)}.s-button--slide.s-button-with-text,.s-button--slide.s-button-with-icon.s-button-multiple{min-width:40px}.s-button--slide .s-button-text{opacity:0;position:absolute;width:0}.s-button--slide:hover .s-button-text{opacity:1;position:relative;transition:1s ease;width:auto}.s-button--slide:hover.s-button--rotate-animation .s-button-icon,.s-button--slide:hover.s-button--rotate-animation .s-button-right-icon{transform:rotate(360deg);transition:1.5s ease}.badge{z-index:99;position:relative;right:15px;bottom:16px}.menu-options-icon{color:#212533}\n"] }]
|
|
59
63
|
}], propDecorators: { minWidth: [{
|
|
60
64
|
type: HostBinding,
|
|
61
65
|
args: ['style.min-width']
|
|
@@ -103,28 +107,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
|
|
|
103
107
|
|
|
104
108
|
class ButtonModule {
|
|
105
109
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
106
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ButtonModule,
|
|
107
|
-
|
|
108
|
-
BadgeModule,
|
|
109
|
-
TieredMenuModule,
|
|
110
|
-
TooltipModule], exports: [ButtonComponent] });
|
|
111
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonModule, imports: [CommonModule,
|
|
112
|
-
RouterModule,
|
|
113
|
-
BadgeModule,
|
|
114
|
-
TieredMenuModule,
|
|
115
|
-
TooltipModule] });
|
|
110
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.13", ngImport: i0, type: ButtonModule, imports: [ButtonComponent], exports: [ButtonComponent] });
|
|
111
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonModule, imports: [ButtonComponent] });
|
|
116
112
|
}
|
|
117
113
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ButtonModule, decorators: [{
|
|
118
114
|
type: NgModule,
|
|
119
115
|
args: [{
|
|
120
116
|
imports: [
|
|
121
|
-
|
|
122
|
-
RouterModule,
|
|
123
|
-
BadgeModule,
|
|
124
|
-
TieredMenuModule,
|
|
125
|
-
TooltipModule,
|
|
117
|
+
ButtonComponent,
|
|
126
118
|
],
|
|
127
|
-
declarations: [ButtonComponent],
|
|
128
119
|
exports: [ButtonComponent],
|
|
129
120
|
}]
|
|
130
121
|
}] });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-button.mjs","sources":["../../projects/angular-components/button/src/lib/button/button.component.ts","../../projects/angular-components/button/src/lib/button/button.component.html","../../projects/angular-components/button/src/lib/button/button.module.ts","../../projects/angular-components/button/src/seniorsistemas-angular-components-button.ts"],"sourcesContent":["import { Component, EventEmitter, HostBinding, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { ButtonAnimations } from './models/button-animations';\nimport { ButtonBadgeConfig } from './models/button-badge-config';\nimport { ButtonPriority } from './models/button-priority';\nimport { TooltipPositions } from '@seniorsistemas/angular-components/tooltip';\nimport { TieredMenuItemData } from '@seniorsistemas/angular-components/tiered-menu';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\n\n@Component({\n selector: 's-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n host: {\n '[class.s-button-with-badge]': '!!badge'\n }\n})\nexport class ButtonComponent implements OnChanges {\n @HostBinding('style.min-width')\n public minWidth = '40px';\n\n @Input()\n public id? = `s-button-${randomHash()}`;\n\n @Input()\n public label?: string;\n\n @Input()\n public tooltip?: string;\n\n @Input()\n public tooltipPosition: TooltipPositions = 'top';\n\n @Input()\n public iconClass?: string;\n\n @Input()\n public rightIconClass?: string;\n\n @Input()\n public caret = true;\n\n @Input()\n public styleClass = '';\n\n @Input()\n public baseZIndex = 0;\n\n @Input()\n public disabled = false;\n\n @Input()\n public auxiliary = false;\n\n @Input()\n public type? = 'button';\n\n @Input()\n public priority?: ButtonPriority = 'primary';\n\n @Input()\n public menuOptions: TieredMenuItemData[] = [];\n\n @Input()\n public size?: 'default' | 'small' = 'default';\n\n @Input()\n public slide = false;\n\n @Input()\n public animation?: ButtonAnimations;\n\n @Input()\n public badge?: ButtonBadgeConfig;\n\n @Input()\n public iconColor? = \"#212533\";\n\n @Output()\n public clicked: EventEmitter<any> = new EventEmitter();\n\n public validateSlideButton(): boolean {\n return !!(this.slide && (this.priority === 'default' || this.priority === 'link') && this.label?.length);\n }\n\n public ngOnChanges(_: SimpleChanges): void {\n const hasIcon = this.iconClass;\n const hasText = this.label;\n\n const isMultiple = this.menuOptions?.length;\n\n if (hasText || (hasIcon && isMultiple)) this.minWidth = '80px';\n if (hasText && hasIcon && isMultiple) this.minWidth = '100px';\n }\n\n public isRotateAnimation(): boolean {\n return this.animation === 'rotate';\n }\n}\n","<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-only-icon': iconClass && !label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon': true,\n 's-button-icon-margin-right': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || menuOptions.length,\n 's-button-icon-margin-left': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"badge\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { RouterModule } from '@angular/router';\n\nimport { ButtonComponent } from './button.component';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\nimport { TieredMenuModule } from '@seniorsistemas/angular-components/tiered-menu';\n\n@NgModule({\n imports: [\n CommonModule,\n RouterModule,\n BadgeModule,\n TieredMenuModule,\n TooltipModule,\n ],\n declarations: [ButtonComponent],\n exports: [ButtonComponent],\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-button.mjs","sources":["../../projects/angular-components/button/src/lib/button/button.component.ts","../../projects/angular-components/button/src/lib/button/button.component.html","../../projects/angular-components/button/src/lib/button/button.module.ts","../../projects/angular-components/button/src/seniorsistemas-angular-components-button.ts"],"sourcesContent":["import { Component, EventEmitter, HostBinding, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\n\nimport { NgClass, NgStyle } from '@angular/common';\nimport { BadgeModule } from '@seniorsistemas/angular-components/badge';\nimport { TieredMenuItemData, TieredMenuModule } from '@seniorsistemas/angular-components/tiered-menu';\nimport { TooltipModule, TooltipPositions } from '@seniorsistemas/angular-components/tooltip';\nimport { randomHash } from '@seniorsistemas/angular-components/utils';\nimport { ButtonAnimations } from './models/button-animations';\nimport { ButtonBadgeConfig } from './models/button-badge-config';\nimport { ButtonPriority } from './models/button-priority';\n\n@Component({\n selector: 's-button',\n templateUrl: './button.component.html',\n styleUrls: ['./button.component.scss'],\n host: {\n '[class.s-button-with-badge]': '!!badge'\n },\n standalone: true,\n imports: [\n NgClass,\n NgStyle,\n BadgeModule,\n TieredMenuModule,\n TooltipModule,\n ]\n})\nexport class ButtonComponent implements OnChanges {\n @HostBinding('style.min-width')\n public minWidth = '40px';\n\n @Input()\n public id? = `s-button-${randomHash()}`;\n\n @Input()\n public label?: string;\n\n @Input()\n public tooltip?: string;\n\n @Input()\n public tooltipPosition: TooltipPositions = 'top';\n\n @Input()\n public iconClass?: string;\n\n @Input()\n public rightIconClass?: string;\n\n @Input()\n public caret = true;\n\n @Input()\n public styleClass = '';\n\n @Input()\n public baseZIndex = 0;\n\n @Input()\n public disabled = false;\n\n @Input()\n public auxiliary = false;\n\n @Input()\n public type? = 'button';\n\n @Input()\n public priority?: ButtonPriority = 'primary';\n\n @Input()\n public menuOptions: TieredMenuItemData[] = [];\n\n @Input()\n public size?: 'default' | 'small' = 'default';\n\n @Input()\n public slide = false;\n\n @Input()\n public animation?: ButtonAnimations;\n\n @Input()\n public badge?: ButtonBadgeConfig;\n\n @Input()\n public iconColor? = \"#212533\";\n\n @Output()\n public clicked: EventEmitter<any> = new EventEmitter();\n\n public validateSlideButton(): boolean {\n return !!(this.slide && (this.priority === 'default' || this.priority === 'link') && this.label?.length);\n }\n\n public ngOnChanges(_: SimpleChanges): void {\n const hasIcon = this.iconClass;\n const hasText = this.label;\n\n const isMultiple = this.menuOptions?.length;\n\n if (hasText || (hasIcon && isMultiple)) this.minWidth = '80px';\n if (hasText && hasIcon && isMultiple) this.minWidth = '100px';\n }\n\n public isRotateAnimation(): boolean {\n return this.animation === 'rotate';\n }\n}\n","<button\n [id]=\"id\"\n [type]=\"type\"\n [class]=\"styleClass\"\n [ngClass]=\"{\n 's-button-auxiliary': auxiliary,\n 's-button-with-icon': iconClass,\n 's-button-with-text': label,\n 's-button-only-icon': iconClass && !label,\n 's-button-empty': !iconClass && !label,\n 's-button-size-default': size === 'default',\n 's-button-size-small': size === 'small',\n 's-button-priority-default': priority === 'default',\n 's-button-priority-primary': priority === 'primary',\n 's-button-priority-secondary': priority === 'secondary',\n 's-button-priority-link': priority === 'link',\n 's-button-priority-danger': priority === 'danger',\n 's-button-multiple': (caret && menuOptions.length) || rightIconClass,\n 's-button--slide': validateSlideButton(),\n 's-button--rotate-animation': isRotateAnimation(),\n }\"\n sTieredMenu\n [items]=\"menuOptions\"\n [disabled]=\"disabled\"\n [sTooltip]=\"tooltip\"\n [tooltipPosition]=\"tooltipPosition\"\n (click)=\"clicked.emit($event)\"\n>\n @if (iconClass) {\n <span\n [class]=\"iconClass\"\n [ngClass]=\"{\n 's-button-icon': true,\n 's-button-icon-margin-right': !label && menuOptions.length,\n }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if (label) {\n <span\n class=\"s-button-text\"\n [ngClass]=\"{\n 's-button-icon-margin-right': !!rightIconClass || menuOptions.length,\n 's-button-icon-margin-left': !!iconClass,\n }\"\n >\n {{ label }}\n </span>\n }\n <ng-content></ng-content>\n @if (rightIconClass) {\n <span\n [class]=\"rightIconClass\"\n [ngClass]=\"{ 's-button-right-icon': true }\"\n [ngStyle]=\"{ color: iconColor }\"\n aria-hidden=\"true\"\n >\n </span>\n }\n @if ((caret && menuOptions.length) || (menuOptions && menuOptions.length)) {\n <span\n class=\"menu-options-icon fa fa-fw fa-caret-down\"\n aria-hidden=\"true\"\n >\n </span>\n }\n</button>\n@if (badge) {\n <div class=\"badge\">\n <s-badge\n [color]=\"badge.color\"\n [text]=\"badge.text\"\n [iconClass]=\"badge.iconClass\"\n >\n </s-badge>\n </div>\n}\n","import { NgModule } from '@angular/core';\n\nimport { ButtonComponent } from './button.component';\n\n@NgModule({\n imports: [\n ButtonComponent,\n ],\n exports: [ButtonComponent],\n})\nexport class ButtonModule { }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import * as i0 from '@angular/core';
|
|
2
|
+
import { Component, inject, Injectable } from '@angular/core';
|
|
3
|
+
import { DialogComponent, DialogService } from '@seniorsistemas/angular-components/dialog';
|
|
4
|
+
import * as i1 from '@seniorsistemas/angular-components/template';
|
|
5
|
+
import { TemplateModule } from '@seniorsistemas/angular-components/template';
|
|
6
|
+
import * as i2 from '@seniorsistemas/angular-components/button';
|
|
7
|
+
import { ButtonModule } from '@seniorsistemas/angular-components/button';
|
|
8
|
+
import { take } from 'rxjs';
|
|
9
|
+
|
|
10
|
+
class PopupConfirmDialogComponent {
|
|
11
|
+
confirmDialog;
|
|
12
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopupConfirmDialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
13
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: PopupConfirmDialogComponent, isStandalone: true, selector: "ng-component", ngImport: i0, template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n label=\"A\u00E7\u00E3o secund\u00E1ria\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n priority=\"primary\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n", dependencies: [{ kind: "component", type: DialogComponent, selector: "s-dialog", inputs: ["header", "visible", "size", "contentClassName", "escapeOnEsc", "destroyClickOutside"], outputs: ["visibleChange"] }, { kind: "ngmodule", type: TemplateModule }, { kind: "directive", type: i1.TemplateDirective, selector: "[sTemplate]", inputs: ["sTemplate"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor"], outputs: ["clicked"] }] });
|
|
14
|
+
}
|
|
15
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: PopupConfirmDialogComponent, decorators: [{
|
|
16
|
+
type: Component,
|
|
17
|
+
args: [{ standalone: true, imports: [DialogComponent, TemplateModule, ButtonModule], template: "@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n label=\"A\u00E7\u00E3o secund\u00E1ria\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n priority=\"primary\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n" }]
|
|
18
|
+
}] });
|
|
19
|
+
|
|
20
|
+
class ConfirmDialogService {
|
|
21
|
+
dialogService = inject(DialogService);
|
|
22
|
+
confirm(confirmDialog) {
|
|
23
|
+
const dialogRef = this.dialogService.open(PopupConfirmDialogComponent);
|
|
24
|
+
dialogRef.componentInstance.confirmDialog = confirmDialog;
|
|
25
|
+
dialogRef.closed.pipe(take(1)).subscribe((response) => {
|
|
26
|
+
if (response) {
|
|
27
|
+
confirmDialog.accept();
|
|
28
|
+
}
|
|
29
|
+
else if (!response && confirmDialog.reject) {
|
|
30
|
+
confirmDialog.reject();
|
|
31
|
+
}
|
|
32
|
+
});
|
|
33
|
+
dialogRef.dismissed.pipe(take(1)).subscribe(() => {
|
|
34
|
+
if (confirmDialog.reject) {
|
|
35
|
+
confirmDialog.reject();
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
40
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmDialogService, providedIn: 'root' });
|
|
41
|
+
}
|
|
42
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: ConfirmDialogService, decorators: [{
|
|
43
|
+
type: Injectable,
|
|
44
|
+
args: [{
|
|
45
|
+
providedIn: 'root'
|
|
46
|
+
}]
|
|
47
|
+
}] });
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Generated bundle index. Do not edit.
|
|
51
|
+
*/
|
|
52
|
+
|
|
53
|
+
export { ConfirmDialogService };
|
|
54
|
+
//# sourceMappingURL=seniorsistemas-angular-components-confirm-dialog.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-confirm-dialog.mjs","sources":["../../projects/angular-components/confirm-dialog/src/lib/popup-confirm-dialog/popup-confirm-dialog.component.ts","../../projects/angular-components/confirm-dialog/src/lib/popup-confirm-dialog/popup-confirm-dialog.component.html","../../projects/angular-components/confirm-dialog/src/lib/confirm-dialog.service.ts","../../projects/angular-components/confirm-dialog/src/seniorsistemas-angular-components-confirm-dialog.ts"],"sourcesContent":["import { Component } from '@angular/core';\nimport { DialogComponent } from '@seniorsistemas/angular-components/dialog';\nimport { ConfirmDialog } from '../confirm-dialog.model';\nimport { TemplateModule } from '@seniorsistemas/angular-components/template';\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\n\n@Component({\n standalone: true,\n imports: [DialogComponent, TemplateModule, ButtonModule],\n templateUrl: './popup-confirm-dialog.component.html',\n})\nexport class PopupConfirmDialogComponent {\n confirmDialog!: ConfirmDialog\n}\n","@if (confirmDialog) {\n <s-dialog [header]=\"confirmDialog.header\">\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12\">\n {{ confirmDialog.message }}\n </div>\n </div>\n <ng-template\n sTemplate=\"footer\"\n let-activeDialog=\"activeDialog\"\n >\n <div class=\"grid grid-cols-12\">\n <div class=\"col-span-12 flex flex-wrap justify-end gap-3\">\n @if (confirmDialog.rejectLabel) {\n <s-button\n [label]=\"confirmDialog.rejectLabel\"\n (clicked)=\"activeDialog.close(false)\"\n label=\"Ação secundária\"\n priority=\"link\"\n />\n }\n <s-button\n [label]=\"confirmDialog.acceptLabel\"\n (clicked)=\"activeDialog.close(true)\"\n priority=\"primary\"\n />\n </div>\n </div>\n </ng-template>\n </s-dialog>\n}\n","import { inject, Injectable } from '@angular/core';\nimport { ConfirmDialog } from './confirm-dialog.model';\nimport { DialogService } from '@seniorsistemas/angular-components/dialog';\nimport { PopupConfirmDialogComponent } from './popup-confirm-dialog/popup-confirm-dialog.component';\nimport { take } from 'rxjs';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConfirmDialogService {\n private readonly dialogService = inject(DialogService);\n\n confirm(confirmDialog: ConfirmDialog) {\n const dialogRef = this.dialogService.open(PopupConfirmDialogComponent);\n\n dialogRef.componentInstance.confirmDialog = confirmDialog;\n\n dialogRef.closed.pipe(take(1)).subscribe((response) => {\n if (response) {\n confirmDialog.accept()\n } else if (!response && confirmDialog.reject) {\n confirmDialog.reject();\n }\n })\n\n dialogRef.dismissed.pipe(take(1)).subscribe(() => {\n if (confirmDialog.reject) {\n confirmDialog.reject()\n }\n })\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { NgTemplateOutlet, NgClass } from '@angular/common';
|
|
2
|
+
import * as i0 from '@angular/core';
|
|
3
|
+
import { inject, Injector, Injectable, input, model, ViewContainerRef, viewChild, contentChildren, computed, Component } from '@angular/core';
|
|
4
|
+
import { toObservable } from '@angular/core/rxjs-interop';
|
|
5
|
+
import { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';
|
|
6
|
+
import { TemplateDirective } from '@seniorsistemas/angular-components/template';
|
|
7
|
+
import { Subject, take, takeUntil } from 'rxjs';
|
|
8
|
+
import { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
9
|
+
import { Overlay } from '@angular/cdk/overlay';
|
|
10
|
+
|
|
11
|
+
class ActiveDialog {
|
|
12
|
+
dialogSize = 'md';
|
|
13
|
+
escapeOnEsc = true;
|
|
14
|
+
_close = new Subject();
|
|
15
|
+
_dismiss = new Subject();
|
|
16
|
+
close(result) {
|
|
17
|
+
this._close.next(result);
|
|
18
|
+
this._close.complete();
|
|
19
|
+
}
|
|
20
|
+
dismiss(reason) {
|
|
21
|
+
this._dismiss.next(reason);
|
|
22
|
+
this._dismiss.complete();
|
|
23
|
+
}
|
|
24
|
+
onClose$ = this._close.asObservable();
|
|
25
|
+
onDismiss$ = this._dismiss.asObservable();
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
class DialogService {
|
|
29
|
+
activeDialogInstances = [];
|
|
30
|
+
overlay = inject(Overlay);
|
|
31
|
+
injector = inject(Injector);
|
|
32
|
+
constructor() {
|
|
33
|
+
this.checkEscapeEvent();
|
|
34
|
+
}
|
|
35
|
+
open(componentRef, options) {
|
|
36
|
+
const createdComponent = this.createComponent(componentRef, options);
|
|
37
|
+
return {
|
|
38
|
+
componentInstance: createdComponent.componentInstance,
|
|
39
|
+
closed: createdComponent.activeDialog.onClose$,
|
|
40
|
+
dismissed: createdComponent.activeDialog.onDismiss$
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
createComponent(componentRef, dialogOptions) {
|
|
44
|
+
const injector = this.dialogInjector;
|
|
45
|
+
const overlayRef = this.getOverlayRef();
|
|
46
|
+
const portal = new ComponentPortal(componentRef, null, injector);
|
|
47
|
+
const _componentRef = overlayRef.attach(portal);
|
|
48
|
+
const activeDialog = this.getActiveDialog(injector);
|
|
49
|
+
this.activeDialogInstances.push(activeDialog);
|
|
50
|
+
this.applyDialogOptionsIntoActiveDialog(activeDialog, dialogOptions);
|
|
51
|
+
this.handleDialogDestroyEvents(injector, overlayRef, dialogOptions);
|
|
52
|
+
return {
|
|
53
|
+
activeDialog,
|
|
54
|
+
componentInstance: _componentRef.instance
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
handleDialogDestroyEvents(injector, overlayRef, dialogOptions) {
|
|
58
|
+
const destroyClickOutside = dialogOptions?.destroyClickOutside ?? true;
|
|
59
|
+
const activeDialog = this.getActiveDialog(injector);
|
|
60
|
+
const destroyDialog = () => {
|
|
61
|
+
overlayRef.dispose();
|
|
62
|
+
const index = this.activeDialogInstances.indexOf(activeDialog);
|
|
63
|
+
this.activeDialogInstances.splice(index, 1);
|
|
64
|
+
};
|
|
65
|
+
if (destroyClickOutside) {
|
|
66
|
+
overlayRef.backdropClick().pipe(take(1)).subscribe(() => {
|
|
67
|
+
activeDialog.dismiss();
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
activeDialog.onClose$.pipe(take(1)).subscribe(destroyDialog);
|
|
71
|
+
activeDialog.onDismiss$.pipe(take(1)).subscribe(destroyDialog);
|
|
72
|
+
}
|
|
73
|
+
applyDialogOptionsIntoActiveDialog(activeDialog, dialogOptions) {
|
|
74
|
+
activeDialog.dialogSize = dialogOptions?.size ?? 'md';
|
|
75
|
+
activeDialog.escapeOnEsc = dialogOptions?.escapeOnEsc ?? true;
|
|
76
|
+
}
|
|
77
|
+
getOverlayRef() {
|
|
78
|
+
const panelClass = ['h-min'];
|
|
79
|
+
const overlayRef = this.overlay.create({
|
|
80
|
+
hasBackdrop: true,
|
|
81
|
+
positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),
|
|
82
|
+
panelClass
|
|
83
|
+
});
|
|
84
|
+
return overlayRef;
|
|
85
|
+
}
|
|
86
|
+
getActiveDialog(injector) {
|
|
87
|
+
return injector.get(ActiveDialog);
|
|
88
|
+
}
|
|
89
|
+
get dialogInjector() {
|
|
90
|
+
const injector = Injector.create({
|
|
91
|
+
providers: [{ provide: ActiveDialog, useClass: ActiveDialog }],
|
|
92
|
+
parent: this.injector
|
|
93
|
+
});
|
|
94
|
+
return injector;
|
|
95
|
+
}
|
|
96
|
+
checkEscapeEvent() {
|
|
97
|
+
document.body.addEventListener('keydown', (keyboardEvent) => {
|
|
98
|
+
const isEscapePressed = keyboardEvent.key === 'Escape';
|
|
99
|
+
if (!isEscapePressed) {
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const lastActiveModal = this.activeDialogInstances.at(this.activeDialogInstances.length - 1);
|
|
103
|
+
if (lastActiveModal && lastActiveModal.escapeOnEsc) {
|
|
104
|
+
lastActiveModal.dismiss();
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
109
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, providedIn: 'root' });
|
|
110
|
+
}
|
|
111
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogService, decorators: [{
|
|
112
|
+
type: Injectable,
|
|
113
|
+
args: [{
|
|
114
|
+
providedIn: 'root'
|
|
115
|
+
}]
|
|
116
|
+
}], ctorParameters: () => [] });
|
|
117
|
+
|
|
118
|
+
class InternalDialogService extends DialogService {
|
|
119
|
+
constructor() {
|
|
120
|
+
super();
|
|
121
|
+
}
|
|
122
|
+
openByTemplate(templateRef, viewContainerRef, dialogOptions) {
|
|
123
|
+
const injector = this.dialogInjector;
|
|
124
|
+
const overlayRef = this.getOverlayRef();
|
|
125
|
+
const portal = new TemplatePortal(templateRef, viewContainerRef);
|
|
126
|
+
overlayRef.attach(portal);
|
|
127
|
+
const activeDialog = this.getActiveDialog(injector);
|
|
128
|
+
this.applyDialogOptionsIntoActiveDialog(activeDialog, dialogOptions);
|
|
129
|
+
this.activeDialogInstances.push(activeDialog);
|
|
130
|
+
this.handleDialogDestroyEvents(injector, overlayRef, dialogOptions);
|
|
131
|
+
return activeDialog;
|
|
132
|
+
}
|
|
133
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalDialogService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
134
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalDialogService, providedIn: 'root' });
|
|
135
|
+
}
|
|
136
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: InternalDialogService, decorators: [{
|
|
137
|
+
type: Injectable,
|
|
138
|
+
args: [{
|
|
139
|
+
providedIn: 'root'
|
|
140
|
+
}]
|
|
141
|
+
}], ctorParameters: () => [] });
|
|
142
|
+
|
|
143
|
+
class DialogComponent {
|
|
144
|
+
header = input();
|
|
145
|
+
visible = model(undefined);
|
|
146
|
+
activeDialog = inject(ActiveDialog, { optional: true });
|
|
147
|
+
size = input('md');
|
|
148
|
+
contentClassName = input('');
|
|
149
|
+
escapeOnEsc = input(true);
|
|
150
|
+
destroyClickOutside = input(true);
|
|
151
|
+
viewContainerRef = inject(ViewContainerRef);
|
|
152
|
+
dialogService = inject(InternalDialogService);
|
|
153
|
+
template = viewChild('dialogTemplate');
|
|
154
|
+
templateDiretives = contentChildren(TemplateDirective);
|
|
155
|
+
onDestroy$ = new Subject();
|
|
156
|
+
headerTemplate = computed(() => {
|
|
157
|
+
return this.getTemplate('header');
|
|
158
|
+
});
|
|
159
|
+
bodyTemplate = computed(() => {
|
|
160
|
+
return this.getTemplate('body');
|
|
161
|
+
});
|
|
162
|
+
footerTemplate = computed(() => {
|
|
163
|
+
return this.getTemplate('footer');
|
|
164
|
+
});
|
|
165
|
+
constructor() {
|
|
166
|
+
toObservable(this.visible).pipe(takeUntil(this.onDestroy$)).subscribe(() => {
|
|
167
|
+
const visible = this.visible();
|
|
168
|
+
if (visible === true) {
|
|
169
|
+
this.openDialog();
|
|
170
|
+
}
|
|
171
|
+
else if (visible === false) {
|
|
172
|
+
this.activeDialog?.dismiss();
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
ngAfterViewInit() {
|
|
177
|
+
if (!this.header() && !this.headerTemplate()) {
|
|
178
|
+
console.error('Header is required. provide header via input or sTemplate="header"');
|
|
179
|
+
}
|
|
180
|
+
if (this.activeDialog && this.visible() !== undefined) {
|
|
181
|
+
throw new Error('set visible with external component is invalid, the "visible" input is only use when s-dialog is in component html.');
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
ngOnDestroy() {
|
|
185
|
+
this.onDestroy$.next();
|
|
186
|
+
this.onDestroy$.complete();
|
|
187
|
+
}
|
|
188
|
+
onDismiss() {
|
|
189
|
+
this.activeDialog?.dismiss();
|
|
190
|
+
}
|
|
191
|
+
getTemplate(templateType) {
|
|
192
|
+
return this.templateDiretives().find((template) => template.type === templateType)?.template;
|
|
193
|
+
}
|
|
194
|
+
openDialog() {
|
|
195
|
+
if (this.activeDialog) {
|
|
196
|
+
throw new Error('set visible with external component is invalid, the "visible" input is only use when s-dialog is in component html.');
|
|
197
|
+
}
|
|
198
|
+
this.activeDialog = this.dialogService.openByTemplate(this.template(), this.viewContainerRef, { size: this.size(), destroyClickOutside: this.destroyClickOutside(), escapeOnEsc: this.escapeOnEsc() });
|
|
199
|
+
this.activeDialog.onClose$.pipe(take(1)).subscribe(() => {
|
|
200
|
+
this.activeDialog = null;
|
|
201
|
+
this.visible.set(false);
|
|
202
|
+
});
|
|
203
|
+
this.activeDialog.onDismiss$.pipe(take(1)).subscribe(() => {
|
|
204
|
+
this.activeDialog = null;
|
|
205
|
+
this.visible.set(false);
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
209
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: DialogComponent, isStandalone: true, selector: "s-dialog", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, visible: { classPropertyName: "visible", publicName: "visible", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, contentClassName: { classPropertyName: "contentClassName", publicName: "contentClassName", isSignal: true, isRequired: false, transformFunction: null }, escapeOnEsc: { classPropertyName: "escapeOnEsc", publicName: "escapeOnEsc", isSignal: true, isRequired: false, transformFunction: null }, destroyClickOutside: { classPropertyName: "destroyClickOutside", publicName: "destroyClickOutside", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { visible: "visibleChange" }, queries: [{ propertyName: "templateDiretives", predicate: TemplateDirective, isSignal: true }], viewQueries: [{ propertyName: "template", first: true, predicate: ["dialogTemplate"], descendants: true, isSignal: true }], ngImport: i0, template: "@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n <div\n [class]=\"contentClassName()\"\n class=\"flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md max-sm:h-screen max-sm:w-screen\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3>{{ header() }}</h3>\n }\n <div\n class=\"flex cursor-pointer items-center justify-center\"\n (sInteractiveContent)=\"onDismiss()\"\n >\n <i class=\"fas fa-times\"></i>\n </div>\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n </header>\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n", dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled"], outputs: ["sInteractiveContent"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
210
|
+
}
|
|
211
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: DialogComponent, decorators: [{
|
|
212
|
+
type: Component,
|
|
213
|
+
args: [{ selector: 's-dialog', standalone: true, imports: [NgTemplateOutlet, InteractiveContentDirective, NgClass], template: "@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n <div\n [class]=\"contentClassName()\"\n class=\"flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md max-sm:h-screen max-sm:w-screen\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3>{{ header() }}</h3>\n }\n <div\n class=\"flex cursor-pointer items-center justify-center\"\n (sInteractiveContent)=\"onDismiss()\"\n >\n <i class=\"fas fa-times\"></i>\n </div>\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n </header>\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n" }]
|
|
214
|
+
}], ctorParameters: () => [] });
|
|
215
|
+
|
|
216
|
+
/**
|
|
217
|
+
* Generated bundle index. Do not edit.
|
|
218
|
+
*/
|
|
219
|
+
|
|
220
|
+
export { ActiveDialog, DialogComponent, DialogService };
|
|
221
|
+
//# sourceMappingURL=seniorsistemas-angular-components-dialog.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-dialog.mjs","sources":["../../projects/angular-components/dialog/src/lib/src/dialog/models/active-dialog.ts","../../projects/angular-components/dialog/src/lib/src/dialog/services/dialog.service.ts","../../projects/angular-components/dialog/src/lib/src/dialog/services/internal-dialog.service.ts","../../projects/angular-components/dialog/src/lib/src/dialog/dialog.component.ts","../../projects/angular-components/dialog/src/lib/src/dialog/dialog.component.html","../../projects/angular-components/dialog/src/seniorsistemas-angular-components-dialog.ts"],"sourcesContent":["import { Subject } from \"rxjs\";\nimport { DialogSize } from \"./dialog-models\";\n\nexport class ActiveDialog {\n dialogSize: DialogSize = 'md';\n escapeOnEsc = true;\n private _close = new Subject<any>();\n private _dismiss = new Subject<any>();\n\n close<T>(result?: T) {\n this._close.next(result);\n this._close.complete();\n }\n\n dismiss<T>(reason?: T) {\n this._dismiss.next(reason);\n this._dismiss.complete();\n }\n\n onClose$ = this._close.asObservable();\n onDismiss$ = this._dismiss.asObservable();\n}\n","import { Overlay, OverlayRef } from \"@angular/cdk/overlay\";\nimport { ComponentPortal, TemplatePortal } from '@angular/cdk/portal';\nimport { inject, Injectable, Injector, TemplateRef, Type, ViewContainerRef } from '@angular/core';\nimport { take } from \"rxjs\";\nimport { ActiveDialog } from \"../models/active-dialog\";\nimport { DialogOptions, DialogRef } from '../models/dialog-models';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class DialogService {\n protected readonly activeDialogInstances: ActiveDialog[] = [];\n protected readonly overlay = inject(Overlay);\n protected readonly injector = inject(Injector);\n\n constructor() {\n this.checkEscapeEvent();\n }\n\n open<T>(componentRef: Type<T>, options?: DialogOptions): DialogRef<T> {\n const createdComponent = this.createComponent(componentRef, options);\n return {\n componentInstance: createdComponent.componentInstance as T,\n closed: createdComponent.activeDialog.onClose$,\n dismissed: createdComponent.activeDialog.onDismiss$\n }\n }\n\n\n protected createComponent<T>(componentRef: Type<T>, dialogOptions?: DialogOptions): {\n componentInstance?: T,\n activeDialog: ActiveDialog,\n } {\n const injector = this.dialogInjector;\n const overlayRef = this.getOverlayRef();\n const portal = new ComponentPortal(componentRef, null, injector);\n const _componentRef = overlayRef.attach(portal);\n const activeDialog = this.getActiveDialog(injector);\n this.activeDialogInstances.push(activeDialog);\n this.applyDialogOptionsIntoActiveDialog(activeDialog, dialogOptions)\n this.handleDialogDestroyEvents(injector, overlayRef, dialogOptions)\n return {\n activeDialog,\n componentInstance: _componentRef.instance\n }\n }\n\n protected handleDialogDestroyEvents(injector: Injector, overlayRef: OverlayRef, dialogOptions?: DialogOptions) {\n const destroyClickOutside = dialogOptions?.destroyClickOutside ?? true;\n const activeDialog = this.getActiveDialog(injector)\n const destroyDialog = () => {\n overlayRef.dispose();\n const index = this.activeDialogInstances.indexOf(activeDialog)\n this.activeDialogInstances.splice(index, 1);\n };\n if (destroyClickOutside) {\n overlayRef.backdropClick().pipe(take(1)).subscribe(() => {\n activeDialog.dismiss();\n });\n }\n activeDialog.onClose$.pipe(take(1)).subscribe(destroyDialog)\n activeDialog.onDismiss$.pipe(take(1)).subscribe(destroyDialog)\n }\n\n protected applyDialogOptionsIntoActiveDialog(activeDialog: ActiveDialog, dialogOptions: DialogOptions | undefined) {\n activeDialog.dialogSize = dialogOptions?.size ?? 'md';\n activeDialog.escapeOnEsc = dialogOptions?.escapeOnEsc ?? true;\n }\n\n protected getOverlayRef() {\n const panelClass = ['h-min']\n const overlayRef = this.overlay.create({\n hasBackdrop: true,\n positionStrategy: this.overlay.position().global().centerHorizontally().centerVertically(),\n panelClass\n });\n return overlayRef;\n }\n\n protected getActiveDialog(injector: Injector) {\n return injector.get(ActiveDialog);\n }\n\n protected get dialogInjector() {\n const injector = Injector.create({\n providers: [{ provide: ActiveDialog, useClass: ActiveDialog }],\n parent: this.injector\n });\n return injector;\n }\n\n protected checkEscapeEvent() {\n document.body.addEventListener('keydown', (keyboardEvent: KeyboardEvent) => {\n const isEscapePressed = keyboardEvent.key === 'Escape';\n if (!isEscapePressed) {\n return;\n }\n const lastActiveModal = this.activeDialogInstances.at(this.activeDialogInstances.length - 1);\n if (lastActiveModal && lastActiveModal.escapeOnEsc) {\n lastActiveModal.dismiss();\n }\n })\n }\n}\n","import { TemplatePortal } from '@angular/cdk/portal';\nimport { Injectable, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { DialogOptions } from '../models/dialog-models';\nimport { DialogService } from \"./dialog.service\";\n\n@Injectable({\n providedIn: 'root'\n})\nexport class InternalDialogService extends DialogService {\n constructor() {\n super();\n }\n\n openByTemplate(templateRef: TemplateRef<any>, viewContainerRef: ViewContainerRef, dialogOptions?: DialogOptions) {\n const injector = this.dialogInjector;\n const overlayRef = this.getOverlayRef();\n const portal = new TemplatePortal(templateRef, viewContainerRef)\n overlayRef.attach(portal);\n const activeDialog = this.getActiveDialog(injector);\n this.applyDialogOptionsIntoActiveDialog(activeDialog, dialogOptions)\n this.activeDialogInstances.push(activeDialog);\n this.handleDialogDestroyEvents(injector, overlayRef, dialogOptions)\n return activeDialog;\n }\n\n}\n","import { NgClass, NgTemplateOutlet } from '@angular/common';\nimport { AfterViewInit, Component, computed, contentChildren, inject, input, model, OnDestroy, TemplateRef, viewChild, ViewContainerRef } from '@angular/core';\nimport { toObservable } from '@angular/core/rxjs-interop';\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\nimport { TemplateDirective } from '@seniorsistemas/angular-components/template';\nimport { Subject, take, takeUntil } from 'rxjs';\nimport { ActiveDialog } from './models/active-dialog';\nimport { InternalDialogService } from './services/internal-dialog.service';\nimport { DialogSize } from './models/dialog-models';\n\n@Component({\n selector: 's-dialog',\n standalone: true,\n templateUrl: './dialog.component.html',\n imports: [NgTemplateOutlet, InteractiveContentDirective, NgClass],\n})\nexport class DialogComponent implements AfterViewInit, OnDestroy {\n header = input();\n\n visible = model<boolean | undefined>(undefined);\n\n activeDialog = inject(ActiveDialog, { optional: true });\n size = input<DialogSize>('md');\n contentClassName = input('');\n escapeOnEsc = input(true);\n destroyClickOutside = input(true);\n private readonly viewContainerRef = inject(ViewContainerRef);\n private readonly dialogService = inject(InternalDialogService);\n private readonly template = viewChild<TemplateRef<any>>('dialogTemplate');\n private readonly templateDiretives = contentChildren(TemplateDirective);\n private readonly onDestroy$ = new Subject<void>();\n\n protected headerTemplate = computed(() => {\n return this.getTemplate('header');\n })\n\n protected bodyTemplate = computed(() => {\n return this.getTemplate('body');\n })\n\n protected footerTemplate = computed(() => {\n return this.getTemplate('footer');\n })\n\n constructor() {\n toObservable(this.visible).pipe(takeUntil(this.onDestroy$)).subscribe(() => {\n const visible = this.visible();\n if (visible === true) {\n this.openDialog();\n } else if (visible === false) {\n this.activeDialog?.dismiss();\n }\n })\n }\n\n ngAfterViewInit(): void {\n if (!this.header() && !this.headerTemplate()) {\n console.error('Header is required. provide header via input or sTemplate=\"header\"');\n }\n\n if (this.activeDialog && this.visible() !== undefined) {\n throw new Error('set visible with external component is invalid, the \"visible\" input is only use when s-dialog is in component html.')\n }\n }\n\n ngOnDestroy(): void {\n this.onDestroy$.next();\n this.onDestroy$.complete();\n }\n\n protected onDismiss() {\n this.activeDialog?.dismiss()\n }\n\n private getTemplate(templateType: string) {\n return this.templateDiretives().find((template) => template.type === templateType)?.template;\n }\n\n private openDialog() {\n if (this.activeDialog) {\n throw new Error('set visible with external component is invalid, the \"visible\" input is only use when s-dialog is in component html.')\n }\n this.activeDialog = this.dialogService.openByTemplate(this.template()!, this.viewContainerRef, { size: this.size(), destroyClickOutside: this.destroyClickOutside(), escapeOnEsc: this.escapeOnEsc() });\n this.activeDialog.onClose$.pipe(take(1)).subscribe(() => {\n this.activeDialog = null;\n this.visible.set(false);\n })\n\n this.activeDialog.onDismiss$.pipe(take(1)).subscribe(() => {\n this.activeDialog = null;\n this.visible.set(false);\n })\n }\n}\n","@let activeDialogContext = { activeDialog: activeDialog };\n<ng-template #dialogTemplate>\n @if (activeDialog) {\n @let isSm = activeDialog.dialogSize === 'sm';\n @let isMd = activeDialog.dialogSize === 'md';\n @let isLg = activeDialog.dialogSize === 'lg';\n @let isXl = activeDialog.dialogSize === 'xl';\n @let isFullscreen = activeDialog.dialogSize === 'fullscreen';\n <div\n [class]=\"contentClassName()\"\n class=\"flex h-min max-h-screen w-screen flex-col bg-grayscale-0 shadow-md max-sm:h-screen max-sm:w-screen\"\n [ngClass]=\"{\n 'max-w-[300px]': isSm,\n 'max-w-[500px]': isMd,\n 'max-w-[800px]': isLg,\n 'max-w-[1140px]': isXl,\n 'h-screen': isFullscreen,\n }\"\n >\n <header class=\"flex flex-wrap justify-between gap-3 p-4 pb-0\">\n @let _header = headerTemplate();\n @if (_header) {\n <ng-container *ngTemplateOutlet=\"_header; context: activeDialogContext\"></ng-container>\n } @else {\n <h3>{{ header() }}</h3>\n }\n <div\n class=\"flex cursor-pointer items-center justify-center\"\n (sInteractiveContent)=\"onDismiss()\"\n >\n <i class=\"fas fa-times\"></i>\n </div>\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n </header>\n\n <main class=\"flex-1 p-4\">\n @let _bodyTemplate = bodyTemplate();\n @if (_bodyTemplate) {\n <ng-container *ngTemplateOutlet=\"_bodyTemplate; context: activeDialogContext\"></ng-container>\n } @else {\n <ng-content></ng-content>\n }\n </main>\n\n @let footer = footerTemplate();\n @if (footer) {\n <footer class=\"flex flex-wrap gap-3 p-4 pt-0\">\n <hr class=\"h-[1px] w-full bg-grayscale-20\" />\n <div class=\"w-full\">\n <ng-container *ngTemplateOutlet=\"footer; context: activeDialogContext\"></ng-container>\n </div>\n </footer>\n }\n </div>\n }\n</ng-template>\n\n@if (visible() === undefined) {\n <ng-container *ngTemplateOutlet=\"dialogTemplate\"></ng-container>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|