matcha-components 20.5.0 → 20.12.0

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.
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Output, Input, Component, ContentChildren, ElementRef, Renderer2, HostBinding, Inject, HostListener, ContentChild, Directive, forwardRef, ChangeDetectionStrategy, TemplateRef, ViewChild, Injectable, Optional, ViewEncapsulation, NgModule, createComponent } from '@angular/core';
2
+ import { EventEmitter, Output, HostBinding, Input, Component, ContentChildren, ElementRef, Renderer2, Inject, ViewChild, ContentChild, HostListener, Directive, forwardRef, ChangeDetectionStrategy, TemplateRef, Injectable, Optional, ViewEncapsulation, NgModule, createComponent } from '@angular/core';
3
3
  import { animation, style, animate, trigger, transition, useAnimation, state, query, stagger, animateChild, sequence, group } from '@angular/animations';
4
4
  import { Subscription, Subject, BehaviorSubject, fromEvent } from 'rxjs';
5
5
  import { debounceTime, filter } from 'rxjs/operators';
@@ -7,6 +7,12 @@ import * as i1 from '@angular/common';
7
7
  import { CommonModule } from '@angular/common';
8
8
  import { FormControlName, NG_VALUE_ACCESSOR, NgControl, FormsModule, ReactiveFormsModule } from '@angular/forms';
9
9
 
10
+ /**
11
+ * Token de injeção para MatchaOptionParent
12
+ * Usado para injetar o componente pai no matcha-option
13
+ */
14
+ const MATCHA_OPTION_PARENT = Symbol('MatchaOptionParent');
15
+
10
16
  const customAnimation = animation([
11
17
  style({
12
18
  opacity: '{{opacity}}',
@@ -362,7 +368,9 @@ class MatchaAccordionItemComponent {
362
368
  constructor() {
363
369
  this._stretch = false;
364
370
  this._isOpen = false;
371
+ this._clickableHeader = true;
365
372
  this.opened = new EventEmitter();
373
+ this.toggleRequested = new EventEmitter();
366
374
  }
367
375
  set stretch(value) {
368
376
  this._stretch = value != null && `${value}` !== 'false';
@@ -370,37 +378,65 @@ class MatchaAccordionItemComponent {
370
378
  get stretch() {
371
379
  return this._stretch;
372
380
  }
381
+ get stretchClass() {
382
+ return this._stretch;
383
+ }
384
+ set clickableHeader(value) {
385
+ this._clickableHeader = value != null && `${value}` !== 'false';
386
+ }
387
+ get clickableHeader() {
388
+ return this._clickableHeader;
389
+ }
373
390
  set isOpen(value) {
374
391
  this._isOpen = value != null && `${value}` !== 'false';
375
392
  }
376
393
  get isOpen() {
377
394
  return this._isOpen;
378
395
  }
396
+ get isOpenClass() {
397
+ return this._isOpen;
398
+ }
379
399
  ngOnInit() {
380
400
  this.opened.emit(this.isOpen);
381
401
  }
402
+ ngOnChanges(changes) {
403
+ if (changes['isOpen']) {
404
+ this.opened.emit(this.isOpen);
405
+ }
406
+ }
382
407
  toggleAccordion() {
383
- this.isOpen = !this.isOpen;
384
- this.opened.emit(this.isOpen);
408
+ // Emite evento para o accordion pai controlar o estado
409
+ this.toggleRequested.emit();
385
410
  }
386
411
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAccordionItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
387
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAccordionItemComponent, isStandalone: false, selector: "matcha-accordion-item", inputs: { stretch: "stretch", isOpen: "isOpen" }, outputs: { opened: "opened" }, ngImport: i0, template: "<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\" (click)=\"toggleAccordion()\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], animations: [...createAnimations] }); }
412
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAccordionItemComponent, isStandalone: false, selector: "matcha-accordion-item", inputs: { stretch: "stretch", clickableHeader: "clickableHeader", isOpen: "isOpen" }, outputs: { opened: "opened", toggleRequested: "toggleRequested" }, host: { properties: { "class.stretch": "this.stretchClass", "class.is-open": "this.isOpenClass" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\"\n [class.cursor-pointer]=\"clickableHeader\"\n (click)=\"clickableHeader ? toggleAccordion() : null\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], animations: [...createAnimations] }); }
388
413
  }
389
414
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAccordionItemComponent, decorators: [{
390
415
  type: Component,
391
- args: [{ selector: 'matcha-accordion-item', standalone: false, animations: [...createAnimations], template: "<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\" (click)=\"toggleAccordion()\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n" }]
416
+ args: [{ selector: 'matcha-accordion-item', standalone: false, animations: [...createAnimations], template: "<div class=\"accordion-item flex-column overflow-hidden\">\n <div class=\"accordion-header d-flex\">\n <div class=\"d-flex accordion-header-wrapper\"\n [class.cursor-pointer]=\"clickableHeader\"\n (click)=\"clickableHeader ? toggleAccordion() : null\">\n <ng-content select=\"matcha-accordion-header\"></ng-content>\n </div>\n </div>\n <div class=\"accordion-content overflow-hidden\" [@expandCollapse]=\"isOpen ? '*' : 'void'\">\n <ng-content select=\"matcha-accordion-content\"></ng-content>\n <ng-content></ng-content>\n </div>\n</div>\n" }]
392
417
  }], propDecorators: { stretch: [{
393
418
  type: Input
419
+ }], stretchClass: [{
420
+ type: HostBinding,
421
+ args: ['class.stretch']
422
+ }], clickableHeader: [{
423
+ type: Input
394
424
  }], isOpen: [{
395
425
  type: Input
426
+ }], isOpenClass: [{
427
+ type: HostBinding,
428
+ args: ['class.is-open']
396
429
  }], opened: [{
397
430
  type: Output
431
+ }], toggleRequested: [{
432
+ type: Output
398
433
  }] } });
399
434
 
400
435
  class MatchaAccordionComponent {
401
436
  constructor() {
402
437
  this._multiple = false;
403
438
  this.openedChange = new EventEmitter();
439
+ this.subscriptions = [];
404
440
  }
405
441
  set multiple(value) {
406
442
  // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.
@@ -410,15 +446,34 @@ class MatchaAccordionComponent {
410
446
  return this._multiple;
411
447
  }
412
448
  ngAfterContentInit() {
449
+ this.setupItems();
450
+ // Escuta mudanças na lista de itens (para casos dinâmicos)
451
+ this.items.changes.subscribe(() => {
452
+ this.setupItems();
453
+ });
454
+ }
455
+ ngOnDestroy() {
456
+ this.subscriptions.forEach(sub => sub.unsubscribe());
457
+ }
458
+ setupItems() {
459
+ // Limpa subscriptions anteriores
460
+ this.subscriptions.forEach(sub => sub.unsubscribe());
461
+ this.subscriptions = [];
413
462
  this.items.forEach(item => {
414
- item.opened.subscribe((isOpen) => {
463
+ const toggleSub = item.toggleRequested.subscribe(() => {
415
464
  this.toggleItem(item);
465
+ });
466
+ this.subscriptions.push(toggleSub);
467
+ const openedSub = item.opened.subscribe((isOpen) => {
416
468
  this.openedChange.emit(isOpen);
417
469
  });
470
+ this.subscriptions.push(openedSub);
418
471
  });
419
472
  }
420
473
  toggleItem(selectedItem) {
421
- // Se não permite múltiplos itens abertos e o item selecionado foi aberto, fecha os demais.
474
+ // Toggle o item selecionado
475
+ selectedItem.isOpen = !selectedItem.isOpen;
476
+ // Se não permite múltiplos itens abertos e o item foi aberto, fecha os demais
422
477
  if (!this.multiple && selectedItem.isOpen) {
423
478
  this.items.forEach(item => {
424
479
  if (item !== selectedItem) {
@@ -1043,8 +1098,14 @@ class MatchaCardComponent {
1043
1098
  }
1044
1099
  get alpha() { return this._alpha; }
1045
1100
  set alpha(v) { this._alpha = v === 'false' ? false : !!v; }
1101
+ get alphaAttr() {
1102
+ return this.alpha ? 'true' : 'false';
1103
+ }
1046
1104
  get tint() { return this._tint; }
1047
1105
  set tint(v) { this._tint = v === 'false' ? false : !!v; }
1106
+ get tintAttr() {
1107
+ return this.tint ? 'true' : 'false';
1108
+ }
1048
1109
  get loading() { return this._loading; }
1049
1110
  set loading(v) { this._loading = v === 'false' ? false : !!v; }
1050
1111
  get classes() {
@@ -1078,7 +1139,7 @@ class MatchaCardComponent {
1078
1139
  return this.blockquote === 'left' || this.blockquote === 'right';
1079
1140
  }
1080
1141
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1081
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaCardComponent, isStandalone: false, selector: "matcha-card", inputs: { color: "color", blockquote: "blockquote", blockquoteColor: "blockquoteColor", class: "class", alpha: "alpha", tint: "tint", loading: "loading" }, host: { properties: { "attr.color": "this.colorAttr", "class": "this.classes" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""] }); }
1142
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaCardComponent, isStandalone: false, selector: "matcha-card", inputs: { color: "color", blockquote: "blockquote", blockquoteColor: "blockquoteColor", class: "class", alpha: "alpha", tint: "tint", loading: "loading" }, host: { properties: { "attr.color": "this.colorAttr", "attr.alpha": "this.alphaAttr", "attr.tint": "this.tintAttr", "class": "this.classes" } }, ngImport: i0, template: "<ng-content></ng-content>\n", styles: [""] }); }
1082
1143
  }
1083
1144
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaCardComponent, decorators: [{
1084
1145
  type: Component,
@@ -1096,8 +1157,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
1096
1157
  type: Input
1097
1158
  }], alpha: [{
1098
1159
  type: Input
1160
+ }], alphaAttr: [{
1161
+ type: HostBinding,
1162
+ args: ['attr.alpha']
1099
1163
  }], tint: [{
1100
1164
  type: Input
1165
+ }], tintAttr: [{
1166
+ type: HostBinding,
1167
+ args: ['attr.tint']
1101
1168
  }], loading: [{
1102
1169
  type: Input
1103
1170
  }], classes: [{
@@ -1238,70 +1305,159 @@ class MatchaDrawerComponent {
1238
1305
  return `matcha-drawer matcha-drawer-${this.mode} matcha-drawer-${this.position} ${this.isOpen ? 'matcha-drawer-open' : 'matcha-drawer-closed'}`;
1239
1306
  }
1240
1307
  get drawerWidth() {
1241
- return this.isOpen && this.mode === 'push' ? this.width : '0px';
1308
+ if (this.mode === 'overlay') {
1309
+ // Modo overlay: sempre 0px para não empurrar o conteúdo
1310
+ return '0px';
1311
+ }
1312
+ // Modo push: ocupa espaço apenas quando aberto
1313
+ return this.isOpen ? this.width : '0px';
1314
+ }
1315
+ get drawerHeight() {
1316
+ return '100vh';
1242
1317
  }
1243
- constructor(elementRef, renderer) {
1318
+ constructor(elementRef, renderer, cdr) {
1244
1319
  this.elementRef = elementRef;
1245
1320
  this.renderer = renderer;
1321
+ this.cdr = cdr;
1246
1322
  this.isOpen = false;
1247
- this.mode = 'push'; // push empurra o conteúdo, overlay sobrepõe
1323
+ this.mode = 'push';
1248
1324
  this.position = 'left';
1249
- this.width = '280px';
1325
+ this.width = '300px';
1326
+ this.hasBackdrop = true;
1327
+ this.disableClose = false;
1328
+ this.autoCloseOnMobile = true;
1329
+ this.breakpoint = 1024;
1330
+ this.elevation = 8;
1331
+ this.hasFooter = false;
1250
1332
  this.isOpenChange = new EventEmitter();
1251
- this.openChange = new EventEmitter();
1333
+ this.drawerToggle = new EventEmitter();
1334
+ this.drawerOpened = new EventEmitter();
1335
+ this.drawerClosed = new EventEmitter();
1336
+ this.isMobile = false;
1337
+ this.bodyScrollLocked = false;
1338
+ this.setupResizeObserver();
1252
1339
  }
1253
1340
  ngOnInit() {
1254
- this.renderer.addClass(this.elementRef.nativeElement, 'matcha-drawer');
1255
- // Configurar classes utilitárias baseadas no modo
1256
- if (this.mode === 'overlay') {
1257
- this.renderer.addClass(this.elementRef.nativeElement, 'position-fixed');
1258
- this.renderer.addClass(this.elementRef.nativeElement, 'place-top');
1259
- this.renderer.addClass(this.elementRef.nativeElement, 'z-index-11'); // Aumentado para ficar acima do backdrop
1260
- this.renderer.setStyle(this.elementRef.nativeElement, 'height', '100vh');
1341
+ this.checkScreenSize();
1342
+ this.setupBodyScrollLock();
1343
+ }
1344
+ ngOnDestroy() {
1345
+ if (this.resizeObserver) {
1346
+ this.resizeObserver.disconnect();
1261
1347
  }
1262
- else {
1263
- this.renderer.addClass(this.elementRef.nativeElement, 'position-relative');
1348
+ this.unlockBodyScroll();
1349
+ }
1350
+ setupResizeObserver() {
1351
+ if (typeof ResizeObserver !== 'undefined') {
1352
+ this.resizeObserver = new ResizeObserver(() => {
1353
+ this.checkScreenSize();
1354
+ });
1355
+ if (this.elementRef.nativeElement.parentElement) {
1356
+ this.resizeObserver.observe(this.elementRef.nativeElement.parentElement);
1357
+ }
1264
1358
  }
1265
- // Configurar posição left/right
1266
- if (this.position === 'left') {
1267
- this.renderer.addClass(this.elementRef.nativeElement, 'place-left');
1359
+ }
1360
+ checkScreenSize() {
1361
+ const wasMobile = this.isMobile;
1362
+ this.isMobile = window.innerWidth < this.breakpoint;
1363
+ if (wasMobile !== this.isMobile) {
1364
+ this.cdr.detectChanges();
1365
+ if (!this.isMobile && this.autoCloseOnMobile && this.isOpen) {
1366
+ this.close();
1367
+ }
1268
1368
  }
1269
- else {
1270
- this.renderer.setStyle(this.elementRef.nativeElement, 'right', '0');
1369
+ }
1370
+ setupBodyScrollLock() {
1371
+ if (this.mode === 'overlay' && this.isOpen) {
1372
+ this.lockBodyScroll();
1271
1373
  }
1272
1374
  }
1273
- ngOnDestroy() {
1274
- // Cleanup se necessário
1375
+ lockBodyScroll() {
1376
+ if (!this.bodyScrollLocked) {
1377
+ document.body.style.overflow = 'hidden';
1378
+ this.bodyScrollLocked = true;
1379
+ }
1380
+ }
1381
+ unlockBodyScroll() {
1382
+ if (this.bodyScrollLocked) {
1383
+ document.body.style.overflow = '';
1384
+ this.bodyScrollLocked = false;
1385
+ }
1275
1386
  }
1276
1387
  toggle() {
1388
+ if (this.disableClose && this.isOpen) {
1389
+ return;
1390
+ }
1277
1391
  this.isOpen = !this.isOpen;
1278
1392
  this.isOpenChange.emit(this.isOpen);
1279
- this.openChange.emit(this.isOpen);
1393
+ this.drawerToggle.emit();
1394
+ if (this.isOpen) {
1395
+ this.drawerOpened.emit();
1396
+ if (this.mode === 'overlay') {
1397
+ this.lockBodyScroll();
1398
+ }
1399
+ }
1400
+ else {
1401
+ this.drawerClosed.emit();
1402
+ this.unlockBodyScroll();
1403
+ }
1404
+ if (this.isMobile && this.autoCloseOnMobile && this.isOpen) {
1405
+ setTimeout(() => this.close(), 300);
1406
+ }
1280
1407
  }
1281
1408
  open() {
1282
- if (!this.isOpen) {
1409
+ if (!this.isOpen && !this.disableClose) {
1283
1410
  this.isOpen = true;
1284
1411
  this.isOpenChange.emit(this.isOpen);
1285
- this.openChange.emit(this.isOpen);
1412
+ this.drawerToggle.emit();
1413
+ this.drawerOpened.emit();
1414
+ if (this.mode === 'overlay') {
1415
+ this.lockBodyScroll();
1416
+ }
1286
1417
  }
1287
1418
  }
1288
1419
  close() {
1289
- if (this.isOpen) {
1420
+ if (this.isOpen && !this.disableClose) {
1290
1421
  this.isOpen = false;
1291
1422
  this.isOpenChange.emit(this.isOpen);
1292
- this.openChange.emit(this.isOpen);
1423
+ this.drawerToggle.emit();
1424
+ this.drawerClosed.emit();
1425
+ this.unlockBodyScroll();
1426
+ }
1427
+ }
1428
+ onBackdropClick() {
1429
+ if (this.hasBackdrop && this.mode === 'overlay' && !this.disableClose) {
1430
+ this.close();
1431
+ }
1432
+ }
1433
+ onKeyDown(event) {
1434
+ if (event.key === 'Escape' && this.isOpen && !this.disableClose) {
1435
+ this.close();
1436
+ }
1437
+ }
1438
+ getDrawerTransform() {
1439
+ // Centralização em telas grandes
1440
+ if (window.innerWidth >= 1920) {
1441
+ return `translateX(calc(50vw - 960px))`;
1293
1442
  }
1443
+ return 'none';
1294
1444
  }
1295
1445
  get animationState() {
1296
- return this.isOpen ? this.position : 'void';
1446
+ return this.isOpen ? 'open' : 'closed';
1447
+ }
1448
+ get isOverlayMode() {
1449
+ return this.mode === 'overlay';
1450
+ }
1451
+ get isPushMode() {
1452
+ return this.mode === 'push';
1297
1453
  }
1298
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component }); }
1299
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaDrawerComponent, isStandalone: false, selector: "matcha-drawer", inputs: { isOpen: "isOpen", mode: "mode", position: "position", width: "width" }, outputs: { isOpenChange: "isOpenChange", openChange: "openChange" }, host: { properties: { "class": "this.drawerClasses", "style.width": "this.drawerWidth" } }, ngImport: i0, template: "<!-- Backdrop para modo overlay (renderizado primeiro para ficar atr\u00E1s) -->\n<div *ngIf=\"mode === 'overlay' && isOpen\"\n class=\"matcha-drawer-backdrop position-fixed place-top place-left z-index-9 w-100-p h-100-p\"\n [@fadeInOut]=\"isOpen ? '1' : '0'\"\n (click)=\"close()\">\n</div>\n\n<!-- Drawer Content Container -->\n<div class=\"matcha-drawer-container\"\n [@slideIn]=\"animationState\"\n [class.matcha-drawer-overlay-mode]=\"mode === 'overlay'\"\n [class.matcha-drawer-push-mode]=\"mode === 'push'\"\n [style.width]=\"width\">\n\n <!-- Drawer Header (opcional) -->\n <div class=\"matcha-drawer-header\" *ngIf=\"isOpen\">\n <ng-content select=\"[slot=header]\"></ng-content>\n\n <!-- Close button quando em modo overlay -->\n <button *ngIf=\"mode === 'overlay'\"\n matcha-button\n icon\n size=\"small\"\n basic\n (click)=\"close()\"\n class=\"matcha-drawer-close-btn place-right\">\n <span class=\"i-matcha-close\"></span>\n </button>\n </div>\n\n <!-- Drawer Content -->\n <div class=\"matcha-drawer-content\" *ngIf=\"isOpen\">\n <ng-content></ng-content>\n </div>\n\n <!-- Drawer Footer (opcional) -->\n <div class=\"matcha-drawer-footer\" *ngIf=\"isOpen\">\n <ng-content select=\"[slot=footer]\"></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;transition:width .3s cubic-bezier(.4,0,.2,1)}.matcha-drawer-container{height:100%;transition:transform .3s cubic-bezier(.4,0,.2,1)}.matcha-drawer-push-mode{background-color:var(--color-background);border-right:1px solid var(--color-divider)}.matcha-drawer-overlay-mode{background-color:var(--color-card);box-shadow:var(--elevation-4);border-radius:0 8px 8px 0;position:relative;z-index:11}.matcha-drawer-header{padding:16px;border-bottom:1px solid var(--color-divider);position:relative;z-index:1}.matcha-drawer-close-btn{position:absolute;top:8px;right:8px}.matcha-drawer-content{padding:16px;overflow-y:auto;max-height:calc(100vh - 100px);position:relative;z-index:1}.matcha-drawer-footer{padding:16px;border-top:1px solid var(--color-divider);margin-top:auto;position:relative;z-index:1}.matcha-drawer-backdrop{background-color:#00000052;cursor:pointer}:host(.matcha-drawer-right) .matcha-drawer-overlay-mode{border-radius:8px 0 0 8px}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: MatchaButtonComponent, selector: "[matcha-button]", inputs: ["size", "size-xs", "size-sm", "size-md", "size-lg", "size-xl", "color", "basic", "outline", "alpha", "pill", "link", "icon"] }], animations: createAnimations }); }
1454
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
1455
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaDrawerComponent, isStandalone: false, selector: "matcha-drawer", inputs: { isOpen: "isOpen", mode: "mode", position: "position", width: "width", hasBackdrop: "hasBackdrop", disableClose: "disableClose", autoCloseOnMobile: "autoCloseOnMobile", breakpoint: "breakpoint", elevation: "elevation", hasFooter: "hasFooter" }, outputs: { isOpenChange: "isOpenChange", drawerToggle: "drawerToggle", drawerOpened: "drawerOpened", drawerClosed: "drawerClosed" }, host: { properties: { "class": "this.drawerClasses", "style.width": "this.drawerWidth", "style.height": "this.drawerHeight" } }, viewQueries: [{ propertyName: "drawerContent", first: true, predicate: ["drawerContent"], descendants: true }], ngImport: i0, template: "<!-- Backdrop para modo overlay -->\n<div *ngIf=\"isOverlayMode && isOpen && hasBackdrop\"\n class=\"matcha-backdrop\"\n [@fadeInOut]=\"isOpen ? '1' : '0'\"\n (click)=\"onBackdropClick()\">\n</div>\n\n<!-- Drawer Container Principal -->\n<div *ngIf=\"(isOpen && mode === 'overlay') || mode === 'push'\"\n class=\"matcha-drawer-container\"\n [class.matcha-drawer-overlay-mode]=\"isOverlayMode\"\n [class.matcha-drawer-push-mode]=\"isPushMode\"\n [class.matcha-drawer-left]=\"position === 'left'\"\n [class.matcha-drawer-right]=\"position === 'right'\"\n [@slideInLeft]=\"animationState\"\n [style.transform]=\"getDrawerTransform()\"\n [style.width]=\"drawerWidth\"\n [style.overflow]=\"isOpen ? 'visible' : 'hidden'\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\">\n\n <!-- Drawer Content -->\n <div class=\"matcha-drawer-content\"\n [style.min-width]=\"width\">\n\n <!-- Header do drawer -->\n <div class=\"matcha-drawer-header\">\n <ng-content select=\"[drawer-header]\"></ng-content>\n\n </div>\n\n <!-- Conte\u00FAdo principal do drawer -->\n <div class=\"matcha-drawer-main-content\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n <ng-content></ng-content>\n </div>\n\n <!-- Footer do drawer -->\n <div *ngIf=\"hasFooter\" class=\"matcha-drawer-footer\">\n <ng-content select=\"[drawer-footer]\"></ng-content>\n </div>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }], animations: createAnimations }); }
1300
1456
  }
1301
1457
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerComponent, decorators: [{
1302
1458
  type: Component,
1303
- args: [{ selector: 'matcha-drawer', animations: createAnimations, standalone: false, template: "<!-- Backdrop para modo overlay (renderizado primeiro para ficar atr\u00E1s) -->\n<div *ngIf=\"mode === 'overlay' && isOpen\"\n class=\"matcha-drawer-backdrop position-fixed place-top place-left z-index-9 w-100-p h-100-p\"\n [@fadeInOut]=\"isOpen ? '1' : '0'\"\n (click)=\"close()\">\n</div>\n\n<!-- Drawer Content Container -->\n<div class=\"matcha-drawer-container\"\n [@slideIn]=\"animationState\"\n [class.matcha-drawer-overlay-mode]=\"mode === 'overlay'\"\n [class.matcha-drawer-push-mode]=\"mode === 'push'\"\n [style.width]=\"width\">\n\n <!-- Drawer Header (opcional) -->\n <div class=\"matcha-drawer-header\" *ngIf=\"isOpen\">\n <ng-content select=\"[slot=header]\"></ng-content>\n\n <!-- Close button quando em modo overlay -->\n <button *ngIf=\"mode === 'overlay'\"\n matcha-button\n icon\n size=\"small\"\n basic\n (click)=\"close()\"\n class=\"matcha-drawer-close-btn place-right\">\n <span class=\"i-matcha-close\"></span>\n </button>\n </div>\n\n <!-- Drawer Content -->\n <div class=\"matcha-drawer-content\" *ngIf=\"isOpen\">\n <ng-content></ng-content>\n </div>\n\n <!-- Drawer Footer (opcional) -->\n <div class=\"matcha-drawer-footer\" *ngIf=\"isOpen\">\n <ng-content select=\"[slot=footer]\"></ng-content>\n </div>\n</div>\n", styles: [":host{display:block;transition:width .3s cubic-bezier(.4,0,.2,1)}.matcha-drawer-container{height:100%;transition:transform .3s cubic-bezier(.4,0,.2,1)}.matcha-drawer-push-mode{background-color:var(--color-background);border-right:1px solid var(--color-divider)}.matcha-drawer-overlay-mode{background-color:var(--color-card);box-shadow:var(--elevation-4);border-radius:0 8px 8px 0;position:relative;z-index:11}.matcha-drawer-header{padding:16px;border-bottom:1px solid var(--color-divider);position:relative;z-index:1}.matcha-drawer-close-btn{position:absolute;top:8px;right:8px}.matcha-drawer-content{padding:16px;overflow-y:auto;max-height:calc(100vh - 100px);position:relative;z-index:1}.matcha-drawer-footer{padding:16px;border-top:1px solid var(--color-divider);margin-top:auto;position:relative;z-index:1}.matcha-drawer-backdrop{background-color:#00000052;cursor:pointer}:host(.matcha-drawer-right) .matcha-drawer-overlay-mode{border-radius:8px 0 0 8px}\n"] }]
1304
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }], propDecorators: { isOpen: [{
1459
+ args: [{ selector: 'matcha-drawer', animations: createAnimations, standalone: false, template: "<!-- Backdrop para modo overlay -->\n<div *ngIf=\"isOverlayMode && isOpen && hasBackdrop\"\n class=\"matcha-backdrop\"\n [@fadeInOut]=\"isOpen ? '1' : '0'\"\n (click)=\"onBackdropClick()\">\n</div>\n\n<!-- Drawer Container Principal -->\n<div *ngIf=\"(isOpen && mode === 'overlay') || mode === 'push'\"\n class=\"matcha-drawer-container\"\n [class.matcha-drawer-overlay-mode]=\"isOverlayMode\"\n [class.matcha-drawer-push-mode]=\"isPushMode\"\n [class.matcha-drawer-left]=\"position === 'left'\"\n [class.matcha-drawer-right]=\"position === 'right'\"\n [@slideInLeft]=\"animationState\"\n [style.transform]=\"getDrawerTransform()\"\n [style.width]=\"drawerWidth\"\n [style.overflow]=\"isOpen ? 'visible' : 'hidden'\"\n (keydown)=\"onKeyDown($event)\"\n tabindex=\"0\">\n\n <!-- Drawer Content -->\n <div class=\"matcha-drawer-content\"\n [style.min-width]=\"width\">\n\n <!-- Header do drawer -->\n <div class=\"matcha-drawer-header\">\n <ng-content select=\"[drawer-header]\"></ng-content>\n\n </div>\n\n <!-- Conte\u00FAdo principal do drawer -->\n <div class=\"matcha-drawer-main-content\">\n <ng-content select=\"[drawer-content]\"></ng-content>\n <ng-content></ng-content>\n </div>\n\n <!-- Footer do drawer -->\n <div *ngIf=\"hasFooter\" class=\"matcha-drawer-footer\">\n <ng-content select=\"[drawer-footer]\"></ng-content>\n </div>\n </div>\n</div>\n" }]
1460
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { isOpen: [{
1305
1461
  type: Input
1306
1462
  }], mode: [{
1307
1463
  type: Input
@@ -1309,16 +1465,121 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
1309
1465
  type: Input
1310
1466
  }], width: [{
1311
1467
  type: Input
1468
+ }], hasBackdrop: [{
1469
+ type: Input
1470
+ }], disableClose: [{
1471
+ type: Input
1472
+ }], autoCloseOnMobile: [{
1473
+ type: Input
1474
+ }], breakpoint: [{
1475
+ type: Input
1476
+ }], elevation: [{
1477
+ type: Input
1478
+ }], hasFooter: [{
1479
+ type: Input
1312
1480
  }], isOpenChange: [{
1313
1481
  type: Output
1314
- }], openChange: [{
1482
+ }], drawerToggle: [{
1483
+ type: Output
1484
+ }], drawerOpened: [{
1485
+ type: Output
1486
+ }], drawerClosed: [{
1315
1487
  type: Output
1488
+ }], drawerContent: [{
1489
+ type: ViewChild,
1490
+ args: ['drawerContent', { static: false }]
1316
1491
  }], drawerClasses: [{
1317
1492
  type: HostBinding,
1318
1493
  args: ['class']
1319
1494
  }], drawerWidth: [{
1320
1495
  type: HostBinding,
1321
1496
  args: ['style.width']
1497
+ }], drawerHeight: [{
1498
+ type: HostBinding,
1499
+ args: ['style.height']
1500
+ }] } });
1501
+
1502
+ class MatchaDrawerContainerComponent {
1503
+ constructor() {
1504
+ this.hasBackdrop = true;
1505
+ this.autoFocus = true;
1506
+ }
1507
+ ngOnInit() {
1508
+ if (this.drawer) {
1509
+ this.setupDrawerEvents();
1510
+ }
1511
+ }
1512
+ ngOnDestroy() {
1513
+ // Cleanup se necessário
1514
+ }
1515
+ setupDrawerEvents() {
1516
+ if (this.drawer) {
1517
+ this.drawer.drawerOpened.subscribe(() => {
1518
+ if (this.autoFocus) {
1519
+ setTimeout(() => {
1520
+ // Focus será gerenciado pelo próprio drawer component
1521
+ }, 100);
1522
+ }
1523
+ });
1524
+ }
1525
+ }
1526
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1527
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaDrawerContainerComponent, isStandalone: false, selector: "matcha-drawer-container", inputs: { hasBackdrop: "hasBackdrop", autoFocus: "autoFocus" }, queries: [{ propertyName: "drawer", first: true, predicate: MatchaDrawerComponent, descendants: true }], ngImport: i0, template: "<div class=\"matcha-drawer-container-wrapper\">\n <ng-content></ng-content>\n</div>\n" }); }
1528
+ }
1529
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerContainerComponent, decorators: [{
1530
+ type: Component,
1531
+ args: [{ selector: 'matcha-drawer-container', standalone: false, template: "<div class=\"matcha-drawer-container-wrapper\">\n <ng-content></ng-content>\n</div>\n" }]
1532
+ }], propDecorators: { hasBackdrop: [{
1533
+ type: Input
1534
+ }], autoFocus: [{
1535
+ type: Input
1536
+ }], drawer: [{
1537
+ type: ContentChild,
1538
+ args: [MatchaDrawerComponent]
1539
+ }] } });
1540
+
1541
+ class MatchaDrawerContentComponent {
1542
+ constructor() {
1543
+ this.padding = '24px';
1544
+ this.scrollable = true;
1545
+ this.maxHeight = 'auto';
1546
+ }
1547
+ get contentClasses() {
1548
+ return `matcha-drawer-content ${this.scrollable ? 'scrollable' : 'no-scroll'}`;
1549
+ }
1550
+ get maxHeightStyle() {
1551
+ return this.maxHeight;
1552
+ }
1553
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1554
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaDrawerContentComponent, isStandalone: false, selector: "matcha-drawer-content", inputs: { padding: "padding", scrollable: "scrollable", maxHeight: "maxHeight" }, host: { properties: { "class": "this.contentClasses", "style.max-height": "this.maxHeightStyle" } }, ngImport: i0, template: `
1555
+ <div class="matcha-drawer-content-wrapper">
1556
+ <ng-content></ng-content>
1557
+ </div>
1558
+ `, isInline: true }); }
1559
+ }
1560
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerContentComponent, decorators: [{
1561
+ type: Component,
1562
+ args: [{
1563
+ selector: 'matcha-drawer-content',
1564
+ template: `
1565
+ <div class="matcha-drawer-content-wrapper">
1566
+ <ng-content></ng-content>
1567
+ </div>
1568
+ `,
1569
+ standalone: false
1570
+ }]
1571
+ }], propDecorators: { padding: [{
1572
+ type: Input
1573
+ }], scrollable: [{
1574
+ type: Input
1575
+ }], maxHeight: [{
1576
+ type: Input
1577
+ }], contentClasses: [{
1578
+ type: HostBinding,
1579
+ args: ['class']
1580
+ }], maxHeightStyle: [{
1581
+ type: HostBinding,
1582
+ args: ['style.max-height']
1322
1583
  }] } });
1323
1584
 
1324
1585
  class MatchaIconComponent {
@@ -1737,9 +1998,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
1737
1998
 
1738
1999
  class MatchaToolbarComponent {
1739
2000
  constructor() {
2001
+ this.elevation = 1;
1740
2002
  this.isMobileScreen = false;
1741
2003
  this.mobileBreakpoint = 1024;
1742
2004
  }
2005
+ get elevationClass() {
2006
+ return `elevation-z-${this.elevation}`;
2007
+ }
1743
2008
  ngOnInit() {
1744
2009
  this.checkScreenWidth();
1745
2010
  }
@@ -1756,12 +2021,14 @@ class MatchaToolbarComponent {
1756
2021
  clearTimeout(this.resizeTimeout);
1757
2022
  }
1758
2023
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaToolbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1759
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaToolbarComponent, isStandalone: false, selector: "matcha-toolbar", host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8 matcha-elevation-z1\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-40 flex-wrap\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
2024
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaToolbarComponent, isStandalone: false, selector: "matcha-toolbar", inputs: { elevation: "elevation" }, host: { listeners: { "window:resize": "onResize()" } }, ngImport: i0, template: "<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8\" [ngClass]=\"elevationClass\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-40 flex-wrap\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }] }); }
1760
2025
  }
1761
2026
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaToolbarComponent, decorators: [{
1762
2027
  type: Component,
1763
- args: [{ selector: 'matcha-toolbar', standalone: false, template: "<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8 matcha-elevation-z1\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-40 flex-wrap\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n" }]
1764
- }], propDecorators: { onResize: [{
2028
+ args: [{ selector: 'matcha-toolbar', standalone: false, template: "<!-- HOW TO USE:\n<matcha-toolbar>\n <matcha-title type=\"icon\" icon=\"settings-out\" (iconClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-NO-ICONE-AQUI\">\n {{'FINANCIAL.CATEGORY.TITLE' | translate}}\n </matcha-title>\n <search-form toolbar-form-field (searchText)=\"searchText($event)\"></search-form>\n <matcha-toolbar-button icon=\"home-out\" (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-button>\n <matcha-toolbar-content>\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-content>\n <matcha-toolbar-main-button (buttonClick)=\"FUN\u00C7\u00C3O-AO-CLICAR-AQUI\">\n TEXTO DO BOT\u00C3O AQUI\n </matcha-toolbar-main-button>\n QUALQUER OUTRA FUNCIONALIDADE AQUI\n</matcha-toolbar>\n-->\n<ng-template #toolbarMainButton>\n <ng-content select=\"matcha-toolbar-main-button\"></ng-content>\n</ng-template>\n\n<ng-template #toolbarCustomButton>\n <ng-content select=\"matcha-toolbar-custom-button\"></ng-content>\n</ng-template>\n<!-- CONTENT HEADER -->\n<div class=\"flex-column background-surface radius-8\" [ngClass]=\"elevationClass\">\n <div class=\"flex-column flex-md-row flex-wrap p-16 flex-align-center flex-space-between h-auto min-h-40 flex-wrap\">\n <div class=\"w-100-p--force w-md-auto--force flex-space-between flex-wrap\">\n <div class=\"min-h-32 flex-center-center\">\n <ng-content select=\"matcha-title\"></ng-content>\n </div>\n <ng-container *ngIf=\"isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n <div class=\"w-100-p--force w-md-auto--force flex-row flex-end gap-8\">\n <!-- ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <ng-content select=\"search-form\"></ng-content>\n <!-- /ISSO DEVE SER SUBSTITUIDO PELO matcha-input-search FOR IMPLEMENTADO -->\n <div class=\"flex-row gap-8\">\n <ng-content select=\"matcha-toolbar-button\"></ng-content>\n <ng-content select=\"matcha-toolbar-content\"></ng-content>\n <ng-content></ng-content>\n <ng-container *ngIf=\"!isMobileScreen\">\n <ng-container *ngTemplateOutlet=\"toolbarMainButton\"></ng-container>\n <ng-container *ngTemplateOutlet=\"toolbarCustomButton\"></ng-container>\n </ng-container>\n </div>\n </div>\n </div>\n</div>\n<!-- / CONTENT HEADER -->\n" }]
2029
+ }], propDecorators: { elevation: [{
2030
+ type: Input
2031
+ }], onResize: [{
1765
2032
  type: HostListener,
1766
2033
  args: ['window:resize', []]
1767
2034
  }] } });
@@ -1843,11 +2110,11 @@ class MatchaFormFieldComponent {
1843
2110
  return !!this.control?.invalid && (this.control?.touched || this.control?.dirty);
1844
2111
  }
1845
2112
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaFormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
1846
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaFormFieldComponent, isStandalone: false, selector: "matcha-form-field", inputs: { color: "color", size: "size", sizeXs: ["size-xs", "sizeXs"], sizeSm: ["size-sm", "sizeSm"], sizeMd: ["size-md", "sizeMd"], sizeLg: ["size-lg", "sizeLg"], sizeXl: ["size-xl", "sizeXl"] }, queries: [{ propertyName: "controlDir", first: true, predicate: FormControlName, descendants: true }], ngImport: i0, template: "<div class=\"flex-column gap-4\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
2113
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaFormFieldComponent, isStandalone: false, selector: "matcha-form-field", inputs: { color: "color", size: "size", sizeXs: ["size-xs", "sizeXs"], sizeSm: ["size-sm", "sizeSm"], sizeMd: ["size-md", "sizeMd"], sizeLg: ["size-lg", "sizeLg"], sizeXl: ["size-xl", "sizeXl"] }, queries: [{ propertyName: "controlDir", first: true, predicate: FormControlName, descendants: true }], ngImport: i0, template: "<div class=\"flex-column gap-4\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n<ng-content select=\"matcha-hint-text\"></ng-content>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
1847
2114
  }
1848
2115
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaFormFieldComponent, decorators: [{
1849
2116
  type: Component,
1850
- args: [{ selector: 'matcha-form-field', standalone: false, template: "<div class=\"flex-column gap-4\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n" }]
2117
+ args: [{ selector: 'matcha-form-field', standalone: false, template: "<div class=\"flex-column gap-4\">\n <div class=\"matcha-form-field position-relative w-100-p min-h-40 flex-align-center\" #inputSelector>\n <div class=\"flex-row position-absolute w-100-p min-h-40 h-100-p\">\n <div class=\"bl-2 bt-2 bb-2 radius-left-8 min-w-8 border-color-{{color}}\"></div>\n <div class=\"bb-2 w-auto border-color-{{color}}\">\n <ng-content select=\"matcha-label\"></ng-content>\n </div>\n <div class=\"br-2 bt-2 bb-2 radius-right-8 w-100-p border-color-{{color}}\"></div>\n </div>\n <div class=\"flex-row position-relative py-8 px-12 gap-8 w-100-p\">\n <ng-content></ng-content>\n </div>\n </div>\n <ng-container *ngIf=\"showError\">\n <ng-content select=\"matcha-error\"></ng-content>\n </ng-container>\n <ng-content select=\"matcha-autocomplete\"></ng-content>\n</div>\n<ng-content select=\"matcha-hint-text\"></ng-content>\n" }]
1851
2118
  }], propDecorators: { color: [{
1852
2119
  type: Input
1853
2120
  }], size: [{
@@ -1977,19 +2244,21 @@ class MatchaCheckboxComponent {
1977
2244
  this.onChange = () => { };
1978
2245
  this.onTouched = () => { };
1979
2246
  }
2247
+ get disabled() {
2248
+ return this._disabled;
2249
+ }
1980
2250
  set disabled(value) {
1981
2251
  // Converte 'false' (string) ou false (boolean) para false, e qualquer outro valor para true.
1982
2252
  this._disabled = value != null && `${value}` !== 'false';
1983
2253
  }
1984
- get disabled() {
1985
- return this._disabled;
1986
- }
1987
2254
  get checked() {
1988
2255
  return this._checked;
1989
2256
  }
1990
2257
  set checked(value) {
1991
- if (value !== this._checked) {
1992
- this._checked = value;
2258
+ // Converte string para boolean: 'false' (string) ou false (boolean) para false, qualquer outro valor para true
2259
+ const booleanValue = value != null && `${value}` !== 'false';
2260
+ if (booleanValue !== this._checked) {
2261
+ this._checked = booleanValue;
1993
2262
  this.onChange(this._checked);
1994
2263
  }
1995
2264
  }
@@ -2332,11 +2601,11 @@ class MatchaHintTextComponent {
2332
2601
  }
2333
2602
  }
2334
2603
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaHintTextComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2335
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaHintTextComponent, isStandalone: false, selector: "matcha-hint-text", inputs: { type: "type", size: "size" }, ngImport: i0, template: "<div class=\"d-flex gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatchaIconComponent, selector: "matcha-icon", inputs: ["name", "size", "color", "class", "loading"] }] }); }
2604
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaHintTextComponent, isStandalone: false, selector: "matcha-hint-text", inputs: { type: "type", size: "size" }, ngImport: i0, template: "<div class=\"d-flex flex-align-center gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: MatchaIconComponent, selector: "matcha-icon", inputs: ["name", "size", "color", "class", "loading"] }] }); }
2336
2605
  }
2337
2606
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaHintTextComponent, decorators: [{
2338
2607
  type: Component,
2339
- args: [{ selector: 'matcha-hint-text', standalone: false, template: "<div class=\"d-flex gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n" }]
2608
+ args: [{ selector: 'matcha-hint-text', standalone: false, template: "<div class=\"d-flex flex-align-center gap-4\">\n <matcha-icon color=\"{{ iconColor }}\" name=\"{{ iconName }}\"> </matcha-icon>\n <span class=\"text\"><ng-content></ng-content></span>\n</div>\n" }]
2340
2609
  }], propDecorators: { type: [{
2341
2610
  type: Input,
2342
2611
  args: ['type']
@@ -2630,11 +2899,11 @@ class MatchaTabsComponent {
2630
2899
  }
2631
2900
  }
2632
2901
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaTabsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
2633
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaTabsComponent, isStandalone: false, selector: "matcha-tabs", inputs: { activeTabIndex: "activeTabIndex" }, outputs: { tabSelected: "tabSelected" }, host: { listeners: { "keydown": "handleKeyboardEvent($event)" } }, queries: [{ propertyName: "tabs", predicate: MatchaTabItemComponent }], ngImport: i0, template: "<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\" \n [attr.aria-selected]=\"tab.active\" \n [attr.aria-controls]=\"'tab-content-' + i\" \n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-88 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"text-label fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatchaIconComponent, selector: "matcha-icon", inputs: ["name", "size", "color", "class", "loading"] }], animations: [...createAnimations] }); }
2902
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaTabsComponent, isStandalone: false, selector: "matcha-tabs", inputs: { activeTabIndex: "activeTabIndex" }, outputs: { tabSelected: "tabSelected" }, host: { listeners: { "keydown": "handleKeyboardEvent($event)" } }, queries: [{ propertyName: "tabs", predicate: MatchaTabItemComponent }], ngImport: i0, template: "<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\"\n [attr.aria-selected]=\"tab.active\"\n [attr.aria-controls]=\"'tab-content-' + i\"\n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-88 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"color-fg fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: MatchaIconComponent, selector: "matcha-icon", inputs: ["name", "size", "color", "class", "loading"] }], animations: [...createAnimations] }); }
2634
2903
  }
2635
2904
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaTabsComponent, decorators: [{
2636
2905
  type: Component,
2637
- args: [{ selector: 'matcha-tabs', animations: [...createAnimations], standalone: false, template: "<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\" \n [attr.aria-selected]=\"tab.active\" \n [attr.aria-controls]=\"'tab-content-' + i\" \n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-88 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"text-label fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n" }]
2906
+ args: [{ selector: 'matcha-tabs', animations: [...createAnimations], standalone: false, template: "<div class=\"flex-column gap-24 w-100-p\">\n <nav class=\"button-group overflow-auto w-100-p flex-row gap-8 list-style-none pl-0 pb-4\" role=\"tablist\">\n <button *ngFor=\"let tab of tabs; let i = index\" (click)=\"selectTabByIndex(i)\"\n [attr.aria-selected]=\"tab.active\"\n [attr.aria-controls]=\"'tab-content-' + i\"\n [ngClass]=\"{'active': tab.active}\"\n class=\"\n border-color-{{tab.active?'accent':'surface'}} background-surface\n cursor-pointer w-100-p min-w-88 b-2 radius-8 p-8 flex-column flex-align-center gap-4 flex-space-between\"\n role=\"tab\"\n tabindex=\"{{tab.active ? 0 : -1}}\">\n <matcha-icon [name]=\"tab.icon\" color=\"accent\" size=\"md\"></matcha-icon>\n <span class=\"color-fg fw-900 fs-14 lh-16 line-clamp-2\">\n {{ tab.title }}\n </span>\n </button>\n </nav>\n\n <div>\n <ng-content></ng-content>\n </div>\n</div>\n" }]
2638
2907
  }], propDecorators: { tabs: [{
2639
2908
  type: ContentChildren,
2640
2909
  args: [MatchaTabItemComponent]
@@ -3657,11 +3926,77 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
3657
3926
  args: [{ selector: 'matcha-page-layout', standalone: false, template: "<div class=\"page-layout carded fullwidth\">\n <!-- TOP BACKGROUND -->\n <div class=\"top-bg\"></div>\n <!--/ TOP BACKGROUND -->\n\n <!-- CENTER -->\n <div class=\"center pt-24 gap-16\">\n <!-- CONTENT CARD -->\n <div class=\"content-card flatten flex-column h-100-p\">\n <!-- CONTENT -->\n <div class=\"content flex-column h-100-p\">\n <div class=\"content-card card-flat flex-column h-100-p background-bg border-radius-0 pb-16\">\n <ng-content></ng-content>\n </div>\n </div>\n </div>\n </div>\n</div>", styles: [":host{display:flex;flex-direction:column;width:100%}\n"] }]
3658
3927
  }] });
3659
3928
 
3660
- /**
3661
- * Token de injeção para MatchaOptionParent
3662
- * Usado para injetar o componente pai no matcha-option
3663
- */
3664
- const MATCHA_OPTION_PARENT = Symbol('MatchaOptionParent');
3929
+ class MatchaAvatarComponent {
3930
+ constructor() {
3931
+ this.src = '';
3932
+ this.name = '';
3933
+ this.size = 'medium';
3934
+ this.color = 'blue';
3935
+ this._disabled = false;
3936
+ }
3937
+ set disabled(value) {
3938
+ this._disabled = value != null && `${value}` !== 'false';
3939
+ }
3940
+ get disabled() {
3941
+ return this._disabled;
3942
+ }
3943
+ get initials() {
3944
+ if (!this.name.trim()) {
3945
+ return '';
3946
+ }
3947
+ const words = this.name.trim().split(/\s+/);
3948
+ if (this.size === 'tiny') {
3949
+ return words[0].charAt(0).toUpperCase();
3950
+ }
3951
+ if (words.length >= 2) {
3952
+ return (words[0].charAt(0) + words[1].charAt(0)).toUpperCase();
3953
+ }
3954
+ else if (words.length === 1 && words[0].length >= 2) {
3955
+ return words[0].substring(0, 2).toUpperCase();
3956
+ }
3957
+ else {
3958
+ return words[0].charAt(0).toUpperCase();
3959
+ }
3960
+ }
3961
+ get hasImage() {
3962
+ return !!(this.src && this.src.trim() !== '');
3963
+ }
3964
+ get hasName() {
3965
+ return !!(this.name && this.name.trim() !== '');
3966
+ }
3967
+ get showDefaultIcon() {
3968
+ return !this.hasImage && !this.hasName;
3969
+ }
3970
+ get sizeClass() {
3971
+ return `matcha-avatar-${this.size}`;
3972
+ }
3973
+ get avatarClasses() {
3974
+ let classes = `matcha-avatar radius-full ${this.sizeClass}`;
3975
+ if (!this.showDefaultIcon) {
3976
+ classes += ' ' + this.color;
3977
+ }
3978
+ if (this.disabled) {
3979
+ classes += ' color-disabled';
3980
+ }
3981
+ return classes;
3982
+ }
3983
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAvatarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
3984
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAvatarComponent, isStandalone: false, selector: "matcha-avatar", inputs: { src: "src", name: "name", size: "size", color: "color", disabled: "disabled" }, ngImport: i0, template: "<span [class]=\"avatarClasses\">\n <!-- Imagem do usu\u00E1rio -->\n <img \n *ngIf=\"hasImage\" \n [src]=\"src\" \n [alt]=\"name || 'Avatar'\"\n class=\"matcha-avatar-image\">\n \n <!-- Iniciais do nome -->\n <span \n *ngIf=\"!hasImage && hasName\" \n class=\"matcha-avatar-initials\">\n {{ initials }}\n </span>\n \n\n <svg \n *ngIf=\"showDefaultIcon\"\n class=\"matcha-avatar-icon\"\n viewBox=\"0 0 56 56\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <path \n fill-rule=\"evenodd\" \n clip-rule=\"evenodd\" \n d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\" \n fill=\"currentColor\"/>\n </svg>\n </span>", styles: [""], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
3985
+ }
3986
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAvatarComponent, decorators: [{
3987
+ type: Component,
3988
+ args: [{ selector: 'matcha-avatar', standalone: false, template: "<span [class]=\"avatarClasses\">\n <!-- Imagem do usu\u00E1rio -->\n <img \n *ngIf=\"hasImage\" \n [src]=\"src\" \n [alt]=\"name || 'Avatar'\"\n class=\"matcha-avatar-image\">\n \n <!-- Iniciais do nome -->\n <span \n *ngIf=\"!hasImage && hasName\" \n class=\"matcha-avatar-initials\">\n {{ initials }}\n </span>\n \n\n <svg \n *ngIf=\"showDefaultIcon\"\n class=\"matcha-avatar-icon\"\n viewBox=\"0 0 56 56\" \n fill=\"none\" \n xmlns=\"http://www.w3.org/2000/svg\">\n <path \n fill-rule=\"evenodd\" \n clip-rule=\"evenodd\" \n d=\"M28 0C12.544 0 0 12.544 0 28C0 43.456 12.544 56 28 56C43.456 56 56 43.456 56 28C56 12.544 43.456 0 28 0ZM28.0022 8.4C32.6502 8.4 36.4022 12.152 36.4022 16.8C36.4022 21.448 32.6502 25.2 28.0022 25.2C23.3542 25.2 19.6022 21.448 19.6022 16.8C19.6022 12.152 23.3542 8.4 28.0022 8.4ZM28.0022 48.1601C21.0022 48.1601 14.8142 44.5761 11.2022 39.1441C11.2862 33.5721 22.4022 30.5201 28.0022 30.5201C33.5742 30.5201 44.7182 33.5721 44.8022 39.1441C41.1902 44.5761 35.0022 48.1601 28.0022 48.1601Z\" \n fill=\"currentColor\"/>\n </svg>\n </span>" }]
3989
+ }], propDecorators: { src: [{
3990
+ type: Input
3991
+ }], name: [{
3992
+ type: Input
3993
+ }], size: [{
3994
+ type: Input
3995
+ }], color: [{
3996
+ type: Input
3997
+ }], disabled: [{
3998
+ type: Input
3999
+ }] } });
3665
4000
 
3666
4001
  class MatchaOptionComponent {
3667
4002
  constructor(parent, elRef) {
@@ -3676,12 +4011,42 @@ class MatchaOptionComponent {
3676
4011
  onClick() {
3677
4012
  if (this.disabled)
3678
4013
  return;
4014
+ console.log('MatchaOption: Clique na opção', {
4015
+ value: this.value,
4016
+ parent: this.parent,
4017
+ disabled: this.disabled
4018
+ });
3679
4019
  // ✅ Notifica o pai (se houver) - qualquer componente que implemente MatchaOptionParent
3680
- this.parent?.selectOption(this);
4020
+ if (this.parent) {
4021
+ console.log('MatchaOption: Usando parent.selectOption');
4022
+ this.parent.selectOption(this);
4023
+ }
4024
+ else {
4025
+ console.log('MatchaOption: Usando fallback findParentAndSelect');
4026
+ // Fallback: busca o pai via DOM
4027
+ this.findParentAndSelect();
4028
+ }
3681
4029
  // ✅ Emite eventos para uso standalone
3682
4030
  this.optionClick.emit(this.value);
3683
4031
  this.optionSelect.emit(this);
3684
4032
  }
4033
+ findParentAndSelect() {
4034
+ // Busca o elemento pai matcha-autocomplete
4035
+ const autocompleteEl = this.elRef.nativeElement.closest('matcha-autocomplete');
4036
+ if (autocompleteEl) {
4037
+ console.log('MatchaOption: Encontrou autocomplete element', autocompleteEl);
4038
+ // Dispara um evento customizado que o autocomplete pode escutar
4039
+ const event = new CustomEvent('matcha-option-selected', {
4040
+ detail: { option: this, value: this.value },
4041
+ bubbles: true
4042
+ });
4043
+ autocompleteEl.dispatchEvent(event);
4044
+ console.log('MatchaOption: Evento customizado disparado', event);
4045
+ }
4046
+ else {
4047
+ console.log('MatchaOption: Não encontrou elemento matcha-autocomplete');
4048
+ }
4049
+ }
3685
4050
  onKeydown(ev) {
3686
4051
  if (ev.key === 'Enter' || ev.key === ' ') {
3687
4052
  ev.preventDefault();
@@ -3731,13 +4096,231 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
3731
4096
  args: ['keydown', ['$event']]
3732
4097
  }] } });
3733
4098
 
4099
+ class MatchaPanelComponent {
4100
+ constructor(elRef, cdr) {
4101
+ this.elRef = elRef;
4102
+ this.cdr = cdr;
4103
+ this.placement = 'auto';
4104
+ this.maxHeight = 280;
4105
+ this.minWidth = 160;
4106
+ this.offset = 4; // Espaçamento entre trigger e painel
4107
+ this.open = false;
4108
+ this.opened = new EventEmitter();
4109
+ this.closed = new EventEmitter();
4110
+ this.panelStyle = {};
4111
+ this.destroy$ = new Subject();
4112
+ }
4113
+ ngOnInit() {
4114
+ // Inicialização básica
4115
+ }
4116
+ ngOnDestroy() {
4117
+ this.destroy$.next();
4118
+ this.destroy$.complete();
4119
+ this.cleanupListeners();
4120
+ }
4121
+ /**
4122
+ * Anexa o painel a um elemento trigger
4123
+ */
4124
+ attachTo(trigger) {
4125
+ this.triggerElement = trigger;
4126
+ }
4127
+ ngAfterViewInit() {
4128
+ // Aguarda a view ser inicializada antes de calcular posição
4129
+ if (this.triggerElement && this.open) {
4130
+ this.cdr.detectChanges();
4131
+ this.updatePosition();
4132
+ }
4133
+ }
4134
+ /**
4135
+ * Lifecycle hook para detectar mudanças no triggerElement
4136
+ */
4137
+ ngOnChanges() {
4138
+ // Só logar quando há mudanças significativas
4139
+ if (this.triggerElement && this.open) {
4140
+ console.log('MatchaPanel: ngOnChanges - painel aberto, atualizando posição');
4141
+ // Usar detectChanges para forçar a detecção de mudanças
4142
+ this.cdr.detectChanges();
4143
+ this.updatePosition();
4144
+ }
4145
+ }
4146
+ /**
4147
+ * Abre o painel
4148
+ */
4149
+ openPanel() {
4150
+ if (!this.triggerElement) {
4151
+ console.log('MatchaPanel: triggerElement não encontrado');
4152
+ return;
4153
+ }
4154
+ // Força a detecção de mudanças antes de atualizar a posição
4155
+ this.cdr.detectChanges();
4156
+ this.updatePosition();
4157
+ this.setupListeners();
4158
+ this.opened.emit();
4159
+ }
4160
+ /**
4161
+ * Fecha o painel
4162
+ */
4163
+ closePanel() {
4164
+ console.log('MatchaPanel: Fechando painel', {
4165
+ open: this.open,
4166
+ triggerElement: this.triggerElement,
4167
+ stackTrace: new Error().stack
4168
+ });
4169
+ this.cleanupListeners();
4170
+ this.closed.emit();
4171
+ }
4172
+ /**
4173
+ * Alterna o estado do painel
4174
+ */
4175
+ togglePanel() {
4176
+ this.open ? this.closePanel() : this.openPanel();
4177
+ }
4178
+ /**
4179
+ * Atualiza a posição do painel (simplificado para absolute)
4180
+ */
4181
+ updatePosition() {
4182
+ if (!this.triggerElement) {
4183
+ console.log('MatchaPanel: updatePosition - triggerElement não encontrado');
4184
+ return;
4185
+ }
4186
+ const position = this.calculatePosition();
4187
+ this.panelStyle = {
4188
+ top: `${position.top}px`,
4189
+ left: `${position.left}px`,
4190
+ minWidth: `${position.width}px`,
4191
+ maxHeight: `${position.maxHeight || this.maxHeight}px`,
4192
+ zIndex: 1003
4193
+ };
4194
+ console.log('MatchaPanel: Posição calculada (absolute)', {
4195
+ position,
4196
+ panelStyle: this.panelStyle
4197
+ });
4198
+ }
4199
+ /**
4200
+ * Calcula a posição ideal do painel (simplificado para absolute)
4201
+ */
4202
+ calculatePosition() {
4203
+ if (!this.triggerElement) {
4204
+ return { top: 0, left: 0, width: this.minWidth };
4205
+ }
4206
+ const rect = this.triggerElement.getBoundingClientRect();
4207
+ const containerRect = this.triggerElement.offsetParent?.getBoundingClientRect() || { top: 0, left: 0 };
4208
+ let top;
4209
+ let left;
4210
+ let width = Math.max(rect.width, this.minWidth);
4211
+ let maxHeight = this.maxHeight;
4212
+ // Calcular posição horizontal (relativa ao container)
4213
+ left = rect.left - containerRect.left;
4214
+ // Calcular posição vertical (relativa ao container)
4215
+ if (this.placement === 'top') {
4216
+ // Posicionar acima
4217
+ top = rect.top - containerRect.top - this.maxHeight - this.offset;
4218
+ }
4219
+ else {
4220
+ // Posicionar abaixo (padrão)
4221
+ top = rect.bottom - containerRect.top + this.offset;
4222
+ }
4223
+ return { top, left, width, maxHeight };
4224
+ }
4225
+ /**
4226
+ * Configura listeners para scroll e resize
4227
+ */
4228
+ setupListeners() {
4229
+ // Com position absolute, não precisamos de listeners de scroll/resize
4230
+ console.log('MatchaPanel: setupListeners - position absolute, sem listeners necessários');
4231
+ }
4232
+ /**
4233
+ * Remove listeners
4234
+ */
4235
+ cleanupListeners() {
4236
+ if (this.scrollListener) {
4237
+ window.removeEventListener('scroll', this.scrollListener);
4238
+ this.scrollListener = undefined;
4239
+ }
4240
+ if (this.resizeListener) {
4241
+ window.removeEventListener('resize', this.resizeListener);
4242
+ this.resizeListener = undefined;
4243
+ }
4244
+ }
4245
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaPanelComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
4246
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaPanelComponent, isStandalone: false, selector: "matcha-panel", inputs: { placement: "placement", maxHeight: "maxHeight", minWidth: "minWidth", offset: "offset", triggerElement: "triggerElement", open: "open" }, outputs: { opened: "opened", closed: "closed" }, viewQueries: [{ propertyName: "panelRef", first: true, predicate: ["panel"], descendants: true }], usesOnChanges: true, ngImport: i0, template: `
4247
+ <div class="matcha-panel-container" style="position: relative;">
4248
+ <ng-container *ngIf="open">
4249
+ <!-- Painel -->
4250
+ <div
4251
+ #panel
4252
+ class="matcha-panel"
4253
+ [class.matcha-panel-top]="placement === 'top'"
4254
+ [class.matcha-panel-bottom]="placement === 'bottom'"
4255
+ [ngStyle]="panelStyle"
4256
+ role="listbox"
4257
+ [attr.aria-expanded]="open"
4258
+ [attr.aria-hidden]="!open">
4259
+ <ng-content></ng-content>
4260
+ </div>
4261
+ </ng-container>
4262
+ </div>
4263
+ `, isInline: true, dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }] }); }
4264
+ }
4265
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaPanelComponent, decorators: [{
4266
+ type: Component,
4267
+ args: [{
4268
+ selector: 'matcha-panel',
4269
+ template: `
4270
+ <div class="matcha-panel-container" style="position: relative;">
4271
+ <ng-container *ngIf="open">
4272
+ <!-- Painel -->
4273
+ <div
4274
+ #panel
4275
+ class="matcha-panel"
4276
+ [class.matcha-panel-top]="placement === 'top'"
4277
+ [class.matcha-panel-bottom]="placement === 'bottom'"
4278
+ [ngStyle]="panelStyle"
4279
+ role="listbox"
4280
+ [attr.aria-expanded]="open"
4281
+ [attr.aria-hidden]="!open">
4282
+ <ng-content></ng-content>
4283
+ </div>
4284
+ </ng-container>
4285
+ </div>
4286
+ `,
4287
+ standalone: false
4288
+ }]
4289
+ }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { placement: [{
4290
+ type: Input
4291
+ }], maxHeight: [{
4292
+ type: Input
4293
+ }], minWidth: [{
4294
+ type: Input
4295
+ }], offset: [{
4296
+ type: Input
4297
+ }], triggerElement: [{
4298
+ type: Input
4299
+ }], open: [{
4300
+ type: Input
4301
+ }], opened: [{
4302
+ type: Output
4303
+ }], closed: [{
4304
+ type: Output
4305
+ }], panelRef: [{
4306
+ type: ViewChild,
4307
+ args: ['panel', { static: false }]
4308
+ }] } });
4309
+
3734
4310
  class MatchaAutocompleteComponent {
3735
4311
  constructor(elRef, renderer, cdr) {
3736
4312
  this.elRef = elRef;
3737
4313
  this.renderer = renderer;
3738
4314
  this.cdr = cdr;
4315
+ // Armazenar o valor selecionado independente da QueryList
4316
+ this.selectedValue = undefined;
4317
+ // Configurações do painel
4318
+ this.placement = 'auto';
4319
+ this.maxHeight = 280;
4320
+ this.minWidth = 160;
4321
+ this.opened = new EventEmitter();
4322
+ this.closed = new EventEmitter();
3739
4323
  this.open = false;
3740
- this.panelStyle = {};
3741
4324
  this.activeIndex = -1;
3742
4325
  }
3743
4326
  ngAfterContentInit() {
@@ -3749,37 +4332,50 @@ class MatchaAutocompleteComponent {
3749
4332
  }
3750
4333
  });
3751
4334
  }
4335
+ ngAfterViewInit() {
4336
+ // Aguarda a view ser inicializada
4337
+ this.cdr.detectChanges();
4338
+ // Escuta eventos customizados das opções
4339
+ this.elRef.nativeElement.addEventListener('matcha-option-selected', (event) => {
4340
+ console.log('MatchaAutocomplete: Evento matcha-option-selected recebido', event.detail);
4341
+ const { option, value } = event.detail;
4342
+ this.selectOption(option);
4343
+ });
4344
+ }
3752
4345
  attachTo(input) {
3753
4346
  this.triggerElement = input;
3754
4347
  }
3755
4348
  openPanel() {
3756
- if (!this.triggerElement)
4349
+ if (!this.triggerElement) {
4350
+ console.log('MatchaAutocomplete: triggerElement não encontrado');
3757
4351
  return;
4352
+ }
4353
+ console.log('MatchaAutocomplete: Abrindo painel', {
4354
+ triggerElement: this.triggerElement,
4355
+ panel: this.panel,
4356
+ open: this.open
4357
+ });
3758
4358
  this.open = true;
3759
- this.setPanelPosition();
4359
+ this.cdr.detectChanges(); // Força detecção de mudanças
4360
+ this.panel.attachTo(this.triggerElement);
4361
+ this.panel.openPanel();
3760
4362
  this.resetActive();
4363
+ this.opened.emit();
3761
4364
  }
3762
4365
  closePanel() {
4366
+ console.log('MatchaAutocomplete: Fechando painel', {
4367
+ open: this.open,
4368
+ stackTrace: new Error().stack
4369
+ });
3763
4370
  this.open = false;
3764
4371
  this.activeIndex = -1;
3765
4372
  this.updateSelectedStates();
4373
+ this.panel.closePanel();
4374
+ this.closed.emit();
3766
4375
  }
3767
4376
  togglePanel() {
3768
4377
  this.open ? this.closePanel() : this.openPanel();
3769
4378
  }
3770
- setPanelPosition() {
3771
- if (!this.triggerElement)
3772
- return;
3773
- const rect = this.triggerElement.getBoundingClientRect();
3774
- const top = rect.bottom + window.scrollY;
3775
- const left = rect.left + window.scrollX;
3776
- this.panelStyle = {
3777
- position: 'absolute',
3778
- top: `${top}px`,
3779
- left: `${left}px`,
3780
- minWidth: `${rect.width}px`
3781
- };
3782
- }
3783
4379
  resetActive() {
3784
4380
  this.activeIndex = -1;
3785
4381
  this.updateSelectedStates();
@@ -3823,32 +4419,66 @@ class MatchaAutocompleteComponent {
3823
4419
  }
3824
4420
  // chamado por matcha-option quando clicado
3825
4421
  selectOption(option) {
3826
- this.options.forEach(o => o.selected = (o === option));
4422
+ console.log('MatchaAutocomplete: Opção selecionada', {
4423
+ option,
4424
+ value: option.value,
4425
+ selected: option.selected,
4426
+ optionsLength: this.options.length,
4427
+ allOptions: this.options.toArray()
4428
+ });
4429
+ // Armazenar o valor selecionado
4430
+ this.selectedValue = option.value;
4431
+ // Marcar a opção como selecionada diretamente
4432
+ option.selected = true;
4433
+ // Marcar todas as outras como não selecionadas
4434
+ this.options.forEach(o => {
4435
+ if (o !== option) {
4436
+ o.selected = false;
4437
+ }
4438
+ });
4439
+ console.log('MatchaAutocomplete: Após marcar seleção', {
4440
+ selectedOption: option,
4441
+ selected: option.selected,
4442
+ selectedValue: this.selectedValue,
4443
+ allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))
4444
+ });
3827
4445
  // Fechamos painel automaticamente
4446
+ console.log('MatchaAutocomplete: Fechando painel após seleção');
3828
4447
  this.closePanel();
3829
4448
  // indireto: a directive pode ler o value via getSelectedValue()
3830
4449
  }
3831
4450
  getSelectedValue() {
3832
- const selected = this.options.find(o => o.selected);
3833
- return selected ? selected.value : undefined;
4451
+ // Usar o valor armazenado se disponível, senão buscar na QueryList
4452
+ const value = this.selectedValue !== undefined ? this.selectedValue : this.options.find(o => o.selected)?.value;
4453
+ console.log('MatchaAutocomplete: getSelectedValue chamado', {
4454
+ selectedValue: this.selectedValue,
4455
+ value,
4456
+ allOptions: this.options.toArray().map(o => ({ value: o.value, selected: o.selected }))
4457
+ });
4458
+ return value;
3834
4459
  }
3835
4460
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
3836
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAutocompleteComponent, isStandalone: false, selector: "matcha-autocomplete", queries: [{ propertyName: "options", predicate: MatchaOptionComponent, descendants: true }], ngImport: i0, template: `
3837
- <div class="matcha-autocomplete-panel" *ngIf="open" [ngStyle]="panelStyle" role="listbox">
3838
- <ng-content></ng-content>
3839
- </div>
3840
- `, isInline: true, styles: [":host{position:absolute;z-index:1000;display:block}.matcha-autocomplete-panel{box-shadow:0 4px 10px #0000001f;border-radius:6px;background:#fff;max-height:280px;overflow:auto;min-width:160px;display:flex;flex-direction:column}.matcha-option{padding:8px 12px;cursor:pointer}.matcha-option[aria-selected=true]{background:#00000014}.matcha-option[disabled]{opacity:.5;cursor:default}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }], encapsulation: i0.ViewEncapsulation.None }); }
4461
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAutocompleteComponent, isStandalone: false, selector: "matcha-autocomplete", inputs: { placement: "placement", maxHeight: "maxHeight", minWidth: "minWidth" }, outputs: { opened: "opened", closed: "closed" }, queries: [{ propertyName: "options", predicate: MatchaOptionComponent, descendants: true }], viewQueries: [{ propertyName: "panel", first: true, predicate: MatchaPanelComponent, descendants: true }], ngImport: i0, template: "<matcha-panel\n #panel\n [open]=\"open\"\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [triggerElement]=\"triggerElement\"\n (opened)=\"opened.emit()\"\n (closed)=\"closed.emit()\">\n <div class=\"matcha-panel-content flex-column\">\n <ng-content></ng-content>\n </div>\n</matcha-panel>\n", dependencies: [{ kind: "component", type: MatchaPanelComponent, selector: "matcha-panel", inputs: ["placement", "maxHeight", "minWidth", "offset", "triggerElement", "open"], outputs: ["opened", "closed"] }], encapsulation: i0.ViewEncapsulation.None }); }
3841
4462
  }
3842
4463
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteComponent, decorators: [{
3843
4464
  type: Component,
3844
- args: [{ selector: 'matcha-autocomplete', template: `
3845
- <div class="matcha-autocomplete-panel" *ngIf="open" [ngStyle]="panelStyle" role="listbox">
3846
- <ng-content></ng-content>
3847
- </div>
3848
- `, encapsulation: ViewEncapsulation.None, standalone: false, styles: [":host{position:absolute;z-index:1000;display:block}.matcha-autocomplete-panel{box-shadow:0 4px 10px #0000001f;border-radius:6px;background:#fff;max-height:280px;overflow:auto;min-width:160px;display:flex;flex-direction:column}.matcha-option{padding:8px 12px;cursor:pointer}.matcha-option[aria-selected=true]{background:#00000014}.matcha-option[disabled]{opacity:.5;cursor:default}\n"] }]
4465
+ args: [{ selector: 'matcha-autocomplete', encapsulation: ViewEncapsulation.None, standalone: false, template: "<matcha-panel\n #panel\n [open]=\"open\"\n [placement]=\"placement\"\n [maxHeight]=\"maxHeight\"\n [minWidth]=\"minWidth\"\n [triggerElement]=\"triggerElement\"\n (opened)=\"opened.emit()\"\n (closed)=\"closed.emit()\">\n <div class=\"matcha-panel-content flex-column\">\n <ng-content></ng-content>\n </div>\n</matcha-panel>\n" }]
3849
4466
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }, { type: i0.ChangeDetectorRef }], propDecorators: { options: [{
3850
4467
  type: ContentChildren,
3851
4468
  args: [MatchaOptionComponent, { descendants: true }]
4469
+ }], panel: [{
4470
+ type: ViewChild,
4471
+ args: [MatchaPanelComponent]
4472
+ }], placement: [{
4473
+ type: Input
4474
+ }], maxHeight: [{
4475
+ type: Input
4476
+ }], minWidth: [{
4477
+ type: Input
4478
+ }], opened: [{
4479
+ type: Output
4480
+ }], closed: [{
4481
+ type: Output
3852
4482
  }] } });
3853
4483
 
3854
4484
  class MatchaTooltipDirective {
@@ -4612,30 +5242,51 @@ class MatchaAutocompleteTriggerDirective {
4612
5242
  throw new Error('Você precisa passar uma referência para <matcha-autocomplete> ex: [matchaAutocomplete]="auto"');
4613
5243
  }
4614
5244
  this.panel.attachTo(this.el.nativeElement);
4615
- // close panel ao clicar fora
5245
+ // close panel ao clicar fora - usando click para evitar conflito com focus
4616
5246
  const clickSub = fromEvent(document, 'click').pipe(filter((ev) => {
4617
5247
  const target = ev.target;
4618
- return !this.el.nativeElement.contains(target) && !(this.panel?.elRef?.nativeElement?.contains?.(target));
4619
- })).subscribe(() => this.panel.closePanel());
5248
+ const isInsideInput = this.el.nativeElement.contains(target) || this.el.nativeElement === target;
5249
+ const isInsidePanel = this.panel?.elRef?.nativeElement?.contains?.(target);
5250
+ console.log('MatchaAutocomplete: Click outside check', {
5251
+ target: target,
5252
+ inputElement: this.el.nativeElement,
5253
+ isInsideInput,
5254
+ isInsidePanel,
5255
+ shouldClose: !isInsideInput && !isInsidePanel
5256
+ });
5257
+ // Não fechar se clicou no input ou painel
5258
+ return !isInsideInput && !isInsidePanel;
5259
+ })).subscribe(() => {
5260
+ console.log('MatchaAutocomplete: Fechando painel por click outside');
5261
+ this.panel.closePanel();
5262
+ });
4620
5263
  this.subs.add(clickSub);
4621
5264
  }
4622
5265
  ngOnDestroy() {
4623
5266
  this.subs.unsubscribe();
4624
5267
  }
4625
5268
  writeValueToInput(value) {
5269
+ console.log('MatchaAutocomplete: writeValueToInput chamado', {
5270
+ value,
5271
+ input: this.el.nativeElement
5272
+ });
4626
5273
  const input = this.el.nativeElement;
4627
5274
  input.value = value == null ? '' : value;
4628
5275
  // dispatch input event para Angular Forms
4629
5276
  const ev = new Event('input', { bubbles: true });
4630
5277
  input.dispatchEvent(ev);
5278
+ console.log('MatchaAutocomplete: Valor escrito no input', input.value);
4631
5279
  }
4632
- onFocus() {
4633
- // ao focar podemos abrir (ou não — depende do UX desejado)
5280
+ onClick() {
5281
+ // Abrir painel quando clicar no input
4634
5282
  this.panel.openPanel();
4635
5283
  }
5284
+ onFocus() {
5285
+ // Não abrir automaticamente no focus para evitar conflito com click outside
5286
+ // O painel será aberto apenas quando o usuário clicar ou digitar
5287
+ }
4636
5288
  onInput(e) {
4637
- // se o usuário digitar, apenas reabre/posiciona painel. O filtro de opções geralmente é controlado pelo componente pai
4638
- this.panel.setPanelPosition();
5289
+ // se o usuário digitar, apenas reabre painel. O filtro de opções geralmente é controlado pelo componente pai
4639
5290
  if (!this.panel.open)
4640
5291
  this.panel.openPanel();
4641
5292
  }
@@ -4677,14 +5328,16 @@ class MatchaAutocompleteTriggerDirective {
4677
5328
  if (!this.panel || !this.panel.open) {
4678
5329
  // se painel fechado, pode ter sido selecionado; então buscarmos selected value
4679
5330
  setTimeout(() => {
4680
- const val = this.panel.getSelectedValue();
4681
- if (val !== undefined)
4682
- this.writeValueToInput(val);
5331
+ if (this.panel && typeof this.panel.getSelectedValue === 'function') {
5332
+ const val = this.panel.getSelectedValue();
5333
+ if (val !== undefined)
5334
+ this.writeValueToInput(val);
5335
+ }
4683
5336
  }, 10);
4684
5337
  }
4685
5338
  }
4686
5339
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteTriggerDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
4687
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAutocompleteTriggerDirective, isStandalone: false, selector: "[matchaAutocomplete]", inputs: { panel: ["matchaAutocomplete", "panel"] }, host: { listeners: { "focus": "onFocus()", "input": "onInput($event)", "keydown": "onKeydown($event)", "document:click": "onDocClick($event)" } }, ngImport: i0 }); }
5340
+ static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: MatchaAutocompleteTriggerDirective, isStandalone: false, selector: "[matchaAutocomplete]", inputs: { panel: ["matchaAutocomplete", "panel"] }, host: { listeners: { "click": "onClick()", "focus": "onFocus()", "input": "onInput($event)", "keydown": "onKeydown($event)", "document:click": "onDocClick($event)" } }, ngImport: i0 }); }
4688
5341
  }
4689
5342
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteTriggerDirective, decorators: [{
4690
5343
  type: Directive,
@@ -4695,6 +5348,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
4695
5348
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { panel: [{
4696
5349
  type: Input,
4697
5350
  args: ['matchaAutocomplete']
5351
+ }], onClick: [{
5352
+ type: HostListener,
5353
+ args: ['click']
4698
5354
  }], onFocus: [{
4699
5355
  type: HostListener,
4700
5356
  args: ['focus']
@@ -4729,19 +5385,41 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
4729
5385
  }]
4730
5386
  }] });
4731
5387
 
5388
+ class MatchaPanelModule {
5389
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaPanelModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5390
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaPanelModule, declarations: [MatchaPanelComponent], imports: [CommonModule], exports: [MatchaPanelComponent] }); }
5391
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaPanelModule, imports: [CommonModule] }); }
5392
+ }
5393
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaPanelModule, decorators: [{
5394
+ type: NgModule,
5395
+ args: [{
5396
+ declarations: [
5397
+ MatchaPanelComponent
5398
+ ],
5399
+ imports: [
5400
+ CommonModule
5401
+ ],
5402
+ exports: [
5403
+ MatchaPanelComponent
5404
+ ]
5405
+ }]
5406
+ }] });
5407
+
4732
5408
  class MatchaAutocompleteModule {
4733
5409
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4734
5410
  static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteModule, declarations: [MatchaAutocompleteComponent,
4735
5411
  MatchaAutocompleteTriggerDirective], imports: [CommonModule,
4736
- MatchaOptionModule], exports: [MatchaAutocompleteComponent,
5412
+ MatchaOptionModule,
5413
+ MatchaPanelModule], exports: [MatchaAutocompleteComponent,
4737
5414
  MatchaAutocompleteTriggerDirective,
4738
5415
  MatchaOptionModule // Re-exporta para conveniência
4739
5416
  ] }); }
4740
5417
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteModule, providers: [
4741
- // Provider para permitir injeção da interface MatchaOptionParent
5418
+ // Provider para permitir injeção da interface MatchaOptionParent
4742
5419
  { provide: MATCHA_OPTION_PARENT, useExisting: MatchaAutocompleteComponent }
4743
5420
  ], imports: [CommonModule,
4744
- MatchaOptionModule, MatchaOptionModule // Re-exporta para conveniência
5421
+ MatchaOptionModule,
5422
+ MatchaPanelModule, MatchaOptionModule // Re-exporta para conveniência
4745
5423
  ] }); }
4746
5424
  }
4747
5425
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAutocompleteModule, decorators: [{
@@ -4753,7 +5431,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
4753
5431
  ],
4754
5432
  imports: [
4755
5433
  CommonModule,
4756
- MatchaOptionModule
5434
+ MatchaOptionModule,
5435
+ MatchaPanelModule
4757
5436
  ],
4758
5437
  exports: [
4759
5438
  MatchaAutocompleteComponent,
@@ -4761,7 +5440,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
4761
5440
  MatchaOptionModule // Re-exporta para conveniência
4762
5441
  ],
4763
5442
  providers: [
4764
- // Provider para permitir injeção da interface MatchaOptionParent
5443
+ // Provider para permitir injeção da interface MatchaOptionParent
4765
5444
  { provide: MATCHA_OPTION_PARENT, useExisting: MatchaAutocompleteComponent }
4766
5445
  ]
4767
5446
  }]
@@ -4865,41 +5544,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
4865
5544
  args: [{
4866
5545
  declarations: [MatchaChipsDirective],
4867
5546
  imports: [],
4868
- exports: [
4869
- MatchaChipsDirective
4870
- ]
4871
- }]
4872
- }] });
4873
-
4874
- class MatchaDatepickerDirective {
4875
- constructor(_elementRef, _renderer) {
4876
- this._elementRef = _elementRef;
4877
- this._renderer = _renderer;
4878
- //this._elementRef.nativeElement.style.backgroundColor = 'grey';
4879
- this._renderer.addClass(this._elementRef.nativeElement, 'matcha-datepicker');
4880
- }
4881
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDatepickerDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
4882
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: MatchaDatepickerDirective, isStandalone: false, selector: "[matcha-datepicker]", ngImport: i0 }); }
4883
- }
4884
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDatepickerDirective, decorators: [{
4885
- type: Directive,
4886
- args: [{
4887
- selector: '[matcha-datepicker]',
4888
- standalone: false
4889
- }]
4890
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
4891
-
4892
- class MatchaDatepickerModule {
4893
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDatepickerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4894
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaDatepickerModule, declarations: [MatchaDatepickerDirective], exports: [MatchaDatepickerDirective] }); }
4895
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDatepickerModule }); }
4896
- }
4897
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDatepickerModule, decorators: [{
4898
- type: NgModule,
4899
- args: [{
4900
- declarations: [MatchaDatepickerDirective],
4901
- imports: [],
4902
- exports: [MatchaDatepickerDirective],
5547
+ exports: [MatchaChipsDirective]
4903
5548
  }]
4904
5549
  }] });
4905
5550
 
@@ -5149,38 +5794,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5149
5794
  }]
5150
5795
  }] });
5151
5796
 
5152
- class MatchaSelectDirective {
5153
- constructor(_elementRef, _renderer) {
5154
- this._elementRef = _elementRef;
5155
- this._renderer = _renderer;
5156
- //this._elementRef.nativeElement.style.backgroundColor = 'grey';
5157
- this._renderer.addClass(this._elementRef.nativeElement, 'matcha-select');
5158
- }
5159
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaSelectDirective, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive }); }
5160
- static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.1", type: MatchaSelectDirective, isStandalone: false, selector: "[matcha-select]", ngImport: i0 }); }
5161
- }
5162
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaSelectDirective, decorators: [{
5163
- type: Directive,
5164
- args: [{
5165
- selector: '[matcha-select]',
5166
- standalone: false
5167
- }]
5168
- }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
5169
-
5170
- class MatchaSelectModule {
5171
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaSelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5172
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaSelectModule, declarations: [MatchaSelectDirective], imports: [CommonModule], exports: [MatchaSelectDirective] }); }
5173
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaSelectModule, imports: [CommonModule] }); }
5174
- }
5175
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaSelectModule, decorators: [{
5176
- type: NgModule,
5177
- args: [{
5178
- declarations: [MatchaSelectDirective],
5179
- imports: [CommonModule],
5180
- exports: [MatchaSelectDirective],
5181
- }]
5182
- }] });
5183
-
5184
5797
  class MatchaSidenavDirective {
5185
5798
  constructor(_elementRef, _renderer) {
5186
5799
  this._elementRef = _elementRef;
@@ -5633,10 +6246,30 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5633
6246
  }]
5634
6247
  }] });
5635
6248
 
6249
+ class MatchaAvatarModule {
6250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAvatarModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
6251
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaAvatarModule, declarations: [MatchaAvatarComponent], imports: [CommonModule], exports: [MatchaAvatarComponent] }); }
6252
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAvatarModule, imports: [CommonModule] }); }
6253
+ }
6254
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaAvatarModule, decorators: [{
6255
+ type: NgModule,
6256
+ args: [{
6257
+ declarations: [MatchaAvatarComponent],
6258
+ imports: [
6259
+ CommonModule
6260
+ ],
6261
+ exports: [MatchaAvatarComponent]
6262
+ }]
6263
+ }] });
6264
+
5636
6265
  class MatchaDrawerModule {
5637
6266
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
5638
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerModule, declarations: [MatchaDrawerComponent], imports: [CommonModule,
5639
- MatchaButtonModule], exports: [MatchaDrawerComponent] }); }
6267
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerModule, declarations: [MatchaDrawerComponent,
6268
+ MatchaDrawerContainerComponent,
6269
+ MatchaDrawerContentComponent], imports: [CommonModule,
6270
+ MatchaButtonModule], exports: [MatchaDrawerComponent,
6271
+ MatchaDrawerContainerComponent,
6272
+ MatchaDrawerContentComponent] }); }
5640
6273
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaDrawerModule, imports: [CommonModule,
5641
6274
  MatchaButtonModule] }); }
5642
6275
  }
@@ -5644,14 +6277,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5644
6277
  type: NgModule,
5645
6278
  args: [{
5646
6279
  declarations: [
5647
- MatchaDrawerComponent
6280
+ MatchaDrawerComponent,
6281
+ MatchaDrawerContainerComponent,
6282
+ MatchaDrawerContentComponent
5648
6283
  ],
5649
6284
  imports: [
5650
6285
  CommonModule,
5651
6286
  MatchaButtonModule
5652
6287
  ],
5653
6288
  exports: [
5654
- MatchaDrawerComponent
6289
+ MatchaDrawerComponent,
6290
+ MatchaDrawerContainerComponent,
6291
+ MatchaDrawerContentComponent
5655
6292
  ]
5656
6293
  }]
5657
6294
  }] });
@@ -5664,6 +6301,7 @@ class MatchaComponentsModule {
5664
6301
  MatchaAccordionModule,
5665
6302
  MatchaAutocompleteModule,
5666
6303
  MatchaOptionModule,
6304
+ MatchaPanelModule,
5667
6305
  MatchaBadgeModule,
5668
6306
  MatchaButtonModule,
5669
6307
  MatchaButtonToggleModule,
@@ -5671,7 +6309,6 @@ class MatchaComponentsModule {
5671
6309
  MatchaCheckboxModule,
5672
6310
  MatchaRadioModule,
5673
6311
  MatchaChipsModule,
5674
- MatchaDatepickerModule,
5675
6312
  MatchaDividerModule,
5676
6313
  MatchaElevationModule,
5677
6314
  MatchaFormFieldModule,
@@ -5687,7 +6324,6 @@ class MatchaComponentsModule {
5687
6324
  MatchaPaginatorModule,
5688
6325
  MatchaProgressBarModule,
5689
6326
  MatchaRippleModule,
5690
- MatchaSelectModule,
5691
6327
  MatchaSidenavModule,
5692
6328
  MatchaSlideToggleModule,
5693
6329
  MatchaSliderModule,
@@ -5707,6 +6343,7 @@ class MatchaComponentsModule {
5707
6343
  MatchaDrawerModule], exports: [MatchaAccordionModule,
5708
6344
  MatchaAutocompleteModule,
5709
6345
  MatchaOptionModule,
6346
+ MatchaPanelModule,
5710
6347
  MatchaBadgeModule,
5711
6348
  MatchaButtonModule,
5712
6349
  MatchaButtonToggleModule,
@@ -5714,7 +6351,6 @@ class MatchaComponentsModule {
5714
6351
  MatchaCheckboxModule,
5715
6352
  MatchaRadioModule,
5716
6353
  MatchaChipsModule,
5717
- MatchaDatepickerModule,
5718
6354
  MatchaDividerModule,
5719
6355
  MatchaElevationModule,
5720
6356
  MatchaFormFieldModule,
@@ -5730,7 +6366,6 @@ class MatchaComponentsModule {
5730
6366
  MatchaPaginatorModule,
5731
6367
  MatchaProgressBarModule,
5732
6368
  MatchaRippleModule,
5733
- MatchaSelectModule,
5734
6369
  MatchaSidenavModule,
5735
6370
  MatchaSlideToggleModule,
5736
6371
  MatchaSliderModule,
@@ -5747,6 +6382,7 @@ class MatchaComponentsModule {
5747
6382
  MatchaTimeModule,
5748
6383
  MatchaDropListModule,
5749
6384
  MatchaPageLayoutModule,
6385
+ MatchaAvatarModule,
5750
6386
  MatchaDrawerModule] }); }
5751
6387
  static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaComponentsModule, imports: [CommonModule,
5752
6388
  FormsModule,
@@ -5754,6 +6390,7 @@ class MatchaComponentsModule {
5754
6390
  MatchaAccordionModule,
5755
6391
  MatchaAutocompleteModule,
5756
6392
  MatchaOptionModule,
6393
+ MatchaPanelModule,
5757
6394
  MatchaBadgeModule,
5758
6395
  MatchaButtonModule,
5759
6396
  MatchaButtonToggleModule,
@@ -5761,7 +6398,6 @@ class MatchaComponentsModule {
5761
6398
  MatchaCheckboxModule,
5762
6399
  MatchaRadioModule,
5763
6400
  MatchaChipsModule,
5764
- MatchaDatepickerModule,
5765
6401
  MatchaDividerModule,
5766
6402
  MatchaElevationModule,
5767
6403
  MatchaFormFieldModule,
@@ -5777,7 +6413,6 @@ class MatchaComponentsModule {
5777
6413
  MatchaPaginatorModule,
5778
6414
  MatchaProgressBarModule,
5779
6415
  MatchaRippleModule,
5780
- MatchaSelectModule,
5781
6416
  MatchaSidenavModule,
5782
6417
  MatchaSlideToggleModule,
5783
6418
  MatchaSliderModule,
@@ -5797,6 +6432,7 @@ class MatchaComponentsModule {
5797
6432
  MatchaDrawerModule, MatchaAccordionModule,
5798
6433
  MatchaAutocompleteModule,
5799
6434
  MatchaOptionModule,
6435
+ MatchaPanelModule,
5800
6436
  MatchaBadgeModule,
5801
6437
  MatchaButtonModule,
5802
6438
  MatchaButtonToggleModule,
@@ -5804,7 +6440,6 @@ class MatchaComponentsModule {
5804
6440
  MatchaCheckboxModule,
5805
6441
  MatchaRadioModule,
5806
6442
  MatchaChipsModule,
5807
- MatchaDatepickerModule,
5808
6443
  MatchaDividerModule,
5809
6444
  MatchaElevationModule,
5810
6445
  MatchaFormFieldModule,
@@ -5820,7 +6455,6 @@ class MatchaComponentsModule {
5820
6455
  MatchaPaginatorModule,
5821
6456
  MatchaProgressBarModule,
5822
6457
  MatchaRippleModule,
5823
- MatchaSelectModule,
5824
6458
  MatchaSidenavModule,
5825
6459
  MatchaSlideToggleModule,
5826
6460
  MatchaSliderModule,
@@ -5837,6 +6471,7 @@ class MatchaComponentsModule {
5837
6471
  MatchaTimeModule,
5838
6472
  MatchaDropListModule,
5839
6473
  MatchaPageLayoutModule,
6474
+ MatchaAvatarModule,
5840
6475
  MatchaDrawerModule] }); }
5841
6476
  }
5842
6477
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: MatchaComponentsModule, decorators: [{
@@ -5850,6 +6485,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5850
6485
  MatchaAccordionModule,
5851
6486
  MatchaAutocompleteModule,
5852
6487
  MatchaOptionModule,
6488
+ MatchaPanelModule,
5853
6489
  MatchaBadgeModule,
5854
6490
  MatchaButtonModule,
5855
6491
  MatchaButtonToggleModule,
@@ -5857,7 +6493,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5857
6493
  MatchaCheckboxModule,
5858
6494
  MatchaRadioModule,
5859
6495
  MatchaChipsModule,
5860
- MatchaDatepickerModule,
5861
6496
  MatchaDividerModule,
5862
6497
  MatchaElevationModule,
5863
6498
  MatchaFormFieldModule,
@@ -5873,7 +6508,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5873
6508
  MatchaPaginatorModule,
5874
6509
  MatchaProgressBarModule,
5875
6510
  MatchaRippleModule,
5876
- MatchaSelectModule,
5877
6511
  MatchaSidenavModule,
5878
6512
  MatchaSlideToggleModule,
5879
6513
  MatchaSliderModule,
@@ -5895,6 +6529,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5895
6529
  exports: [MatchaAccordionModule,
5896
6530
  MatchaAutocompleteModule,
5897
6531
  MatchaOptionModule,
6532
+ MatchaPanelModule,
5898
6533
  MatchaBadgeModule,
5899
6534
  MatchaButtonModule,
5900
6535
  MatchaButtonToggleModule,
@@ -5902,7 +6537,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5902
6537
  MatchaCheckboxModule,
5903
6538
  MatchaRadioModule,
5904
6539
  MatchaChipsModule,
5905
- MatchaDatepickerModule,
5906
6540
  MatchaDividerModule,
5907
6541
  MatchaElevationModule,
5908
6542
  MatchaFormFieldModule,
@@ -5918,7 +6552,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5918
6552
  MatchaPaginatorModule,
5919
6553
  MatchaProgressBarModule,
5920
6554
  MatchaRippleModule,
5921
- MatchaSelectModule,
5922
6555
  MatchaSidenavModule,
5923
6556
  MatchaSlideToggleModule,
5924
6557
  MatchaSliderModule,
@@ -5935,6 +6568,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5935
6568
  MatchaTimeModule,
5936
6569
  MatchaDropListModule,
5937
6570
  MatchaPageLayoutModule,
6571
+ MatchaAvatarModule,
5938
6572
  MatchaDrawerModule
5939
6573
  ],
5940
6574
  }]
@@ -5977,18 +6611,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
5977
6611
  * Public API Surface of matcha-components
5978
6612
  */
5979
6613
  // -----------------------------------------------------------
5980
- // COMPONENTS
6614
+ // INTERFACES
5981
6615
  // -----------------------------------------------------------
5982
- // // ATOMIC COMPONENTS
5983
- // export * from './lib/matcha-button/matcha-button.component';
5984
- // // BASE COMPONENT
5985
- // export * from './lib/matcha-title/matcha-title.component';
5986
- //
5987
6616
  // -----------------------------------------------------------
5988
- // COMPONENTS
6617
+ // PIPES
5989
6618
  // -----------------------------------------------------------
5990
6619
  // -----------------------------------------------------------
5991
6620
  // VENDORS
6621
+ // -----------------------------------------------------------
5992
6622
  // export * from './lib/matcha-input-phone/lib/ngx-mask-applier.service';
5993
6623
  // export * from './lib/matcha-input-phone/lib/ngx-mask.directive';
5994
6624
  // export * from './lib/matcha-input-phone/lib/ngx-mask.module';
@@ -6003,5 +6633,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
6003
6633
  * Generated bundle index. Do not edit.
6004
6634
  */
6005
6635
 
6006
- export { MATCHA_OPTION_PARENT, MatchaAccordionComponent, MatchaAccordionContentComponent, MatchaAccordionHeaderComponent, MatchaAccordionItemComponent, MatchaAccordionModule, MatchaAutocompleteComponent, MatchaAutocompleteModule, MatchaAutocompleteTriggerDirective, MatchaBadgeDirective, MatchaBadgeModule, MatchaButtonComponent, MatchaButtonModule, MatchaButtonToggleComponent, MatchaButtonToggleModule, MatchaCardComponent, MatchaCardModule, MatchaCheckboxComponent, MatchaCheckboxModule, MatchaChipsDirective, MatchaChipsModule, MatchaComponentsModule, MatchaDateComponent, MatchaDateModule, MatchaDatepickerDirective, MatchaDatepickerModule, MatchaDividerComponent, MatchaDividerModule, MatchaDragDirective, MatchaDragHandleDirective, MatchaDrawerComponent, MatchaDrawerModule, MatchaDropListComponent, MatchaDropListModule, MatchaElevationDirective, MatchaElevationModule, MatchaErrorComponent, MatchaFormFieldComponent, MatchaFormFieldModule, MatchaGridComponent, MatchaGridModule, MatchaHintTextComponent, MatchaHintTextModule, MatchaIconComponent, MatchaIconModule, MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent, MatchaInfiniteScrollModule, MatchaInputDirective, MatchaInputModule, MatchaLabelComponent, MatchaLazyloadComponent, MatchaLazyloadDataComponent, MatchaLazyloadModule, MatchaMasonryComponent, MatchaMasonryModule, MatchaMenuComponent, MatchaMenuModule, MatchaMenuTriggerForDirective, MatchaModalComponent, MatchaModalContentComponent, MatchaModalFooterComponent, MatchaModalHeaderComponent, MatchaModalModule, MatchaModalOptionsComponent, MatchaModalService, MatchaOptionComponent, MatchaOptionModule, MatchaOverlayService, MatchaPageLayoutComponent, MatchaPageLayoutModule, MatchaPaginatorDirective, MatchaPaginatorModule, MatchaProgressBarDirective, MatchaProgressBarModule, MatchaRadioComponent, MatchaRadioModule, MatchaRippleDirective, MatchaRippleModule, MatchaSelectDirective, MatchaSelectModule, MatchaSidenavDirective, MatchaSidenavModule, MatchaSkeletonComponent, MatchaSkeletonModule, MatchaSlideToggleComponent, MatchaSlideToggleModule, MatchaSliderDirective, MatchaSliderModule, MatchaSnackBarDirective, MatchaSnackBarModule, MatchaSortHeaderDirective, MatchaSortHeaderModule, MatchaSpinComponent, MatchaSpinModule, MatchaSpinnerComponent, MatchaSpinnerModule, MatchaStepperComponent, MatchaStepperContentComponent, MatchaStepperControllerComponent, MatchaStepperModule, MatchaStepperStateService, MatchaTabItemComponent, MatchaTableDirective, MatchaTableModule, MatchaTabsComponent, MatchaTabsModule, MatchaTimeComponent, MatchaTimeModule, MatchaTitleComponent, MatchaTitleModule, MatchaToolbarButtonComponent, MatchaToolbarComponent, MatchaToolbarContentComponent, MatchaToolbarCustomButtonComponent, MatchaToolbarMainButtonComponent, MatchaToolbarModule, MatchaTooltipDirective, MatchaTooltipModule, NextStepDirective, PrevStepDirective, StepComponent, StepContentDirective };
6636
+ export { MATCHA_OPTION_PARENT, MatchaAccordionComponent, MatchaAccordionContentComponent, MatchaAccordionHeaderComponent, MatchaAccordionItemComponent, MatchaAccordionModule, MatchaAutocompleteComponent, MatchaAutocompleteModule, MatchaAutocompleteTriggerDirective, MatchaAvatarComponent, MatchaAvatarModule, MatchaBadgeDirective, MatchaBadgeModule, MatchaButtonComponent, MatchaButtonModule, MatchaButtonToggleComponent, MatchaButtonToggleModule, MatchaCardComponent, MatchaCardModule, MatchaCheckboxComponent, MatchaCheckboxModule, MatchaChipsDirective, MatchaChipsModule, MatchaComponentsModule, MatchaDateComponent, MatchaDateModule, MatchaDividerComponent, MatchaDividerModule, MatchaDragDirective, MatchaDragHandleDirective, MatchaDrawerComponent, MatchaDrawerContainerComponent, MatchaDrawerContentComponent, MatchaDrawerModule, MatchaDropListComponent, MatchaDropListModule, MatchaElevationDirective, MatchaElevationModule, MatchaErrorComponent, MatchaFormFieldComponent, MatchaFormFieldModule, MatchaGridComponent, MatchaGridModule, MatchaHintTextComponent, MatchaHintTextModule, MatchaIconComponent, MatchaIconModule, MatchaInfiniteScrollComponent, MatchaInfiniteScrollDataComponent, MatchaInfiniteScrollModule, MatchaInputDirective, MatchaInputModule, MatchaLabelComponent, MatchaLazyloadComponent, MatchaLazyloadDataComponent, MatchaLazyloadModule, MatchaMasonryComponent, MatchaMasonryModule, MatchaMenuComponent, MatchaMenuModule, MatchaMenuTriggerForDirective, MatchaModalComponent, MatchaModalContentComponent, MatchaModalFooterComponent, MatchaModalHeaderComponent, MatchaModalModule, MatchaModalOptionsComponent, MatchaModalService, MatchaOptionComponent, MatchaOptionModule, MatchaOverlayService, MatchaPageLayoutComponent, MatchaPageLayoutModule, MatchaPaginatorDirective, MatchaPaginatorModule, MatchaPanelComponent, MatchaPanelModule, MatchaProgressBarDirective, MatchaProgressBarModule, MatchaRadioComponent, MatchaRadioModule, MatchaRippleDirective, MatchaRippleModule, MatchaSidenavDirective, MatchaSidenavModule, MatchaSkeletonComponent, MatchaSkeletonModule, MatchaSlideToggleComponent, MatchaSlideToggleModule, MatchaSliderDirective, MatchaSliderModule, MatchaSnackBarDirective, MatchaSnackBarModule, MatchaSortHeaderDirective, MatchaSortHeaderModule, MatchaSpinComponent, MatchaSpinModule, MatchaSpinnerComponent, MatchaSpinnerModule, MatchaStepperComponent, MatchaStepperContentComponent, MatchaStepperControllerComponent, MatchaStepperModule, MatchaStepperStateService, MatchaTabItemComponent, MatchaTableDirective, MatchaTableModule, MatchaTabsComponent, MatchaTabsModule, MatchaTimeComponent, MatchaTimeModule, MatchaTitleComponent, MatchaTitleModule, MatchaToolbarButtonComponent, MatchaToolbarComponent, MatchaToolbarContentComponent, MatchaToolbarCustomButtonComponent, MatchaToolbarMainButtonComponent, MatchaToolbarModule, MatchaTooltipDirective, MatchaTooltipModule, NextStepDirective, PrevStepDirective, StepComponent, StepContentDirective };
6007
6637
  //# sourceMappingURL=matcha-components.mjs.map