@seniorsistemas/angular-components 19.9.8 → 19.9.9
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/card/lib/card/card.component.d.ts +6 -2
- package/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.d.ts +0 -1
- package/datepicker/README.md +6 -2
- package/datepicker/lib/datepicker/date-segment-input.d.ts +7 -1
- package/datepicker/lib/datepicker/datepicker.component.d.ts +137 -3
- package/dialog/lib/src/dialog/services/dialog.service.d.ts +2 -0
- package/esm2022/accordion/lib/accordion/components/accordion-panel/accordion-panel.component.mjs +3 -3
- package/esm2022/autocomplete/lib/autocomplete/autocomplete.component.mjs +8 -3
- package/esm2022/autocomplete/lib/autocomplete/components/autocomplete-chip/autocomplete-chip.component.mjs +4 -3
- package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.component.mjs +3 -3
- package/esm2022/breadcrumb/lib/dynamic-breadcrumb/dynamic-breadcrumb.component.mjs +4 -2
- package/esm2022/button/lib/button/button.component.mjs +3 -3
- package/esm2022/card/lib/card/card.component.mjs +13 -5
- package/esm2022/checkbox/lib/checkbox/checkbox.component.mjs +3 -3
- package/esm2022/checkbox-list/lib/checkbox-list/checkbox-list.component.mjs +3 -3
- package/esm2022/chips/lib/chips/chip-item/chip-item.component.mjs +3 -3
- package/esm2022/chips/lib/chips/chips/chips.component.mjs +3 -3
- package/esm2022/code-editor/lib/code-editor/infra/cores/codemirror-6/themes/sds-light/sds-light-style.mjs +3 -2
- package/esm2022/collapse-link/lib/collapse-link/collapse-link.component.mjs +3 -3
- package/esm2022/country-phone-picker/lib/country-phone-picker/country-phone-picker.component.mjs +14 -9
- package/esm2022/datepicker/lib/datepicker/date-segment-input.mjs +19 -2
- package/esm2022/datepicker/lib/datepicker/datepicker.component.mjs +405 -38
- package/esm2022/dialog/lib/src/dialog/dialog.component.mjs +3 -3
- package/esm2022/dialog/lib/src/dialog/services/dialog.service.mjs +13 -1
- package/esm2022/drawer/lib/drawer/drawer.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/components/lookup/lookup.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/bignumber/bignumber-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/currency/currency-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/number/number-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/password/password-field.component.mjs +3 -3
- package/esm2022/dynamic-form/dynamic-form/form-field/fields/text/text-field.component.mjs +3 -3
- package/esm2022/editor/lib/editor/editor.component.mjs +3 -3
- package/esm2022/editor/lib/editor/toolbar-button/editor-toolbar-button.component.mjs +3 -3
- package/esm2022/fieldset/lib/fieldset/fieldset.component.mjs +3 -3
- package/esm2022/file-picker/lib/file-picker/file-picker.component.mjs +3 -3
- package/esm2022/gantt/lib/gantt/components/gantt/bar.mjs +2 -1
- package/esm2022/gantt/lib/gantt/gantt.component.mjs +3 -3
- package/esm2022/global-search/lib/global-search/global-search.component.mjs +16 -25
- package/esm2022/grid-menu/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.mjs +3 -3
- package/esm2022/input-text/lib/input-text/input-text.directive.mjs +3 -3
- package/esm2022/lib/locale/fallback.mjs +40 -13
- package/esm2022/navigation-button/lib/navigation-button/navigation-button.component.mjs +3 -3
- package/esm2022/object-card/lib/object-card/object-card.component.mjs +3 -3
- package/esm2022/paginator/lib/paginator/paginator.component.mjs +3 -3
- package/esm2022/pin-code-field/lib/pin-code-field/pin-code-field.component.mjs +3 -3
- package/esm2022/radio-button/lib/radio-button/radio-button.component.mjs +4 -10
- package/esm2022/rating-scale/lib/rating-scale/rating-scale.component.mjs +3 -3
- package/esm2022/select/lib/select/select.component.mjs +3 -3
- package/esm2022/select-button/lib/select-button/components/select-button-item/select-button-item.component.mjs +3 -3
- package/esm2022/shared/lib/accessibility/datepicker-no-period-tab.directive.mjs +6 -6
- package/esm2022/side-sheet/lib/side-sheet/side-sheet.component.mjs +3 -3
- package/esm2022/slider/lib/slider/slider.component.mjs +67 -65
- package/esm2022/slider/lib/slider/slider.module.mjs +2 -2
- package/esm2022/split-button/lib/split-button/split-button.component.mjs +3 -3
- package/esm2022/star-rating/star-rating/star-rating.component.mjs +3 -3
- package/esm2022/stepper/lib/stepper/stepper.component.mjs +3 -3
- package/esm2022/switch/lib/switch/switch.component.mjs +5 -19
- package/esm2022/tabs/lib/tabs/tabs.component.mjs +3 -3
- package/esm2022/text-area/lib/text-area/text-area.component.mjs +3 -3
- package/esm2022/thumbnail/lib/thumbnail/thumbnail.component.mjs +10 -3
- package/esm2022/thumbnails/lib/thumbnails/components/thumbnail-item/thumbnail-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/components/tiered-menu-item/tiered-menu-item.component.mjs +3 -3
- package/esm2022/tiered-menu/lib/tiered-menu/services/tiered-menu.global.service.mjs +4 -3
- package/esm2022/tile/lib/tile/tile.component.mjs +3 -3
- package/esm2022/tree/lib/tree/components/tree-node-item/tree-node-item.component.mjs +20 -3
- package/esm2022/workspace-switch/lib/workspace-switch/workspace-switch.component.mjs +3 -3
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-accordion.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs +10 -5
- package/fesm2022/seniorsistemas-angular-components-autocomplete.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs +5 -3
- package/fesm2022/seniorsistemas-angular-components-breadcrumb.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-card.mjs +12 -4
- package/fesm2022/seniorsistemas-angular-components-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-checkbox-list.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-checkbox.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-chips.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-chips.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs +2 -1
- package/fesm2022/seniorsistemas-angular-components-code-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-collapse-link.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs +13 -8
- package/fesm2022/seniorsistemas-angular-components-country-phone-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs +422 -38
- package/fesm2022/seniorsistemas-angular-components-datepicker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs +14 -2
- package/fesm2022/seniorsistemas-angular-components-dialog.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-drawer.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs +12 -12
- package/fesm2022/seniorsistemas-angular-components-dynamic-form.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-editor.mjs +4 -4
- package/fesm2022/seniorsistemas-angular-components-editor.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-fieldset.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-file-picker.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs +3 -2
- package/fesm2022/seniorsistemas-angular-components-gantt.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs +14 -23
- package/fesm2022/seniorsistemas-angular-components-global-search.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-grid-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-input-text.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-input-text.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-navigation-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-object-card.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-paginator.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-pin-code-field.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs +3 -9
- package/fesm2022/seniorsistemas-angular-components-radio-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-rating-scale.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-select-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-select-button.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-shared.mjs +5 -5
- package/fesm2022/seniorsistemas-angular-components-shared.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-side-sheet.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-slider.mjs +67 -65
- package/fesm2022/seniorsistemas-angular-components-slider.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-split-button.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-star-rating.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-stepper.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-switch.mjs +4 -18
- package/fesm2022/seniorsistemas-angular-components-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-tabs.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-text-area.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs +9 -2
- package/fesm2022/seniorsistemas-angular-components-thumbnail.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-thumbnails.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs +5 -4
- package/fesm2022/seniorsistemas-angular-components-tiered-menu.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tile.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-tile.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-tree.mjs +20 -3
- package/fesm2022/seniorsistemas-angular-components-tree.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs +2 -2
- package/fesm2022/seniorsistemas-angular-components-workspace-switch.mjs.map +1 -1
- package/fesm2022/seniorsistemas-angular-components.mjs +39 -12
- package/fesm2022/seniorsistemas-angular-components.mjs.map +1 -1
- package/global-search/lib/global-search/global-search.component.d.ts +7 -3
- package/package.json +1 -1
- package/radio-button/lib/radio-button/radio-button.component.d.ts +0 -1
- package/slider/lib/slider/slider.component.d.ts +25 -7
- package/styles.css +5 -0
- package/switch/lib/switch/switch.component.d.ts +0 -2
- package/thumbnail/lib/thumbnail/thumbnail.component.d.ts +1 -0
- package/tree/lib/tree/components/tree-node-item/tree-node-item.component.d.ts +4 -0
|
@@ -7,10 +7,8 @@ import { ThumbnailComponent, ThumbnailModule } from '@seniorsistemas/angular-com
|
|
|
7
7
|
import { TooltipDirective, TooltipModule } from '@seniorsistemas/angular-components/tooltip';
|
|
8
8
|
import { NgClass, NgTemplateOutlet } from '@angular/common';
|
|
9
9
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
10
|
-
import { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';
|
|
11
10
|
import * as i1 from '@angular/forms';
|
|
12
11
|
import { FormsModule } from '@angular/forms';
|
|
13
|
-
import { InputTextDirective } from '@seniorsistemas/angular-components/input-text';
|
|
14
12
|
|
|
15
13
|
class GlobalSearchDropdownItemComponent {
|
|
16
14
|
static nextId = 0;
|
|
@@ -96,7 +94,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
96
94
|
class GlobalSearchComponent {
|
|
97
95
|
_cdr = inject(ChangeDetectorRef);
|
|
98
96
|
static nextId = 0;
|
|
99
|
-
globalSearch = null;
|
|
100
97
|
/** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */
|
|
101
98
|
id = `s-global-search-${GlobalSearchDropdownItemComponent.nextId++}`;
|
|
102
99
|
/** @description Tempo de debounce em ms antes de emitir o evento de busca. @default 500 */
|
|
@@ -130,6 +127,14 @@ class GlobalSearchComponent {
|
|
|
130
127
|
wasSearched = false;
|
|
131
128
|
isModalLoading = false;
|
|
132
129
|
expanded = true;
|
|
130
|
+
isFocused = false;
|
|
131
|
+
/**
|
|
132
|
+
* @description Controla a largura do campo: fica compacto quando não está focado
|
|
133
|
+
* nem tem texto digitado, e expande ao focar ou ao ter conteúdo (mesmo sem foco).
|
|
134
|
+
*/
|
|
135
|
+
get isExpanded() {
|
|
136
|
+
return this.isFocused || !!this.search;
|
|
137
|
+
}
|
|
133
138
|
onChange() {
|
|
134
139
|
const search = this.search;
|
|
135
140
|
setTimeout(() => {
|
|
@@ -140,9 +145,11 @@ class GlobalSearchComponent {
|
|
|
140
145
|
}, this.delay);
|
|
141
146
|
}
|
|
142
147
|
focusIn() {
|
|
148
|
+
this.isFocused = true;
|
|
143
149
|
this.focused.emit(true);
|
|
144
150
|
}
|
|
145
151
|
focusOut() {
|
|
152
|
+
this.isFocused = false;
|
|
146
153
|
this.focused.emit(false);
|
|
147
154
|
}
|
|
148
155
|
showMore() {
|
|
@@ -153,28 +160,16 @@ class GlobalSearchComponent {
|
|
|
153
160
|
this.wasSearched = false;
|
|
154
161
|
this.dropdownItens = null;
|
|
155
162
|
this.isModalLoading = false;
|
|
156
|
-
this._removeActiveClassByGlobalSearch();
|
|
157
|
-
}
|
|
158
|
-
_removeActiveClassByGlobalSearch() {
|
|
159
|
-
if (isNullOrUndefined(this.globalSearch))
|
|
160
|
-
return;
|
|
161
|
-
this.globalSearch.nativeElement.classList.remove('global-search__input-active');
|
|
162
163
|
}
|
|
163
164
|
_canShowGlobalSearchActive() {
|
|
164
165
|
this.wasSearched = !!this.search;
|
|
165
|
-
if (this.search) {
|
|
166
|
-
if (isNullOrUndefined(this.globalSearch))
|
|
167
|
-
return;
|
|
168
|
-
this.globalSearch.nativeElement.classList.add('global-search__input-active');
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
this._removeActiveClassByGlobalSearch();
|
|
166
|
+
if (!this.search) {
|
|
172
167
|
this.close();
|
|
173
168
|
}
|
|
174
169
|
this._cdr.detectChanges();
|
|
175
170
|
}
|
|
176
171
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GlobalSearchComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
177
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GlobalSearchComponent, isStandalone: true, selector: "s-global-search", inputs: { id: "id", delay: "delay", totalItensLabel: "totalItensLabel", showMoreLabel: "showMoreLabel", placeholder: "placeholder", isLoading: "isLoading", totalElements: "totalElements", emptyTitle: "emptyTitle", emptyDescription: "emptyDescription", emptyIcon: "emptyIcon", showFooter: "showFooter" }, outputs: { searched: "searched", focused: "focused", moreShown: "moreShown" }, queries: [{ propertyName: "dropdownItens", predicate: GlobalSearchDropdownItemComponent }],
|
|
172
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GlobalSearchComponent, isStandalone: true, selector: "s-global-search", inputs: { id: "id", delay: "delay", totalItensLabel: "totalItensLabel", showMoreLabel: "showMoreLabel", placeholder: "placeholder", isLoading: "isLoading", totalElements: "totalElements", emptyTitle: "emptyTitle", emptyDescription: "emptyDescription", emptyIcon: "emptyIcon", showFooter: "showFooter" }, outputs: { searched: "searched", focused: "focused", moreShown: "moreShown" }, queries: [{ propertyName: "dropdownItens", predicate: GlobalSearchDropdownItemComponent }], ngImport: i0, template: "<div class=\"global-search__wrapper group flex max-w-full\">\r\n <input\r\n class=\"global-search__input rounded-tl-[20px] rounded-bl-[20px] rounded-tr-none rounded-br-none border border-solid border-grayscale-30 border-r-0 cursor-pointer h-[25px] min-h-[25px] pl-[15px] text-sm font-open-sans outline-none bg-grayscale-0 transition-all duration-300 w-[136px]\"\r\n [class.global-search__input-active]=\"isExpanded\"\r\n [(ngModel)]=\"search\"\r\n (ngModelChange)=\"onChange()\"\r\n [placeholder]=\"placeholder\"\r\n (focus)=\"focusIn()\"\r\n (blur)=\"focusOut()\"\r\n />\r\n <span class=\"global-search__span items-center bg-transparent border border-solid border-grayscale-30 border-l-0 rounded-tr-[20px] rounded-br-[20px] flex h-[25px] justify-center px-2 transition-all duration-300\">\r\n <em class=\"fas fa-search\"></em>\r\n </span>\r\n\r\n @if (wasSearched) {\r\n <div class=\"bg-grayscale-0 rounded-[5px] shadow-[0_2px_8px_0_rgba(0,0,0,0.4)] mt-[60px] min-h-[50px] absolute w-[500px] z-[6]\">\r\n <div\r\n *sLoadingState=\"isLoading && !isModalLoading\"\r\n class=\"global-search__loader\"\r\n >\r\n @if ((dropdownItens && dropdownItens.length > 0) || isLoading) {\r\n <div class=\"min-h-[50px] w-full\">\r\n @if (dropdownItens && dropdownItens.length > 0) {\r\n <div>\r\n <div class=\"border-b border-solid border-grayscale-30 text-grayscale-90 font-semibold h-[50px] p-[15px] flex items-center justify-between\">\r\n <span class=\"m-0 p-0\">{{ totalItensLabel }}</span>\r\n <span\r\n class=\"m-0 p-0 cursor-pointer text-right\"\r\n (click)=\"close()\"\r\n >\r\n <em class=\"fas fa-times\"></em>\r\n </span>\r\n </div>\r\n <div\r\n class=\"max-h-[510px] overflow-auto\"\r\n [@expandableContent]=\"expanded\"\r\n >\r\n @for (item of dropdownItens; track item.id) {\r\n <div\r\n class=\"s-object-card-field hover:bg-[#dbe0e4]\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"border-t border-solid border-grayscale-30 h-[50px]\">\r\n <s-button\r\n class=\"flex flex-col\"\r\n (click)=\"showMore()\"\r\n priority=\"link\"\r\n >\r\n {{ showMoreLabel }}\r\n </s-button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if ((!dropdownItens || !dropdownItens.length) && !isLoading) {\r\n <s-empty-state\r\n [title]=\"emptyTitle ?? ''\"\r\n [description]=\"emptyDescription\"\r\n ngClass=\"global-search__empty-state--icon\"\r\n [iconClass]=\"emptyIcon ? emptyIcon : 'fas fa-search'\"\r\n >\r\n </s-empty-state>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (wasSearched) {\r\n <div\r\n class=\"bg-[rgba(0,0,0,0.4)] cursor-pointer h-[calc(100vh-70px)] left-0 mt-[50px] absolute w-full z-[5]\"\r\n (click)=\"close()\"\r\n ></div>\r\n }\r\n</div>\r\n", styles: [".global-search__input-active{border-bottom:solid 1px #428bca;border-left:solid 1px #428bca;border-top:solid 1px #428bca;cursor:default;width:466px}.global-search__input-active+.global-search__span{border-bottom:solid 1px #428bca;border-right:solid 1px #428bca;border-top:solid 1px #428bca}.global-search__wrapper:has(.global-search__input:focus-visible){border-radius:20px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}::ng-deep s-global-search{width:100%}::ng-deep s-global-search .global-search__loader{border-radius:5px!important;width:100%}::ng-deep s-global-search .global-search__empty-state--icon .empty-state .icon{font-size:40px}::ng-deep s-global-search .s-button-priority-link{color:#428bca}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "directive", type: LoadingStateDirective, selector: "[sLoadingState]", inputs: ["sLoadingState"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ButtonComponent, selector: "s-button", inputs: ["id", "label", "tooltip", "tooltipPosition", "iconClass", "rightIconClass", "caret", "styleClass", "baseZIndex", "disabled", "auxiliary", "type", "priority", "menuOptions", "size", "slide", "animation", "badge", "iconColor", "menuAriaLabel", "ariaLabel"], outputs: ["clicked"] }, { kind: "component", type: EmptyStateComponent, selector: "s-empty-state", inputs: ["id", "title", "iconClass", "description", "showPrimaryAction", "showSecondaryAction", "primaryActionLabel", "secondaryActionLabel", "primaryModel"], outputs: ["primaryAction", "secondaryAction"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }], animations: [
|
|
178
173
|
trigger('expandableContent', [
|
|
179
174
|
state('*', style({ height: '0' })),
|
|
180
175
|
state('false', style({ height: '0' })),
|
|
@@ -196,17 +191,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
196
191
|
]),
|
|
197
192
|
], standalone: true, imports: [
|
|
198
193
|
FormsModule,
|
|
199
|
-
InputTextDirective,
|
|
200
194
|
LoadingStateDirective,
|
|
201
195
|
NgTemplateOutlet,
|
|
202
196
|
ButtonComponent,
|
|
203
197
|
EmptyStateComponent,
|
|
204
198
|
NgClass,
|
|
205
|
-
], template: "<div class=\"group flex max-w-full\">\r\n <input\r\n
|
|
206
|
-
}], propDecorators: {
|
|
207
|
-
type: ViewChild,
|
|
208
|
-
args: ['globalSearch', { static: false }]
|
|
209
|
-
}], id: [{
|
|
199
|
+
], template: "<div class=\"global-search__wrapper group flex max-w-full\">\r\n <input\r\n class=\"global-search__input rounded-tl-[20px] rounded-bl-[20px] rounded-tr-none rounded-br-none border border-solid border-grayscale-30 border-r-0 cursor-pointer h-[25px] min-h-[25px] pl-[15px] text-sm font-open-sans outline-none bg-grayscale-0 transition-all duration-300 w-[136px]\"\r\n [class.global-search__input-active]=\"isExpanded\"\r\n [(ngModel)]=\"search\"\r\n (ngModelChange)=\"onChange()\"\r\n [placeholder]=\"placeholder\"\r\n (focus)=\"focusIn()\"\r\n (blur)=\"focusOut()\"\r\n />\r\n <span class=\"global-search__span items-center bg-transparent border border-solid border-grayscale-30 border-l-0 rounded-tr-[20px] rounded-br-[20px] flex h-[25px] justify-center px-2 transition-all duration-300\">\r\n <em class=\"fas fa-search\"></em>\r\n </span>\r\n\r\n @if (wasSearched) {\r\n <div class=\"bg-grayscale-0 rounded-[5px] shadow-[0_2px_8px_0_rgba(0,0,0,0.4)] mt-[60px] min-h-[50px] absolute w-[500px] z-[6]\">\r\n <div\r\n *sLoadingState=\"isLoading && !isModalLoading\"\r\n class=\"global-search__loader\"\r\n >\r\n @if ((dropdownItens && dropdownItens.length > 0) || isLoading) {\r\n <div class=\"min-h-[50px] w-full\">\r\n @if (dropdownItens && dropdownItens.length > 0) {\r\n <div>\r\n <div class=\"border-b border-solid border-grayscale-30 text-grayscale-90 font-semibold h-[50px] p-[15px] flex items-center justify-between\">\r\n <span class=\"m-0 p-0\">{{ totalItensLabel }}</span>\r\n <span\r\n class=\"m-0 p-0 cursor-pointer text-right\"\r\n (click)=\"close()\"\r\n >\r\n <em class=\"fas fa-times\"></em>\r\n </span>\r\n </div>\r\n <div\r\n class=\"max-h-[510px] overflow-auto\"\r\n [@expandableContent]=\"expanded\"\r\n >\r\n @for (item of dropdownItens; track item.id) {\r\n <div\r\n class=\"s-object-card-field hover:bg-[#dbe0e4]\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"border-t border-solid border-grayscale-30 h-[50px]\">\r\n <s-button\r\n class=\"flex flex-col\"\r\n (click)=\"showMore()\"\r\n priority=\"link\"\r\n >\r\n {{ showMoreLabel }}\r\n </s-button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if ((!dropdownItens || !dropdownItens.length) && !isLoading) {\r\n <s-empty-state\r\n [title]=\"emptyTitle ?? ''\"\r\n [description]=\"emptyDescription\"\r\n ngClass=\"global-search__empty-state--icon\"\r\n [iconClass]=\"emptyIcon ? emptyIcon : 'fas fa-search'\"\r\n >\r\n </s-empty-state>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (wasSearched) {\r\n <div\r\n class=\"bg-[rgba(0,0,0,0.4)] cursor-pointer h-[calc(100vh-70px)] left-0 mt-[50px] absolute w-full z-[5]\"\r\n (click)=\"close()\"\r\n ></div>\r\n }\r\n</div>\r\n", styles: [".global-search__input-active{border-bottom:solid 1px #428bca;border-left:solid 1px #428bca;border-top:solid 1px #428bca;cursor:default;width:466px}.global-search__input-active+.global-search__span{border-bottom:solid 1px #428bca;border-right:solid 1px #428bca;border-top:solid 1px #428bca}.global-search__wrapper:has(.global-search__input:focus-visible){border-radius:20px;outline:2px solid var(--s-focus-ring-color);outline-offset:-2px}::ng-deep s-global-search{width:100%}::ng-deep s-global-search .global-search__loader{border-radius:5px!important;width:100%}::ng-deep s-global-search .global-search__empty-state--icon .empty-state .icon{font-size:40px}::ng-deep s-global-search .s-button-priority-link{color:#428bca}\n"] }]
|
|
200
|
+
}], propDecorators: { id: [{
|
|
210
201
|
type: Input
|
|
211
202
|
}], delay: [{
|
|
212
203
|
type: Input
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-global-search.mjs","sources":["../../projects/angular-components/global-search/src/lib/global-search/components/dropdown/global-search-dropdown-item.component.ts","../../projects/angular-components/global-search/src/lib/global-search/components/dropdown/global-search-dropdown-item.component.html","../../projects/angular-components/global-search/src/lib/global-search/global-search.component.ts","../../projects/angular-components/global-search/src/lib/global-search/global-search.component.html","../../projects/angular-components/global-search/src/lib/global-search/global-search.module.ts","../../projects/angular-components/global-search/src/seniorsistemas-angular-components-global-search.ts"],"sourcesContent":["import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\n\r\nimport { GlobalSearchSizeEnum } from '../../types/global-search-size.enum';\r\nimport { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's-global-search-dropdown-item',\r\n templateUrl: './global-search-dropdown-item.component.html',\r\n styleUrls: ['./global-search-dropdown-item.component.scss'],\r\n standalone: true,\r\n imports: [ThumbnailComponent, ButtonComponent, TooltipDirective, NgClass, NgTemplateOutlet],\r\n})\r\nexport class GlobalSearchDropdownItemComponent {\r\n public static nextId = 0;\r\n\r\n @Input()\r\n public id = `s-global-search-dropdown-item-${GlobalSearchDropdownItemComponent.nextId++}`;\r\n\r\n @Input()\r\n public primaryLabel?: string;\r\n\r\n @Input()\r\n public secondaryEmptyLabel?: string;\r\n\r\n @Input()\r\n public tertiaryEmptyLabel?: string;\r\n\r\n @Input()\r\n public imageSource?: string;\r\n\r\n @Input()\r\n public imageAlt?: string;\r\n\r\n @Input()\r\n public iconClass?: string;\r\n\r\n @Input()\r\n public secondaryLabel?: string;\r\n\r\n @Input()\r\n public tertiaryLabel?: string;\r\n\r\n @Input()\r\n public size: GlobalSearchSizeEnum = 'standart';\r\n\r\n @Input()\r\n public template: TemplateRef<any> | null = null;\r\n\r\n @Output()\r\n public buttonClick = new EventEmitter<void>();\r\n\r\n @ContentChild(ThumbnailComponent, { static: true })\r\n public thumbnailComponent: ThumbnailComponent | null = null;\r\n\r\n @ViewChild(TemplateRef, { static: true })\r\n public content: TemplateRef<any> | null = null;\r\n\r\n public isMediumSize(): boolean {\r\n return this.size === 'medium';\r\n }\r\n\r\n public isSmallSize(): boolean {\r\n return this.size === 'small';\r\n }\r\n\r\n public getImageSize(): 'medium' | 'small' {\r\n return this._isStandardSize() ? 'medium' : 'small';\r\n }\r\n\r\n private _isStandardSize(): boolean {\r\n return this.size === 'standart';\r\n }\r\n}\r\n","<ng-template>\r\n <div\r\n class=\"global-search-dropdown-item\"\r\n [ngClass]=\"{ 'grid grid-cols-2 gap-2': isSmallSize() }\"\r\n >\r\n <ng-content select=\"s-thumbnail\"></ng-content>\r\n\r\n @if (!thumbnailComponent && (imageSource || iconClass) && !isSmallSize()) {\r\n <s-thumbnail\r\n [id]=\"id + '-thumbnail'\"\r\n [imageSource]=\"imageSource\"\r\n [imageAlt]=\"imageAlt || primaryLabel\"\r\n [iconClass]=\"iconClass ?? ''\"\r\n [size]=\"getImageSize()\"\r\n ></s-thumbnail>\r\n }\r\n\r\n <div\r\n class=\"global-search-item__container ml-[10px] only:ml-0 w-full whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis {{ !isSmallSize() ? 'w-[60%]' : '' }}\"\r\n >\r\n <div #titleTemplate>\r\n <ng-content select=\"[titleTemplate]\"></ng-content>\r\n </div>\r\n @if (!titleTemplate.children.length) {\r\n <s-button\r\n styleClass=\"no-padding\"\r\n [id]=\"id + '-title'\"\r\n priority=\"link\"\r\n [sTooltip]=\"primaryLabel\"\r\n tooltipPosition=\"right\"\r\n [showDelay]=\"0\"\r\n [escape]=\"true\"\r\n [label]=\"primaryLabel\"\r\n size=\"small\"\r\n (clicked)=\"buttonClick.emit()\"\r\n >\r\n </s-button>\r\n }\r\n\r\n <div #labelTemplate>\r\n <ng-content select=\"[labelTemplate]\"></ng-content>\r\n </div>\r\n\r\n @if (!labelTemplate.children.length) {\r\n <span\r\n [id]=\"id + '-label'\"\r\n [ngClass]=\"{\r\n 'text-right pt-[2px] pl-[15px]': isSmallSize(),\r\n 'italic': !secondaryLabel,\r\n }\"\r\n class=\"text-grayscale-90 block whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis\"\r\n [sTooltip]=\"secondaryLabel\"\r\n tooltipPosition=\"top\"\r\n [showDelay]=\"500\"\r\n [escape]=\"true\"\r\n >{{ secondaryLabel ? secondaryLabel : secondaryEmptyLabel }}</span\r\n >\r\n }\r\n\r\n <div #descriptionTemplate>\r\n <ng-content select=\"[descriptionTemplate]\"></ng-content>\r\n </div>\r\n\r\n @if (!descriptionTemplate.children.length && !isMediumSize() && !isSmallSize()) {\r\n <span\r\n [id]=\"id + '-description'\"\r\n class=\"text-grayscale-50 block whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis\"\r\n [ngClass]=\"{ 'italic': !secondaryLabel }\"\r\n [sTooltip]=\"tertiaryLabel\"\r\n tooltipPosition=\"top\"\r\n [showDelay]=\"500\"\r\n [escape]=\"true\"\r\n >\r\n {{ tertiaryLabel ? tertiaryLabel : tertiaryEmptyLabel }}\r\n </span>\r\n }\r\n </div>\r\n @if (!isSmallSize()) {\r\n <div class=\"w-[40%] flex flex-col text-right\">\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewChild,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';\r\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { InputTextDirective } from '@seniorsistemas/angular-components/input-text';\r\nimport { LoadingStateDirective } from '@seniorsistemas/angular-components/loading-state';\r\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\nimport { EmptyStateComponent } from '@seniorsistemas/angular-components/empty-state';\r\n\r\n/**\r\n * @description Componente de busca global com input, dropdown de resultados, estado\r\n * de carregamento, empty state e suporte a itens customizáveis via `GlobalSearchDropdownItemComponent`.\r\n *\r\n * @example\r\n * ```html\r\n * <s-global-search\r\n * totalItensLabel=\"resultados\"\r\n * showMoreLabel=\"Ver mais\"\r\n * [totalElements]=\"total\"\r\n * (search)=\"onBusca($event)\" />\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n selector: 's-global-search',\r\n templateUrl: './global-search.component.html',\r\n styleUrls: ['./global-search.component.scss'],\r\n animations: [\r\n trigger('expandableContent', [\r\n state('*', style({ height: '0' })),\r\n state('false', style({ height: '0' })),\r\n state('true', style({ height: '*' })),\r\n transition('* => true', animate('200ms ease-out')),\r\n transition('false <=> true', animate('200ms ease-out')),\r\n ]),\r\n ],\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n InputTextDirective,\r\n LoadingStateDirective,\r\n NgTemplateOutlet,\r\n ButtonComponent,\r\n EmptyStateComponent,\r\n NgClass,\r\n ],\r\n})\r\nexport class GlobalSearchComponent {\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n public static nextId = 0;\r\n\r\n @ViewChild('globalSearch', { static: false })\r\n public globalSearch: ElementRef | null = null;\r\n\r\n /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */\r\n @Input()\r\n public id = `s-global-search-${GlobalSearchDropdownItemComponent.nextId++}`;\r\n\r\n /** @description Tempo de debounce em ms antes de emitir o evento de busca. @default 500 */\r\n @Input()\r\n public delay = 500;\r\n\r\n /** @description Label que acompanha o total de resultados. Campo obrigatório. */\r\n @Input({ required: true })\r\n public totalItensLabel!: string;\r\n\r\n /** @description Rótulo do link para exibir mais resultados. Campo obrigatório. */\r\n @Input({ required: true })\r\n public showMoreLabel!: string;\r\n\r\n /** @description Placeholder do input de busca. */\r\n @Input()\r\n public placeholder?: string;\r\n\r\n /** @description Exibe indicador de carregamento no dropdown. @default false */\r\n @Input()\r\n public isLoading = false;\r\n\r\n /** @description Número total de resultados encontrados. */\r\n @Input()\r\n public totalElements?: number;\r\n\r\n /** @description Título do empty state quando não há resultados. */\r\n @Input()\r\n public emptyTitle?: string;\r\n\r\n /** @description Descrição do empty state exibida abaixo do título. */\r\n @Input()\r\n public emptyDescription?: string;\r\n\r\n /** @description Classe do ícone exibido no empty state. */\r\n @Input()\r\n public emptyIcon?: string;\r\n\r\n /** @description Exibe o rodapé com o link \"ver mais\" e contagem de resultados. @default true */\r\n @Input() showFooter = true;\r\n\r\n @ContentChildren(GlobalSearchDropdownItemComponent)\r\n public dropdownItens: QueryList<GlobalSearchDropdownItemComponent> | null = null;\r\n\r\n /** @description Emitido ao digitar no campo de busca, com o valor atual da pesquisa. */\r\n @Output()\r\n public searched = new EventEmitter<string>();\r\n\r\n /** @description Emitido quando o campo de busca ganha ou perde foco (`true` = focado). */\r\n @Output()\r\n public focused = new EventEmitter<boolean>();\r\n\r\n /** @description Emitido ao clicar no link para exibir mais resultados. */\r\n @Output()\r\n public moreShown = new EventEmitter<void>();\r\n\r\n public search: string | null = null;\r\n public wasSearched = false;\r\n public isModalLoading = false;\r\n public expanded = true;\r\n\r\n public onChange() {\r\n const search = this.search;\r\n setTimeout(() => {\r\n if (this.search === search) {\r\n this._canShowGlobalSearchActive();\r\n this.searched.emit(this.search ?? '');\r\n }\r\n }, this.delay);\r\n }\r\n\r\n public focusIn() {\r\n this.focused.emit(true);\r\n }\r\n\r\n public focusOut() {\r\n this.focused.emit(false);\r\n }\r\n\r\n public showMore() {\r\n this.moreShown.emit();\r\n }\r\n\r\n public close() {\r\n this.search = null;\r\n this.wasSearched = false;\r\n this.dropdownItens = null;\r\n this.isModalLoading = false;\r\n this._removeActiveClassByGlobalSearch();\r\n }\r\n\r\n private _removeActiveClassByGlobalSearch() {\r\n if (isNullOrUndefined(this.globalSearch)) return;\r\n\r\n this.globalSearch.nativeElement.classList.remove('global-search__input-active');\r\n }\r\n\r\n private _canShowGlobalSearchActive() {\r\n this.wasSearched = !!this.search;\r\n if (this.search) {\r\n if (isNullOrUndefined(this.globalSearch)) return;\r\n\r\n this.globalSearch.nativeElement.classList.add('global-search__input-active');\r\n } else {\r\n this._removeActiveClassByGlobalSearch();\r\n this.close();\r\n }\r\n this._cdr.detectChanges();\r\n }\r\n}\r\n","<div class=\"group flex max-w-full\">\r\n <input\r\n #globalSearch\r\n sInputText\r\n class=\"global-search__input rounded-tl-[20px] rounded-bl-[20px] rounded-tr-none rounded-br-none border border-solid border-grayscale-30 border-r-0 cursor-pointer h-[25px] min-h-[25px] pl-[15px] text-sm font-open-sans outline-none bg-grayscale-0 transition-all duration-300 w-[136px]\"\r\n [(ngModel)]=\"search\"\r\n (ngModelChange)=\"onChange()\"\r\n [placeholder]=\"placeholder\"\r\n (focus)=\"focusIn()\"\r\n (blur)=\"focusOut()\"\r\n />\r\n <span class=\"global-search__span items-center bg-transparent border border-solid border-grayscale-30 border-l-0 rounded-tr-[20px] rounded-br-[20px] flex h-[25px] justify-center px-2 transition-all duration-300\">\r\n <em class=\"fas fa-search\"></em>\r\n </span>\r\n\r\n @if (wasSearched) {\r\n <div class=\"bg-grayscale-0 rounded-[5px] shadow-[0_2px_8px_0_rgba(0,0,0,0.4)] mt-[60px] min-h-[50px] absolute w-[500px] z-[6]\">\r\n <div\r\n *sLoadingState=\"isLoading && !isModalLoading\"\r\n class=\"global-search__loader\"\r\n >\r\n @if ((dropdownItens && dropdownItens.length > 0) || isLoading) {\r\n <div class=\"min-h-[50px] w-full\">\r\n @if (dropdownItens && dropdownItens.length > 0) {\r\n <div>\r\n <div class=\"border-b border-solid border-grayscale-30 text-grayscale-90 font-semibold h-[50px] p-[15px] flex items-center justify-between\">\r\n <span class=\"m-0 p-0\">{{ totalItensLabel }}</span>\r\n <span\r\n class=\"m-0 p-0 cursor-pointer text-right\"\r\n (click)=\"close()\"\r\n >\r\n <em class=\"fas fa-times\"></em>\r\n </span>\r\n </div>\r\n <div\r\n class=\"max-h-[510px] overflow-auto\"\r\n [@expandableContent]=\"expanded\"\r\n >\r\n @for (item of dropdownItens; track item.id) {\r\n <div\r\n class=\"s-object-card-field hover:bg-[#dbe0e4]\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"border-t border-solid border-grayscale-30 h-[50px]\">\r\n <s-button\r\n class=\"flex flex-col\"\r\n (click)=\"showMore()\"\r\n priority=\"link\"\r\n >\r\n {{ showMoreLabel }}\r\n </s-button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if ((!dropdownItens || !dropdownItens.length) && !isLoading) {\r\n <s-empty-state\r\n [title]=\"emptyTitle ?? ''\"\r\n [description]=\"emptyDescription\"\r\n ngClass=\"global-search__empty-state--icon\"\r\n [iconClass]=\"emptyIcon ? emptyIcon : 'fas fa-search'\"\r\n >\r\n </s-empty-state>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (wasSearched) {\r\n <div\r\n class=\"bg-[rgba(0,0,0,0.4)] cursor-pointer h-[calc(100vh-70px)] left-0 mt-[50px] absolute w-full z-[5]\"\r\n (click)=\"close()\"\r\n ></div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\r\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\r\nimport { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\r\nimport { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\r\nimport { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';\r\nimport { GlobalSearchComponent } from './global-search.component';\r\n\r\n@NgModule({\r\n imports: [\r\n TooltipModule,\r\n ThumbnailModule,\r\n ButtonModule,\r\n LoadingStateModule,\r\n EmptyStateModule,\r\n GlobalSearchComponent,\r\n GlobalSearchDropdownItemComponent,\r\n ],\r\n exports: [\r\n GlobalSearchComponent,\r\n GlobalSearchDropdownItemComponent,\r\n TooltipModule,\r\n ThumbnailModule,\r\n ButtonModule,\r\n LoadingStateModule,\r\n EmptyStateModule,\r\n ],\r\n})\r\nexport class GlobalSearchModule {}\r\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-global-search.mjs","sources":["../../projects/angular-components/global-search/src/lib/global-search/components/dropdown/global-search-dropdown-item.component.ts","../../projects/angular-components/global-search/src/lib/global-search/components/dropdown/global-search-dropdown-item.component.html","../../projects/angular-components/global-search/src/lib/global-search/global-search.component.ts","../../projects/angular-components/global-search/src/lib/global-search/global-search.component.html","../../projects/angular-components/global-search/src/lib/global-search/global-search.module.ts","../../projects/angular-components/global-search/src/seniorsistemas-angular-components-global-search.ts"],"sourcesContent":["import { Component, ContentChild, EventEmitter, Input, Output, TemplateRef, ViewChild } from '@angular/core';\r\n\r\nimport { GlobalSearchSizeEnum } from '../../types/global-search-size.enum';\r\nimport { ThumbnailComponent } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\nimport { NgClass, NgTemplateOutlet } from '@angular/common';\r\n\r\n@Component({\r\n selector: 's-global-search-dropdown-item',\r\n templateUrl: './global-search-dropdown-item.component.html',\r\n styleUrls: ['./global-search-dropdown-item.component.scss'],\r\n standalone: true,\r\n imports: [ThumbnailComponent, ButtonComponent, TooltipDirective, NgClass, NgTemplateOutlet],\r\n})\r\nexport class GlobalSearchDropdownItemComponent {\r\n public static nextId = 0;\r\n\r\n @Input()\r\n public id = `s-global-search-dropdown-item-${GlobalSearchDropdownItemComponent.nextId++}`;\r\n\r\n @Input()\r\n public primaryLabel?: string;\r\n\r\n @Input()\r\n public secondaryEmptyLabel?: string;\r\n\r\n @Input()\r\n public tertiaryEmptyLabel?: string;\r\n\r\n @Input()\r\n public imageSource?: string;\r\n\r\n @Input()\r\n public imageAlt?: string;\r\n\r\n @Input()\r\n public iconClass?: string;\r\n\r\n @Input()\r\n public secondaryLabel?: string;\r\n\r\n @Input()\r\n public tertiaryLabel?: string;\r\n\r\n @Input()\r\n public size: GlobalSearchSizeEnum = 'standart';\r\n\r\n @Input()\r\n public template: TemplateRef<any> | null = null;\r\n\r\n @Output()\r\n public buttonClick = new EventEmitter<void>();\r\n\r\n @ContentChild(ThumbnailComponent, { static: true })\r\n public thumbnailComponent: ThumbnailComponent | null = null;\r\n\r\n @ViewChild(TemplateRef, { static: true })\r\n public content: TemplateRef<any> | null = null;\r\n\r\n public isMediumSize(): boolean {\r\n return this.size === 'medium';\r\n }\r\n\r\n public isSmallSize(): boolean {\r\n return this.size === 'small';\r\n }\r\n\r\n public getImageSize(): 'medium' | 'small' {\r\n return this._isStandardSize() ? 'medium' : 'small';\r\n }\r\n\r\n private _isStandardSize(): boolean {\r\n return this.size === 'standart';\r\n }\r\n}\r\n","<ng-template>\r\n <div\r\n class=\"global-search-dropdown-item\"\r\n [ngClass]=\"{ 'grid grid-cols-2 gap-2': isSmallSize() }\"\r\n >\r\n <ng-content select=\"s-thumbnail\"></ng-content>\r\n\r\n @if (!thumbnailComponent && (imageSource || iconClass) && !isSmallSize()) {\r\n <s-thumbnail\r\n [id]=\"id + '-thumbnail'\"\r\n [imageSource]=\"imageSource\"\r\n [imageAlt]=\"imageAlt || primaryLabel\"\r\n [iconClass]=\"iconClass ?? ''\"\r\n [size]=\"getImageSize()\"\r\n ></s-thumbnail>\r\n }\r\n\r\n <div\r\n class=\"global-search-item__container ml-[10px] only:ml-0 w-full whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis {{ !isSmallSize() ? 'w-[60%]' : '' }}\"\r\n >\r\n <div #titleTemplate>\r\n <ng-content select=\"[titleTemplate]\"></ng-content>\r\n </div>\r\n @if (!titleTemplate.children.length) {\r\n <s-button\r\n styleClass=\"no-padding\"\r\n [id]=\"id + '-title'\"\r\n priority=\"link\"\r\n [sTooltip]=\"primaryLabel\"\r\n tooltipPosition=\"right\"\r\n [showDelay]=\"0\"\r\n [escape]=\"true\"\r\n [label]=\"primaryLabel\"\r\n size=\"small\"\r\n (clicked)=\"buttonClick.emit()\"\r\n >\r\n </s-button>\r\n }\r\n\r\n <div #labelTemplate>\r\n <ng-content select=\"[labelTemplate]\"></ng-content>\r\n </div>\r\n\r\n @if (!labelTemplate.children.length) {\r\n <span\r\n [id]=\"id + '-label'\"\r\n [ngClass]=\"{\r\n 'text-right pt-[2px] pl-[15px]': isSmallSize(),\r\n 'italic': !secondaryLabel,\r\n }\"\r\n class=\"text-grayscale-90 block whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis\"\r\n [sTooltip]=\"secondaryLabel\"\r\n tooltipPosition=\"top\"\r\n [showDelay]=\"500\"\r\n [escape]=\"true\"\r\n >{{ secondaryLabel ? secondaryLabel : secondaryEmptyLabel }}</span\r\n >\r\n }\r\n\r\n <div #descriptionTemplate>\r\n <ng-content select=\"[descriptionTemplate]\"></ng-content>\r\n </div>\r\n\r\n @if (!descriptionTemplate.children.length && !isMediumSize() && !isSmallSize()) {\r\n <span\r\n [id]=\"id + '-description'\"\r\n class=\"text-grayscale-50 block whitespace-nowrap max-md:whitespace-normal overflow-hidden text-ellipsis\"\r\n [ngClass]=\"{ 'italic': !secondaryLabel }\"\r\n [sTooltip]=\"tertiaryLabel\"\r\n tooltipPosition=\"top\"\r\n [showDelay]=\"500\"\r\n [escape]=\"true\"\r\n >\r\n {{ tertiaryLabel ? tertiaryLabel : tertiaryEmptyLabel }}\r\n </span>\r\n }\r\n </div>\r\n @if (!isSmallSize()) {\r\n <div class=\"w-[40%] flex flex-col text-right\">\r\n <ng-container *ngTemplateOutlet=\"template\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n</ng-template>\r\n","import { animate, state, style, transition, trigger } from '@angular/animations';\r\nimport {\r\n ChangeDetectorRef,\r\n Component,\r\n ContentChildren,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n inject,\r\n} from '@angular/core';\r\n\r\nimport { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { LoadingStateDirective } from '@seniorsistemas/angular-components/loading-state';\r\nimport { NgTemplateOutlet, NgClass } from '@angular/common';\r\nimport { ButtonComponent } from '@seniorsistemas/angular-components/button';\r\nimport { EmptyStateComponent } from '@seniorsistemas/angular-components/empty-state';\r\n\r\n/**\r\n * @description Componente de busca global com input, dropdown de resultados, estado\r\n * de carregamento, empty state e suporte a itens customizáveis via `GlobalSearchDropdownItemComponent`.\r\n *\r\n * @example\r\n * ```html\r\n * <s-global-search\r\n * totalItensLabel=\"resultados\"\r\n * showMoreLabel=\"Ver mais\"\r\n * [totalElements]=\"total\"\r\n * (search)=\"onBusca($event)\" />\r\n * ```\r\n *\r\n * @category Structure\r\n */\r\n@Component({\r\n selector: 's-global-search',\r\n templateUrl: './global-search.component.html',\r\n styleUrls: ['./global-search.component.scss'],\r\n animations: [\r\n trigger('expandableContent', [\r\n state('*', style({ height: '0' })),\r\n state('false', style({ height: '0' })),\r\n state('true', style({ height: '*' })),\r\n transition('* => true', animate('200ms ease-out')),\r\n transition('false <=> true', animate('200ms ease-out')),\r\n ]),\r\n ],\r\n standalone: true,\r\n imports: [\r\n FormsModule,\r\n LoadingStateDirective,\r\n NgTemplateOutlet,\r\n ButtonComponent,\r\n EmptyStateComponent,\r\n NgClass,\r\n ],\r\n})\r\nexport class GlobalSearchComponent {\r\n private readonly _cdr = inject(ChangeDetectorRef);\r\n\r\n public static nextId = 0;\r\n\r\n /** @description Identificador único do componente no DOM. Gerado automaticamente se não informado. */\r\n @Input()\r\n public id = `s-global-search-${GlobalSearchDropdownItemComponent.nextId++}`;\r\n\r\n /** @description Tempo de debounce em ms antes de emitir o evento de busca. @default 500 */\r\n @Input()\r\n public delay = 500;\r\n\r\n /** @description Label que acompanha o total de resultados. Campo obrigatório. */\r\n @Input({ required: true })\r\n public totalItensLabel!: string;\r\n\r\n /** @description Rótulo do link para exibir mais resultados. Campo obrigatório. */\r\n @Input({ required: true })\r\n public showMoreLabel!: string;\r\n\r\n /** @description Placeholder do input de busca. */\r\n @Input()\r\n public placeholder?: string;\r\n\r\n /** @description Exibe indicador de carregamento no dropdown. @default false */\r\n @Input()\r\n public isLoading = false;\r\n\r\n /** @description Número total de resultados encontrados. */\r\n @Input()\r\n public totalElements?: number;\r\n\r\n /** @description Título do empty state quando não há resultados. */\r\n @Input()\r\n public emptyTitle?: string;\r\n\r\n /** @description Descrição do empty state exibida abaixo do título. */\r\n @Input()\r\n public emptyDescription?: string;\r\n\r\n /** @description Classe do ícone exibido no empty state. */\r\n @Input()\r\n public emptyIcon?: string;\r\n\r\n /** @description Exibe o rodapé com o link \"ver mais\" e contagem de resultados. @default true */\r\n @Input() showFooter = true;\r\n\r\n @ContentChildren(GlobalSearchDropdownItemComponent)\r\n public dropdownItens: QueryList<GlobalSearchDropdownItemComponent> | null = null;\r\n\r\n /** @description Emitido ao digitar no campo de busca, com o valor atual da pesquisa. */\r\n @Output()\r\n public searched = new EventEmitter<string>();\r\n\r\n /** @description Emitido quando o campo de busca ganha ou perde foco (`true` = focado). */\r\n @Output()\r\n public focused = new EventEmitter<boolean>();\r\n\r\n /** @description Emitido ao clicar no link para exibir mais resultados. */\r\n @Output()\r\n public moreShown = new EventEmitter<void>();\r\n\r\n public search: string | null = null;\r\n public wasSearched = false;\r\n public isModalLoading = false;\r\n public expanded = true;\r\n\r\n private isFocused = false;\r\n\r\n /**\r\n * @description Controla a largura do campo: fica compacto quando não está focado\r\n * nem tem texto digitado, e expande ao focar ou ao ter conteúdo (mesmo sem foco).\r\n */\r\n protected get isExpanded(): boolean {\r\n return this.isFocused || !!this.search;\r\n }\r\n\r\n public onChange() {\r\n const search = this.search;\r\n setTimeout(() => {\r\n if (this.search === search) {\r\n this._canShowGlobalSearchActive();\r\n this.searched.emit(this.search ?? '');\r\n }\r\n }, this.delay);\r\n }\r\n\r\n public focusIn() {\r\n this.isFocused = true;\r\n this.focused.emit(true);\r\n }\r\n\r\n public focusOut() {\r\n this.isFocused = false;\r\n this.focused.emit(false);\r\n }\r\n\r\n public showMore() {\r\n this.moreShown.emit();\r\n }\r\n\r\n public close() {\r\n this.search = null;\r\n this.wasSearched = false;\r\n this.dropdownItens = null;\r\n this.isModalLoading = false;\r\n }\r\n\r\n private _canShowGlobalSearchActive() {\r\n this.wasSearched = !!this.search;\r\n if (!this.search) {\r\n this.close();\r\n }\r\n this._cdr.detectChanges();\r\n }\r\n}\r\n","<div class=\"global-search__wrapper group flex max-w-full\">\r\n <input\r\n class=\"global-search__input rounded-tl-[20px] rounded-bl-[20px] rounded-tr-none rounded-br-none border border-solid border-grayscale-30 border-r-0 cursor-pointer h-[25px] min-h-[25px] pl-[15px] text-sm font-open-sans outline-none bg-grayscale-0 transition-all duration-300 w-[136px]\"\r\n [class.global-search__input-active]=\"isExpanded\"\r\n [(ngModel)]=\"search\"\r\n (ngModelChange)=\"onChange()\"\r\n [placeholder]=\"placeholder\"\r\n (focus)=\"focusIn()\"\r\n (blur)=\"focusOut()\"\r\n />\r\n <span class=\"global-search__span items-center bg-transparent border border-solid border-grayscale-30 border-l-0 rounded-tr-[20px] rounded-br-[20px] flex h-[25px] justify-center px-2 transition-all duration-300\">\r\n <em class=\"fas fa-search\"></em>\r\n </span>\r\n\r\n @if (wasSearched) {\r\n <div class=\"bg-grayscale-0 rounded-[5px] shadow-[0_2px_8px_0_rgba(0,0,0,0.4)] mt-[60px] min-h-[50px] absolute w-[500px] z-[6]\">\r\n <div\r\n *sLoadingState=\"isLoading && !isModalLoading\"\r\n class=\"global-search__loader\"\r\n >\r\n @if ((dropdownItens && dropdownItens.length > 0) || isLoading) {\r\n <div class=\"min-h-[50px] w-full\">\r\n @if (dropdownItens && dropdownItens.length > 0) {\r\n <div>\r\n <div class=\"border-b border-solid border-grayscale-30 text-grayscale-90 font-semibold h-[50px] p-[15px] flex items-center justify-between\">\r\n <span class=\"m-0 p-0\">{{ totalItensLabel }}</span>\r\n <span\r\n class=\"m-0 p-0 cursor-pointer text-right\"\r\n (click)=\"close()\"\r\n >\r\n <em class=\"fas fa-times\"></em>\r\n </span>\r\n </div>\r\n <div\r\n class=\"max-h-[510px] overflow-auto\"\r\n [@expandableContent]=\"expanded\"\r\n >\r\n @for (item of dropdownItens; track item.id) {\r\n <div\r\n class=\"s-object-card-field hover:bg-[#dbe0e4]\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"item.content\"></ng-container>\r\n </div>\r\n }\r\n </div>\r\n\r\n @if (showFooter) {\r\n <div class=\"border-t border-solid border-grayscale-30 h-[50px]\">\r\n <s-button\r\n class=\"flex flex-col\"\r\n (click)=\"showMore()\"\r\n priority=\"link\"\r\n >\r\n {{ showMoreLabel }}\r\n </s-button>\r\n </div>\r\n }\r\n </div>\r\n }\r\n </div>\r\n }\r\n\r\n @if ((!dropdownItens || !dropdownItens.length) && !isLoading) {\r\n <s-empty-state\r\n [title]=\"emptyTitle ?? ''\"\r\n [description]=\"emptyDescription\"\r\n ngClass=\"global-search__empty-state--icon\"\r\n [iconClass]=\"emptyIcon ? emptyIcon : 'fas fa-search'\"\r\n >\r\n </s-empty-state>\r\n }\r\n </div>\r\n </div>\r\n }\r\n\r\n @if (wasSearched) {\r\n <div\r\n class=\"bg-[rgba(0,0,0,0.4)] cursor-pointer h-[calc(100vh-70px)] left-0 mt-[50px] absolute w-full z-[5]\"\r\n (click)=\"close()\"\r\n ></div>\r\n }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\n\r\nimport { ButtonModule } from '@seniorsistemas/angular-components/button';\r\nimport { EmptyStateModule } from '@seniorsistemas/angular-components/empty-state';\r\nimport { LoadingStateModule } from '@seniorsistemas/angular-components/loading-state';\r\nimport { ThumbnailModule } from '@seniorsistemas/angular-components/thumbnail';\r\nimport { TooltipModule } from '@seniorsistemas/angular-components/tooltip';\r\nimport { GlobalSearchDropdownItemComponent } from './components/dropdown/global-search-dropdown-item.component';\r\nimport { GlobalSearchComponent } from './global-search.component';\r\n\r\n@NgModule({\r\n imports: [\r\n TooltipModule,\r\n ThumbnailModule,\r\n ButtonModule,\r\n LoadingStateModule,\r\n EmptyStateModule,\r\n GlobalSearchComponent,\r\n GlobalSearchDropdownItemComponent,\r\n ],\r\n exports: [\r\n GlobalSearchComponent,\r\n GlobalSearchDropdownItemComponent,\r\n TooltipModule,\r\n ThumbnailModule,\r\n ButtonModule,\r\n LoadingStateModule,\r\n EmptyStateModule,\r\n ],\r\n})\r\nexport class GlobalSearchModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -47,11 +47,11 @@ class GridMenuItemComponent {
|
|
|
47
47
|
return typeof this.item?.disabled === 'function' ? !!this.item.disabled() : !!this.item?.disabled;
|
|
48
48
|
}
|
|
49
49
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridMenuItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
50
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GridMenuItemComponent, isStandalone: true, selector: "s-grid-menu-item", inputs: { item: "item", iconIsFromFontAwesome: "iconIsFromFontAwesome" }, outputs: { clickedGridMenuItem: "clickedGridMenuItem" }, ngImport: i0, template: "@if (item) {\n <button\n class=\"items-center bg-transparent border-0 inline-flex flex-col gap-3 justify-center p-[5px] transition-transform duration-300 ease-in-out w-[200px]\"\n [ngClass]=\"{\n 'cursor-pointer group hover:scale-105': !disabled,\n 'cursor-default opacity-50': disabled,\n 'scale-105
|
|
50
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: GridMenuItemComponent, isStandalone: true, selector: "s-grid-menu-item", inputs: { item: "item", iconIsFromFontAwesome: "iconIsFromFontAwesome" }, outputs: { clickedGridMenuItem: "clickedGridMenuItem" }, ngImport: i0, template: "@if (item) {\n <button\n class=\"items-center bg-transparent border-0 inline-flex flex-col gap-3 justify-center p-[5px] rounded-xxbig transition-transform duration-300 ease-in-out w-[200px] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [ngClass]=\"{\n 'cursor-pointer group hover:scale-105': !disabled,\n 'cursor-default opacity-50': disabled,\n 'scale-105 bg-grayscale-20': item.active,\n 'hover:bg-grayscale-20': iconIsFromFontAwesome && !disabled\n }\"\n (sInteractiveContent)=\"onClick()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled ? -1 : 0\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"self-center rounded-xxbig flex h-16 justify-center overflow-hidden p-2 w-16 items-center text-[3em]\"\n [class.bg-grayscale-20]=\"!iconIsFromFontAwesome\"\n >\n @if (item.icon) {\n @if (iconIsFromFontAwesome) {\n <i [ngClass]=\"iconFontAwesomeClassName + ' text-[#009494]'\"> </i>\n } @else {\n <span\n class=\"bg-center bg-no-repeat bg-cover inline-block h-full w-full\"\n style=\"background-image: url('{{ item.icon }}');\"\n >\n </span>\n }\n } @else if (!item.icon) {\n <span class=\"items-center flex font-open-sans text-xl font-bold group-hover:font-bold\">{{ initialLetter }}</span>\n }\n </div>\n <span\n class=\"font-open-sans text-sm line-clamp-2 overflow-hidden text-ellipsis w-full group-hover:font-bold\"\n [style.paddingBottom]=\"iconIsFromFontAwesome ? '1em' : null\"\n >{{ item.label }}</span>\n </button>\n}\n", dependencies: [{ kind: "directive", type: InteractiveContentDirective, selector: "[sInteractiveContent]", inputs: ["focusable", "disabled", "stopPropagation"], outputs: ["sInteractiveContent"] }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
51
51
|
}
|
|
52
52
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: GridMenuItemComponent, decorators: [{
|
|
53
53
|
type: Component,
|
|
54
|
-
args: [{ selector: 's-grid-menu-item', standalone: true, imports: [InteractiveContentDirective, NgClass], template: "@if (item) {\n <button\n class=\"items-center bg-transparent border-0 inline-flex flex-col gap-3 justify-center p-[5px] transition-transform duration-300 ease-in-out w-[200px]\"\n [ngClass]=\"{\n 'cursor-pointer group hover:scale-105': !disabled,\n 'cursor-default opacity-50': disabled,\n 'scale-105
|
|
54
|
+
args: [{ selector: 's-grid-menu-item', standalone: true, imports: [InteractiveContentDirective, NgClass], template: "@if (item) {\n <button\n class=\"items-center bg-transparent border-0 inline-flex flex-col gap-3 justify-center p-[5px] rounded-xxbig transition-transform duration-300 ease-in-out w-[200px] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [ngClass]=\"{\n 'cursor-pointer group hover:scale-105': !disabled,\n 'cursor-default opacity-50': disabled,\n 'scale-105 bg-grayscale-20': item.active,\n 'hover:bg-grayscale-20': iconIsFromFontAwesome && !disabled\n }\"\n (sInteractiveContent)=\"onClick()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled ? -1 : 0\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"self-center rounded-xxbig flex h-16 justify-center overflow-hidden p-2 w-16 items-center text-[3em]\"\n [class.bg-grayscale-20]=\"!iconIsFromFontAwesome\"\n >\n @if (item.icon) {\n @if (iconIsFromFontAwesome) {\n <i [ngClass]=\"iconFontAwesomeClassName + ' text-[#009494]'\"> </i>\n } @else {\n <span\n class=\"bg-center bg-no-repeat bg-cover inline-block h-full w-full\"\n style=\"background-image: url('{{ item.icon }}');\"\n >\n </span>\n }\n } @else if (!item.icon) {\n <span class=\"items-center flex font-open-sans text-xl font-bold group-hover:font-bold\">{{ initialLetter }}</span>\n }\n </div>\n <span\n class=\"font-open-sans text-sm line-clamp-2 overflow-hidden text-ellipsis w-full group-hover:font-bold\"\n [style.paddingBottom]=\"iconIsFromFontAwesome ? '1em' : null\"\n >{{ item.label }}</span>\n </button>\n}\n" }]
|
|
55
55
|
}], propDecorators: { item: [{
|
|
56
56
|
type: Input,
|
|
57
57
|
args: [{ required: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-grid-menu.mjs","sources":["../../projects/angular-components/grid-menu/src/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.ts","../../projects/angular-components/grid-menu/src/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.html","../../projects/angular-components/grid-menu/src/lib/grid-menu/grid-menu.component.ts","../../projects/angular-components/grid-menu/src/lib/grid-menu/grid-menu.component.html","../../projects/angular-components/grid-menu/src/lib/grid-menu/grid-menu.module.ts","../../projects/angular-components/grid-menu/src/seniorsistemas-angular-components-grid-menu.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { GridMenuItem } from '../../types/grid-menu-item';\r\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\r\n\r\n@Component({\r\n selector: 's-grid-menu-item',\r\n templateUrl: './grid-menu-item.component.html',\r\n standalone: true,\r\n imports: [InteractiveContentDirective, NgClass],\r\n})\r\nexport class GridMenuItemComponent {\r\n @Input({ required: true })\r\n public item!: GridMenuItem;\r\n\r\n @Input()\r\n public iconIsFromFontAwesome = false;\r\n\r\n @Output() clickedGridMenuItem = new EventEmitter<GridMenuItem>();\r\n\r\n public fontAwesomePrefix: 'fal' | 'fas' = 'fal';\r\n\r\n public onClick(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.item.action?.();\r\n this.clickedGridMenuItem.emit(this.item);\r\n }\r\n\r\n public onMouseEnter() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.fontAwesomePrefix = 'fas';\r\n }\r\n\r\n public onMouseLeave() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.fontAwesomePrefix = 'fal';\r\n }\r\n\r\n public get iconFontAwesomeClassName() {\r\n const prefix = this.item.active ? 'fas' : this.fontAwesomePrefix;\r\n return `${prefix} ${this.item.icon}`;\r\n }\r\n\r\n public get initialLetter(): string {\r\n let initialLetter = '';\r\n if (this.item.label) {\r\n const words = this.item.label.split(' ', 2);\r\n initialLetter = words[0].charAt(0).toUpperCase();\r\n if (words.length > 1) {\r\n initialLetter += words[1].charAt(0).toUpperCase();\r\n }\r\n }\r\n return initialLetter;\r\n }\r\n\r\n public get disabled(): boolean {\r\n return typeof this.item?.disabled === 'function' ? !!this.item.disabled() : !!this.item?.disabled;\r\n }\r\n}\r\n","@if (item) {\n <button\n class=\"items-center bg-transparent border-0 inline-flex flex-col gap-3 justify-center p-[5px] transition-transform duration-300 ease-in-out w-[200px]\"\n [ngClass]=\"{\n 'cursor-pointer group hover:scale-105': !disabled,\n 'cursor-default opacity-50': disabled,\n 'scale-105 rounded-xxbig bg-grayscale-20': item.active,\n 'hover:bg-grayscale-20 hover:rounded-xxbig': iconIsFromFontAwesome && !disabled\n }\"\n (sInteractiveContent)=\"onClick()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled ? -1 : 0\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"self-center rounded-xxbig flex h-16 justify-center overflow-hidden p-2 w-16 items-center text-[3em]\"\n [class.bg-grayscale-20]=\"!iconIsFromFontAwesome\"\n >\n @if (item.icon) {\n @if (iconIsFromFontAwesome) {\n <i [ngClass]=\"iconFontAwesomeClassName + ' text-[#009494]'\"> </i>\n } @else {\n <span\n class=\"bg-center bg-no-repeat bg-cover inline-block h-full w-full\"\n style=\"background-image: url('{{ item.icon }}');\"\n >\n </span>\n }\n } @else if (!item.icon) {\n <span class=\"items-center flex font-open-sans text-xl font-bold group-hover:font-bold\">{{ initialLetter }}</span>\n }\n </div>\n <span\n class=\"font-open-sans text-sm line-clamp-2 overflow-hidden text-ellipsis w-full group-hover:font-bold\"\n [style.paddingBottom]=\"iconIsFromFontAwesome ? '1em' : null\"\n >{{ item.label }}</span>\n </button>\n}\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { GridMenuItem } from './types/grid-menu-item';\r\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\r\nimport { GridMenuItemComponent } from './components/grid-menu-item/grid-menu-item.component';\r\n\r\n/**\r\n * @description Componente de menu em grade que exibe uma coleção de itens como cards clicáveis.\r\n * Suporta seleção de item ativo e pode utilizar ícones do Font Awesome ou ícones padrão.\r\n *\r\n * @example\r\n * ```html\r\n * <s-grid-menu\r\n * [items]=\"menuItems\"\r\n * [selectable]=\"true\"\r\n * [(selected)]=\"selectedItem\"\r\n * />\r\n * ```\r\n *\r\n * @category Navegação\r\n */\r\n@Component({\r\n selector: 's-grid-menu',\r\n templateUrl: './grid-menu.component.html',\r\n standalone: true,\r\n imports: [GridMenuItemComponent],\r\n})\r\nexport class GridMenuComponent implements OnChanges {\r\n private previousGridMenuItemClicked: GridMenuItem | undefined;\r\n\r\n /**\r\n * @description Lista de itens exibidos no grid. Aceita um único item ou um array de `GridMenuItem`.\r\n * Valores nulos ou indefinidos resultam em uma lista vazia.\r\n */\r\n @Input()\r\n public set items(items: GridMenuItem[] | GridMenuItem) {\r\n if (isNullOrUndefined(items)) {\r\n this.itemsArray = [];\r\n } else {\r\n this.itemsArray = Array.isArray(items) ? (items as GridMenuItem[]) : [items];\r\n }\r\n }\r\n\r\n /**\r\n * @description Quando `true`, utiliza classes de ícones do Font Awesome nos itens do grid.\r\n * Quando `false`, utiliza o sistema de ícones padrão do projeto.\r\n *\r\n * @default false\r\n */\r\n @Input() useFontAwesomeIcons = false;\r\n\r\n public itemsArray: GridMenuItem[] = [];\r\n\r\n /**\r\n * @description Habilita o modo de seleção do grid. Quando `true`, permite que o usuário\r\n * clique em um item para selecioná-lo, marcando-o como ativo.\r\n *\r\n * @default false\r\n */\r\n @Input() selectable = false;\r\n\r\n /**\r\n * @description Item atualmente selecionado no grid. Usado em conjunto com `selectable = true`\r\n * e suporta two-way binding via `[(selected)]`.\r\n */\r\n @Input() selected!: GridMenuItem;\r\n\r\n /**\r\n * @description Emitido quando o usuário seleciona um novo item no grid.\r\n * Retorna o `GridMenuItem` selecionado. Usado para two-way binding com `[(selected)]`.\r\n */\r\n @Output() selectedChange = new EventEmitter<GridMenuItem>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selected'] && changes['selected'].isFirstChange()) {\r\n if (this.selectable) {\r\n this.previousGridMenuItemClicked = this.selected;\r\n this.selected.active = true;\r\n }\r\n }\r\n }\r\n\r\n onClickGridMenuItem(gridMenuItem: GridMenuItem) {\r\n if (!this.selectable) {\r\n return;\r\n }\r\n if (this.previousGridMenuItemClicked) {\r\n this.previousGridMenuItemClicked.active = false;\r\n }\r\n gridMenuItem.active = !gridMenuItem.active;\r\n this.previousGridMenuItemClicked = gridMenuItem;\r\n this.selectedChange.next(gridMenuItem);\r\n }\r\n}\r\n","<section class=\"grid gap-5 [grid-template-columns:repeat(auto-fill,200px)] justify-evenly\">\n @for (item of itemsArray; track $index) {\n <s-grid-menu-item\n [item]=\"item\"\n [iconIsFromFontAwesome]=\"useFontAwesomeIcons\"\n (clickedGridMenuItem)=\"onClickGridMenuItem($event)\"\n ></s-grid-menu-item>\n }\n</section>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { GridMenuItemComponent } from './components/grid-menu-item/grid-menu-item.component';\r\nimport { GridMenuComponent } from './grid-menu.component';\r\n\r\n@NgModule({\r\n imports: [GridMenuItemComponent, GridMenuComponent],\r\n exports: [GridMenuItemComponent, GridMenuComponent],\r\n})\r\nexport class GridMenuModule {}\r\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-grid-menu.mjs","sources":["../../projects/angular-components/grid-menu/src/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.ts","../../projects/angular-components/grid-menu/src/lib/grid-menu/components/grid-menu-item/grid-menu-item.component.html","../../projects/angular-components/grid-menu/src/lib/grid-menu/grid-menu.component.ts","../../projects/angular-components/grid-menu/src/lib/grid-menu/grid-menu.component.html","../../projects/angular-components/grid-menu/src/lib/grid-menu/grid-menu.module.ts","../../projects/angular-components/grid-menu/src/seniorsistemas-angular-components-grid-menu.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\r\nimport { NgClass } from '@angular/common';\r\n\r\nimport { GridMenuItem } from '../../types/grid-menu-item';\r\nimport { InteractiveContentDirective } from '@seniorsistemas/angular-components/interactive-content';\r\n\r\n@Component({\r\n selector: 's-grid-menu-item',\r\n templateUrl: './grid-menu-item.component.html',\r\n standalone: true,\r\n imports: [InteractiveContentDirective, NgClass],\r\n})\r\nexport class GridMenuItemComponent {\r\n @Input({ required: true })\r\n public item!: GridMenuItem;\r\n\r\n @Input()\r\n public iconIsFromFontAwesome = false;\r\n\r\n @Output() clickedGridMenuItem = new EventEmitter<GridMenuItem>();\r\n\r\n public fontAwesomePrefix: 'fal' | 'fas' = 'fal';\r\n\r\n public onClick(): void {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.item.action?.();\r\n this.clickedGridMenuItem.emit(this.item);\r\n }\r\n\r\n public onMouseEnter() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.fontAwesomePrefix = 'fas';\r\n }\r\n\r\n public onMouseLeave() {\r\n if (this.disabled) {\r\n return;\r\n }\r\n this.fontAwesomePrefix = 'fal';\r\n }\r\n\r\n public get iconFontAwesomeClassName() {\r\n const prefix = this.item.active ? 'fas' : this.fontAwesomePrefix;\r\n return `${prefix} ${this.item.icon}`;\r\n }\r\n\r\n public get initialLetter(): string {\r\n let initialLetter = '';\r\n if (this.item.label) {\r\n const words = this.item.label.split(' ', 2);\r\n initialLetter = words[0].charAt(0).toUpperCase();\r\n if (words.length > 1) {\r\n initialLetter += words[1].charAt(0).toUpperCase();\r\n }\r\n }\r\n return initialLetter;\r\n }\r\n\r\n public get disabled(): boolean {\r\n return typeof this.item?.disabled === 'function' ? !!this.item.disabled() : !!this.item?.disabled;\r\n }\r\n}\r\n","@if (item) {\n <button\n class=\"items-center bg-transparent border-0 inline-flex flex-col gap-3 justify-center p-[5px] rounded-xxbig transition-transform duration-300 ease-in-out w-[200px] focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[3px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)]\"\n [ngClass]=\"{\n 'cursor-pointer group hover:scale-105': !disabled,\n 'cursor-default opacity-50': disabled,\n 'scale-105 bg-grayscale-20': item.active,\n 'hover:bg-grayscale-20': iconIsFromFontAwesome && !disabled\n }\"\n (sInteractiveContent)=\"onClick()\"\n [disabled]=\"disabled\"\n [tabindex]=\"disabled ? -1 : 0\"\n (mouseenter)=\"onMouseEnter()\"\n (mouseleave)=\"onMouseLeave()\"\n >\n <div\n class=\"self-center rounded-xxbig flex h-16 justify-center overflow-hidden p-2 w-16 items-center text-[3em]\"\n [class.bg-grayscale-20]=\"!iconIsFromFontAwesome\"\n >\n @if (item.icon) {\n @if (iconIsFromFontAwesome) {\n <i [ngClass]=\"iconFontAwesomeClassName + ' text-[#009494]'\"> </i>\n } @else {\n <span\n class=\"bg-center bg-no-repeat bg-cover inline-block h-full w-full\"\n style=\"background-image: url('{{ item.icon }}');\"\n >\n </span>\n }\n } @else if (!item.icon) {\n <span class=\"items-center flex font-open-sans text-xl font-bold group-hover:font-bold\">{{ initialLetter }}</span>\n }\n </div>\n <span\n class=\"font-open-sans text-sm line-clamp-2 overflow-hidden text-ellipsis w-full group-hover:font-bold\"\n [style.paddingBottom]=\"iconIsFromFontAwesome ? '1em' : null\"\n >{{ item.label }}</span>\n </button>\n}\n","import { Component, EventEmitter, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { GridMenuItem } from './types/grid-menu-item';\r\nimport { isNullOrUndefined } from '@seniorsistemas/angular-components/utils';\r\nimport { GridMenuItemComponent } from './components/grid-menu-item/grid-menu-item.component';\r\n\r\n/**\r\n * @description Componente de menu em grade que exibe uma coleção de itens como cards clicáveis.\r\n * Suporta seleção de item ativo e pode utilizar ícones do Font Awesome ou ícones padrão.\r\n *\r\n * @example\r\n * ```html\r\n * <s-grid-menu\r\n * [items]=\"menuItems\"\r\n * [selectable]=\"true\"\r\n * [(selected)]=\"selectedItem\"\r\n * />\r\n * ```\r\n *\r\n * @category Navegação\r\n */\r\n@Component({\r\n selector: 's-grid-menu',\r\n templateUrl: './grid-menu.component.html',\r\n standalone: true,\r\n imports: [GridMenuItemComponent],\r\n})\r\nexport class GridMenuComponent implements OnChanges {\r\n private previousGridMenuItemClicked: GridMenuItem | undefined;\r\n\r\n /**\r\n * @description Lista de itens exibidos no grid. Aceita um único item ou um array de `GridMenuItem`.\r\n * Valores nulos ou indefinidos resultam em uma lista vazia.\r\n */\r\n @Input()\r\n public set items(items: GridMenuItem[] | GridMenuItem) {\r\n if (isNullOrUndefined(items)) {\r\n this.itemsArray = [];\r\n } else {\r\n this.itemsArray = Array.isArray(items) ? (items as GridMenuItem[]) : [items];\r\n }\r\n }\r\n\r\n /**\r\n * @description Quando `true`, utiliza classes de ícones do Font Awesome nos itens do grid.\r\n * Quando `false`, utiliza o sistema de ícones padrão do projeto.\r\n *\r\n * @default false\r\n */\r\n @Input() useFontAwesomeIcons = false;\r\n\r\n public itemsArray: GridMenuItem[] = [];\r\n\r\n /**\r\n * @description Habilita o modo de seleção do grid. Quando `true`, permite que o usuário\r\n * clique em um item para selecioná-lo, marcando-o como ativo.\r\n *\r\n * @default false\r\n */\r\n @Input() selectable = false;\r\n\r\n /**\r\n * @description Item atualmente selecionado no grid. Usado em conjunto com `selectable = true`\r\n * e suporta two-way binding via `[(selected)]`.\r\n */\r\n @Input() selected!: GridMenuItem;\r\n\r\n /**\r\n * @description Emitido quando o usuário seleciona um novo item no grid.\r\n * Retorna o `GridMenuItem` selecionado. Usado para two-way binding com `[(selected)]`.\r\n */\r\n @Output() selectedChange = new EventEmitter<GridMenuItem>();\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['selected'] && changes['selected'].isFirstChange()) {\r\n if (this.selectable) {\r\n this.previousGridMenuItemClicked = this.selected;\r\n this.selected.active = true;\r\n }\r\n }\r\n }\r\n\r\n onClickGridMenuItem(gridMenuItem: GridMenuItem) {\r\n if (!this.selectable) {\r\n return;\r\n }\r\n if (this.previousGridMenuItemClicked) {\r\n this.previousGridMenuItemClicked.active = false;\r\n }\r\n gridMenuItem.active = !gridMenuItem.active;\r\n this.previousGridMenuItemClicked = gridMenuItem;\r\n this.selectedChange.next(gridMenuItem);\r\n }\r\n}\r\n","<section class=\"grid gap-5 [grid-template-columns:repeat(auto-fill,200px)] justify-evenly\">\n @for (item of itemsArray; track $index) {\n <s-grid-menu-item\n [item]=\"item\"\n [iconIsFromFontAwesome]=\"useFontAwesomeIcons\"\n (clickedGridMenuItem)=\"onClickGridMenuItem($event)\"\n ></s-grid-menu-item>\n }\n</section>\n","import { NgModule } from '@angular/core';\r\n\r\nimport { GridMenuItemComponent } from './components/grid-menu-item/grid-menu-item.component';\r\nimport { GridMenuComponent } from './grid-menu.component';\r\n\r\n@NgModule({\r\n imports: [GridMenuItemComponent, GridMenuComponent],\r\n exports: [GridMenuItemComponent, GridMenuComponent],\r\n})\r\nexport class GridMenuModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -19,10 +19,10 @@ import { Directive, NgModule } from '@angular/core';
|
|
|
19
19
|
* ```
|
|
20
20
|
* @category Input
|
|
21
21
|
*/
|
|
22
|
-
const HOST_CLASSES = 's-input-text w-full min-h-[35px] rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] py-[5px] text-sm leading-[1.25] text-grayscale-90 placeholder:text-grayscale-60 transition-colors duration-200 ease-out focus:
|
|
22
|
+
const HOST_CLASSES = 's-input-text w-full min-h-[35px] rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] py-[5px] text-sm leading-[1.25] text-grayscale-90 placeholder:text-grayscale-60 transition-colors duration-200 ease-out focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)] disabled:border-grayscale-20 disabled:bg-grayscale-5 disabled:text-grayscale-30 [&.ng-invalid.ng-dirty]:border-criticality-red';
|
|
23
23
|
class InputTextDirective {
|
|
24
24
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputTextDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
25
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: InputTextDirective, isStandalone: true, selector: "input[sInputText]", host: { classAttribute: "s-input-text w-full min-h-[35px] rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] py-[5px] text-sm leading-[1.25] text-grayscale-90 placeholder:text-grayscale-60 transition-colors duration-200 ease-out focus:
|
|
25
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: InputTextDirective, isStandalone: true, selector: "input[sInputText]", host: { classAttribute: "s-input-text w-full min-h-[35px] rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] py-[5px] text-sm leading-[1.25] text-grayscale-90 placeholder:text-grayscale-60 transition-colors duration-200 ease-out focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)] disabled:border-grayscale-20 disabled:bg-grayscale-5 disabled:text-grayscale-30 [&.ng-invalid.ng-dirty]:border-criticality-red" }, ngImport: i0 });
|
|
26
26
|
}
|
|
27
27
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InputTextDirective, decorators: [{
|
|
28
28
|
type: Directive,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-input-text.mjs","sources":["../../projects/angular-components/input-text/src/lib/input-text/input-text.directive.ts","../../projects/angular-components/input-text/src/lib/input-text/input-text.module.ts","../../projects/angular-components/input-text/src/seniorsistemas-angular-components-input-text.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n/**\n * @description Diretiva de estilo que aplica a aparência visual padrão de campo de texto\n * (borda, fundo, tipografia e estados de foco, desabilitado e inválido) a um `<input>` nativo.\n *\n * É uma diretiva **apenas de estilo**: não implementa `ControlValueAccessor`, não gerencia\n * foco/ARIA e não depende de nenhum outro componente. Combine livremente com `[formControl]`,\n * `[(ngModel)]`, `sInputMask`, `pKeyFilter`, `sTooltip`, `[readOnly]`, etc. no mesmo elemento.\n *\n * O estado de erro (borda vermelha) aparece automaticamente quando o próprio elemento\n * hospedeiro recebe as classes `ng-invalid` e `ng-dirty` do Angular Forms — ou seja, quando\n * `[formControl]`/`[(ngModel)]` está no MESMO elemento que `sInputText`.\n *\n * @example\n * ```html\n * <input type=\"text\" sInputText [formControl]=\"nome\" placeholder=\"Digite seu nome\" />\n * ```\n * @category Input\n */\nconst HOST_CLASSES =\n 's-input-text w-full min-h-[35px] rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] py-[5px] text-sm leading-[1.25] text-grayscale-90 placeholder:text-grayscale-60 transition-colors duration-200 ease-out focus:
|
|
1
|
+
{"version":3,"file":"seniorsistemas-angular-components-input-text.mjs","sources":["../../projects/angular-components/input-text/src/lib/input-text/input-text.directive.ts","../../projects/angular-components/input-text/src/lib/input-text/input-text.module.ts","../../projects/angular-components/input-text/src/seniorsistemas-angular-components-input-text.ts"],"sourcesContent":["import { Directive } from '@angular/core';\n\n/**\n * @description Diretiva de estilo que aplica a aparência visual padrão de campo de texto\n * (borda, fundo, tipografia e estados de foco, desabilitado e inválido) a um `<input>` nativo.\n *\n * É uma diretiva **apenas de estilo**: não implementa `ControlValueAccessor`, não gerencia\n * foco/ARIA e não depende de nenhum outro componente. Combine livremente com `[formControl]`,\n * `[(ngModel)]`, `sInputMask`, `pKeyFilter`, `sTooltip`, `[readOnly]`, etc. no mesmo elemento.\n *\n * O estado de erro (borda vermelha) aparece automaticamente quando o próprio elemento\n * hospedeiro recebe as classes `ng-invalid` e `ng-dirty` do Angular Forms — ou seja, quando\n * `[formControl]`/`[(ngModel)]` está no MESMO elemento que `sInputText`.\n *\n * @example\n * ```html\n * <input type=\"text\" sInputText [formControl]=\"nome\" placeholder=\"Digite seu nome\" />\n * ```\n * @category Input\n */\nconst HOST_CLASSES =\n 's-input-text w-full min-h-[35px] rounded-medium border border-grayscale-30 bg-grayscale-0 px-[10px] py-[5px] text-sm leading-[1.25] text-grayscale-90 placeholder:text-grayscale-60 transition-colors duration-200 ease-out focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-[-2px] focus-visible:outline-[var(--s-focus-ring-color,#0090ff)] disabled:border-grayscale-20 disabled:bg-grayscale-5 disabled:text-grayscale-30 [&.ng-invalid.ng-dirty]:border-criticality-red';\n\n@Directive({\n selector: 'input[sInputText]',\n standalone: true,\n host: {\n class: HOST_CLASSES,\n },\n})\nexport class InputTextDirective {}\n\n","import { NgModule } from '@angular/core';\n\nimport { InputTextDirective } from './input-text.directive';\n\n@NgModule({\n imports: [InputTextDirective],\n exports: [InputTextDirective],\n})\nexport class InputTextModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAEA;;;;;;;;;;;;;;;;;AAiBG;AACH,MAAM,YAAY,GACd,weAAwe,CAAC;MAShe,kBAAkB,CAAA;wGAAlB,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;4FAAlB,kBAAkB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,mBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,weAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;4FAAlB,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAP9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,mBAAmB;AAC7B,oBAAA,UAAU,EAAE,IAAI;AAChB,oBAAA,IAAI,EAAE;AACF,wBAAA,KAAK,EAAE,YAAY;AACtB,qBAAA;AACJ,iBAAA,CAAA;;;MCrBY,eAAe,CAAA;wGAAf,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;yGAAf,eAAe,EAAA,OAAA,EAAA,CAHd,kBAAkB,CAAA,EAAA,OAAA,EAAA,CAClB,kBAAkB,CAAA,EAAA,CAAA,CAAA;yGAEnB,eAAe,EAAA,CAAA,CAAA;;4FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,kBAAkB,CAAC;oBAC7B,OAAO,EAAE,CAAC,kBAAkB,CAAC;AAChC,iBAAA,CAAA;;;ACPD;;AAEG;;;;"}
|
|
@@ -125,7 +125,7 @@ class NavigationButtonComponent {
|
|
|
125
125
|
useExisting: forwardRef(() => NavigationButtonComponent),
|
|
126
126
|
multi: true,
|
|
127
127
|
},
|
|
128
|
-
], ngImport: i0, template: "<div\n class=\"navigation-button\"\n [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n <button\n class=\"option option--previous\"\n [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n (click)=\"onPrevious()\"\n >\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n\n @if (steps[currentIndex].tooltip || tooltip) {\n <button\n [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n class=\"step\"\n sTieredMenu\n [items]=\"tieredMenuItems\"\n [focusedItem]=\"tieredMenuItems[currentIndex]\"\n >\n {{ steps[currentIndex].label }}\n </button>\n } @else {\n <button class=\"step\">\n {{ steps[currentIndex].label }}\n </button>\n }\n <button\n class=\"option option--next\"\n [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n (click)=\"onNext()\"\n >\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n</div>\n", styles: [".navigation-button{display:inline-flex}.navigation-button .option,.navigation-button .step{background-color:#428bca;border:none;color:#fff}.navigation-button:not(.navigation-button--disabled) .step{cursor:pointer}.navigation-button:not(.navigation-button--disabled) .step:hover{background-color:#063951}.navigation-button .option{padding:8px 12px}.navigation-button .option--previous{border-radius:16px 0 0 16px}.navigation-button .option--next{border-radius:0 16px 16px 0}.navigation-button .option--disabled{opacity:.5}.navigation-button .option:not(.option--disabled):hover{cursor:pointer;background-color:#063951}.navigation-button .step{font-family:Open Sans,sans-serif;font-size:14px;padding:8px 16px;text-align:center}.navigation-button--disabled{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TieredMenuDirective, selector: "[sTieredMenu]", inputs: ["items", "focusedItem", "triggerEvent", "ariaLabel"], outputs: ["tieredMenuOpened", "tieredMenuClosed"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
128
|
+
], ngImport: i0, template: "<div\n class=\"navigation-button\"\n [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n <button\n class=\"option option--previous\"\n [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n (click)=\"onPrevious()\"\n >\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n\n @if (steps[currentIndex].tooltip || tooltip) {\n <button\n [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n class=\"step\"\n sTieredMenu\n [items]=\"tieredMenuItems\"\n [focusedItem]=\"tieredMenuItems[currentIndex]\"\n >\n {{ steps[currentIndex].label }}\n </button>\n } @else {\n <button class=\"step\">\n {{ steps[currentIndex].label }}\n </button>\n }\n <button\n class=\"option option--next\"\n [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n (click)=\"onNext()\"\n >\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n</div>\n", styles: [".navigation-button{display:inline-flex}.navigation-button .option,.navigation-button .step{background-color:#428bca;border:none;color:#fff}.navigation-button .option:focus-visible,.navigation-button .step:focus-visible{outline:2px solid var(--s-focus-ring-color);outline-offset:3px}.navigation-button:not(.navigation-button--disabled) .step{cursor:pointer}.navigation-button:not(.navigation-button--disabled) .step:hover{background-color:#063951}.navigation-button .option{padding:8px 12px}.navigation-button .option--previous{border-radius:16px 0 0 16px}.navigation-button .option--next{border-radius:0 16px 16px 0}.navigation-button .option--disabled{opacity:.5}.navigation-button .option:not(.option--disabled):hover{cursor:pointer;background-color:#063951}.navigation-button .step{font-family:Open Sans,sans-serif;font-size:14px;padding:8px 16px;text-align:center}.navigation-button--disabled{opacity:.5}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: TieredMenuDirective, selector: "[sTieredMenu]", inputs: ["items", "focusedItem", "triggerEvent", "ariaLabel"], outputs: ["tieredMenuOpened", "tieredMenuClosed"] }, { kind: "directive", type: TooltipDirective, selector: "[sTooltip]", inputs: ["sTooltip", "tooltipPosition", "showDelay", "displayTime", "tooltipEvent", "escape", "visible", "mobileBehavior", "focusedInputRef", "checkTruncatedText"] }] });
|
|
129
129
|
}
|
|
130
130
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NavigationButtonComponent, decorators: [{
|
|
131
131
|
type: Component,
|
|
@@ -135,7 +135,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
135
135
|
useExisting: forwardRef(() => NavigationButtonComponent),
|
|
136
136
|
multi: true,
|
|
137
137
|
},
|
|
138
|
-
], standalone: true, imports: [NgClass, TieredMenuDirective, TooltipDirective], template: "<div\n class=\"navigation-button\"\n [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n <button\n class=\"option option--previous\"\n [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n (click)=\"onPrevious()\"\n >\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n\n @if (steps[currentIndex].tooltip || tooltip) {\n <button\n [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n class=\"step\"\n sTieredMenu\n [items]=\"tieredMenuItems\"\n [focusedItem]=\"tieredMenuItems[currentIndex]\"\n >\n {{ steps[currentIndex].label }}\n </button>\n } @else {\n <button class=\"step\">\n {{ steps[currentIndex].label }}\n </button>\n }\n <button\n class=\"option option--next\"\n [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n (click)=\"onNext()\"\n >\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n</div>\n", styles: [".navigation-button{display:inline-flex}.navigation-button .option,.navigation-button .step{background-color:#428bca;border:none;color:#fff}.navigation-button:not(.navigation-button--disabled) .step{cursor:pointer}.navigation-button:not(.navigation-button--disabled) .step:hover{background-color:#063951}.navigation-button .option{padding:8px 12px}.navigation-button .option--previous{border-radius:16px 0 0 16px}.navigation-button .option--next{border-radius:0 16px 16px 0}.navigation-button .option--disabled{opacity:.5}.navigation-button .option:not(.option--disabled):hover{cursor:pointer;background-color:#063951}.navigation-button .step{font-family:Open Sans,sans-serif;font-size:14px;padding:8px 16px;text-align:center}.navigation-button--disabled{opacity:.5}\n"] }]
|
|
138
|
+
], standalone: true, imports: [NgClass, TieredMenuDirective, TooltipDirective], template: "<div\n class=\"navigation-button\"\n [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n <button\n class=\"option option--previous\"\n [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n (click)=\"onPrevious()\"\n >\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n\n @if (steps[currentIndex].tooltip || tooltip) {\n <button\n [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n class=\"step\"\n sTieredMenu\n [items]=\"tieredMenuItems\"\n [focusedItem]=\"tieredMenuItems[currentIndex]\"\n >\n {{ steps[currentIndex].label }}\n </button>\n } @else {\n <button class=\"step\">\n {{ steps[currentIndex].label }}\n </button>\n }\n <button\n class=\"option option--next\"\n [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n (click)=\"onNext()\"\n >\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n</div>\n", styles: [".navigation-button{display:inline-flex}.navigation-button .option,.navigation-button .step{background-color:#428bca;border:none;color:#fff}.navigation-button .option:focus-visible,.navigation-button .step:focus-visible{outline:2px solid var(--s-focus-ring-color);outline-offset:3px}.navigation-button:not(.navigation-button--disabled) .step{cursor:pointer}.navigation-button:not(.navigation-button--disabled) .step:hover{background-color:#063951}.navigation-button .option{padding:8px 12px}.navigation-button .option--previous{border-radius:16px 0 0 16px}.navigation-button .option--next{border-radius:0 16px 16px 0}.navigation-button .option--disabled{opacity:.5}.navigation-button .option:not(.option--disabled):hover{cursor:pointer;background-color:#063951}.navigation-button .step{font-family:Open Sans,sans-serif;font-size:14px;padding:8px 16px;text-align:center}.navigation-button--disabled{opacity:.5}\n"] }]
|
|
139
139
|
}], propDecorators: { steps: [{
|
|
140
140
|
type: Input,
|
|
141
141
|
args: [{ required: true }]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seniorsistemas-angular-components-navigation-button.mjs","sources":["../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.component.ts","../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.component.html","../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.module.ts","../../projects/angular-components/navigation-button/src/seniorsistemas-angular-components-navigation-button.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n forwardRef,\r\n OnInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { NavigationButtonItem } from './models/navigation-button-item';\r\nimport { NavigationButtonStepChangedInfo } from './models';\r\nimport { TieredMenuItemData, TieredMenuDirective } from '@seniorsistemas/angular-components/tiered-menu';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de navegação por etapas que exibe o estado atual (step)\r\n * com suporte a avanço, retrocesso e seleção direta via dropdown (`TieredMenu`).\r\n * Implementa `ControlValueAccessor` para integração com formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-navigation-button\r\n * [steps]=\"etapas\"\r\n * (stepChanged)=\"onEtapaMudou($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-navigation-button',\r\n templateUrl: './navigation-button.component.html',\r\n styleUrls: ['./navigation-button.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NavigationButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [NgClass, TieredMenuDirective, TooltipDirective],\r\n})\r\nexport class NavigationButtonComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** @description Lista de etapas de navegação. Campo obrigatório. */\r\n @Input({ required: true })\r\n public steps!: NavigationButtonItem[];\r\n\r\n /** @description Valor padrão a ser selecionado ao inicializar o componente. */\r\n @Input()\r\n public defaultValue: unknown;\r\n\r\n /** @description Texto exibido no tooltip do botão principal. */\r\n @Input()\r\n public tooltip?: string;\r\n\r\n /** @description Quando `true`, emite `stepChanged` durante a inicialização com a etapa atual. @default false */\r\n @Input()\r\n public changeOnInit = false;\r\n\r\n /** @description Emitido quando o usuário navega para uma nova etapa, com informações da etapa anterior e atual. */\r\n @Output()\r\n public stepChanged: EventEmitter<NavigationButtonStepChangedInfo> = new EventEmitter();\r\n\r\n public currentIndex = 0;\r\n public isDisabled = false;\r\n public tieredMenuItems: TieredMenuItemData[] = [];\r\n\r\n private _onChange?: (value: unknown) => void;\r\n private _onTouched?: () => void;\r\n private _value: unknown;\r\n\r\n public ngOnInit(): void {\r\n this._createTieredMenuItems();\r\n\r\n if (this.changeOnInit) {\r\n this.stepChanged.emit({\r\n previous: null,\r\n current: this.steps[this.currentIndex],\r\n });\r\n }\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this._setDefaultValue();\r\n }\r\n\r\n private _setDefaultValue(): void {\r\n if (this.defaultValue) {\r\n this._value = this.defaultValue;\r\n\r\n const index = this.steps.findIndex((step) => step.value === this._value);\r\n this.currentIndex = index !== -1 ? index : 0;\r\n this.stepChanged.emit({\r\n previous: null,\r\n current: this.steps[this.currentIndex],\r\n });\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n public writeValue(value: unknown): void {\r\n this._value = value;\r\n\r\n const index = this.steps.findIndex((step) => step.value === this._value);\r\n this.currentIndex = index !== -1 ? index : 0;\r\n }\r\n\r\n public registerOnChange(onChange: (value: unknown) => void): void {\r\n this._onChange = onChange;\r\n }\r\n\r\n public registerOnTouched(onTouched: () => void): void {\r\n this._onTouched = onTouched;\r\n }\r\n\r\n public setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n public onNext(): void {\r\n if (this.isDisabled) return;\r\n\r\n const previous = this.steps[this.currentIndex];\r\n\r\n if (this.currentIndex < this.steps.length - 1) {\r\n this.currentIndex++;\r\n\r\n const current = this.steps[this.currentIndex];\r\n\r\n this._onChange && this._onChange(current.value);\r\n this.stepChanged.emit({ previous, current });\r\n }\r\n\r\n this._onTouched && this._onTouched();\r\n }\r\n\r\n public onPrevious(): void {\r\n if (this.isDisabled) return;\r\n\r\n const previous = this.steps[this.currentIndex];\r\n\r\n if (this.currentIndex > 0) {\r\n this.currentIndex--;\r\n\r\n const current = this.steps[this.currentIndex];\r\n\r\n this._onChange && this._onChange(current.value);\r\n this.stepChanged.emit({ previous, current });\r\n }\r\n\r\n this._onTouched && this._onTouched();\r\n }\r\n\r\n private _createTieredMenuItems() {\r\n this.steps.forEach((step: NavigationButtonItem) => {\r\n this.tieredMenuItems.push({\r\n label: step.label,\r\n command: () => {\r\n const index = this.steps.findIndex((s) => s === step);\r\n if (this.currentIndex !== index) {\r\n this._onChange && this._onChange(step.value);\r\n this.stepChanged.emit({\r\n previous: this.steps[this.currentIndex],\r\n current: step,\r\n });\r\n this.currentIndex = index;\r\n }\r\n\r\n this._onTouched && this._onTouched();\r\n },\r\n });\r\n });\r\n }\r\n}\r\n","<div\n class=\"navigation-button\"\n [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n <button\n class=\"option option--previous\"\n [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n (click)=\"onPrevious()\"\n >\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n\n @if (steps[currentIndex].tooltip || tooltip) {\n <button\n [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n class=\"step\"\n sTieredMenu\n [items]=\"tieredMenuItems\"\n [focusedItem]=\"tieredMenuItems[currentIndex]\"\n >\n {{ steps[currentIndex].label }}\n </button>\n } @else {\n <button class=\"step\">\n {{ steps[currentIndex].label }}\n </button>\n }\n <button\n class=\"option option--next\"\n [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n (click)=\"onNext()\"\n >\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { NavigationButtonComponent } from './navigation-button.component';\r\n\r\n@NgModule({\r\n imports: [NavigationButtonComponent],\r\n exports: [NavigationButtonComponent],\r\n})\r\nexport class NavigationButtonModule {}\r\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-navigation-button.mjs","sources":["../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.component.ts","../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.component.html","../../projects/angular-components/navigation-button/src/lib/navigation-button/navigation-button.module.ts","../../projects/angular-components/navigation-button/src/seniorsistemas-angular-components-navigation-button.ts"],"sourcesContent":["import {\r\n Component,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n forwardRef,\r\n OnInit,\r\n AfterViewInit,\r\n ChangeDetectorRef,\r\n inject,\r\n} from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\n\r\nimport { NavigationButtonItem } from './models/navigation-button-item';\r\nimport { NavigationButtonStepChangedInfo } from './models';\r\nimport { TieredMenuItemData, TieredMenuDirective } from '@seniorsistemas/angular-components/tiered-menu';\r\nimport { NgClass } from '@angular/common';\r\nimport { TooltipDirective } from '@seniorsistemas/angular-components/tooltip';\r\n\r\n/**\r\n * @description Componente de navegação por etapas que exibe o estado atual (step)\r\n * com suporte a avanço, retrocesso e seleção direta via dropdown (`TieredMenu`).\r\n * Implementa `ControlValueAccessor` para integração com formulários Angular.\r\n *\r\n * @example\r\n * ```html\r\n * <s-navigation-button\r\n * [steps]=\"etapas\"\r\n * (stepChanged)=\"onEtapaMudou($event)\" />\r\n * ```\r\n *\r\n * @category Inputs\r\n */\r\n@Component({\r\n selector: 's-navigation-button',\r\n templateUrl: './navigation-button.component.html',\r\n styleUrls: ['./navigation-button.component.scss'],\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NavigationButtonComponent),\r\n multi: true,\r\n },\r\n ],\r\n standalone: true,\r\n imports: [NgClass, TieredMenuDirective, TooltipDirective],\r\n})\r\nexport class NavigationButtonComponent implements ControlValueAccessor, OnInit, AfterViewInit {\r\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\r\n\r\n /** @description Lista de etapas de navegação. Campo obrigatório. */\r\n @Input({ required: true })\r\n public steps!: NavigationButtonItem[];\r\n\r\n /** @description Valor padrão a ser selecionado ao inicializar o componente. */\r\n @Input()\r\n public defaultValue: unknown;\r\n\r\n /** @description Texto exibido no tooltip do botão principal. */\r\n @Input()\r\n public tooltip?: string;\r\n\r\n /** @description Quando `true`, emite `stepChanged` durante a inicialização com a etapa atual. @default false */\r\n @Input()\r\n public changeOnInit = false;\r\n\r\n /** @description Emitido quando o usuário navega para uma nova etapa, com informações da etapa anterior e atual. */\r\n @Output()\r\n public stepChanged: EventEmitter<NavigationButtonStepChangedInfo> = new EventEmitter();\r\n\r\n public currentIndex = 0;\r\n public isDisabled = false;\r\n public tieredMenuItems: TieredMenuItemData[] = [];\r\n\r\n private _onChange?: (value: unknown) => void;\r\n private _onTouched?: () => void;\r\n private _value: unknown;\r\n\r\n public ngOnInit(): void {\r\n this._createTieredMenuItems();\r\n\r\n if (this.changeOnInit) {\r\n this.stepChanged.emit({\r\n previous: null,\r\n current: this.steps[this.currentIndex],\r\n });\r\n }\r\n }\r\n\r\n public ngAfterViewInit(): void {\r\n this._setDefaultValue();\r\n }\r\n\r\n private _setDefaultValue(): void {\r\n if (this.defaultValue) {\r\n this._value = this.defaultValue;\r\n\r\n const index = this.steps.findIndex((step) => step.value === this._value);\r\n this.currentIndex = index !== -1 ? index : 0;\r\n this.stepChanged.emit({\r\n previous: null,\r\n current: this.steps[this.currentIndex],\r\n });\r\n\r\n this.changeDetectorRef.detectChanges();\r\n }\r\n }\r\n\r\n public writeValue(value: unknown): void {\r\n this._value = value;\r\n\r\n const index = this.steps.findIndex((step) => step.value === this._value);\r\n this.currentIndex = index !== -1 ? index : 0;\r\n }\r\n\r\n public registerOnChange(onChange: (value: unknown) => void): void {\r\n this._onChange = onChange;\r\n }\r\n\r\n public registerOnTouched(onTouched: () => void): void {\r\n this._onTouched = onTouched;\r\n }\r\n\r\n public setDisabledState?(isDisabled: boolean): void {\r\n this.isDisabled = isDisabled;\r\n }\r\n\r\n public onNext(): void {\r\n if (this.isDisabled) return;\r\n\r\n const previous = this.steps[this.currentIndex];\r\n\r\n if (this.currentIndex < this.steps.length - 1) {\r\n this.currentIndex++;\r\n\r\n const current = this.steps[this.currentIndex];\r\n\r\n this._onChange && this._onChange(current.value);\r\n this.stepChanged.emit({ previous, current });\r\n }\r\n\r\n this._onTouched && this._onTouched();\r\n }\r\n\r\n public onPrevious(): void {\r\n if (this.isDisabled) return;\r\n\r\n const previous = this.steps[this.currentIndex];\r\n\r\n if (this.currentIndex > 0) {\r\n this.currentIndex--;\r\n\r\n const current = this.steps[this.currentIndex];\r\n\r\n this._onChange && this._onChange(current.value);\r\n this.stepChanged.emit({ previous, current });\r\n }\r\n\r\n this._onTouched && this._onTouched();\r\n }\r\n\r\n private _createTieredMenuItems() {\r\n this.steps.forEach((step: NavigationButtonItem) => {\r\n this.tieredMenuItems.push({\r\n label: step.label,\r\n command: () => {\r\n const index = this.steps.findIndex((s) => s === step);\r\n if (this.currentIndex !== index) {\r\n this._onChange && this._onChange(step.value);\r\n this.stepChanged.emit({\r\n previous: this.steps[this.currentIndex],\r\n current: step,\r\n });\r\n this.currentIndex = index;\r\n }\r\n\r\n this._onTouched && this._onTouched();\r\n },\r\n });\r\n });\r\n }\r\n}\r\n","<div\n class=\"navigation-button\"\n [ngClass]=\"{ 'navigation-button--disabled': isDisabled }\"\n>\n <button\n class=\"option option--previous\"\n [ngClass]=\"{ 'option--disabled': currentIndex === 0 }\"\n (click)=\"onPrevious()\"\n >\n <i class=\"fas fa-chevron-left\"></i>\n </button>\n\n @if (steps[currentIndex].tooltip || tooltip) {\n <button\n [sTooltip]=\"steps[currentIndex].tooltip || tooltip\"\n class=\"step\"\n sTieredMenu\n [items]=\"tieredMenuItems\"\n [focusedItem]=\"tieredMenuItems[currentIndex]\"\n >\n {{ steps[currentIndex].label }}\n </button>\n } @else {\n <button class=\"step\">\n {{ steps[currentIndex].label }}\n </button>\n }\n <button\n class=\"option option--next\"\n [ngClass]=\"{ 'option--disabled': currentIndex === steps.length - 1 }\"\n (click)=\"onNext()\"\n >\n <i class=\"fas fa-chevron-right\"></i>\n </button>\n</div>\n","import { NgModule } from '@angular/core';\r\nimport { NavigationButtonComponent } from './navigation-button.component';\r\n\r\n@NgModule({\r\n imports: [NavigationButtonComponent],\r\n exports: [NavigationButtonComponent],\r\n})\r\nexport class NavigationButtonModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|