@rubeusteam/rb-angular-components 0.0.1-9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +119 -0
  2. package/fesm2022/rubeusteam-rb-angular-components.mjs +580 -0
  3. package/fesm2022/rubeusteam-rb-angular-components.mjs.map +1 -0
  4. package/index.d.ts +5 -0
  5. package/lib/components/rb-content-box/rb-content-box.component.d.ts +5 -0
  6. package/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.d.ts +14 -0
  7. package/lib/components/rb-crud/rb-crud.component.d.ts +34 -0
  8. package/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.d.ts +19 -0
  9. package/lib/components/rb-dialog/rb-dialog.component.d.ts +10 -0
  10. package/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.d.ts +23 -0
  11. package/lib/components/rb-filter-panel/rb-filter-panel.component.d.ts +12 -0
  12. package/lib/directives/rb-dynamic-button/rb-dynamic-button.directive.d.ts +17 -0
  13. package/lib/i18n/paginator-ptbr-intl/paginator-ptbr-intl.service.d.ts +12 -0
  14. package/lib/interfaces/button.interface.d.ts +15 -0
  15. package/lib/interfaces/rb-crud.interface.d.ts +11 -0
  16. package/lib/interfaces/rb-dialog.interface.d.ts +16 -0
  17. package/lib/interfaces/rb-filter.interface.d.ts +11 -0
  18. package/lib/pipes/rb-custom/rb-custom.pipe.d.ts +20 -0
  19. package/lib/services/filter/client-filter.service.d.ts +10 -0
  20. package/package.json +53 -0
  21. package/public-api.d.ts +13 -0
  22. package/src/lib/styles/README.md +83 -0
  23. package/src/lib/styles/_crud.scss +22 -0
  24. package/src/lib/styles/_dialog.scss +38 -0
  25. package/src/lib/styles/_layout.scss +86 -0
  26. package/src/lib/styles/_typography.scss +62 -0
  27. package/src/lib/styles/index.scss +4 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rubeusteam-rb-angular-components.mjs","sources":["../../../projects/rb-angular-components/src/lib/pipes/rb-custom/rb-custom.pipe.ts","../../../projects/rb-angular-components/src/lib/i18n/paginator-ptbr-intl/paginator-ptbr-intl.service.ts","../../../projects/rb-angular-components/src/lib/services/filter/client-filter.service.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/rb-crud.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud/rb-crud.component.html","../../../projects/rb-angular-components/src/lib/directives/rb-dynamic-button/rb-dynamic-button.directive.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component.html","../../../projects/rb-angular-components/src/lib/components/rb-content-box/rb-content-box.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-content-box/rb-content-box.component.html","../../../projects/rb-angular-components/src/lib/components/rb-dialog/rb-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-dialog/rb-dialog.component.html","../../../projects/rb-angular-components/src/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-filter-dropdown/rb-filter-dropdown.component.html","../../../projects/rb-angular-components/src/lib/components/rb-filter-panel/rb-filter-panel.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-filter-panel/rb-filter-panel.component.html","../../../projects/rb-angular-components/src/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.ts","../../../projects/rb-angular-components/src/lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component.html","../../../projects/rb-angular-components/src/lib/interfaces/rb-crud.interface.ts","../../../projects/rb-angular-components/src/public-api.ts","../../../projects/rb-angular-components/src/rubeusteam-rb-angular-components.ts"],"sourcesContent":["import { Pipe, PipeTransform } from '@angular/core';\n\n@Pipe({\n name: 'rbCustomPipe',\n standalone: true\n})\nexport class RbCustomPipe implements PipeTransform {\n\n transform(value: any, type: string): any {\n switch (type) {\n case 'date':\n return this.dateTransform(value);\n case 'datetime':\n return this.dateTimeTransform(value);\n case 'currency':\n return this.currencyTransform(value);\n case 'cpf':\n return this.cpfTransform(value);\n case 'cnpj':\n return this.cnpjTransform(value);\n case 'phone':\n return this.phoneTransform(value);\n case 'cep':\n return this.cepTransform(value);\n case 'mask':\n return this.maskTransform(value);\n case 'relativeTime':\n return this.relativeTimeTransform(value);\n case 'lastModifiedBy':\n return this.lastModifiedTransform(value);\n default:\n return value;\n }\n }\n\n dateTransform(value: any, format?: string): any {\n if (!value || typeof value !== 'string') return '';\n const isoString = value.includes(' ')\n ? value.replace(' ', 'T')\n : `${value}T00:00:00`;\n const date = new Date(isoString);\n if (isNaN(date.getTime())) return '';\n return date.toLocaleDateString('pt-BR', {\n timeZone: 'America/Sao_Paulo'\n });\n }\n\n private dateTimeTransform(value: any): string {\n if (!value || typeof value !== 'string') return '';\n\n const isoString = value.includes(' ')\n ? value.replace(' ', 'T')\n : `${value}T00:00:00`;\n const date = new Date(isoString);\n \n if (isNaN(date.getTime())) return '';\n\n const datePart = new Intl.DateTimeFormat('pt-BR', {\n day: '2-digit',\n month: '2-digit',\n year: 'numeric',\n timeZone: 'America/Sao_Paulo'\n }).format(date);\n\n const timePart = new Intl.DateTimeFormat('pt-BR', {\n hour: '2-digit',\n minute: '2-digit',\n hour12: false,\n timeZone: 'America/Sao_Paulo'\n }).format(date);\n\n return `${datePart} às ${timePart}`;\n }\n\n\n currencyTransform(value: any): any {\n if (!value) return '';\n return new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(value);\n }\n\n cpfTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{3})(\\d{3})(\\d{3})(\\d{2})/, \"$1.$2.$3-$4\");\n }\n\n cnpjTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{2})(\\d{3})(\\d{3})(\\d{4})(\\d{2})/, \"$1.$2.$3/$4-$5\");\n }\n\n phoneTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{2})(\\d{5})(\\d{4})/, \"($1) $2-$3\");\n }\n\n cepTransform(value: any): any {\n if (!value) return '';\n return value.replace(/(\\d{5})(\\d{3})/, \"$1-$2\");\n }\n\n maskTransform(value: any): any {\n if (!value) return '';\n return '*'.repeat(value.toString().length);\n }\n\n relativeTimeTransform(value: any): any {\n if (!value) return '';\n const date = new Date(value);\n const now = new Date();\n const diff = Math.floor((now.getTime() - date.getTime()) / 1000);\n\n switch (true) {\n case diff < 60:\n return `${diff} segundos atrás`;\n case diff < 3600:\n return `${Math.floor(diff / 60)} minutos atrás`;\n case diff < 86400:\n return `${Math.floor(diff / 3600)} horas atrás`;\n case diff < 2592000:\n return `${Math.floor(diff / 86400)} dias atrás`;\n case diff < 31536000:\n return `${Math.floor(diff / 2592000)} meses atrás`;\n default:\n return `${Math.floor(diff / 31536000)} anos atrás`;\n }\n }\n\n lastModifiedTransform(value: { date: string; author: string }): string {\n if (!value || !value.date) return '';\n const formattedDate = new Intl.DateTimeFormat('pt-BR', {\n dateStyle: 'short',\n // timeStyle: 'short',\n timeZone: 'America/Sao_Paulo'\n }).format(new Date(value.date));\n if(!value.author) {\n return `${formattedDate}`;\n }\n return `${formattedDate} por ${value.author}`;\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PaginatorPtbrIntlService extends MatPaginatorIntl{\n override itemsPerPageLabel = 'Itens por página:';\n override nextPageLabel = 'Próxima';\n override previousPageLabel = 'Anterior';\n override firstPageLabel = 'Primeira página';\n override lastPageLabel = 'Última página';\n\n override getRangeLabel = (page: number, pageSize: number, length: number) => {\n\n if (length === 0) {\n return `Página 0 de ${length}`;\n }\n const start = page + 1;\n const totalPages = ((length / pageSize) + (length % pageSize > 0 ? 1 : 0)).toFixed(0);\n return `Página ${start} de ${totalPages}`;\n };\n}\n","import { Injectable, signal, Signal } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ClientFilterService {\n\n private searchText = signal<string>('');\n\n setSearchText(text: string): void {\n this.searchText.set(this.normalizeText(text));\n }\n\n public normalizeText(text: string): string {\n return text\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n .trim();\n }\n\n getSearchText(): Signal<string> {\n return this.searchText;\n }\n}\n","import { Component, Input, Output, EventEmitter, AfterViewInit, OnChanges, ViewChild, effect, Signal } from '@angular/core';\nimport { MatTableDataSource } from '@angular/material/table';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatPaginatorModule, MatPaginator } from '@angular/material/paginator';\nimport { MatSortModule, MatSort } from '@angular/material/sort';\nimport { CommonModule } from '@angular/common';\nimport { MatTableModule } from '@angular/material/table';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { RbCustomPipe } from '../../pipes/rb-custom/rb-custom.pipe';\nimport { MatPaginatorIntl } from '@angular/material/paginator';\nimport { PaginatorPtbrIntlService } from '../../i18n/paginator-ptbr-intl/paginator-ptbr-intl.service';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { CrudColumn, CrudActionEvent } from '../../interfaces/rb-crud.interface';\nimport { ButtonSettings, RbEncapsulatedButton } from '../../interfaces/button.interface';\n\n@Component({\n selector: 'rb-crud',\n templateUrl: './rb-crud.component.html',\n styleUrl: './rb-crud.component.scss',\n standalone: true,\n imports: [\n CommonModule,\n MatTableModule,\n MatMenuModule,\n MatInputModule,\n MatPaginatorModule,\n MatSortModule,\n MatIconModule,\n MatButtonModule,\n RbCustomPipe,\n ],\n providers: [\n { provide: MatPaginatorIntl, useClass: PaginatorPtbrIntlService }\n ]\n})\nexport class RbCrudComponent implements AfterViewInit, OnChanges {\n @Input() columns: CrudColumn[] = [];\n @Input() data: any[] = [];\n @Input() actionsMenu: RbEncapsulatedButton[] = [];\n @Input() pagination: boolean = true;\n @Input() pageSize: number = 10;\n @Input() infiniteScroll: boolean = false;\n @Input() textLineBreakable: boolean = false;\n\n @Output() actionClick = new EventEmitter<CrudActionEvent>();\n // @Output() filterChange = new EventEmitter<any>();\n @Output() pageChange = new EventEmitter<number>();\n\n @ViewChild(MatPaginator) paginator!: MatPaginator;\n @ViewChild(MatSort) sort!: MatSort;\n\n displayedColumns: string[] = [];\n dataSource = new MatTableDataSource<any>(this.data);\n filterText: Signal<string>;\n\n constructor(private clientFilterService: ClientFilterService) {\n this.filterText = this.clientFilterService.getSearchText();\n effect(() => {\n this.applyFilter();\n });\n }\n\n ngAfterViewInit() {\n this.dataSource.paginator = this.paginator;\n this.dataSource.sort = this.sort;\n this.defineSortRule();\n }\n\n ngOnChanges(): void {\n this.dataSource.data = this.data;\n this.displayedColumns = this.columns.map(col => col.key);\n if (this.actionsMenu.length) {\n this.displayedColumns.push('actions');\n }\n }\n\n defineSortRule() {\n this.dataSource.sortingDataAccessor = (item, property) => {\n if (item[property]?.date) {\n return new Date(item[property]?.date || 0).getTime();\n }\n return item[property];\n };\n }\n\n onActionClick(action: ButtonSettings, row: any): void {\n this.actionClick.emit({ action: action.action, row });\n }\n\n onClickCell(action: string, row: any): void {\n this.actionClick.emit({ action: action, row });\n }\n\n // applyFilter() {\n // this.dataSource.filter = this.filterText().trim().toLowerCase().normalize('NFD').replace(/[\\u0300-\\u036f]/g, '');\n // }\n\n applyFilter() {\n this.dataSource.filterPredicate = (data: any, filter: string): boolean => {\n const accumulator = (currentTerm: string, key: string): string => {\n const value = data[key];\n return currentTerm + ' ' + (typeof value === 'string' ? this.clientFilterService.normalizeText(value) : '');\n };\n\n const dataStr = Object.keys(data).reduce(accumulator, '').trim();\n return dataStr.includes(this.clientFilterService.normalizeText(filter));\n };\n\n this.dataSource.filter = this.filterText();\n }\n\n}\n","<div class=\"rb-crud-container\">\n <div class=\"rb-table-container\">\n <table mat-table [dataSource]=\"dataSource\" matSort class=\"rb-table\">\n <!-- Colunas Dinâmicas -->\n @for (column of columns; track column.key) {\n <ng-container [matColumnDef]=\"column.key\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.label }}\n </th>\n <td mat-cell *matCellDef=\"let row\"\n [class.rb-clickable-cell]=\"column.action\"\n [class.rb-break-line-cell]=\"textLineBreakable\"\n (click)=\"column.action ? onClickCell(column.action, row) : null\"\n title=\"{{ column.pipe ? (row[column.key] | rbCustomPipe:column.pipe) : row[column.key] }}\">\n @if (column.pipe) {\n {{ row[column.key] | rbCustomPipe:column.pipe }}\n } @else {\n {{ row[column.key] }}\n }\n </td>\n </ng-container>\n }\n\n <!-- Coluna de Ações -->\n @if (actionsMenu.length) {\n <ng-container matColumnDef=\"actions\" stickyEnd>\n <th mat-header-cell *matHeaderCellDef> Ações </th>\n <td mat-cell *matCellDef=\"let row\" class=\"rb-crud-actions-col\">\n <button mat-icon-button [matMenuTriggerFor]=\"menu\">\n <mat-icon>{{ 'more_vert' }}</mat-icon>\n </button>\n <mat-menu #menu=\"matMenu\" panelClass=\"rb-menu-crud\">\n @for (action of actionsMenu; track action.label) {\n <button mat-menu-item\n (click)=\"onActionClick(action, row)\"\n title=\"{{action.label}}\"\n class=\"{{action.color}}\"\n [attr.aria-label]=\"action.label\">\n @if (action.icon) {\n <mat-icon>{{ action.icon }}</mat-icon>\n }\n {{ action.label }}\n </button>\n }\n </mat-menu>\n </td>\n </ng-container>\n }\n\n <!-- Cabeçalho e Corpo da Tabela -->\n <thead>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n </thead>\n <tbody>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </tbody>\n </table>\n </div>\n\n @if (dataSource.data.length === 0) {\n <div class=\"empty-message\">\n Nenhum dado disponível no momento.\n </div>\n }\n</div>\n\n<!-- Paginação -->\n@if (pagination) {\n <mat-paginator #paginator\n class=\"rb-paginator\"\n [pageSize]=\"pageSize\"\n (page)=\"pageChange.emit($event.pageIndex)\"\n [showFirstLastButtons]=\"true\"\n [pageSizeOptions]=\"[10,25,50,100]\"\n aria-label=\"Selecione a página\">\n </mat-paginator>\n}\n","import { Directive, Input, ElementRef, Renderer2, OnChanges, SimpleChanges } from '@angular/core';\n\n@Directive({\n selector: '[rbDynamicButton]'\n})\nexport class RbDynamicButtonDirective implements OnChanges {\n @Input('rbDynamicButton') set buttonType(value: string | null) {\n const validTypes = ['float', 'confirm', 'cancel', 'menuTrigger'] as const;\n this._buttonType = validTypes.includes(value as any) ? (value as any) : null;\n }\n private _buttonType: 'float' | 'confirm' | 'cancel' | 'menuTrigger' | null = null;\n\n buttonTypes: Record<string, { directive: string; classes: string[] }> = {\n float: {\n directive: 'mat-raised-button',\n classes: ['mdc-button--raised', 'mat-mdc-raised-button']\n },\n confirm: {\n directive: 'mat-flat-button',\n classes: ['mdc-button--unelevated', 'mat-mdc-unelevated-button']\n },\n cancel: {\n directive: 'mat-stroked-button',\n classes: ['mdc-button--outlined', 'mat-mdc-outlined-button']\n },\n menuTrigger: {\n directive: 'mat-icon-button',\n classes: ['mdc-icon-button', 'mat-mdc-icon-button']\n }\n };\n\n constructor(private el: ElementRef, private renderer: Renderer2) {\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['buttonType']?.currentValue) {\n this.renderButtons(this._buttonType || '');\n }\n }\n\n private renderButtons(key: string) {\n if (key?.trim() && typeof this.buttonTypes[key] === 'object') {\n this.renderer.setAttribute(this.el.nativeElement, this.buttonTypes[key].directive, '');\n this.buttonTypes[key].classes.forEach(cls => this.renderer.addClass(this.el.nativeElement, cls));\n }\n }\n\n}\n\n","import { Component, Input, Output, signal, EventEmitter } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatButtonModule } from '@angular/material/button';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { ButtonSettings, ButtonActionEvent, RbEncapsulatedButton } from '../../interfaces/button.interface';\n\n@Component({\n selector: 'rb-crud-tool-bar',\n standalone: true,\n imports: [\n CommonModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatButtonModule,\n RbDynamicButtonDirective,\n ],\n templateUrl: './rb-crud-tool-bar.component.html',\n styleUrl: './rb-crud-tool-bar.component.scss'\n})\nexport class RbCrudToolBarComponent {\n @Input() searchPlaceholder: string = 'Digite para pesquisar...';\n @Input() buttonSettings: RbEncapsulatedButton[] = [];\n @Input() iconButton: string = 'add';\n @Input() titleButton: string = 'Adicionar';\n @Input() leftButtonSettings: RbEncapsulatedButton[] = [];\n @Output() buttonClick = new EventEmitter<ButtonActionEvent>();\n\n searchText = signal<string>('');\n\n constructor(private clientFilterService: ClientFilterService) {\n }\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n this.clientFilterService.setSearchText(value);\n }\n\n onClickButton(action: ButtonSettings) {\n this.buttonClick.emit(action);\n }\n\n}\n","<div class=\"rb-crud-tool-bar-container\">\n <div class=\"rb-flex-line-space-between\">\n <div class=\"rb-flex-align-items-center\">\n @for (btn of buttonSettings; track btn.label) {\n <button mat-button\n title=\"{{btn.label}}\"\n class=\"{{btn.color}}\"\n color=\"{{btn.color}}\"\n [attr.aria-label]=\"btn.label\"\n [rbDynamicButton]=\"btn.directive || null\"\n (click)=\"onClickButton(btn)\">\n @if (btn.icon) {\n <mat-icon>{{ btn.icon }}</mat-icon>\n }\n {{ btn.label }}\n </button>\n }\n </div>\n\n <div class=\"rb-search-box rb-flex-align-items-center\">\n <mat-form-field class=\"rb-search-field\">\n <mat-label>Pesquisar</mat-label>\n <input\n matInput\n [value]=\"searchText()\"\n (input)=\"onSearchChange($event)\"\n placeholder={{searchPlaceholder}}\n />\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n @for (btn of leftButtonSettings; track btn.label) {\n <button mat-button\n title=\"{{btn.label}}\"\n class=\"{{btn.color}}\"\n color=\"{{btn.color}}\"\n [attr.aria-label]=\"btn.label\"\n [rbDynamicButton]=\"btn.directive || null\"\n (click)=\"onClickButton(btn)\">\n @if (btn.icon) {\n <mat-icon>{{ btn.icon }}</mat-icon>\n }\n {{ btn.label }}\n </button>\n }\n </div>\n </div>\n</div>\n\n","import { Component } from '@angular/core';\n\n@Component({\n selector: 'rb-content-box',\n imports: [],\n templateUrl: './rb-content-box.component.html',\n styleUrl: './rb-content-box.component.scss'\n})\nexport class RbContentBoxComponent {\n\n}\n","<div class=\"rb-content-box\">\n <ng-content></ng-content>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbDialog } from '../../interfaces/rb-dialog.interface';\n\n@Component({\n selector: 'rb-dialog',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-dialog.component.html',\n styleUrl: './rb-dialog.component.scss'\n})\nexport class RbDialogComponent {\n readonly data = inject<RbDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbDialogComponent>);\n\n onClickButton(action: string) {\n console.log('action', action);\n this.dialogRef.close(action);\n }\n\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>{{data.title}}</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\" >\n @if (data.isMultipleContent) {\n @for (item of data.multipleContent; track $index) {\n @if (item.subtitle) {\n <h3 class=\"rb-font-heading rb-h5\">{{item.subtitle}}</h3>\n }\n @if (item.paragraph) {\n <p class=\"rb-font-body rb-large\">{{item.paragraph}}</p>\n }\n }\n } @else {\n <h3 class=\"rb-font-heading rb-h5\">{{data.subtitle}}</h3>\n <p class=\"rb-font-body rb-large\">{{data.content}}</p>\n }\n </mat-dialog-content>\n\n <!-- Ações -->\n @if (data.buttons?.length) {\n <mat-dialog-actions class=\"rb-dialog-actions\" [align]=\"data.actionsAlign || 'end'\">\n @for (button of data.buttons; track $index) {\n <button mat-button\n title=\"{{button.label}}\"\n class=\"{{button.color}}\"\n [color]=\"button.color\"\n [attr.aria-label]=\"button.label\"\n [rbDynamicButton]=\"button.directive || null\"\n (click)=\"onClickButton(button.action)\">\n @if (button.icon && button.iconPosition === 'start') {\n <mat-icon>{{button.icon}}</mat-icon>\n }\n {{button.label}}\n @if (button.icon && button.iconPosition === 'end') {\n <mat-icon>{{button.icon}}</mat-icon>\n }\n </button>\n }\n </mat-dialog-actions>\n }\n</div>\n","import { Component, TemplateRef, ViewChild, ViewContainerRef, Input, signal } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { OverlayModule, OverlayRef, Overlay } from '@angular/cdk/overlay';\nimport { PortalModule, TemplatePortal } from '@angular/cdk/portal';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatInputModule } from '@angular/material/input';\nimport { ClientFilterService } from '../../services/filter/client-filter.service';\nimport { FilterOption } from '../../interfaces/rb-filter.interface';\n\n\n@Component({\n selector: 'rb-filter-dropdown',\n imports: [CommonModule, OverlayModule, PortalModule, MatIconModule, MatInputModule],\n templateUrl: './rb-filter-dropdown.component.html',\n styleUrl: './rb-filter-dropdown.component.scss',\n standalone: true,\n})\nexport class RbFilterDropdownComponent {\n @Input() parentSelectorId: string = '#parentDropdownSelector';\n @Input() options: FilterOption[] = [];\n\n @ViewChild('filterMenu') filterMenu!: TemplateRef<any>;\n private overlayRef: OverlayRef | null = null;\n trackByFn = (index: number, item: string) => index;\n\n searchText = signal<string>('');\n\n constructor(\n private overlay: Overlay,\n private clientFilterService: ClientFilterService,\n private viewContainerRef: ViewContainerRef\n ) {}\n\n\n onSearchChange(event: Event) {\n const value = (event.target as HTMLInputElement).value;\n this.searchText.set(value);\n this.clientFilterService.setSearchText(value);\n }\n\n public openMenu() {\n if (this.overlayRef) {\n this.closeMenu();\n return;\n }\n\n const positionStrategy = this.overlay.position()\n .flexibleConnectedTo(\n document.querySelector(this.parentSelectorId || 'button')!\n )\n .withPositions([\n {\n originX: 'start',\n originY: 'bottom',\n overlayX: 'start',\n overlayY: 'top',\n },\n ]);\n\n this.overlayRef = this.overlay.create({\n positionStrategy,\n hasBackdrop: true,\n backdropClass: 'cdk-overlay-transparent-backdrop',\n scrollStrategy: this.overlay.scrollStrategies.close(),\n });\n\n const portal = new TemplatePortal(this.filterMenu, this.viewContainerRef);\n this.overlayRef.attach(portal);\n\n this.overlayRef.backdropClick().subscribe(() => this.closeMenu());\n }\n\n closeMenu() {\n this.overlayRef?.dispose();\n this.overlayRef = null;\n }\n\n onSelectItem(item: FilterOption) {\n console.log('Selected item:', item);\n // this.filterItems = this.options.filter((item) => item.includes(this.searchText()));\n // this.clientFilterService.setFilterItems(this.filterItems);\n }\n\n}\n","<ng-template #filterMenu>\n <div class=\"rb-filter-dropdown\">\n <div class=\"rb-filter-dropdown-header\">\n <h5>Adicionar Filtro</h5>\n <button mat-icon-button aria-label=\"Fechar diálogo\" (click)=\"closeMenu()\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <div class=\"rb-filter-dropdown-body\">\n <div class=\"rb-filter-seach-bar\">\n <mat-form-field class=\"rb-search-field\">\n <mat-label>Pesquisar</mat-label>\n <input\n matInput\n [value]=\"searchText()\"\n (input)=\"onSearchChange($event)\"\n placeholder=\"Pesquisar\"\n />\n <mat-icon matPrefix>search</mat-icon>\n </mat-form-field>\n </div>\n <div class=\"rb-filter-dropdown-body-items\">\n <pre>{{options | json}}</pre>\n @if (options && options.length) {\n @for (item of options; track trackByFn) {\n <div\n class=\"rb-filter-dropdown-item\"\n (click)=\"onSelectItem(item)\"\n >\n <!-- <mat-checkbox\n [checked]=\"isSelected(item)\"\n (change)=\"onSelectItem(item, $event)\"\n >\n {{ item.label }}\n </mat-checkbox> -->\n </div>\n }\n } @else {\n <div class=\"rb-filter-dropdown-item\">\n Nenhum item encontrado\n <!-- <mat-checkbox disabled>\n <span class=\"rb-filter-dropdown-item-disabled\">\n Nenhum item encontrado\n </span>\n </mat-checkbox> -->\n </div>\n }\n </div>\n\n <!-- <div class=\"rb-filter-dropdown-body-items\">\n <div\n *ngFor=\"let item of filterItems; trackBy: trackByFn\"\n class=\"rb-filter-dropdown-item\"\n (click)=\"onSelectItem(item)\"\n >\n <mat-checkbox\n [checked]=\"isSelected(item)\"\n (change)=\"onSelectItem(item, $event)\"\n >\n {{ item.label }}\n </mat-checkbox>\n </div>\n <div\n *ngIf=\"!filterItems?.length\"\n class=\"rb-filter-dropdown-item\">\n <mat-checkbox disabled>\n <span class=\"rb-filter-dropdown-item-disabled\">\n Nenhum item encontrado\n </span>\n </mat-checkbox>\n </div>\n </div> -->\n </div>\n </div>\n</ng-template>\n","import { Component, ViewChild, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { RbFilterDropdownComponent } from '../rb-filter-dropdown/rb-filter-dropdown.component';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { FilterPannelData } from '../../interfaces/rb-filter.interface';\n\n@Component({\n selector: 'rb-rb-filter-panel',\n imports: [MatDialogModule, MatButtonModule, MatIconModule, RbFilterDropdownComponent, RbDynamicButtonDirective],\n templateUrl: './rb-filter-panel.component.html',\n styleUrl: './rb-filter-panel.component.scss'\n})\nexport class RbFilterPanelComponent {\n @ViewChild(RbFilterDropdownComponent) dropdown!: RbFilterDropdownComponent;\n data = inject<FilterPannelData>(MAT_DIALOG_DATA);\n\n constructor() {}\n\n applyFilter() {\n console.log('applyFilter');\n }\n\n openMenu(): void {\n this.dropdown.openMenu();\n }\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>Filtro</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\" >\n <div class=\"rb-row rb-row rb-flex-row rb-align-items-start rb-justify-content-start\">\n <button mat-button id=\"parentDropdownSelector\"\n title=\"Filtrar\"\n class=\"primary\"\n aria-label=\"Filtrar\"\n [rbDynamicButton]=\"null\"\n (click)=\"openMenu()\">\n <mat-icon>add</mat-icon>\n Adicionar nova condição\n </button>\n <rb-filter-dropdown\n [parentSelectorId]=\"'#parentDropdownSelector'\"\n [options]=\"data.filterOptions\"></rb-filter-dropdown>\n\n </div>\n </mat-dialog-content>\n\n <!-- Ações -->\n <mat-dialog-actions class=\"rb-dialog-actions\" align=\"end\">\n <button mat-button\n title=\"Filtrar\"\n class=\"primary\"\n aria-label=\"Filtrar\"\n [rbDynamicButton]=\"'confirm'\"\n (click)=\"applyFilter()\">\n Filtrar\n </button>\n </mat-dialog-actions>\n</div>\n","import { Component, inject } from '@angular/core';\nimport { MatDialogModule, MAT_DIALOG_DATA, MatDialogRef } from '@angular/material/dialog';\nimport { MatButtonModule } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { RbDynamicButtonDirective } from '../../directives/rb-dynamic-button/rb-dynamic-button.directive';\nimport { RbDialog } from '../../interfaces/rb-dialog.interface';\nimport { FormBuilder, FormGroup, ReactiveFormsModule, Validators } from '@angular/forms';\n\n@Component({\n selector: 'lib-rb-copy-confirm-dialog',\n imports: [MatDialogModule, MatButtonModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule, MatIconModule, RbDynamicButtonDirective],\n templateUrl: './rb-copy-confirm-dialog.component.html',\n styleUrl: './rb-copy-confirm-dialog.component.scss'\n})\nexport class RbCopyConfirmDialogComponent {\n\n readonly data = inject<RbDialog>(MAT_DIALOG_DATA);\n readonly dialogRef = inject(MatDialogRef<RbCopyConfirmDialogComponent>);\n formGroup: FormGroup;\n\n constructor(private fb: FormBuilder) {\n this.formGroup = this.fb.group({\n fieldValue: [this.data?.fieldValueDafault, Validators.required]\n });\n }\n\n confirm() {\n this.dialogRef.close(this.formGroup.value);\n }\n\n}\n","<div class=\"rb-dialog\">\n <!-- Cabeçalho -->\n <div class=\"rb-dialog-header\">\n <h2>{{data.title}}</h2>\n <button mat-icon-button mat-dialog-close aria-label=\"Fechar diálogo\">\n <mat-icon>close</mat-icon>\n </button>\n </div>\n <form (submit)=\"confirm()\" [formGroup]=\"formGroup\">\n\n <!-- Conteúdo -->\n <mat-dialog-content class=\"rb-dialog-content\">\n <mat-form-field appearance=\"fill\" class=\"rb-form-field width-100\">\n <mat-label>{{data.labelField}}</mat-label>\n <input matInput autofocus\n type=\"text\"\n [attr.aria-label]=\"data.labelField\"\n formControlName=\"fieldValue\"\n required>\n @if (formGroup.controls['fieldValue'].hasError('required')) {\n <mat-error >\n Campo obrigatório\n </mat-error>\n }\n </mat-form-field>\n\n </mat-dialog-content>\n\n <!-- Ações -->\n <mat-dialog-actions class=\"rb-dialog-actions\" [align]=\"data.actionsAlign || 'end'\">\n <button mat-button mat-dialog-close\n title=\"Cancelar\"\n aria-label=\"Cancelar\"\n class=\"secondary\"\n color=\"accent\"\n [attr.aria-label]=\"'Cancelar ação duplicar'\"\n type=\"button\"\n [rbDynamicButton]=\"'cancel'\">\n Cancelar\n </button>\n <button mat-button\n title=\"Duplicar\"\n aria-label=\"Duplicar\"\n class=\"primary\"\n [color]=\"'primary'\"\n [attr.aria-label]=\"'Duplicar ' + data.labelField\"\n [rbDynamicButton]=\"'confirm'\"\n type=\"submit\"\n [disabled]=\"formGroup.invalid\"\n (click)=\"confirm()\">\n Duplicar\n </button>\n </mat-dialog-actions>\n </form>\n</div>\n","export interface CrudColumn {\n key: string;\n label: string;\n sortable?: boolean;\n pipe?: 'date' | 'datetime' | 'currency' | 'cpf' | 'cnpj' | 'phone' | 'cep' | 'mask' | 'relativeTime' | 'lastModifiedBy';\n action?: string;\n}\n\nexport interface CrudActionEvent {\n action: string;\n row?: any;\n}\n\n// export interface CrudFilter {\n// key: string;\n// label: string;\n// type: 'text' | 'select' | 'date';\n// options?: any[]; // Para selects\n// }\n","/*\n * Public API Surface of rb-angular-components\n */\n\n/* Components */\nexport * from './lib/components/rb-crud/rb-crud.component';\nexport * from './lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component';\nexport * from './lib/components/rb-content-box/rb-content-box.component';\nexport * from './lib/components/rb-dialog/rb-dialog.component';\nexport * from './lib/components/rb-filter-panel/rb-filter-panel.component';\nexport * from './lib/components/rb-filter-dropdown/rb-filter-dropdown.component';\nexport * from './lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component';\n\n/* Pipes */\nexport * from './lib/pipes/rb-custom/rb-custom.pipe';\n\n/* Directives */\nexport * from './lib/directives/rb-dynamic-button/rb-dynamic-button.directive';\n\n\n/* Interfaces */\nexport * from './lib/interfaces/rb-crud.interface';\nexport * from './lib/interfaces/button.interface';\nexport * from './lib/interfaces/rb-dialog.interface';\nexport * from './lib/interfaces/rb-filter.interface';\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.ClientFilterService","i6","i7","i2","i3","i4","i1","i2.ClientFilterService","i5"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@rubeusteam/rb-angular-components" />
5
+ export * from './public-api';
@@ -0,0 +1,5 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class RbContentBoxComponent {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbContentBoxComponent, never>;
4
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbContentBoxComponent, "rb-content-box", never, {}, {}, never, ["*"], true, never>;
5
+ }
@@ -0,0 +1,14 @@
1
+ import { MatDialogRef } from '@angular/material/dialog';
2
+ import { RbDialog } from '../../interfaces/rb-dialog.interface';
3
+ import { FormBuilder, FormGroup } from '@angular/forms';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RbCopyConfirmDialogComponent {
6
+ private fb;
7
+ readonly data: RbDialog;
8
+ readonly dialogRef: MatDialogRef<any, any>;
9
+ formGroup: FormGroup;
10
+ constructor(fb: FormBuilder);
11
+ confirm(): void;
12
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbCopyConfirmDialogComponent, never>;
13
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbCopyConfirmDialogComponent, "lib-rb-copy-confirm-dialog", never, {}, {}, never, never, true, never>;
14
+ }
@@ -0,0 +1,34 @@
1
+ import { EventEmitter, AfterViewInit, OnChanges, Signal } from '@angular/core';
2
+ import { MatTableDataSource } from '@angular/material/table';
3
+ import { MatPaginator } from '@angular/material/paginator';
4
+ import { MatSort } from '@angular/material/sort';
5
+ import { ClientFilterService } from '../../services/filter/client-filter.service';
6
+ import { CrudColumn, CrudActionEvent } from '../../interfaces/rb-crud.interface';
7
+ import { ButtonSettings, RbEncapsulatedButton } from '../../interfaces/button.interface';
8
+ import * as i0 from "@angular/core";
9
+ export declare class RbCrudComponent implements AfterViewInit, OnChanges {
10
+ private clientFilterService;
11
+ columns: CrudColumn[];
12
+ data: any[];
13
+ actionsMenu: RbEncapsulatedButton[];
14
+ pagination: boolean;
15
+ pageSize: number;
16
+ infiniteScroll: boolean;
17
+ textLineBreakable: boolean;
18
+ actionClick: EventEmitter<CrudActionEvent>;
19
+ pageChange: EventEmitter<number>;
20
+ paginator: MatPaginator;
21
+ sort: MatSort;
22
+ displayedColumns: string[];
23
+ dataSource: MatTableDataSource<any, MatPaginator>;
24
+ filterText: Signal<string>;
25
+ constructor(clientFilterService: ClientFilterService);
26
+ ngAfterViewInit(): void;
27
+ ngOnChanges(): void;
28
+ defineSortRule(): void;
29
+ onActionClick(action: ButtonSettings, row: any): void;
30
+ onClickCell(action: string, row: any): void;
31
+ applyFilter(): void;
32
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbCrudComponent, never>;
33
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbCrudComponent, "rb-crud", never, { "columns": { "alias": "columns"; "required": false; }; "data": { "alias": "data"; "required": false; }; "actionsMenu": { "alias": "actionsMenu"; "required": false; }; "pagination": { "alias": "pagination"; "required": false; }; "pageSize": { "alias": "pageSize"; "required": false; }; "infiniteScroll": { "alias": "infiniteScroll"; "required": false; }; "textLineBreakable": { "alias": "textLineBreakable"; "required": false; }; }, { "actionClick": "actionClick"; "pageChange": "pageChange"; }, never, never, true, never>;
34
+ }
@@ -0,0 +1,19 @@
1
+ import { EventEmitter } from '@angular/core';
2
+ import { ClientFilterService } from '../../services/filter/client-filter.service';
3
+ import { ButtonSettings, ButtonActionEvent, RbEncapsulatedButton } from '../../interfaces/button.interface';
4
+ import * as i0 from "@angular/core";
5
+ export declare class RbCrudToolBarComponent {
6
+ private clientFilterService;
7
+ searchPlaceholder: string;
8
+ buttonSettings: RbEncapsulatedButton[];
9
+ iconButton: string;
10
+ titleButton: string;
11
+ leftButtonSettings: RbEncapsulatedButton[];
12
+ buttonClick: EventEmitter<ButtonActionEvent>;
13
+ searchText: import("@angular/core").WritableSignal<string>;
14
+ constructor(clientFilterService: ClientFilterService);
15
+ onSearchChange(event: Event): void;
16
+ onClickButton(action: ButtonSettings): void;
17
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbCrudToolBarComponent, never>;
18
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbCrudToolBarComponent, "rb-crud-tool-bar", never, { "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "buttonSettings": { "alias": "buttonSettings"; "required": false; }; "iconButton": { "alias": "iconButton"; "required": false; }; "titleButton": { "alias": "titleButton"; "required": false; }; "leftButtonSettings": { "alias": "leftButtonSettings"; "required": false; }; }, { "buttonClick": "buttonClick"; }, never, never, true, never>;
19
+ }
@@ -0,0 +1,10 @@
1
+ import { MatDialogRef } from '@angular/material/dialog';
2
+ import { RbDialog } from '../../interfaces/rb-dialog.interface';
3
+ import * as i0 from "@angular/core";
4
+ export declare class RbDialogComponent {
5
+ readonly data: RbDialog;
6
+ readonly dialogRef: MatDialogRef<any, any>;
7
+ onClickButton(action: string): void;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbDialogComponent, never>;
9
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbDialogComponent, "rb-dialog", never, {}, {}, never, never, true, never>;
10
+ }
@@ -0,0 +1,23 @@
1
+ import { TemplateRef, ViewContainerRef } from '@angular/core';
2
+ import { Overlay } from '@angular/cdk/overlay';
3
+ import { ClientFilterService } from '../../services/filter/client-filter.service';
4
+ import { FilterOption } from '../../interfaces/rb-filter.interface';
5
+ import * as i0 from "@angular/core";
6
+ export declare class RbFilterDropdownComponent {
7
+ private overlay;
8
+ private clientFilterService;
9
+ private viewContainerRef;
10
+ parentSelectorId: string;
11
+ options: FilterOption[];
12
+ filterMenu: TemplateRef<any>;
13
+ private overlayRef;
14
+ trackByFn: (index: number, item: string) => number;
15
+ searchText: import("@angular/core").WritableSignal<string>;
16
+ constructor(overlay: Overlay, clientFilterService: ClientFilterService, viewContainerRef: ViewContainerRef);
17
+ onSearchChange(event: Event): void;
18
+ openMenu(): void;
19
+ closeMenu(): void;
20
+ onSelectItem(item: FilterOption): void;
21
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbFilterDropdownComponent, never>;
22
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbFilterDropdownComponent, "rb-filter-dropdown", never, { "parentSelectorId": { "alias": "parentSelectorId"; "required": false; }; "options": { "alias": "options"; "required": false; }; }, {}, never, never, true, never>;
23
+ }
@@ -0,0 +1,12 @@
1
+ import { RbFilterDropdownComponent } from '../rb-filter-dropdown/rb-filter-dropdown.component';
2
+ import { FilterPannelData } from '../../interfaces/rb-filter.interface';
3
+ import * as i0 from "@angular/core";
4
+ export declare class RbFilterPanelComponent {
5
+ dropdown: RbFilterDropdownComponent;
6
+ data: FilterPannelData;
7
+ constructor();
8
+ applyFilter(): void;
9
+ openMenu(): void;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbFilterPanelComponent, never>;
11
+ static ɵcmp: i0.ɵɵComponentDeclaration<RbFilterPanelComponent, "rb-rb-filter-panel", never, {}, {}, never, never, true, never>;
12
+ }
@@ -0,0 +1,17 @@
1
+ import { ElementRef, Renderer2, OnChanges, SimpleChanges } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RbDynamicButtonDirective implements OnChanges {
4
+ private el;
5
+ private renderer;
6
+ set buttonType(value: string | null);
7
+ private _buttonType;
8
+ buttonTypes: Record<string, {
9
+ directive: string;
10
+ classes: string[];
11
+ }>;
12
+ constructor(el: ElementRef, renderer: Renderer2);
13
+ ngOnChanges(changes: SimpleChanges): void;
14
+ private renderButtons;
15
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbDynamicButtonDirective, never>;
16
+ static ɵdir: i0.ɵɵDirectiveDeclaration<RbDynamicButtonDirective, "[rbDynamicButton]", never, { "buttonType": { "alias": "rbDynamicButton"; "required": false; }; }, {}, never, never, true, never>;
17
+ }
@@ -0,0 +1,12 @@
1
+ import { MatPaginatorIntl } from '@angular/material/paginator';
2
+ import * as i0 from "@angular/core";
3
+ export declare class PaginatorPtbrIntlService extends MatPaginatorIntl {
4
+ itemsPerPageLabel: string;
5
+ nextPageLabel: string;
6
+ previousPageLabel: string;
7
+ firstPageLabel: string;
8
+ lastPageLabel: string;
9
+ getRangeLabel: (page: number, pageSize: number, length: number) => string;
10
+ static ɵfac: i0.ɵɵFactoryDeclaration<PaginatorPtbrIntlService, never>;
11
+ static ɵprov: i0.ɵɵInjectableDeclaration<PaginatorPtbrIntlService>;
12
+ }
@@ -0,0 +1,15 @@
1
+ export interface ButtonSettings {
2
+ label: string;
3
+ icon?: string;
4
+ action: string;
5
+ directive?: 'float' | 'confirm' | 'cancel' | 'menuTrigger';
6
+ }
7
+ export interface ButtonActionEvent {
8
+ action: string;
9
+ }
10
+ export interface RbEncapsulatedButton extends ButtonSettings {
11
+ color?: 'primary' | 'secondary' | 'tertiary' | 'warn' | 'neutral';
12
+ md2color?: 'primary' | 'accent' | 'warn';
13
+ icon?: string;
14
+ iconPosition?: 'start' | 'end';
15
+ }
@@ -0,0 +1,11 @@
1
+ export interface CrudColumn {
2
+ key: string;
3
+ label: string;
4
+ sortable?: boolean;
5
+ pipe?: 'date' | 'datetime' | 'currency' | 'cpf' | 'cnpj' | 'phone' | 'cep' | 'mask' | 'relativeTime' | 'lastModifiedBy';
6
+ action?: string;
7
+ }
8
+ export interface CrudActionEvent {
9
+ action: string;
10
+ row?: any;
11
+ }
@@ -0,0 +1,16 @@
1
+ import { RbEncapsulatedButton } from './button.interface';
2
+ export interface RbDialog {
3
+ title: string;
4
+ subtitle: string;
5
+ content: string;
6
+ isMultipleContent: boolean;
7
+ multipleContent: RbDialogMultipleContent[];
8
+ buttons?: RbEncapsulatedButton[];
9
+ actionsAlign?: 'start' | 'center' | 'end';
10
+ labelField?: string;
11
+ fieldValueDafault?: string;
12
+ }
13
+ export interface RbDialogMultipleContent {
14
+ subtitle: string;
15
+ paragraph: string;
16
+ }
@@ -0,0 +1,11 @@
1
+ export interface FilterOption {
2
+ attribute: string;
3
+ label: string;
4
+ type: string;
5
+ value?: string;
6
+ selected?: boolean;
7
+ options?: FilterOption[];
8
+ }
9
+ export interface FilterPannelData {
10
+ filterOptions: FilterOption[];
11
+ }
@@ -0,0 +1,20 @@
1
+ import { PipeTransform } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class RbCustomPipe implements PipeTransform {
4
+ transform(value: any, type: string): any;
5
+ dateTransform(value: any, format?: string): any;
6
+ private dateTimeTransform;
7
+ currencyTransform(value: any): any;
8
+ cpfTransform(value: any): any;
9
+ cnpjTransform(value: any): any;
10
+ phoneTransform(value: any): any;
11
+ cepTransform(value: any): any;
12
+ maskTransform(value: any): any;
13
+ relativeTimeTransform(value: any): any;
14
+ lastModifiedTransform(value: {
15
+ date: string;
16
+ author: string;
17
+ }): string;
18
+ static ɵfac: i0.ɵɵFactoryDeclaration<RbCustomPipe, never>;
19
+ static ɵpipe: i0.ɵɵPipeDeclaration<RbCustomPipe, "rbCustomPipe", true>;
20
+ }
@@ -0,0 +1,10 @@
1
+ import { Signal } from '@angular/core';
2
+ import * as i0 from "@angular/core";
3
+ export declare class ClientFilterService {
4
+ private searchText;
5
+ setSearchText(text: string): void;
6
+ normalizeText(text: string): string;
7
+ getSearchText(): Signal<string>;
8
+ static ɵfac: i0.ɵɵFactoryDeclaration<ClientFilterService, never>;
9
+ static ɵprov: i0.ɵɵInjectableDeclaration<ClientFilterService>;
10
+ }
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "@rubeusteam/rb-angular-components",
3
+ "version": "0.0.19.1",
4
+ "description": "Correção tradutor paginação",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "angular",
8
+ "componentes",
9
+ "rubeus",
10
+ "material"
11
+ ],
12
+ "style": "src/lib/styles/index.scss",
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "https://github.com/rubeusteam/rb-angular-components.git"
16
+ },
17
+ "bugs": {
18
+ "url": "https://github.com/rubeusteam/rb-angular-components/issues"
19
+ },
20
+ "homepage": "https://github.com/rubeusteam/rb-angular-components#readme",
21
+ "peerDependencies": {
22
+ "@angular/common": "^19.0.0",
23
+ "@angular/core": "^19.0.0",
24
+ "@angular/forms": "^19.0.0",
25
+ "@angular/platform-browser": "^19.0.0",
26
+ "@angular/material": "^19.0.0",
27
+ "@angular/cdk": "^19.0.0",
28
+ "rxjs": "^7.8.0",
29
+ "zone.js": "~0.15.0"
30
+ },
31
+ "dependencies": {
32
+ "tslib": "^2.3.0"
33
+ },
34
+ "sideEffects": false,
35
+ "module": "fesm2022/rubeusteam-rb-angular-components.mjs",
36
+ "typings": "index.d.ts",
37
+ "files": [
38
+ "fesm2022",
39
+ "index.d.ts",
40
+ "lib",
41
+ "src/lib/styles",
42
+ "public-api.d.ts"
43
+ ],
44
+ "exports": {
45
+ "./package.json": {
46
+ "default": "./package.json"
47
+ },
48
+ ".": {
49
+ "types": "./index.d.ts",
50
+ "default": "./fesm2022/rubeusteam-rb-angular-components.mjs"
51
+ }
52
+ }
53
+ }
@@ -0,0 +1,13 @@
1
+ export * from './lib/components/rb-crud/rb-crud.component';
2
+ export * from './lib/components/rb-crud-tool-bar/rb-crud-tool-bar.component';
3
+ export * from './lib/components/rb-content-box/rb-content-box.component';
4
+ export * from './lib/components/rb-dialog/rb-dialog.component';
5
+ export * from './lib/components/rb-filter-panel/rb-filter-panel.component';
6
+ export * from './lib/components/rb-filter-dropdown/rb-filter-dropdown.component';
7
+ export * from './lib/components/rb-copy-confirm-dialog/rb-copy-confirm-dialog.component';
8
+ export * from './lib/pipes/rb-custom/rb-custom.pipe';
9
+ export * from './lib/directives/rb-dynamic-button/rb-dynamic-button.directive';
10
+ export * from './lib/interfaces/rb-crud.interface';
11
+ export * from './lib/interfaces/button.interface';
12
+ export * from './lib/interfaces/rb-dialog.interface';
13
+ export * from './lib/interfaces/rb-filter.interface';
@@ -0,0 +1,83 @@
1
+
2
+ # Tipografia - rb-angular-components
3
+
4
+ No diretório styles, contém o arquivo `typography.scss` onde se define **tipografia** da biblioteca `rb-angular-components` contém as classes CSS responsáveis por estilizar os textos nos componentes. As classes estão baseadas no Rubeus Style Guide, que pode ser facilmente aplicado em qualquer elemento de texto na sua aplicação.
5
+
6
+ ## Como utilizar
7
+
8
+ Existem duas formas de utilizar os estilos de tipografia: inserindo diretamente no arquivo `styles.scss` ou configurando no `angular.json`. Ambas as abordagens permitem que você use as classes de tipografia em toda a sua aplicação.
9
+
10
+ ### Alternativa 1: Inserindo pelo `styles.scss`
11
+
12
+ A primeira alternativa é importar o arquivo de estilos diretamente no seu arquivo global de estilos, como o `styles.scss` ou `styles.css`. Para isso, basta adicionar a seguinte linha no início do seu arquivo:
13
+
14
+ ```scss
15
+ @import 'node_modules/rb-angular-components/styles/typography.scss';
16
+
17
+ ```
18
+
19
+ Esta abordagem é a mais simples e é adequada para projetos que já possuem um arquivo global de estilos.
20
+
21
+ #### Exemplo de uso:
22
+
23
+ Após a importação do arquivo de tipografia no `styles.scss`, você pode usar as classes de tipografia diretamente nos elementos HTML do seu projeto.
24
+
25
+ ```html
26
+ <div>
27
+ <h1 class="rb-h1">Título Principal</h1>
28
+ <p class="rb-font-body rb-large">Texto grande para o corpo.</p>
29
+ <p class="rb-font-body rb-medium">Texto médio para o corpo.</p>
30
+ <p class="rb-font-body rb-small">Texto pequeno para o corpo.</p>
31
+ <h2 class="rb-h2">Subtítulo</h2>
32
+ <p class="rb-font-body">Texto padrão no corpo.</p>
33
+ </div>
34
+ ```
35
+
36
+ ### Alternativa 2: Inserindo pelo `angular.json`
37
+
38
+ A segunda alternativa é configurar os estilos diretamente no arquivo `angular.json`. Isso garante que o arquivo de tipografia seja carregado globalmente em toda a aplicação, sem a necessidade de importação manual no `styles.scss`.
39
+
40
+ Para isso, siga os seguintes passos:
41
+
42
+ 1. Abra o arquivo `angular.json`.
43
+ 2. Encontre a seção `"styles"` dentro do seu projeto, que fica em `projects -> <nome-do-projeto> -> architect -> build`.
44
+ 3. Adicione o caminho do arquivo de tipografia na lista de estilos.
45
+
46
+ ```json
47
+ {
48
+ "projects": {
49
+ "<nome-do-projeto>": {
50
+ "architect": {
51
+ "build": {
52
+ "styles": [
53
+ "src/styles.scss",
54
+ "node_modules/rb-angular-components/styles/typography.scss",
55
+ ]
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ ```
62
+
63
+ Com isso, o arquivo de tipografia será carregado automaticamente, sem necessidade de importação explícita no `styles.scss`.
64
+
65
+ #### Exemplo de uso:
66
+
67
+ Após adicionar a referência no `angular.json`, você pode usar as classes de tipografia nos elementos HTML, assim como no exemplo anterior:
68
+
69
+ ```html
70
+ <div>
71
+ <h1 class="rb-font-heading rb-h1">Título Principal</h1>
72
+ <p class="rb-font-body rb-large">Texto grande para o corpo.</p>
73
+ <p class="rb-font-body rb-medium">Texto médio para o corpo.</p>
74
+ <p class="rb-font-body rb-small">Texto pequeno para o corpo.</p>
75
+ <h2 class="rb-font-heading rb-h2">Subtítulo</h2>
76
+ <p class="rb-font-body">Texto padrão no corpo.</p>
77
+ </div>
78
+ ```
79
+
80
+ ## Conclusão
81
+
82
+ As classes de tipografia são uma maneira prática e simples de garantir consistência visual no seu projeto. Você pode escolher a melhor abordagem para seu caso, seja inserindo os estilos pelo `styles.scss` ou configurando no `angular.json`. Ambas as opções oferecem flexibilidade e facilidade de manutenção.
83
+
@@ -0,0 +1,22 @@
1
+ .rb-menu-crud {
2
+ background: rgba(248, 250, 249, 1);
3
+ }
4
+
5
+ .rb-menu-crud .mat-menu-item,
6
+ .rb-menu-crud .mat-mdc-menu-item {
7
+ color: rgba(80, 83, 83, 1);
8
+ font-style: normal;
9
+ font-weight: 400;
10
+ line-height: var(24px);
11
+ letter-spacing: var(0.5px);
12
+ }
13
+
14
+ .rb-menu-crud .mat-icon {
15
+ color: rgba(80, 83, 83, 1);
16
+ }
17
+
18
+ .rb-table-container thead {
19
+ position: sticky;
20
+ top: 0;
21
+ z-index: 2;
22
+ }
@@ -0,0 +1,38 @@
1
+ .rb-dialog-header {
2
+ display: flex;
3
+ padding: 4px 16px 4px 32px;
4
+ justify-content: space-between;
5
+ align-items: center;
6
+ align-self: stretch;
7
+ background: rgba(239, 241, 240, 1); // Palettes/Neutral 95
8
+ color: rgba(80, 83, 83, 1); //Palettes/Neutral 35
9
+
10
+ h2{
11
+ font-family: Roboto;
12
+ font-size: 16px;
13
+ font-style: normal;
14
+ font-weight: 500;
15
+ line-height: 23.4px;
16
+ }
17
+ }
18
+
19
+ .rb-dialog-content {
20
+ text-align: center;
21
+ color: rgba(14, 18, 17, 1); // Palettes/Neutral 5
22
+ display: flex;
23
+ padding: 32px;
24
+ justify-content: center;
25
+ align-items: center;
26
+ align-self: stretch;
27
+ }
28
+
29
+ .rb-dialog-actions {
30
+ display: flex;
31
+ align-self: stretch;
32
+ padding: 16px 32px;
33
+ border-top: solid 1px rgba(225, 227, 226, 1); // Palettes/Neutral 90
34
+ }
35
+
36
+ .width-100 {
37
+ width: 100%;
38
+ }