@dev-tcloud/tcloud-ui 6.10.2 → 6.11.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.
- package/fesm2022/dev-tcloud-tcloud-ui.mjs +861 -44
- package/fesm2022/dev-tcloud-tcloud-ui.mjs.map +1 -1
- package/lib/_directives/tcloud-ui-icon-button/tcloud-ui-icon-button.directive.d.ts +12 -0
- package/lib/_directives/tcloud-ui-radio/tcloud-ui-radio.directive.d.ts +6 -0
- package/lib/_modules/tcloud-ui-alert-banner/tcloud-ui-alert-banner.component.d.ts +14 -0
- package/lib/_modules/tcloud-ui-container/components/tcloud-ui-container-col/tcloud-ui-container-col.component.d.ts +1 -1
- package/lib/_modules/tcloud-ui-container/components/tcloud-ui-container-content/tcloud-ui-container-content.component.d.ts +1 -1
- package/lib/_modules/tcloud-ui-container/tcloud-ui-container.component.d.ts +1 -3
- package/lib/_modules/tcloud-ui-filter-bar/tcloud-ui-filter-bar.component.d.ts +11 -0
- package/lib/_modules/tcloud-ui-legend/tcloud-ui-legend.component.d.ts +7 -0
- package/lib/_modules/tcloud-ui-search-bar/tcloud-ui-search-bar.component.d.ts +8 -0
- package/lib/_modules/tcloud-ui-search-input/tcloud-ui-search-input.component.d.ts +17 -0
- package/lib/_modules/tcloud-ui-sub-navbar/component/tcloud-ui-sub-navbar-group/tcloud-ui-sub-navbar-group.component.d.ts +15 -0
- package/lib/_modules/tcloud-ui-sub-navbar/tcloud-ui-sub-navbar.component.d.ts +1 -3
- package/lib/_modules/tcloud-ui-upload-area/tcloud-ui-upload-area.component.d.ts +85 -0
- package/lib/_pipes/actions/product-action.pipe.d.ts +8 -0
- package/lib/_pipes/index.d.ts +2 -0
- package/lib/_pipes/topology/index.d.ts +4 -0
- package/lib/_pipes/topology/topology-environment.pipe.d.ts +7 -0
- package/lib/_pipes/topology/topology-product.pipe.d.ts +8 -0
- package/lib/_pipes/topology/topology-region.pipe.d.ts +7 -0
- package/lib/_pipes/topology/topology-status.pipe.d.ts +7 -0
- package/lib/tcloud-ui.module.d.ts +39 -30
- package/package.json +1 -1
- package/public-api.d.ts +9 -0
- package/scss/components/custom/_tcloud-ui-radio.scss +79 -0
- package/scss/components/custom/_tcloud-ui-sub-navbar.scss +34 -0
- package/scss/components/styles.scss +3 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Injectable, Component, EventEmitter, Input, Output, forwardRef, ViewChild, InjectionToken, Optional, Inject, input, effect, Directive, Pipe, ViewEncapsulation, signal, inject, SkipSelf, HostListener, ChangeDetectorRef,
|
|
2
|
+
import { Injectable, Component, EventEmitter, Input, Output, forwardRef, ViewChild, InjectionToken, Optional, Inject, input, effect, Directive, Pipe, ViewEncapsulation, signal, inject, SkipSelf, ChangeDetectionStrategy, HostListener, ChangeDetectorRef, computed, ApplicationRef, output, model, ContentChildren, viewChild, NgModule, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as i1 from '@angular/common';
|
|
4
4
|
import { CommonModule, DatePipe, DOCUMENT } from '@angular/common';
|
|
5
5
|
import { Subject, Subscription, BehaviorSubject, debounceTime, distinctUntilChanged, map } from 'rxjs';
|
|
@@ -1190,6 +1190,197 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
|
|
|
1190
1190
|
}]
|
|
1191
1191
|
}] });
|
|
1192
1192
|
|
|
1193
|
+
class TopologyStatusPipe {
|
|
1194
|
+
transform(value, ...args) {
|
|
1195
|
+
if (!value || !value?.length)
|
|
1196
|
+
return value;
|
|
1197
|
+
switch (value.toLowerCase()) {
|
|
1198
|
+
case 'error':
|
|
1199
|
+
return 'Indisponível';
|
|
1200
|
+
case 'ok':
|
|
1201
|
+
case 'done':
|
|
1202
|
+
return 'Disponível';
|
|
1203
|
+
case 'deleting':
|
|
1204
|
+
return 'Apagando...';
|
|
1205
|
+
case 'stopped':
|
|
1206
|
+
return 'Desligado';
|
|
1207
|
+
case 'new':
|
|
1208
|
+
return 'Em criação';
|
|
1209
|
+
case 'dr_new':
|
|
1210
|
+
return 'Configurando DR';
|
|
1211
|
+
case 'dr_done':
|
|
1212
|
+
return 'DR configurado';
|
|
1213
|
+
case 'maintenance':
|
|
1214
|
+
return 'Em manutenção';
|
|
1215
|
+
case 'migrating':
|
|
1216
|
+
return 'Migrando';
|
|
1217
|
+
default:
|
|
1218
|
+
return value;
|
|
1219
|
+
}
|
|
1220
|
+
}
|
|
1221
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyStatusPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1222
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TopologyStatusPipe, isStandalone: true, name: "topologyStatus" }); }
|
|
1223
|
+
}
|
|
1224
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyStatusPipe, decorators: [{
|
|
1225
|
+
type: Pipe,
|
|
1226
|
+
args: [{
|
|
1227
|
+
name: 'topologyStatus',
|
|
1228
|
+
standalone: true,
|
|
1229
|
+
}]
|
|
1230
|
+
}] });
|
|
1231
|
+
|
|
1232
|
+
class TopologyRegionPipe {
|
|
1233
|
+
transform(value, ...args) {
|
|
1234
|
+
switch (value) {
|
|
1235
|
+
case 'zone_1':
|
|
1236
|
+
return 'TESP01';
|
|
1237
|
+
case 'zone_2':
|
|
1238
|
+
return 'TESP02';
|
|
1239
|
+
case 'tesp03':
|
|
1240
|
+
return "TESP03";
|
|
1241
|
+
case 'tesp04':
|
|
1242
|
+
return "TESP04";
|
|
1243
|
+
case 'tesp05':
|
|
1244
|
+
return "TESP05";
|
|
1245
|
+
case 'tece01':
|
|
1246
|
+
return "TECE01";
|
|
1247
|
+
case 'tesp06':
|
|
1248
|
+
return "TESP06";
|
|
1249
|
+
default:
|
|
1250
|
+
return value;
|
|
1251
|
+
}
|
|
1252
|
+
}
|
|
1253
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyRegionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1254
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TopologyRegionPipe, isStandalone: true, name: "topologyRegion" }); }
|
|
1255
|
+
}
|
|
1256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyRegionPipe, decorators: [{
|
|
1257
|
+
type: Pipe,
|
|
1258
|
+
args: [{
|
|
1259
|
+
name: 'topologyRegion',
|
|
1260
|
+
standalone: true,
|
|
1261
|
+
}]
|
|
1262
|
+
}] });
|
|
1263
|
+
|
|
1264
|
+
class TopologyEnvironmentPipe {
|
|
1265
|
+
transform(value, ...args) {
|
|
1266
|
+
switch (value) {
|
|
1267
|
+
case 'production':
|
|
1268
|
+
return 'Produção';
|
|
1269
|
+
case 'qa':
|
|
1270
|
+
return 'Qualidade';
|
|
1271
|
+
case 'development':
|
|
1272
|
+
return 'Desenvolvimento';
|
|
1273
|
+
case 'troubleshoot':
|
|
1274
|
+
return 'Troubleshoot';
|
|
1275
|
+
case 'audit':
|
|
1276
|
+
return 'Auditoria';
|
|
1277
|
+
case 'historical':
|
|
1278
|
+
return 'Histórico';
|
|
1279
|
+
default:
|
|
1280
|
+
return 'Ambiente Indefinido';
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyEnvironmentPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1284
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TopologyEnvironmentPipe, isStandalone: true, name: "topologyEnvironment" }); }
|
|
1285
|
+
}
|
|
1286
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyEnvironmentPipe, decorators: [{
|
|
1287
|
+
type: Pipe,
|
|
1288
|
+
args: [{
|
|
1289
|
+
name: 'topologyEnvironment',
|
|
1290
|
+
standalone: true,
|
|
1291
|
+
}]
|
|
1292
|
+
}] });
|
|
1293
|
+
|
|
1294
|
+
class TopologyProductPipe {
|
|
1295
|
+
transform(value, origin) {
|
|
1296
|
+
switch (value) {
|
|
1297
|
+
case '2c': return 'Carol Connect';
|
|
1298
|
+
case 'bioenergia': return 'Bioenergia';
|
|
1299
|
+
case 'consinco': return 'Consinco';
|
|
1300
|
+
case 'datasul': return 'Datasul';
|
|
1301
|
+
case 'fluig': return 'Fluig';
|
|
1302
|
+
case 'iaas': return 'IaaS';
|
|
1303
|
+
case 'license_server': return 'License Server';
|
|
1304
|
+
case 'logix': return 'Logix';
|
|
1305
|
+
case 'paas': return 'Outros';
|
|
1306
|
+
case 'pep': return 'PEP';
|
|
1307
|
+
case 'protheus': return this.getProtheusSubproduct(value, origin);
|
|
1308
|
+
case 'pvi': return 'PVI';
|
|
1309
|
+
case 'rm': return 'RM';
|
|
1310
|
+
case 'rms': return 'RMS';
|
|
1311
|
+
case 'sfa': return 'SFA';
|
|
1312
|
+
case 'simba': return '';
|
|
1313
|
+
case 'sisjuri': return 'Sisjuri';
|
|
1314
|
+
case 'smarterp': return 'Smart ERP';
|
|
1315
|
+
case 'smartrm': return 'RM';
|
|
1316
|
+
case 'smartrm_cluster': return 'Smart RM Cluster';
|
|
1317
|
+
case 'smartrm_control': return 'Smart RM Control';
|
|
1318
|
+
case 'taf': return 'TAF';
|
|
1319
|
+
case 'totvsagro': return 'TOTVS Agro';
|
|
1320
|
+
case 'totvsmoda': return 'TOTVS Moda';
|
|
1321
|
+
case 'treports': return 'TReports';
|
|
1322
|
+
case 'tss': return 'TSS';
|
|
1323
|
+
case 'winthor': return 'Winthor';
|
|
1324
|
+
default: return value;
|
|
1325
|
+
}
|
|
1326
|
+
}
|
|
1327
|
+
getProtheusSubproduct(value, origin) {
|
|
1328
|
+
if (origin === 'smarterp')
|
|
1329
|
+
return 'Smart ERP';
|
|
1330
|
+
return 'Protheus';
|
|
1331
|
+
}
|
|
1332
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyProductPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1333
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: TopologyProductPipe, isStandalone: true, name: "topologyProduct" }); }
|
|
1334
|
+
}
|
|
1335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TopologyProductPipe, decorators: [{
|
|
1336
|
+
type: Pipe,
|
|
1337
|
+
args: [{
|
|
1338
|
+
name: 'topologyProduct',
|
|
1339
|
+
standalone: true,
|
|
1340
|
+
}]
|
|
1341
|
+
}] });
|
|
1342
|
+
|
|
1343
|
+
class ProductActionPipe {
|
|
1344
|
+
transform(value, type = 'single') {
|
|
1345
|
+
if (type === 'bulk') {
|
|
1346
|
+
return this.getTranslatedAction(value);
|
|
1347
|
+
}
|
|
1348
|
+
const actions = value.split('&');
|
|
1349
|
+
if (actions?.length > 1) {
|
|
1350
|
+
const translatedActions = actions.map((action) => this.getTranslatedAction(action)).join(' - ');
|
|
1351
|
+
return translatedActions;
|
|
1352
|
+
}
|
|
1353
|
+
return value;
|
|
1354
|
+
}
|
|
1355
|
+
getTranslatedAction(action) {
|
|
1356
|
+
action = action.trim();
|
|
1357
|
+
switch (action) {
|
|
1358
|
+
case 'update-release':
|
|
1359
|
+
case 'update_release':
|
|
1360
|
+
return 'Atualizar versão da release';
|
|
1361
|
+
case 'update-patch':
|
|
1362
|
+
case 'update_patch':
|
|
1363
|
+
return 'Atualizar versão do pacote';
|
|
1364
|
+
case 'update-database-dump':
|
|
1365
|
+
case 'update-global-dump':
|
|
1366
|
+
case 'update_global_dump':
|
|
1367
|
+
return 'Dump global';
|
|
1368
|
+
case 'update-patch & update-release':
|
|
1369
|
+
return 'Atualizar pacote/release';
|
|
1370
|
+
default:
|
|
1371
|
+
return action;
|
|
1372
|
+
}
|
|
1373
|
+
}
|
|
1374
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ProductActionPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
|
1375
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.19", ngImport: i0, type: ProductActionPipe, isStandalone: true, name: "productAction" }); }
|
|
1376
|
+
}
|
|
1377
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: ProductActionPipe, decorators: [{
|
|
1378
|
+
type: Pipe,
|
|
1379
|
+
args: [{
|
|
1380
|
+
name: 'productAction',
|
|
1381
|
+
}]
|
|
1382
|
+
}] });
|
|
1383
|
+
|
|
1193
1384
|
var translation = {
|
|
1194
1385
|
ptBR: {
|
|
1195
1386
|
days: ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"],
|
|
@@ -5331,13 +5522,10 @@ class TCloudUiContainerComponent {
|
|
|
5331
5522
|
constructor() {
|
|
5332
5523
|
this._containerService = inject(ContainerService);
|
|
5333
5524
|
this._expanded = false;
|
|
5334
|
-
this.expandedChange = new EventEmitter();
|
|
5335
5525
|
}
|
|
5336
5526
|
set expanded(v) {
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
if (this._expanded !== newVal) {
|
|
5340
|
-
this._expanded = newVal;
|
|
5527
|
+
if (this._expanded !== v) {
|
|
5528
|
+
this._expanded = v;
|
|
5341
5529
|
this.to_expanded();
|
|
5342
5530
|
}
|
|
5343
5531
|
}
|
|
@@ -5345,28 +5533,29 @@ class TCloudUiContainerComponent {
|
|
|
5345
5533
|
// optional manual trigger kept for backward-compatibility
|
|
5346
5534
|
to_expanded() {
|
|
5347
5535
|
this._containerService.set_expanded_signal(this._expanded);
|
|
5348
|
-
this.expandedChange.emit(this._expanded);
|
|
5349
5536
|
}
|
|
5350
5537
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5351
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiContainerComponent, isStandalone: true, selector: "tcloud-ui-container", inputs: { expanded: "expanded" },
|
|
5538
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiContainerComponent, isStandalone: true, selector: "tcloud-ui-container", inputs: { expanded: "expanded" }, providers: [ContainerService], ngImport: i0, template: "<div class=\"tcloud-ui-container f-family\" [class.container-expanded]=\"expanded\">\n <ng-content></ng-content> \n</div>", styles: [".tcloud-ui-container{display:flex;width:100%}\n"] }); }
|
|
5352
5539
|
}
|
|
5353
5540
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiContainerComponent, decorators: [{
|
|
5354
5541
|
type: Component,
|
|
5355
5542
|
args: [{ selector: 'tcloud-ui-container', imports: [], providers: [ContainerService], template: "<div class=\"tcloud-ui-container f-family\" [class.container-expanded]=\"expanded\">\n <ng-content></ng-content> \n</div>", styles: [".tcloud-ui-container{display:flex;width:100%}\n"] }]
|
|
5356
5543
|
}], propDecorators: { expanded: [{
|
|
5357
5544
|
type: Input
|
|
5358
|
-
}], expandedChange: [{
|
|
5359
|
-
type: Output
|
|
5360
5545
|
}] } });
|
|
5361
5546
|
|
|
5362
5547
|
class TCloudUiContainerColComponent {
|
|
5363
5548
|
constructor(parentService) {
|
|
5549
|
+
this.expanded = true;
|
|
5364
5550
|
this.fixed = false;
|
|
5365
5551
|
this._containerService = parentService || inject(ContainerService);
|
|
5552
|
+
effect(() => {
|
|
5553
|
+
this.expanded = this._containerService.expanded_signal();
|
|
5554
|
+
});
|
|
5366
5555
|
}
|
|
5367
|
-
get expanded()
|
|
5368
|
-
|
|
5369
|
-
}
|
|
5556
|
+
// get expanded(){
|
|
5557
|
+
// return this._containerService.expanded_signal();
|
|
5558
|
+
// }
|
|
5370
5559
|
toggle(expanded) {
|
|
5371
5560
|
if (expanded) {
|
|
5372
5561
|
this._containerService.set_expanded_signal(expanded);
|
|
@@ -5390,17 +5579,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
|
|
|
5390
5579
|
|
|
5391
5580
|
class TCloudUiContainerContentComponent {
|
|
5392
5581
|
constructor(parentService) {
|
|
5582
|
+
this.expanded = true;
|
|
5393
5583
|
this._containerService = parentService || inject(ContainerService);
|
|
5394
|
-
|
|
5395
|
-
|
|
5396
|
-
|
|
5584
|
+
effect(() => {
|
|
5585
|
+
this.expanded = this._containerService.expanded_signal();
|
|
5586
|
+
});
|
|
5397
5587
|
}
|
|
5398
5588
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiContainerContentComponent, deps: [{ token: ContainerService, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5399
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiContainerContentComponent, isStandalone: true, selector: "tcloud-ui-container-content", providers: [ContainerService], ngImport: i0, template: "\n<div class=\"tcloud-ui-container-content\" \n [class.content-expanded]=\"expanded\"\n [class.content-not-expanded]=\"!expanded\">\n <ng-content></ng-content>\n</div>", styles: ["
|
|
5589
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiContainerContentComponent, isStandalone: true, selector: "tcloud-ui-container-content", providers: [ContainerService], ngImport: i0, template: "\n<div class=\"tcloud-ui-container-content\" \n [class.content-expanded]=\"expanded\"\n [class.content-not-expanded]=\"!expanded\">\n <ng-content></ng-content>\n</div>", styles: [":host{flex-grow:1;padding-left:24px}.content-not-expanded{padding-left:76px}\n", ".tcloud-ui-container{display:flex;width:100%}\n"] }); }
|
|
5400
5590
|
}
|
|
5401
5591
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiContainerContentComponent, decorators: [{
|
|
5402
5592
|
type: Component,
|
|
5403
|
-
args: [{ selector: 'tcloud-ui-container-content', imports: [], providers: [ContainerService], template: "\n<div class=\"tcloud-ui-container-content\" \n [class.content-expanded]=\"expanded\"\n [class.content-not-expanded]=\"!expanded\">\n <ng-content></ng-content>\n</div>", styles: ["
|
|
5593
|
+
args: [{ selector: 'tcloud-ui-container-content', imports: [], providers: [ContainerService], template: "\n<div class=\"tcloud-ui-container-content\" \n [class.content-expanded]=\"expanded\"\n [class.content-not-expanded]=\"!expanded\">\n <ng-content></ng-content>\n</div>", styles: [":host{flex-grow:1;padding-left:24px}.content-not-expanded{padding-left:76px}\n", ".tcloud-ui-container{display:flex;width:100%}\n"] }]
|
|
5404
5594
|
}], ctorParameters: () => [{ type: ContainerService, decorators: [{
|
|
5405
5595
|
type: Optional
|
|
5406
5596
|
}, {
|
|
@@ -5469,6 +5659,490 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
|
|
|
5469
5659
|
], template: "<nav aria-label=\"breadcrumb\" class=\"tcloud-ui-breadcrumb\">\n <ol class=\"tcloud-ui-breadcrumb-list\">\n <!-- Link para o Dashboard -->\n <li class=\"tcloud-ui-breadcrumb-item\">\n <a [routerLink]=\"['/dashboard']\"><i class=\"fa-light fa-house-blank\"></i>\n @if (breadcrumbs.length > 0)\n {\n <i class=\"fa-light fa-chevron-right\"></i>\n }\n @else\n {\n P\u00E1gina inicial\n }\n </a>\n </li>\n\n <!-- Itera\u00E7\u00E3o sobre os itens do breadcrumb -->\n <li\n *ngFor=\"let breadcrumb of breadcrumbs; let i = index; let last = last\"\n class=\"tcloud-ui-breadcrumb-item\"\n [ngClass]=\"{ 'active': last }\"\n [attr.aria-current]=\"last ? 'page' : null\">\n <ng-container *ngIf=\"!last\">\n <a (click)=\"navigate(breadcrumb.url, i)\">{{ breadcrumb.label }}</a>\n <i class=\"fa-light fa-chevron-right\"></i>\n </ng-container>\n <ng-container *ngIf=\"last\">\n {{ breadcrumb.label }}\n </ng-container>\n </li>\n </ol>\n</nav>\n", styles: [":host{display:block}.tcloud-ui-breadcrumb-list{display:flex;list-style:none;padding:0;margin:0;margin-bottom:var(--size-24)}.tcloud-ui-breadcrumb-item{display:flex;align-items:center;color:var(--c-neutral-700);font-size:var(--f-size-14);font-family:var(--f-family)}.tcloud-ui-breadcrumb-item a{text-decoration:none;color:inherit;cursor:pointer}.tcloud-ui-breadcrumb-item a:hover{text-decoration:underline}.tcloud-ui-breadcrumb-item i{margin:0}.tcloud-ui-breadcrumb-item i.fa-chevron-right{margin:0 var(--size-12)}.tcloud-ui-breadcrumb-item.active{pointer-events:none}\n"] }]
|
|
5470
5660
|
}], ctorParameters: () => [] });
|
|
5471
5661
|
|
|
5662
|
+
class TCloudUiAlertBannerComponent {
|
|
5663
|
+
constructor() {
|
|
5664
|
+
this.alertType = 'warning';
|
|
5665
|
+
this.message = '';
|
|
5666
|
+
this.linkText = '';
|
|
5667
|
+
this.linkUrl = '';
|
|
5668
|
+
this.linkClicked = new EventEmitter();
|
|
5669
|
+
}
|
|
5670
|
+
handleLinkClick() {
|
|
5671
|
+
this.linkClicked.emit();
|
|
5672
|
+
}
|
|
5673
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiAlertBannerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5674
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiAlertBannerComponent, isStandalone: true, selector: "tcloud-ui-alert-banner", inputs: { alertType: "alertType", message: "message", linkText: "linkText", linkUrl: "linkUrl" }, outputs: { linkClicked: "linkClicked" }, ngImport: i0, template: "<div class=\"tcloud-ui-alert-banner\" [ngClass]=\"alertType\">\n <div class=\"alert-icon\">\n <div class=\"fa-light fa-circle-exclamation\"></div>\n </div>\n <div class=\"alert-content\">\n <p>\n {{ message }} \n <a *ngIf=\"linkText\" (click)=\"handleLinkClick()\" class=\"alert-link\">{{ linkText }}</a>\n </p>\n </div>\n</div>\n", styles: [".tcloud-ui-alert-banner{display:flex;align-items:center;padding:16px;border-radius:8px;width:100%}.tcloud-ui-alert-banner.warning{background-color:var(--c-alert-300);border-left:50px solid var(--c-alert-500)}.tcloud-ui-alert-banner.danger{background-color:var(--c-danger-300);border-left:50px solid var(--c-danger-500)}.tcloud-ui-alert-banner.info{background-color:var(--c-info-300);border-left:50px solid var(--c-info-500)}.tcloud-ui-alert-banner.success{background-color:var(--c-success-300);border-left:50px solid var(--c-success-500)}.tcloud-ui-alert-banner .alert-icon{display:flex;align-items:center;justify-content:center;margin-right:16px}.tcloud-ui-alert-banner .alert-icon .fa-circle-exclamation{width:24px;height:24px;border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;font-size:18px;margin-left:-80px}.warning .fa-circle-exclamation{background-color:transparent;color:var(--c-alert-50)}.danger .fa-circle-exclamation{background-color:transparent;color:var(--c-neutral-50)}.info .fa-circle-exclamation{background-color:transparent;color:var(--c-info-50)}.success .fa-circle-exclamation{background-color:transparent;color:var(--c-success-50)}.alert-content{flex:1}.alert-content p{margin:0;font-size:16px;font-weight:400;line-height:1.5;color:#131313;font-family:var(--font-family)}.alert-content .alert-link{color:inherit;text-decoration:underline;font-weight:600;font-size:16px;color:#131313}.alert-content .alert-link:hover{text-decoration:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
5675
|
+
}
|
|
5676
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiAlertBannerComponent, decorators: [{
|
|
5677
|
+
type: Component,
|
|
5678
|
+
args: [{ selector: 'tcloud-ui-alert-banner', standalone: true, imports: [CommonModule], template: "<div class=\"tcloud-ui-alert-banner\" [ngClass]=\"alertType\">\n <div class=\"alert-icon\">\n <div class=\"fa-light fa-circle-exclamation\"></div>\n </div>\n <div class=\"alert-content\">\n <p>\n {{ message }} \n <a *ngIf=\"linkText\" (click)=\"handleLinkClick()\" class=\"alert-link\">{{ linkText }}</a>\n </p>\n </div>\n</div>\n", styles: [".tcloud-ui-alert-banner{display:flex;align-items:center;padding:16px;border-radius:8px;width:100%}.tcloud-ui-alert-banner.warning{background-color:var(--c-alert-300);border-left:50px solid var(--c-alert-500)}.tcloud-ui-alert-banner.danger{background-color:var(--c-danger-300);border-left:50px solid var(--c-danger-500)}.tcloud-ui-alert-banner.info{background-color:var(--c-info-300);border-left:50px solid var(--c-info-500)}.tcloud-ui-alert-banner.success{background-color:var(--c-success-300);border-left:50px solid var(--c-success-500)}.tcloud-ui-alert-banner .alert-icon{display:flex;align-items:center;justify-content:center;margin-right:16px}.tcloud-ui-alert-banner .alert-icon .fa-circle-exclamation{width:24px;height:24px;border-radius:50%;position:relative;display:flex;align-items:center;justify-content:center;font-size:18px;margin-left:-80px}.warning .fa-circle-exclamation{background-color:transparent;color:var(--c-alert-50)}.danger .fa-circle-exclamation{background-color:transparent;color:var(--c-neutral-50)}.info .fa-circle-exclamation{background-color:transparent;color:var(--c-info-50)}.success .fa-circle-exclamation{background-color:transparent;color:var(--c-success-50)}.alert-content{flex:1}.alert-content p{margin:0;font-size:16px;font-weight:400;line-height:1.5;color:#131313;font-family:var(--font-family)}.alert-content .alert-link{color:inherit;text-decoration:underline;font-weight:600;font-size:16px;color:#131313}.alert-content .alert-link:hover{text-decoration:none}\n"] }]
|
|
5679
|
+
}], ctorParameters: () => [], propDecorators: { alertType: [{
|
|
5680
|
+
type: Input
|
|
5681
|
+
}], message: [{
|
|
5682
|
+
type: Input
|
|
5683
|
+
}], linkText: [{
|
|
5684
|
+
type: Input
|
|
5685
|
+
}], linkUrl: [{
|
|
5686
|
+
type: Input
|
|
5687
|
+
}], linkClicked: [{
|
|
5688
|
+
type: Output
|
|
5689
|
+
}] } });
|
|
5690
|
+
|
|
5691
|
+
class TCloudUiFilterBarComponent {
|
|
5692
|
+
constructor() {
|
|
5693
|
+
this.filterApply = new EventEmitter();
|
|
5694
|
+
this.lock = 'todos';
|
|
5695
|
+
}
|
|
5696
|
+
apply() {
|
|
5697
|
+
this.filterApply.emit({ lock: this.lock });
|
|
5698
|
+
}
|
|
5699
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiFilterBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5700
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiFilterBarComponent, isStandalone: true, selector: "tcloud-ui-filter-bar", outputs: { filterApply: "filterApply" }, ngImport: i0, template: "<div class=\"tcloud-ui-filter-bar\">\n <button class=\"tc-rev-btn--sm tc-rev-btn--dark-outline\" (click)=\"apply()\">Filtrar</button>\n</div>\n", styles: [".tcloud-ui-filter-bar{display:flex;align-items:center;gap:8px}.selector{height:36px;border:1px solid var(--c-neutral-300);border-radius:18px;padding:0 12px}.apply-btn{height:36px;border-radius:18px;padding:0 16px;background:var(--c-primary-500);color:#fff;border:none}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }] }); }
|
|
5701
|
+
}
|
|
5702
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiFilterBarComponent, decorators: [{
|
|
5703
|
+
type: Component,
|
|
5704
|
+
args: [{ selector: 'tcloud-ui-filter-bar', standalone: true, imports: [
|
|
5705
|
+
CommonModule,
|
|
5706
|
+
FormsModule
|
|
5707
|
+
], template: "<div class=\"tcloud-ui-filter-bar\">\n <button class=\"tc-rev-btn--sm tc-rev-btn--dark-outline\" (click)=\"apply()\">Filtrar</button>\n</div>\n", styles: [".tcloud-ui-filter-bar{display:flex;align-items:center;gap:8px}.selector{height:36px;border:1px solid var(--c-neutral-300);border-radius:18px;padding:0 12px}.apply-btn{height:36px;border-radius:18px;padding:0 16px;background:var(--c-primary-500);color:#fff;border:none}\n"] }]
|
|
5708
|
+
}], propDecorators: { filterApply: [{
|
|
5709
|
+
type: Output
|
|
5710
|
+
}] } });
|
|
5711
|
+
|
|
5712
|
+
class TCloudUiLegendComponent {
|
|
5713
|
+
constructor() {
|
|
5714
|
+
this.sucessLabel = input.required();
|
|
5715
|
+
this.errorLabel = input.required();
|
|
5716
|
+
}
|
|
5717
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiLegendComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5718
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.19", type: TCloudUiLegendComponent, isStandalone: true, selector: "tcloud-ui-legend", inputs: { sucessLabel: { classPropertyName: "sucessLabel", publicName: "sucessLabel", isSignal: true, isRequired: true, transformFunction: null }, errorLabel: { classPropertyName: "errorLabel", publicName: "errorLabel", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: "<div class=\"tcloud-ui-legend\" role=\"group\" aria-label=\"Legenda de status de lock\">\n <span class=\"legend-title\">Legenda:</span>\n <span class=\"legend-item\">\n <span class=\"status-dot status-ok\" aria-hidden=\"true\"></span>\n <span class=\"legend-text\">{{ sucessLabel() }}</span>\n </span>\n <span class=\"legend-item\">\n <span class=\"status-dot status-danger\" aria-hidden=\"true\"></span>\n <span class=\"legend-text\">{{ errorLabel() }}</span>\n </span>\n</div>\n", styles: [":host{display:block;width:100%}.tcloud-ui-legend{display:flex;gap:.75rem;align-items:center;color:var(--c-neutral-700);justify-content:flex-end}.legend-title{font-weight:500}.legend-item{display:inline-flex;align-items:center;gap:.375rem}.status-dot{width:.5rem;height:.5rem;border-radius:50%;display:inline-block}.status-ok{background-color:var(--c-success-500)}.status-danger{background-color:var(--c-danger-500)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
5719
|
+
}
|
|
5720
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiLegendComponent, decorators: [{
|
|
5721
|
+
type: Component,
|
|
5722
|
+
args: [{ selector: 'tcloud-ui-legend', imports: [CommonModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, template: "<div class=\"tcloud-ui-legend\" role=\"group\" aria-label=\"Legenda de status de lock\">\n <span class=\"legend-title\">Legenda:</span>\n <span class=\"legend-item\">\n <span class=\"status-dot status-ok\" aria-hidden=\"true\"></span>\n <span class=\"legend-text\">{{ sucessLabel() }}</span>\n </span>\n <span class=\"legend-item\">\n <span class=\"status-dot status-danger\" aria-hidden=\"true\"></span>\n <span class=\"legend-text\">{{ errorLabel() }}</span>\n </span>\n</div>\n", styles: [":host{display:block;width:100%}.tcloud-ui-legend{display:flex;gap:.75rem;align-items:center;color:var(--c-neutral-700);justify-content:flex-end}.legend-title{font-weight:500}.legend-item{display:inline-flex;align-items:center;gap:.375rem}.status-dot{width:.5rem;height:.5rem;border-radius:50%;display:inline-block}.status-ok{background-color:var(--c-success-500)}.status-danger{background-color:var(--c-danger-500)}\n"] }]
|
|
5723
|
+
}] });
|
|
5724
|
+
|
|
5725
|
+
class TCloudUiSearchBarComponent {
|
|
5726
|
+
constructor() {
|
|
5727
|
+
this.searchChange = new EventEmitter();
|
|
5728
|
+
}
|
|
5729
|
+
onInput(event) {
|
|
5730
|
+
const value = event.target.value;
|
|
5731
|
+
this.searchChange.emit(value);
|
|
5732
|
+
}
|
|
5733
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSearchBarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
5734
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiSearchBarComponent, isStandalone: true, selector: "tcloud-ui-search-bar", outputs: { searchChange: "searchChange" }, ngImport: i0, template: "<div class=\"tcloud-ui-search-bar\">\n <input class=\"tcloud-ui-search-input\" type=\"text\" placeholder=\"Busque por usu\u00E1rio, inst\u00E2ncia, rotina...\" (input)=\"onInput($event)\" />\n</div>\n", styles: [".tcloud-ui-search-bar{display:flex;align-items:center;gap:8px}.tcloud-ui-search-input{flex:1;height:36px;border:1px solid var(--c-neutral-300);border-radius:18px;padding:0 12px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
5735
|
+
}
|
|
5736
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSearchBarComponent, decorators: [{
|
|
5737
|
+
type: Component,
|
|
5738
|
+
args: [{ selector: 'tcloud-ui-search-bar', standalone: true, imports: [CommonModule], template: "<div class=\"tcloud-ui-search-bar\">\n <input class=\"tcloud-ui-search-input\" type=\"text\" placeholder=\"Busque por usu\u00E1rio, inst\u00E2ncia, rotina...\" (input)=\"onInput($event)\" />\n</div>\n", styles: [".tcloud-ui-search-bar{display:flex;align-items:center;gap:8px}.tcloud-ui-search-input{flex:1;height:36px;border:1px solid var(--c-neutral-300);border-radius:18px;padding:0 12px}\n"] }]
|
|
5739
|
+
}], propDecorators: { searchChange: [{
|
|
5740
|
+
type: Output
|
|
5741
|
+
}] } });
|
|
5742
|
+
|
|
5743
|
+
var AcceptedFileType;
|
|
5744
|
+
(function (AcceptedFileType) {
|
|
5745
|
+
// Imagens
|
|
5746
|
+
AcceptedFileType["JPEG"] = "image/jpeg";
|
|
5747
|
+
AcceptedFileType["JPG"] = "image/jpg";
|
|
5748
|
+
AcceptedFileType["PNG"] = "image/png";
|
|
5749
|
+
AcceptedFileType["GIF"] = "image/gif";
|
|
5750
|
+
AcceptedFileType["WEBP"] = "image/webp";
|
|
5751
|
+
AcceptedFileType["SVG"] = "image/svg+xml";
|
|
5752
|
+
AcceptedFileType["BMP"] = "image/bmp";
|
|
5753
|
+
AcceptedFileType["ICO"] = "image/x-icon";
|
|
5754
|
+
// Vídeos
|
|
5755
|
+
AcceptedFileType["MP4"] = "video/mp4";
|
|
5756
|
+
AcceptedFileType["WEBM"] = "video/webm";
|
|
5757
|
+
AcceptedFileType["OGG"] = "video/ogg";
|
|
5758
|
+
AcceptedFileType["AVI"] = "video/x-msvideo";
|
|
5759
|
+
AcceptedFileType["MOV"] = "video/quicktime";
|
|
5760
|
+
AcceptedFileType["WMV"] = "video/x-ms-wmv";
|
|
5761
|
+
AcceptedFileType["FLV"] = "video/x-flv";
|
|
5762
|
+
AcceptedFileType["MKV"] = "video/x-matroska";
|
|
5763
|
+
})(AcceptedFileType || (AcceptedFileType = {}));
|
|
5764
|
+
class TCloudUiUploadAreaComponent {
|
|
5765
|
+
constructor() {
|
|
5766
|
+
this.isHovering = false;
|
|
5767
|
+
this.draggedIndex = null;
|
|
5768
|
+
// Array de objetos com informações das imagens
|
|
5769
|
+
this.images = [];
|
|
5770
|
+
// Controle de imagens com erro de carregamento
|
|
5771
|
+
this.imageErrors = new Set();
|
|
5772
|
+
this.imageChecked = new Set();
|
|
5773
|
+
// Evento centralizado que emite sempre que houver mudança
|
|
5774
|
+
this.onChange = new EventEmitter();
|
|
5775
|
+
// Eventos específicos (mantidos para compatibilidade)
|
|
5776
|
+
this.filesSelected = new EventEmitter();
|
|
5777
|
+
this.imagesReordered = new EventEmitter();
|
|
5778
|
+
this.imagesRemoved = new EventEmitter();
|
|
5779
|
+
// Evento para notificar erros/avisos
|
|
5780
|
+
this.onError = new EventEmitter();
|
|
5781
|
+
this.messageOnError = '';
|
|
5782
|
+
// Evento para notificar progresso de upload
|
|
5783
|
+
this.onProgress = new EventEmitter();
|
|
5784
|
+
// Exibe barra de progresso durante carregamento
|
|
5785
|
+
this.showProgress = false;
|
|
5786
|
+
// Progresso atual (0-100)
|
|
5787
|
+
this.currentProgress = 0;
|
|
5788
|
+
this.isLoading = false;
|
|
5789
|
+
this.previews = [];
|
|
5790
|
+
}
|
|
5791
|
+
// Imagens pré-carregadas (para modo de edição/visualização)
|
|
5792
|
+
set preloadedImages(images) {
|
|
5793
|
+
if (!images || images.length === 0)
|
|
5794
|
+
return;
|
|
5795
|
+
this.loadPreloadedImages(images);
|
|
5796
|
+
}
|
|
5797
|
+
onDragOver(event) {
|
|
5798
|
+
event.preventDefault();
|
|
5799
|
+
this.isHovering = true;
|
|
5800
|
+
}
|
|
5801
|
+
onDragLeave(event) {
|
|
5802
|
+
event.preventDefault();
|
|
5803
|
+
this.isHovering = false;
|
|
5804
|
+
}
|
|
5805
|
+
onDrop(event) {
|
|
5806
|
+
event.preventDefault();
|
|
5807
|
+
this.isHovering = false;
|
|
5808
|
+
if (!event.dataTransfer)
|
|
5809
|
+
return;
|
|
5810
|
+
const allFiles = Array.from(event.dataTransfer.files);
|
|
5811
|
+
const validFiles = allFiles.filter(f => this.isFileTypeAccepted(f));
|
|
5812
|
+
const rejectedFiles = allFiles.length - validFiles.length;
|
|
5813
|
+
if (rejectedFiles > 0) {
|
|
5814
|
+
this.setOnError(`${rejectedFiles} arquivo(s) rejeitado(s): tipo não permitido`);
|
|
5815
|
+
}
|
|
5816
|
+
if (validFiles.length > 0) {
|
|
5817
|
+
this.toFilesSelected(validFiles);
|
|
5818
|
+
}
|
|
5819
|
+
}
|
|
5820
|
+
onFilesSelected(event) {
|
|
5821
|
+
this.messageOnError = '';
|
|
5822
|
+
const input = event.target;
|
|
5823
|
+
if (!input.files)
|
|
5824
|
+
return;
|
|
5825
|
+
const allFiles = Array.from(input.files);
|
|
5826
|
+
const validFiles = allFiles.filter(f => this.isFileTypeAccepted(f));
|
|
5827
|
+
const rejectedFiles = allFiles.length - validFiles.length;
|
|
5828
|
+
if (rejectedFiles > 0) {
|
|
5829
|
+
this.setOnError(`${rejectedFiles} arquivo(s) rejeitado(s): tipo não permitido`);
|
|
5830
|
+
}
|
|
5831
|
+
if (validFiles.length > 0) {
|
|
5832
|
+
this.toFilesSelected(validFiles);
|
|
5833
|
+
}
|
|
5834
|
+
// Limpa o input para permitir selecionar o mesmo arquivo novamente
|
|
5835
|
+
input.value = '';
|
|
5836
|
+
}
|
|
5837
|
+
toFilesSelected(files) {
|
|
5838
|
+
this.filesSelected.emit(files);
|
|
5839
|
+
this.onImagesSelected(files);
|
|
5840
|
+
}
|
|
5841
|
+
generateNameFile(fileName) {
|
|
5842
|
+
// Extrai a extensão do arquivo
|
|
5843
|
+
const lastDotIndex = fileName.lastIndexOf('.');
|
|
5844
|
+
const extension = lastDotIndex !== -1 ? fileName.substring(lastDotIndex) : '';
|
|
5845
|
+
// Gera um nome aleatório (16 caracteres)
|
|
5846
|
+
const randomName = Math.random().toString(36).substring(2, 15) +
|
|
5847
|
+
Math.random().toString(36).substring(2, 15);
|
|
5848
|
+
// Retorna o nome aleatório + extensão, tudo em minúsculo
|
|
5849
|
+
return (randomName + extension).toLowerCase();
|
|
5850
|
+
}
|
|
5851
|
+
onImagesSelected(files) {
|
|
5852
|
+
// Não limpa o array, apenas adiciona novas imagens ao final
|
|
5853
|
+
// Verifica se há limite máximo e quantos arquivos ainda podem ser adicionados
|
|
5854
|
+
let filesToAdd = files;
|
|
5855
|
+
if (this.maxFiles !== undefined) {
|
|
5856
|
+
const remainingSlots = this.maxFiles - this.images.length;
|
|
5857
|
+
if (remainingSlots <= 0) {
|
|
5858
|
+
this.setOnError(`Limite máximo de ${this.maxFiles} arquivo(s) atingido`);
|
|
5859
|
+
return;
|
|
5860
|
+
}
|
|
5861
|
+
filesToAdd = files.slice(0, remainingSlots);
|
|
5862
|
+
if (files.length > remainingSlots) {
|
|
5863
|
+
this.setOnError(`Apenas ${remainingSlots} de ${files.length} arquivo(s) foram adicionados. Limite máximo: ${this.maxFiles}`);
|
|
5864
|
+
}
|
|
5865
|
+
}
|
|
5866
|
+
// Inicia progresso se habilitado
|
|
5867
|
+
if (this.showProgress) {
|
|
5868
|
+
this.isLoading = true;
|
|
5869
|
+
this.currentProgress = 0;
|
|
5870
|
+
}
|
|
5871
|
+
const totalFiles = filesToAdd.length;
|
|
5872
|
+
let processedFiles = 0;
|
|
5873
|
+
filesToAdd.forEach((file, index) => {
|
|
5874
|
+
const reader = new FileReader();
|
|
5875
|
+
reader.onprogress = (event) => {
|
|
5876
|
+
if (this.showProgress && event.lengthComputable) {
|
|
5877
|
+
const fileProgress = (event.loaded / event.total) * 100;
|
|
5878
|
+
const overallProgress = ((processedFiles + (fileProgress / 100)) / totalFiles) * 100;
|
|
5879
|
+
this.currentProgress = Math.round(overallProgress);
|
|
5880
|
+
this.onProgress.emit(this.currentProgress);
|
|
5881
|
+
}
|
|
5882
|
+
};
|
|
5883
|
+
reader.onload = () => {
|
|
5884
|
+
const preview = reader.result;
|
|
5885
|
+
// Valida dimensões se configurado
|
|
5886
|
+
if (this.imageDimensions) {
|
|
5887
|
+
this.validateImageDimensions(preview, file.name).then(isValid => {
|
|
5888
|
+
if (isValid) {
|
|
5889
|
+
this.addImageToList(file, preview);
|
|
5890
|
+
}
|
|
5891
|
+
processedFiles++;
|
|
5892
|
+
this.updateProgress(processedFiles, totalFiles);
|
|
5893
|
+
});
|
|
5894
|
+
}
|
|
5895
|
+
else {
|
|
5896
|
+
this.addImageToList(file, preview);
|
|
5897
|
+
processedFiles++;
|
|
5898
|
+
this.updateProgress(processedFiles, totalFiles);
|
|
5899
|
+
}
|
|
5900
|
+
};
|
|
5901
|
+
reader.onerror = () => {
|
|
5902
|
+
processedFiles++;
|
|
5903
|
+
this.updateProgress(processedFiles, totalFiles);
|
|
5904
|
+
};
|
|
5905
|
+
reader.readAsDataURL(file);
|
|
5906
|
+
});
|
|
5907
|
+
}
|
|
5908
|
+
// Atualiza e finaliza progresso
|
|
5909
|
+
updateProgress(processed, total) {
|
|
5910
|
+
if (this.showProgress) {
|
|
5911
|
+
this.currentProgress = Math.round((processed / total) * 100);
|
|
5912
|
+
this.onProgress.emit(this.currentProgress);
|
|
5913
|
+
if (processed === total) {
|
|
5914
|
+
setTimeout(() => {
|
|
5915
|
+
this.isLoading = false;
|
|
5916
|
+
this.currentProgress = 0;
|
|
5917
|
+
}, 500);
|
|
5918
|
+
}
|
|
5919
|
+
}
|
|
5920
|
+
}
|
|
5921
|
+
// Adiciona imagem à lista
|
|
5922
|
+
addImageToList(file, preview) {
|
|
5923
|
+
this.previews.push(preview);
|
|
5924
|
+
// Adiciona ao array de objetos com order baseado no tamanho atual
|
|
5925
|
+
this.images.push({
|
|
5926
|
+
name: file.name,
|
|
5927
|
+
new_name: this.generateNameFile(file.name),
|
|
5928
|
+
order: this.images.length + 1,
|
|
5929
|
+
preview: preview,
|
|
5930
|
+
file: file
|
|
5931
|
+
});
|
|
5932
|
+
// Emite o evento centralizado
|
|
5933
|
+
this.emitChanges();
|
|
5934
|
+
}
|
|
5935
|
+
// Métodos para reordenação de imagens
|
|
5936
|
+
onDragStart(event, index) {
|
|
5937
|
+
this.draggedIndex = index;
|
|
5938
|
+
if (event.dataTransfer) {
|
|
5939
|
+
event.dataTransfer.effectAllowed = 'move';
|
|
5940
|
+
event.dataTransfer.setData('text/html', index.toString());
|
|
5941
|
+
}
|
|
5942
|
+
}
|
|
5943
|
+
onDragOverImage(event) {
|
|
5944
|
+
event.preventDefault();
|
|
5945
|
+
if (event.dataTransfer) {
|
|
5946
|
+
event.dataTransfer.dropEffect = 'move';
|
|
5947
|
+
}
|
|
5948
|
+
}
|
|
5949
|
+
onDropImage(event, dropIndex) {
|
|
5950
|
+
event.preventDefault();
|
|
5951
|
+
event.stopPropagation();
|
|
5952
|
+
if (this.draggedIndex === null || this.draggedIndex === dropIndex) {
|
|
5953
|
+
return;
|
|
5954
|
+
}
|
|
5955
|
+
// Reordena o array de previews
|
|
5956
|
+
const draggedItem = this.previews[this.draggedIndex];
|
|
5957
|
+
const newPreviews = [...this.previews];
|
|
5958
|
+
// Remove da posição original
|
|
5959
|
+
newPreviews.splice(this.draggedIndex, 1);
|
|
5960
|
+
// Insere na nova posição
|
|
5961
|
+
newPreviews.splice(dropIndex, 0, draggedItem);
|
|
5962
|
+
this.previews = newPreviews;
|
|
5963
|
+
// Reordena o array de objetos images
|
|
5964
|
+
const draggedImage = this.images[this.draggedIndex];
|
|
5965
|
+
const newImages = [...this.images];
|
|
5966
|
+
newImages.splice(this.draggedIndex, 1);
|
|
5967
|
+
newImages.splice(dropIndex, 0, draggedImage);
|
|
5968
|
+
// Atualiza os números de order
|
|
5969
|
+
this.images = newImages.map((img, index) => ({
|
|
5970
|
+
...img,
|
|
5971
|
+
order: index + 1
|
|
5972
|
+
}));
|
|
5973
|
+
this.draggedIndex = null;
|
|
5974
|
+
// Emite o evento específico (compatibilidade)
|
|
5975
|
+
this.imagesReordered.emit(this.previews);
|
|
5976
|
+
// Emite o evento centralizado
|
|
5977
|
+
this.emitChanges();
|
|
5978
|
+
}
|
|
5979
|
+
onDragEnd() {
|
|
5980
|
+
this.draggedIndex = null;
|
|
5981
|
+
}
|
|
5982
|
+
removeImage(event, index) {
|
|
5983
|
+
this.messageOnError = '';
|
|
5984
|
+
event.stopPropagation();
|
|
5985
|
+
// Remove do array de previews
|
|
5986
|
+
this.previews.splice(index, 1);
|
|
5987
|
+
// Remove do array de objetos
|
|
5988
|
+
this.images.splice(index, 1);
|
|
5989
|
+
// Atualiza os números de order
|
|
5990
|
+
this.images = this.images.map((img, idx) => ({
|
|
5991
|
+
...img,
|
|
5992
|
+
order: idx + 1
|
|
5993
|
+
}));
|
|
5994
|
+
// Emite o evento específico (compatibilidade)
|
|
5995
|
+
this.imagesRemoved.emit(this.previews);
|
|
5996
|
+
// Emite o evento centralizado
|
|
5997
|
+
this.emitChanges();
|
|
5998
|
+
}
|
|
5999
|
+
// Método centralizado para emitir mudanças
|
|
6000
|
+
emitChanges() {
|
|
6001
|
+
this.onChange.emit([...this.images]);
|
|
6002
|
+
}
|
|
6003
|
+
// Método para validar se o tipo de arquivo é aceito
|
|
6004
|
+
isFileTypeAccepted(file) {
|
|
6005
|
+
// Se não houver restrição de tipos, aceita todos
|
|
6006
|
+
if (!this.acceptedFileTypes || this.acceptedFileTypes.length === 0) {
|
|
6007
|
+
return true;
|
|
6008
|
+
}
|
|
6009
|
+
// Verifica se o tipo do arquivo está na lista de aceitos
|
|
6010
|
+
return this.acceptedFileTypes.includes(file.type);
|
|
6011
|
+
}
|
|
6012
|
+
// Método para carregar imagens pré-existentes
|
|
6013
|
+
async loadPreloadedImages(images) {
|
|
6014
|
+
// Limpa arrays existentes
|
|
6015
|
+
this.images = [];
|
|
6016
|
+
this.previews = [];
|
|
6017
|
+
for (let i = 0; i < images.length; i++) {
|
|
6018
|
+
const img = images[i];
|
|
6019
|
+
const url = typeof img === 'string' ? img : img?.url;
|
|
6020
|
+
const name = typeof img === 'string' ? this.extractFilenameFromUrl(url) : (img?.key || this.extractFilenameFromUrl(url));
|
|
6021
|
+
const order = typeof img === 'string' ? i + 1 : (img?.order || i + 1);
|
|
6022
|
+
try {
|
|
6023
|
+
// Busca a imagem e converte para File
|
|
6024
|
+
const file = await this.urlToFile(url, name);
|
|
6025
|
+
// Adiciona ao preview
|
|
6026
|
+
this.previews.push(url);
|
|
6027
|
+
// Adiciona ao array de images
|
|
6028
|
+
this.images.push({
|
|
6029
|
+
name: name,
|
|
6030
|
+
new_name: this.generateNameFile(name),
|
|
6031
|
+
order: order,
|
|
6032
|
+
preview: url,
|
|
6033
|
+
file: file
|
|
6034
|
+
});
|
|
6035
|
+
}
|
|
6036
|
+
catch (error) {
|
|
6037
|
+
//console.warn(`Erro ao carregar imagem pré-carregada: ${url}`, error);
|
|
6038
|
+
}
|
|
6039
|
+
}
|
|
6040
|
+
// Emite as mudanças
|
|
6041
|
+
if (this.images.length > 0) {
|
|
6042
|
+
this.emitChanges();
|
|
6043
|
+
}
|
|
6044
|
+
}
|
|
6045
|
+
// Converte URL para File
|
|
6046
|
+
async urlToFile(url, filename) {
|
|
6047
|
+
const response = await fetch(url);
|
|
6048
|
+
const blob = await response.blob();
|
|
6049
|
+
return new File([blob], filename, { type: blob.type });
|
|
6050
|
+
}
|
|
6051
|
+
// Extrai nome do arquivo da URL
|
|
6052
|
+
extractFilenameFromUrl(url) {
|
|
6053
|
+
const urlParts = url.split('/');
|
|
6054
|
+
const filenameWithParams = urlParts[urlParts.length - 1];
|
|
6055
|
+
const filename = filenameWithParams.split('?')[0];
|
|
6056
|
+
return filename || 'image.jpg';
|
|
6057
|
+
}
|
|
6058
|
+
setOnError(err) {
|
|
6059
|
+
this.onError.emit(err);
|
|
6060
|
+
this.messageOnError = err;
|
|
6061
|
+
}
|
|
6062
|
+
// Trata erro de carregamento de imagem
|
|
6063
|
+
onImageError(index, event) {
|
|
6064
|
+
// Marca que a imagem foi verificada e tem erro
|
|
6065
|
+
if (!this.imageChecked.has(index)) {
|
|
6066
|
+
this.imageChecked.add(index);
|
|
6067
|
+
this.imageErrors.add(index);
|
|
6068
|
+
this.setOnError(`Erro ao carregar imagem: acesso negado ou URL inválida`);
|
|
6069
|
+
}
|
|
6070
|
+
// Previne propagação do erro
|
|
6071
|
+
event.stopPropagation();
|
|
6072
|
+
}
|
|
6073
|
+
// Marca imagem como carregada com sucesso
|
|
6074
|
+
onImageLoad(index) {
|
|
6075
|
+
this.imageChecked.add(index);
|
|
6076
|
+
this.imageErrors.delete(index);
|
|
6077
|
+
}
|
|
6078
|
+
// Verifica se imagem tem erro
|
|
6079
|
+
hasImageError(index) {
|
|
6080
|
+
return this.imageErrors.has(index);
|
|
6081
|
+
}
|
|
6082
|
+
// Valida dimensões da imagem
|
|
6083
|
+
validateImageDimensions(imageSrc, fileName) {
|
|
6084
|
+
return new Promise((resolve) => {
|
|
6085
|
+
const img = new Image();
|
|
6086
|
+
img.onload = () => {
|
|
6087
|
+
const width = img.width;
|
|
6088
|
+
const height = img.height;
|
|
6089
|
+
const dims = this.imageDimensions;
|
|
6090
|
+
let isValid = false;
|
|
6091
|
+
if (dims.strict) {
|
|
6092
|
+
// Validação exata
|
|
6093
|
+
isValid = width === dims.width && height === dims.height;
|
|
6094
|
+
if (!isValid) {
|
|
6095
|
+
this.setOnError(`Imagem "${fileName}" rejeitada: dimensões devem ser exatamente ${dims.width}x${dims.height}px (recebido: ${width}x${height}px)`);
|
|
6096
|
+
}
|
|
6097
|
+
}
|
|
6098
|
+
else {
|
|
6099
|
+
// Validação de máximo
|
|
6100
|
+
isValid = width <= dims.width && height <= dims.height;
|
|
6101
|
+
if (!isValid) {
|
|
6102
|
+
this.setOnError(`Imagem "${fileName}" rejeitada: dimensões máximas ${dims.width}x${dims.height}px (recebido: ${width}x${height}px)`);
|
|
6103
|
+
}
|
|
6104
|
+
}
|
|
6105
|
+
resolve(isValid);
|
|
6106
|
+
};
|
|
6107
|
+
img.onerror = () => {
|
|
6108
|
+
this.setOnError(`Erro ao validar dimensões da imagem "${fileName}"`);
|
|
6109
|
+
resolve(false);
|
|
6110
|
+
};
|
|
6111
|
+
img.src = imageSrc;
|
|
6112
|
+
});
|
|
6113
|
+
}
|
|
6114
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiUploadAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
6115
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiUploadAreaComponent, isStandalone: true, selector: "tcloud-ui-upload-area", inputs: { maxFiles: "maxFiles", acceptedFileTypes: "acceptedFileTypes", imageDimensions: "imageDimensions", showProgress: "showProgress", preloadedImages: "preloadedImages" }, outputs: { onChange: "onChange", filesSelected: "filesSelected", imagesReordered: "imagesReordered", imagesRemoved: "imagesRemoved", onError: "onError", onProgress: "onProgress" }, ngImport: i0, template: "<div\n class=\"dropzone\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [class.hover]=\"isHovering\"\n (click)=\"fileInput.click()\"\n>\n <p>Arraste e solte imagens aqui<br>ou clique para selecionar</p>\n</div>\n\n<div *ngIf=\"showProgress && isLoading\" class=\"progress-container\">\n <div class=\"progress-bar\">\n <div class=\"progress-fill\" [style.width.%]=\"currentProgress\"></div>\n </div>\n <div class=\"progress-text\">{{ currentProgress }}%</div>\n</div>\n\n<div *ngIf=\"messageOnError !== ''\">{{ messageOnError }}</div>\n\n<input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n multiple\n hidden\n (change)=\"onFilesSelected($event)\"\n>\n\n<div class=\"mt-3 mb-2\">\n <div class=\"previews\" (click)=\"$event.stopPropagation()\">\n <div class=\"row\">\n <ng-container *ngFor=\"let img of previews; let i = index\">\n <div \n class=\"col-3 image-preview-container\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, i)\"\n (dragover)=\"onDragOverImage($event)\"\n (drop)=\"onDropImage($event, i)\"\n (dragend)=\"onDragEnd()\"\n (click)=\"$event.stopPropagation()\"\n [class.dragging]=\"draggedIndex === i\"\n [class.image-error]=\"hasImageError(i)\"\n >\n <button \n class=\"btn-remove\" \n (click)=\"removeImage($event, i)\"\n title=\"Remover imagem\"\n >\n \u00D7\n </button>\n <img \n *ngIf=\"!hasImageError(i)\" \n [src]=\"img\" \n width=\"150\" \n class=\"preview-image\"\n (error)=\"onImageError(i, $event)\"\n (load)=\"onImageLoad(i)\"\n >\n <div \n *ngIf=\"hasImageError(i)\" \n class=\"image-error-placeholder\"\n >\n <span>\u26A0\uFE0F</span>\n <p>Erro ao carregar</p>\n </div>\n </div>\n </ng-container>\n </div> \n </div>\n</div>\n", styles: [".dropzone{border:2px dashed #777;border-radius:10px;padding:40px;text-align:center;cursor:pointer;transition:.3s ease;color:#555;-webkit-user-select:none;user-select:none}.dropzone.hover{border-color:#1e88e5;background:#e3f2fd;color:#1565c0}.progress-container{margin:20px 0;padding:10px;background-color:#f5f5f5;border-radius:8px}.progress-bar{position:relative;width:100%;height:30px;background-color:#e0e0e0;border-radius:15px;overflow:hidden;box-shadow:inset 0 2px 4px #0000001a}.progress-fill{height:100%;background:linear-gradient(90deg,#1e88e5,#42a5f5);border-radius:15px;transition:width .3s ease;display:flex;align-items:center;justify-content:center;min-width:30px;position:relative}.progress-fill:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-weight:600;font-size:14px;color:#333;text-shadow:0 1px 2px rgba(255,255,255,.8);z-index:1}.image-preview-container{position:relative;cursor:move;transition:all .2s ease;padding:10px;border:2px solid transparent;border-radius:8px}.image-preview-container:hover{border-color:#1e88e5;background-color:#f5f5f5}.image-preview-container:hover .btn-remove{opacity:1}.image-preview-container.dragging{opacity:.5;border-color:#1e88e5}.image-preview-container.image-error{border-color:#f44336;background-color:#ffebee}.image-preview-container.image-error:hover{border-color:#d32f2f}.btn-remove{position:absolute;top:15px;right:15px;width:28px;height:28px;border-radius:50%;border:none;background-color:#f44336e6;color:#fff;font-size:20px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .2s ease;z-index:10;padding:0}.btn-remove:hover{background-color:#d32f2f;transform:scale(1.1)}.btn-remove:active{transform:scale(.95)}.preview-image{width:100%;height:auto;border-radius:4px;pointer-events:none}.image-error-placeholder{width:150px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:#ffcdd2;border-radius:4px;color:#c62828;text-align:center}.image-error-placeholder span{font-size:40px;margin-bottom:8px}.image-error-placeholder p{margin:0;font-size:12px;font-weight:500}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }] }); }
|
|
6116
|
+
}
|
|
6117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiUploadAreaComponent, decorators: [{
|
|
6118
|
+
type: Component,
|
|
6119
|
+
args: [{ selector: 'tcloud-ui-upload-area', imports: [
|
|
6120
|
+
CommonModule
|
|
6121
|
+
], template: "<div\n class=\"dropzone\"\n (dragover)=\"onDragOver($event)\"\n (dragleave)=\"onDragLeave($event)\"\n (drop)=\"onDrop($event)\"\n [class.hover]=\"isHovering\"\n (click)=\"fileInput.click()\"\n>\n <p>Arraste e solte imagens aqui<br>ou clique para selecionar</p>\n</div>\n\n<div *ngIf=\"showProgress && isLoading\" class=\"progress-container\">\n <div class=\"progress-bar\">\n <div class=\"progress-fill\" [style.width.%]=\"currentProgress\"></div>\n </div>\n <div class=\"progress-text\">{{ currentProgress }}%</div>\n</div>\n\n<div *ngIf=\"messageOnError !== ''\">{{ messageOnError }}</div>\n\n<input\n #fileInput\n type=\"file\"\n accept=\"image/*\"\n multiple\n hidden\n (change)=\"onFilesSelected($event)\"\n>\n\n<div class=\"mt-3 mb-2\">\n <div class=\"previews\" (click)=\"$event.stopPropagation()\">\n <div class=\"row\">\n <ng-container *ngFor=\"let img of previews; let i = index\">\n <div \n class=\"col-3 image-preview-container\"\n draggable=\"true\"\n (dragstart)=\"onDragStart($event, i)\"\n (dragover)=\"onDragOverImage($event)\"\n (drop)=\"onDropImage($event, i)\"\n (dragend)=\"onDragEnd()\"\n (click)=\"$event.stopPropagation()\"\n [class.dragging]=\"draggedIndex === i\"\n [class.image-error]=\"hasImageError(i)\"\n >\n <button \n class=\"btn-remove\" \n (click)=\"removeImage($event, i)\"\n title=\"Remover imagem\"\n >\n \u00D7\n </button>\n <img \n *ngIf=\"!hasImageError(i)\" \n [src]=\"img\" \n width=\"150\" \n class=\"preview-image\"\n (error)=\"onImageError(i, $event)\"\n (load)=\"onImageLoad(i)\"\n >\n <div \n *ngIf=\"hasImageError(i)\" \n class=\"image-error-placeholder\"\n >\n <span>\u26A0\uFE0F</span>\n <p>Erro ao carregar</p>\n </div>\n </div>\n </ng-container>\n </div> \n </div>\n</div>\n", styles: [".dropzone{border:2px dashed #777;border-radius:10px;padding:40px;text-align:center;cursor:pointer;transition:.3s ease;color:#555;-webkit-user-select:none;user-select:none}.dropzone.hover{border-color:#1e88e5;background:#e3f2fd;color:#1565c0}.progress-container{margin:20px 0;padding:10px;background-color:#f5f5f5;border-radius:8px}.progress-bar{position:relative;width:100%;height:30px;background-color:#e0e0e0;border-radius:15px;overflow:hidden;box-shadow:inset 0 2px 4px #0000001a}.progress-fill{height:100%;background:linear-gradient(90deg,#1e88e5,#42a5f5);border-radius:15px;transition:width .3s ease;display:flex;align-items:center;justify-content:center;min-width:30px;position:relative}.progress-fill:after{content:\"\";position:absolute;inset:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 1.5s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.progress-text{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-weight:600;font-size:14px;color:#333;text-shadow:0 1px 2px rgba(255,255,255,.8);z-index:1}.image-preview-container{position:relative;cursor:move;transition:all .2s ease;padding:10px;border:2px solid transparent;border-radius:8px}.image-preview-container:hover{border-color:#1e88e5;background-color:#f5f5f5}.image-preview-container:hover .btn-remove{opacity:1}.image-preview-container.dragging{opacity:.5;border-color:#1e88e5}.image-preview-container.image-error{border-color:#f44336;background-color:#ffebee}.image-preview-container.image-error:hover{border-color:#d32f2f}.btn-remove{position:absolute;top:15px;right:15px;width:28px;height:28px;border-radius:50%;border:none;background-color:#f44336e6;color:#fff;font-size:20px;font-weight:700;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:all .2s ease;z-index:10;padding:0}.btn-remove:hover{background-color:#d32f2f;transform:scale(1.1)}.btn-remove:active{transform:scale(.95)}.preview-image{width:100%;height:auto;border-radius:4px;pointer-events:none}.image-error-placeholder{width:150px;height:150px;display:flex;flex-direction:column;align-items:center;justify-content:center;background-color:#ffcdd2;border-radius:4px;color:#c62828;text-align:center}.image-error-placeholder span{font-size:40px;margin-bottom:8px}.image-error-placeholder p{margin:0;font-size:12px;font-weight:500}\n"] }]
|
|
6122
|
+
}], propDecorators: { onChange: [{
|
|
6123
|
+
type: Output
|
|
6124
|
+
}], filesSelected: [{
|
|
6125
|
+
type: Output
|
|
6126
|
+
}], imagesReordered: [{
|
|
6127
|
+
type: Output
|
|
6128
|
+
}], imagesRemoved: [{
|
|
6129
|
+
type: Output
|
|
6130
|
+
}], onError: [{
|
|
6131
|
+
type: Output
|
|
6132
|
+
}], onProgress: [{
|
|
6133
|
+
type: Output
|
|
6134
|
+
}], maxFiles: [{
|
|
6135
|
+
type: Input
|
|
6136
|
+
}], acceptedFileTypes: [{
|
|
6137
|
+
type: Input
|
|
6138
|
+
}], imageDimensions: [{
|
|
6139
|
+
type: Input
|
|
6140
|
+
}], showProgress: [{
|
|
6141
|
+
type: Input
|
|
6142
|
+
}], preloadedImages: [{
|
|
6143
|
+
type: Input
|
|
6144
|
+
}] } });
|
|
6145
|
+
|
|
5472
6146
|
class TCloudUiAlignDirective {
|
|
5473
6147
|
set TCalign(direction) {
|
|
5474
6148
|
if (direction) {
|
|
@@ -6489,6 +7163,55 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
|
|
|
6489
7163
|
}]
|
|
6490
7164
|
}] });
|
|
6491
7165
|
|
|
7166
|
+
class TCloudUiRadioDirective {
|
|
7167
|
+
constructor() { }
|
|
7168
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiRadioDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7169
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiRadioDirective, isStandalone: true, selector: "input[type=\"radio\"][tcloudUiRadio]", host: { classAttribute: "tcloud-ui-radio" }, ngImport: i0 }); }
|
|
7170
|
+
}
|
|
7171
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiRadioDirective, decorators: [{
|
|
7172
|
+
type: Directive,
|
|
7173
|
+
args: [{
|
|
7174
|
+
selector: 'input[type="radio"][tcloudUiRadio]',
|
|
7175
|
+
host: {
|
|
7176
|
+
class: 'tcloud-ui-radio'
|
|
7177
|
+
}
|
|
7178
|
+
}]
|
|
7179
|
+
}], ctorParameters: () => [] });
|
|
7180
|
+
|
|
7181
|
+
class TCloudUiIconButtonDirective {
|
|
7182
|
+
constructor(_el) {
|
|
7183
|
+
this._el = _el;
|
|
7184
|
+
this.color = input('primary');
|
|
7185
|
+
this.size = input('sm');
|
|
7186
|
+
this.tcloudUiIconButton = input('filled');
|
|
7187
|
+
effect(() => {
|
|
7188
|
+
this.setClasses();
|
|
7189
|
+
});
|
|
7190
|
+
}
|
|
7191
|
+
setClasses() {
|
|
7192
|
+
const tokenList = this._el.nativeElement.classList;
|
|
7193
|
+
tokenList.remove(...Array.from(tokenList).filter((c) => c.startsWith('tcloud-ui-btn--')));
|
|
7194
|
+
let tcloudUiIconButton = this.tcloudUiIconButton();
|
|
7195
|
+
if (!tcloudUiIconButton) {
|
|
7196
|
+
tcloudUiIconButton = 'filled';
|
|
7197
|
+
}
|
|
7198
|
+
this._el.nativeElement.classList.add(`tc-rev-btn--${this.size()}`);
|
|
7199
|
+
this._el.nativeElement.classList.add(`tc-rev-btn--${this.size()}-icon`);
|
|
7200
|
+
this._el.nativeElement.classList.add(`tc-rev-btn--${this.color()}-${tcloudUiIconButton}`);
|
|
7201
|
+
}
|
|
7202
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiIconButtonDirective, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
7203
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.19", type: TCloudUiIconButtonDirective, isStandalone: true, selector: "button[tcloudUiIconButton]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, tcloudUiIconButton: { classPropertyName: "tcloudUiIconButton", publicName: "tcloudUiIconButton", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "tcloud-ui-btn tcloud-ui-btn-icon" }, ngImport: i0 }); }
|
|
7204
|
+
}
|
|
7205
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiIconButtonDirective, decorators: [{
|
|
7206
|
+
type: Directive,
|
|
7207
|
+
args: [{
|
|
7208
|
+
selector: 'button[tcloudUiIconButton]',
|
|
7209
|
+
host: {
|
|
7210
|
+
class: 'tcloud-ui-btn tcloud-ui-btn-icon'
|
|
7211
|
+
}
|
|
7212
|
+
}]
|
|
7213
|
+
}], ctorParameters: () => [{ type: i0.ElementRef }] });
|
|
7214
|
+
|
|
6492
7215
|
[];
|
|
6493
7216
|
class TCloudUiPaginationService {
|
|
6494
7217
|
constructor() {
|
|
@@ -7664,52 +8387,70 @@ class TCloudUiSubNavbarItemComponent {
|
|
|
7664
8387
|
this.onClick.emit(_ev);
|
|
7665
8388
|
}
|
|
7666
8389
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSubNavbarItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7667
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.
|
|
8390
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.19", type: TCloudUiSubNavbarItemComponent, isStandalone: true, selector: "tcloud-ui-sub-navbar-item", inputs: { isMenuExpanded: { classPropertyName: "isMenuExpanded", publicName: "isMenuExpanded", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: "<li class=\"tcloud-ui-navbar-item\" [class.tcloud-ui-submenu-expanded]=\"isMenuExpanded\">\n <a\n class=\"tcloud-ui-navbar-item-link\"\n [class.selected]=\"active()\"\n [routerLink]=\"routerLink()\"\n routerLinkActive=\"active\"\n [queryParams]=\"queryParams()\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [title]=\"label()\"\n (click)=\"handleClick($event)\">\n\n <div class=\"navbar-item-icon-container\">\n <ng-content select=\"[icon]\"></ng-content>\n </div>\n\n \n <div class=\"navbar-item-label\">\n {{label()}}\n </div>\n \n </a>\n</li>\n", styles: [":host{display:block}.tcloud-ui-navbar-item{list-style:none;margin:0;padding:0}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link{align-items:center;border-radius:var(--bor-radius-4);color:var(--c-neutral-700);cursor:pointer;font-family:var(--f-family);display:flex;transition:all .2s ease;text-decoration:none}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-icon-container{text-align:center;align-content:center;background-color:var(--c-neutral-50);border-radius:var(--bor-radius-4);font-size:var(--f-size-20);height:var(--size-36);width:var(--size-36);transition:all .2s ease;min-height:var(--size-36);min-width:var(--size-36);max-height:var(--size-36);max-width:var(--size-36)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-icon-container:hover,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-icon-container:focus{background-color:var(--c-neutral-200);color:var(--c-primary-500)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-label{align-content:center;color:var(--c-neutral-700);font-size:var(--f-size-14);height:var(--size-36);padding-left:var(--size-8);transition:all .2s ease;min-height:var(--size-36);max-height:var(--size-36)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link:hover,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link:focus{color:var(--c-primary-500)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link.active .navbar-item-icon-container,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link.selected .navbar-item-icon-container,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link:active .navbar-item-icon-container{background-color:var(--c-primary-300);color:var(--c-primary-500)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link .navbar-item-icon-container{background-color:var(--c-neutral-200)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link:hover .navbar-item-label,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link:focus .navbar-item-label{color:var(--c-primary-500)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.active,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.selected,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.active .navbar-item-icon-container,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.selected .navbar-item-icon-container{background-color:var(--c-primary-300)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.active .navbar-item-label,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.selected .navbar-item-label{color:var(--c-primary-500);font-weight:var(--f-weight-700)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] }); }
|
|
7668
8391
|
}
|
|
7669
8392
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSubNavbarItemComponent, decorators: [{
|
|
7670
8393
|
type: Component,
|
|
7671
8394
|
args: [{ selector: 'tcloud-ui-sub-navbar-item', imports: [
|
|
7672
8395
|
CommonModule,
|
|
7673
8396
|
RouterModule,
|
|
7674
|
-
], template: "<li
|
|
8397
|
+
], template: "<li class=\"tcloud-ui-navbar-item\" [class.tcloud-ui-submenu-expanded]=\"isMenuExpanded\">\n <a\n class=\"tcloud-ui-navbar-item-link\"\n [class.selected]=\"active()\"\n [routerLink]=\"routerLink()\"\n routerLinkActive=\"active\"\n [queryParams]=\"queryParams()\"\n [routerLinkActiveOptions]=\"{ exact: true }\"\n [title]=\"label()\"\n (click)=\"handleClick($event)\">\n\n <div class=\"navbar-item-icon-container\">\n <ng-content select=\"[icon]\"></ng-content>\n </div>\n\n \n <div class=\"navbar-item-label\">\n {{label()}}\n </div>\n \n </a>\n</li>\n", styles: [":host{display:block}.tcloud-ui-navbar-item{list-style:none;margin:0;padding:0}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link{align-items:center;border-radius:var(--bor-radius-4);color:var(--c-neutral-700);cursor:pointer;font-family:var(--f-family);display:flex;transition:all .2s ease;text-decoration:none}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-icon-container{text-align:center;align-content:center;background-color:var(--c-neutral-50);border-radius:var(--bor-radius-4);font-size:var(--f-size-20);height:var(--size-36);width:var(--size-36);transition:all .2s ease;min-height:var(--size-36);min-width:var(--size-36);max-height:var(--size-36);max-width:var(--size-36)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-icon-container:hover,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-icon-container:focus{background-color:var(--c-neutral-200);color:var(--c-primary-500)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link .navbar-item-label{align-content:center;color:var(--c-neutral-700);font-size:var(--f-size-14);height:var(--size-36);padding-left:var(--size-8);transition:all .2s ease;min-height:var(--size-36);max-height:var(--size-36)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link:hover,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link:focus{color:var(--c-primary-500)}.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link.active .navbar-item-icon-container,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link.selected .navbar-item-icon-container,.tcloud-ui-navbar-item .tcloud-ui-navbar-item-link:active .navbar-item-icon-container{background-color:var(--c-primary-300);color:var(--c-primary-500)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link .navbar-item-icon-container{background-color:var(--c-neutral-200)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link:hover .navbar-item-label,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link:focus .navbar-item-label{color:var(--c-primary-500)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.active,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.selected,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.active .navbar-item-icon-container,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.selected .navbar-item-icon-container{background-color:var(--c-primary-300)}.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.active .navbar-item-label,.tcloud-ui-navbar-item.tc-rev-submenu-expanded .tcloud-ui-navbar-item-link.selected .navbar-item-label{color:var(--c-primary-500);font-weight:var(--f-weight-700)}\n"] }]
|
|
7675
8398
|
}], propDecorators: { isMenuExpanded: [{
|
|
7676
8399
|
type: Input
|
|
7677
8400
|
}] } });
|
|
7678
8401
|
|
|
7679
8402
|
class TCloudUiSubNavbarComponent {
|
|
7680
8403
|
constructor() {
|
|
7681
|
-
this.isMenuExpanded =
|
|
8404
|
+
this.isMenuExpanded = true;
|
|
7682
8405
|
this.onSubMenuExpandChange = output();
|
|
7683
8406
|
}
|
|
7684
|
-
ngAfterContentInit() {
|
|
7685
|
-
setTimeout(() => this.setExpandedMenuValueToChildrend(), 0);
|
|
7686
|
-
}
|
|
7687
8407
|
handleExpandMenu() {
|
|
7688
|
-
this.isMenuExpanded
|
|
7689
|
-
this.
|
|
7690
|
-
}
|
|
7691
|
-
setExpandedMenuValueToChildrend() {
|
|
7692
|
-
if (!this.subNavbarItems?.length)
|
|
7693
|
-
return;
|
|
7694
|
-
this.subNavbarItems.forEach((x) => {
|
|
7695
|
-
x.isMenuExpanded = this.isMenuExpanded();
|
|
7696
|
-
});
|
|
7697
|
-
this.onSubMenuExpandChange.emit(this.isMenuExpanded());
|
|
8408
|
+
this.isMenuExpanded = !this.isMenuExpanded;
|
|
8409
|
+
this.onSubMenuExpandChange.emit(this.isMenuExpanded);
|
|
7698
8410
|
}
|
|
7699
8411
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSubNavbarComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
7700
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiSubNavbarComponent, isStandalone: true, selector: "tcloud-ui-sub-navbar", outputs: { onSubMenuExpandChange: "onSubMenuExpandChange" }, queries: [{ propertyName: "subNavbarItems", predicate: TCloudUiSubNavbarItemComponent }], ngImport: i0, template: "<nav class=\"tcloud-ui-sub-navbar\">\n <ul
|
|
8412
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.19", type: TCloudUiSubNavbarComponent, isStandalone: true, selector: "tcloud-ui-sub-navbar", outputs: { onSubMenuExpandChange: "onSubMenuExpandChange" }, queries: [{ propertyName: "subNavbarItems", predicate: TCloudUiSubNavbarItemComponent }], ngImport: i0, template: "<nav class=\"tcloud-ui-sub-navbar\">\n <ul class=\"tcloud-ui-sub-navbar-list\" [class.tcloud-ui-submenu-expanded]=\"isMenuExpanded\">\n \n <tcloud-ui-sub-navbar-item [isMenuExpanded]=\"isMenuExpanded\" (click)=\"handleExpandMenu()\" label=\"Minimizar\">\n <i class=\"fa-light\" [class.fa-arrow-left-to-line]=\"isMenuExpanded\" [class.fa-arrow-right-to-line]=\"!isMenuExpanded\" icon></i>\n </tcloud-ui-sub-navbar-item>\n\n <ng-content></ng-content>\n </ul>\n</nav>\n", styles: [".tcloud-ui-sub-navbar{display:block;max-height:calc(100vh - 10.875rem);overflow-y:auto;min-height:300px;margin:var(--size-0);padding:var(--size-0)}.tcloud-ui-sub-navbar-list{background-color:var(--c-neutral-50);color:var(--c-neutral-700);box-shadow:var(--shadow-xs);border-radius:var(--bor-radius-8);display:flex;flex-direction:column;gap:var(--size-8);height:100%;list-style:none;margin:var(--size-0);overflow:hidden auto;padding:var(--size-8);width:var(--size-52)}.tcloud-ui-sub-navbar-list::-webkit-scrollbar{display:none}.tcloud-ui-sub-navbar-list.tcloud-ui-submenu-expanded{width:14.5rem}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: TCloudUiSubNavbarItemComponent, selector: "tcloud-ui-sub-navbar-item", inputs: ["isMenuExpanded", "label", "active", "routerLink", "queryParams"], outputs: ["onClick"] }] }); }
|
|
7701
8413
|
}
|
|
7702
8414
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSubNavbarComponent, decorators: [{
|
|
7703
8415
|
type: Component,
|
|
7704
8416
|
args: [{ selector: 'tcloud-ui-sub-navbar', imports: [
|
|
7705
8417
|
CommonModule,
|
|
7706
8418
|
TCloudUiSubNavbarItemComponent,
|
|
7707
|
-
], template: "<nav class=\"tcloud-ui-sub-navbar\">\n <ul
|
|
8419
|
+
], template: "<nav class=\"tcloud-ui-sub-navbar\">\n <ul class=\"tcloud-ui-sub-navbar-list\" [class.tcloud-ui-submenu-expanded]=\"isMenuExpanded\">\n \n <tcloud-ui-sub-navbar-item [isMenuExpanded]=\"isMenuExpanded\" (click)=\"handleExpandMenu()\" label=\"Minimizar\">\n <i class=\"fa-light\" [class.fa-arrow-left-to-line]=\"isMenuExpanded\" [class.fa-arrow-right-to-line]=\"!isMenuExpanded\" icon></i>\n </tcloud-ui-sub-navbar-item>\n\n <ng-content></ng-content>\n </ul>\n</nav>\n", styles: [".tcloud-ui-sub-navbar{display:block;max-height:calc(100vh - 10.875rem);overflow-y:auto;min-height:300px;margin:var(--size-0);padding:var(--size-0)}.tcloud-ui-sub-navbar-list{background-color:var(--c-neutral-50);color:var(--c-neutral-700);box-shadow:var(--shadow-xs);border-radius:var(--bor-radius-8);display:flex;flex-direction:column;gap:var(--size-8);height:100%;list-style:none;margin:var(--size-0);overflow:hidden auto;padding:var(--size-8);width:var(--size-52)}.tcloud-ui-sub-navbar-list::-webkit-scrollbar{display:none}.tcloud-ui-sub-navbar-list.tcloud-ui-submenu-expanded{width:14.5rem}\n"] }]
|
|
7708
8420
|
}], propDecorators: { subNavbarItems: [{
|
|
7709
8421
|
type: ContentChildren,
|
|
7710
8422
|
args: [TCloudUiSubNavbarItemComponent]
|
|
7711
8423
|
}] } });
|
|
7712
8424
|
|
|
8425
|
+
class TCloudUiSubNavbarGroupComponent {
|
|
8426
|
+
constructor() {
|
|
8427
|
+
this.subMenu = false;
|
|
8428
|
+
this.isMenuExpanded = false;
|
|
8429
|
+
this.label = input.required();
|
|
8430
|
+
this.onClick = output();
|
|
8431
|
+
this.active = input(false);
|
|
8432
|
+
this.routerLink = input(null);
|
|
8433
|
+
this.queryParams = input(null);
|
|
8434
|
+
}
|
|
8435
|
+
handleClick(_ev) {
|
|
8436
|
+
this.onClick.emit(_ev);
|
|
8437
|
+
}
|
|
8438
|
+
toggleSubItems() {
|
|
8439
|
+
this.subMenu = !this.subMenu;
|
|
8440
|
+
}
|
|
8441
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSubNavbarGroupComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8442
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.19", type: TCloudUiSubNavbarGroupComponent, isStandalone: true, selector: "tcloud-ui-sub-navbar-group", inputs: { isMenuExpanded: { classPropertyName: "isMenuExpanded", publicName: "isMenuExpanded", isSignal: false, isRequired: false, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, routerLink: { classPropertyName: "routerLink", publicName: "routerLink", isSignal: true, isRequired: false, transformFunction: null }, queryParams: { classPropertyName: "queryParams", publicName: "queryParams", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { onClick: "onClick" }, ngImport: i0, template: "<li class=\"tcloud-ui-navbar-group\" [class.tcloud-ui-submenu-expanded]=\"isMenuExpanded\">\n \n \n\n <a\n class=\"tcloud-ui-navbar-group-link\"\n [class.selected]=\"active()\"\n [routerLink]=\"routerLink()\"\n routerLinkActive=\"active\"\n [queryParams]=\"queryParams()\"\n [title]=\"label()\"\n (click)=\"toggleSubItems()\">\n\n <div class=\"navbar-item-icon-container\">\n <ng-content select=\"[icon]\"></ng-content>\n </div>\n\n \n <div class=\"navbar-item-label\" >\n {{label()}}\n <i class=\"fas fa-chevron-down\"></i>\n </div>\n \n </a>\n\n <div></div>\n <ul \n class=\"tcloud-ui-submenu-items\" \n [class.tcloud-ui-submenu-items-open]=\"subMenu\">\n <ng-content></ng-content>\n </ul>\n</li>\n", styles: [":host{display:block}.tcloud-ui-navbar-group{list-style:none;margin:0;padding:0}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link{align-items:center;border-radius:var(--bor-radius-4);color:var(--c-neutral-700);cursor:pointer;font-family:var(--f-family);display:flex;transition:all .2s ease;text-decoration:none}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-icon-container{text-align:center;align-content:center;background-color:var(--c-neutral-50);border-radius:var(--bor-radius-4);font-size:var(--f-size-20);height:var(--size-36);width:var(--size-36);transition:all .2s ease;min-height:var(--size-36);min-width:var(--size-36);max-height:var(--size-36);max-width:var(--size-36)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-icon-container:hover,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-icon-container:focus{background-color:var(--c-neutral-200);color:var(--c-primary-500)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-label{width:100%;position:relative;align-content:center;color:var(--c-neutral-700);font-size:var(--f-size-14);height:var(--size-36);padding-left:var(--size-8);transition:all .2s ease;min-height:var(--size-36);max-height:var(--size-36)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-label i{position:absolute;right:0;padding-top:4px}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link:hover,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link:focus{color:var(--c-primary-500)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link.active .navbar-item-icon-container,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link.selected .navbar-item-icon-container,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link:active .navbar-item-icon-container{background-color:var(--c-primary-300);color:var(--c-primary-500)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link .navbar-item-icon-container{background-color:var(--c-neutral-200)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link:hover .navbar-item-label,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link:focus .navbar-item-label{color:var(--c-primary-500)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.active,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.selected,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.active .navbar-item-icon-container,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.selected .navbar-item-icon-container{background-color:var(--c-primary-300)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.active .navbar-item-label,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.selected .navbar-item-label{color:var(--c-primary-500);font-weight:var(--f-weight-700)}.tcloud-ui-submenu-items{display:none}.tcloud-ui-submenu-items-open{display:block!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$1.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$1.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }] }); }
|
|
8443
|
+
}
|
|
8444
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSubNavbarGroupComponent, decorators: [{
|
|
8445
|
+
type: Component,
|
|
8446
|
+
args: [{ selector: 'tcloud-ui-sub-navbar-group', imports: [
|
|
8447
|
+
CommonModule,
|
|
8448
|
+
RouterModule
|
|
8449
|
+
], template: "<li class=\"tcloud-ui-navbar-group\" [class.tcloud-ui-submenu-expanded]=\"isMenuExpanded\">\n \n \n\n <a\n class=\"tcloud-ui-navbar-group-link\"\n [class.selected]=\"active()\"\n [routerLink]=\"routerLink()\"\n routerLinkActive=\"active\"\n [queryParams]=\"queryParams()\"\n [title]=\"label()\"\n (click)=\"toggleSubItems()\">\n\n <div class=\"navbar-item-icon-container\">\n <ng-content select=\"[icon]\"></ng-content>\n </div>\n\n \n <div class=\"navbar-item-label\" >\n {{label()}}\n <i class=\"fas fa-chevron-down\"></i>\n </div>\n \n </a>\n\n <div></div>\n <ul \n class=\"tcloud-ui-submenu-items\" \n [class.tcloud-ui-submenu-items-open]=\"subMenu\">\n <ng-content></ng-content>\n </ul>\n</li>\n", styles: [":host{display:block}.tcloud-ui-navbar-group{list-style:none;margin:0;padding:0}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link{align-items:center;border-radius:var(--bor-radius-4);color:var(--c-neutral-700);cursor:pointer;font-family:var(--f-family);display:flex;transition:all .2s ease;text-decoration:none}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-icon-container{text-align:center;align-content:center;background-color:var(--c-neutral-50);border-radius:var(--bor-radius-4);font-size:var(--f-size-20);height:var(--size-36);width:var(--size-36);transition:all .2s ease;min-height:var(--size-36);min-width:var(--size-36);max-height:var(--size-36);max-width:var(--size-36)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-icon-container:hover,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-icon-container:focus{background-color:var(--c-neutral-200);color:var(--c-primary-500)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-label{width:100%;position:relative;align-content:center;color:var(--c-neutral-700);font-size:var(--f-size-14);height:var(--size-36);padding-left:var(--size-8);transition:all .2s ease;min-height:var(--size-36);max-height:var(--size-36)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link .navbar-item-label i{position:absolute;right:0;padding-top:4px}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link:hover,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link:focus{color:var(--c-primary-500)}.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link.active .navbar-item-icon-container,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link.selected .navbar-item-icon-container,.tcloud-ui-navbar-group .tcloud-ui-navbar-group-link:active .navbar-item-icon-container{background-color:var(--c-primary-300);color:var(--c-primary-500)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link .navbar-item-icon-container{background-color:var(--c-neutral-200)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link:hover .navbar-item-label,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link:focus .navbar-item-label{color:var(--c-primary-500)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.active,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.selected,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.active .navbar-item-icon-container,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.selected .navbar-item-icon-container{background-color:var(--c-primary-300)}.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.active .navbar-item-label,.tcloud-ui-navbar-group.tc-rev-submenu-expanded .tcloud-ui-navbar-group-link.selected .navbar-item-label{color:var(--c-primary-500);font-weight:var(--f-weight-700)}.tcloud-ui-submenu-items{display:none}.tcloud-ui-submenu-items-open{display:block!important}\n"] }]
|
|
8450
|
+
}], propDecorators: { isMenuExpanded: [{
|
|
8451
|
+
type: Input
|
|
8452
|
+
}] } });
|
|
8453
|
+
|
|
7713
8454
|
class TCloudUiTabGroupComponent {
|
|
7714
8455
|
constructor() {
|
|
7715
8456
|
this.isCarouselOverflowed = false;
|
|
@@ -7808,6 +8549,48 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
|
|
|
7808
8549
|
], template: "<div [class]=\"'tcloud-ui-wizard-steps' + ` tcloud-ui-wizard-steps--${this.direction()}`\">\n @for (step of this.steps(); let i = $index; track step.title + i) {\n @let isCompleted = step.completed || i + 1 < this.currentStep();\n @let isNext = i + 1 > this.currentStep();\n <div\n class=\"tcloud-ui-wizard-step\"\n [class.tcloud-ui-wizard-step--current]=\"i + 1 === this.currentStep()\"\n [class.tcloud-ui-wizard-step--completed]=\"isCompleted\"\n [class.tcloud-ui-wizard-step--next]=\"isNext\">\n\n <span\n class=\"tcloud-ui-wizard-step__counter f-h3\"\n [class.cursor-default]=\"!this.stepClickable()\"\n [class.cursor-pointer]=\"this.stepClickable() && !isNext\"\n (click)=\"this.handleStepClick(step, isNext, i)\">\n @if (isCompleted) {\n <i class=\"fas fa-check\"></i>\n }\n @else {\n {{ i + 1 }}\n }\n </span>\n\n <div class=\"tcloud-ui-wizard-step__info\">\n <p class=\"tcloud-ui-wizard-step__title f-lg mar-none cursor-default\">\n {{ step.title }}\n </p>\n\n @if (step.description) {\n <p class=\"tcloud-ui-wizard-step__description f-sm mar-none cursor-default\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n }\n</div>\n\n<!-- VERS\u00C3O COM DIVISOR -->\n<!-- <div [class]=\"'tcloud-ui-wizard-steps' + ` tcloud-ui-wizard-steps--${this.direction()}`\">\n @for (step of this.steps(); let i = $index; let last = $last; track step.title + i) {\n @let isCompleted = step.completed || i + 1 < this.currentStep();\n\n <div\n class=\"tcloud-ui-wizard-step\"\n [class.tcloud-ui-wizard-step--current]=\"i + 1 === this.currentStep()\"\n [class.tcloud-ui-wizard-step--completed]=\"isCompleted\"\n [class.tcloud-ui-wizard-step--next]=\"i + 1 > this.currentStep()\"\n [ngClass]=\"this.direction()\">\n\n <span class=\"tcloud-ui-wizard-step__counter f-h3 cursor-default\">\n {{ i + 1 }}\n </span>\n\n <div class=\"tcloud-ui-wizard-step__info\">\n <p class=\"tcloud-ui-wizard-step__title f-lg mar-none cursor-default\">\n {{ step.title }}\n </p>\n\n @if (step.description) {\n <p class=\"tcloud-ui-wizard-step__description f-sm mar-none cursor-default\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n\n @if (this.steps().length > i && !last) {\n <div\n class=\"tcloud-ui-wizard-step-divider\"\n [class.completed]=\"isCompleted\"\n [ngClass]=\"this.direction()\">\n </div>\n }\n }\n</div> -->\n", styles: [":host{display:block}.tcloud-ui-wizard-steps{display:inline-flex;font-family:var(--f-family);gap:var(--size-32)}.tcloud-ui-wizard-steps--horizontal{flex-direction:row}.tcloud-ui-wizard-steps--vertical{flex-direction:column}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step{display:flex;gap:var(--size-8)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step__info{max-width:13.25rem}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step__counter{align-items:center;border:1px solid;border-radius:var(--bor-radius-rounded);display:flex;height:var(--size-40);justify-content:center;width:var(--size-40);transition:all .3s ease;min-height:var(--size-40);min-width:var(--size-40)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--completed .tcloud-ui-wizard-step__counter{border-color:1px solid var(--c-primary-600);color:var(--c-neutral-600)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--completed .tcloud-ui-wizard-step__title{color:var(--c-neutral-600);font-weight:var(--f-weight-400)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--completed .tcloud-ui-wizard-step__description{color:var(--c-neutral-600)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--current .tcloud-ui-wizard-step__counter{background-color:var(--c-primary-500);border-color:var(--c-primary-500);color:var(--c-neutral-50)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--current .tcloud-ui-wizard-step__title{color:var(--c-neutral-700);font-weight:var(--f-weight-600)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--current .tcloud-ui-wizard-step__description{color:var(--c-neutral-700);font-weight:var(--f-weight-400)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--next .tcloud-ui-wizard-step__counter{border-color:var(--c-neutral-400);color:var(--c-neutral-400)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--next .tcloud-ui-wizard-step__title{color:var(--c-neutral-400);font-weight:var(--f-weight-400)}.tcloud-ui-wizard-steps .tcloud-ui-wizard-step--next .tcloud-ui-wizard-step__description{color:var(--c-neutral-400)}\n"] }]
|
|
7809
8550
|
}] });
|
|
7810
8551
|
|
|
8552
|
+
class TCloudUiSearchInputComponent {
|
|
8553
|
+
constructor() {
|
|
8554
|
+
this.searchText = '';
|
|
8555
|
+
this.searchTextChange = new EventEmitter();
|
|
8556
|
+
this.searchInput = viewChild('searchInput');
|
|
8557
|
+
this.searchTextForm = new FormControl('');
|
|
8558
|
+
this.placeholder = input('');
|
|
8559
|
+
this.onSearch = output();
|
|
8560
|
+
this.autoFocus = input(false);
|
|
8561
|
+
}
|
|
8562
|
+
ngOnChanges(_simpleChanges) {
|
|
8563
|
+
if (_simpleChanges['searchText']) {
|
|
8564
|
+
this.searchTextForm.setValue(this.searchText);
|
|
8565
|
+
}
|
|
8566
|
+
}
|
|
8567
|
+
ngOnInit() {
|
|
8568
|
+
// Inicializa o FormControl com o valor do model
|
|
8569
|
+
this.searchTextForm.setValue(this.searchText);
|
|
8570
|
+
this.searchTextForm.valueChanges
|
|
8571
|
+
.pipe(debounceTime(500), distinctUntilChanged(), map((text) => text?.toLowerCase() || ''))
|
|
8572
|
+
.subscribe((text) => {
|
|
8573
|
+
this.searchTextChange.emit(text);
|
|
8574
|
+
this.onSearch.emit(text);
|
|
8575
|
+
});
|
|
8576
|
+
}
|
|
8577
|
+
ngAfterViewInit() {
|
|
8578
|
+
if (this.autoFocus() && this.searchInput()) {
|
|
8579
|
+
this.searchInput().nativeElement.focus();
|
|
8580
|
+
}
|
|
8581
|
+
}
|
|
8582
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSearchInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
8583
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.2.19", type: TCloudUiSearchInputComponent, isStandalone: true, selector: "tcloud-ui-search-input", inputs: { searchText: { classPropertyName: "searchText", publicName: "searchText", isSignal: false, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, autoFocus: { classPropertyName: "autoFocus", publicName: "autoFocus", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { searchTextChange: "searchTextChange", onSearch: "onSearch" }, viewQueries: [{ propertyName: "searchInput", first: true, predicate: ["searchInput"], descendants: true, isSignal: true }], usesOnChanges: true, ngImport: i0, template: "<form class=\"tcloud-ui-search-input-container\">\n <input\n type=\"text\"\n class=\"tcloud-ui-search-input-control\"\n [formControl]=\"this.searchTextForm\"\n [placeholder]=\"this.placeholder()\"\n #searchInput\n />\n\n <button class=\"tcloud-ui-search-input-btn\">\n <i class=\"fa-light fa-magnifying-glass\"></i>\n </button>\n</form>\n", styles: [":host{display:block}.tcloud-ui-search-input-container{position:relative;max-height:var(--size-40);min-height:var(--size-40);height:var(--size-40);min-width:7.5rem}.tcloud-ui-search-input-container .tcloud-ui-search-input-control{border:1px solid var(--c-neutral-400);border-radius:var(--bor-radius-pill);color:var(--c-neutral-700);display:inline-block;font-family:var(--f-family);font-size:var(--f-size-14);line-height:var(--l-height-20);outline:none;height:var(--size-40);transition:.2s ease;padding:0 var(--size-16);position:absolute;top:0;left:0;padding-right:var(--size-44);width:100%;z-index:1}.tcloud-ui-search-input-container .tcloud-ui-search-input-control:hover,.tcloud-ui-search-input-container .tcloud-ui-search-input-control:focus{border-color:var(--c-primary-500)}.tcloud-ui-search-input-container .tcloud-ui-search-input-btn{cursor:pointer;display:block;position:absolute;right:4px;top:4px;z-index:2;background-color:var(--c-primary-500);border-radius:var(--bor-radius-rounded);border:none;width:var(--size-32);height:var(--size-32);color:var(--c-neutral-50);font-size:var(--f-size-16)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i2.NgForm, selector: "form:not([ngNoForm]):not([formGroup]),ng-form,[ngForm]", inputs: ["ngFormOptions"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] }); }
|
|
8584
|
+
}
|
|
8585
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiSearchInputComponent, decorators: [{
|
|
8586
|
+
type: Component,
|
|
8587
|
+
args: [{ selector: 'tcloud-ui-search-input', imports: [CommonModule, FormsModule, ReactiveFormsModule], template: "<form class=\"tcloud-ui-search-input-container\">\n <input\n type=\"text\"\n class=\"tcloud-ui-search-input-control\"\n [formControl]=\"this.searchTextForm\"\n [placeholder]=\"this.placeholder()\"\n #searchInput\n />\n\n <button class=\"tcloud-ui-search-input-btn\">\n <i class=\"fa-light fa-magnifying-glass\"></i>\n </button>\n</form>\n", styles: [":host{display:block}.tcloud-ui-search-input-container{position:relative;max-height:var(--size-40);min-height:var(--size-40);height:var(--size-40);min-width:7.5rem}.tcloud-ui-search-input-container .tcloud-ui-search-input-control{border:1px solid var(--c-neutral-400);border-radius:var(--bor-radius-pill);color:var(--c-neutral-700);display:inline-block;font-family:var(--f-family);font-size:var(--f-size-14);line-height:var(--l-height-20);outline:none;height:var(--size-40);transition:.2s ease;padding:0 var(--size-16);position:absolute;top:0;left:0;padding-right:var(--size-44);width:100%;z-index:1}.tcloud-ui-search-input-container .tcloud-ui-search-input-control:hover,.tcloud-ui-search-input-container .tcloud-ui-search-input-control:focus{border-color:var(--c-primary-500)}.tcloud-ui-search-input-container .tcloud-ui-search-input-btn{cursor:pointer;display:block;position:absolute;right:4px;top:4px;z-index:2;background-color:var(--c-primary-500);border-radius:var(--bor-radius-rounded);border:none;width:var(--size-32);height:var(--size-32);color:var(--c-neutral-50);font-size:var(--f-size-16)}\n"] }]
|
|
8588
|
+
}], propDecorators: { searchText: [{
|
|
8589
|
+
type: Input
|
|
8590
|
+
}], searchTextChange: [{
|
|
8591
|
+
type: Output
|
|
8592
|
+
}] } });
|
|
8593
|
+
|
|
7811
8594
|
const COMPONENTS = [
|
|
7812
8595
|
TCloudUiAccordionComponent,
|
|
7813
8596
|
TCloudUiAccordionBodyComponent,
|
|
@@ -7864,11 +8647,18 @@ const COMPONENTS = [
|
|
|
7864
8647
|
TCloudUiSkeletonLoadingComponent,
|
|
7865
8648
|
TCloudUiTagComponent,
|
|
7866
8649
|
TCloudUiSubNavbarComponent,
|
|
8650
|
+
TCloudUiSubNavbarGroupComponent,
|
|
7867
8651
|
TCloudUiSubNavbarItemComponent,
|
|
7868
8652
|
TCloudUiTabGroupComponent,
|
|
7869
8653
|
TCloudUiTabItemComponent,
|
|
7870
8654
|
TCloudUiWizardStepsComponent,
|
|
7871
|
-
TCloudUiBreadcrumbComponent
|
|
8655
|
+
TCloudUiBreadcrumbComponent,
|
|
8656
|
+
TCloudUiSearchInputComponent,
|
|
8657
|
+
TCloudUiAlertBannerComponent,
|
|
8658
|
+
TCloudUiFilterBarComponent,
|
|
8659
|
+
TCloudUiLegendComponent,
|
|
8660
|
+
TCloudUiSearchBarComponent,
|
|
8661
|
+
TCloudUiUploadAreaComponent
|
|
7872
8662
|
];
|
|
7873
8663
|
const DIRECTIVES = [
|
|
7874
8664
|
TCloudUiAlignDirective,
|
|
@@ -7885,7 +8675,9 @@ const DIRECTIVES = [
|
|
|
7885
8675
|
TCloudUiIpMaskDirective,
|
|
7886
8676
|
TCloudUiButtonDirective,
|
|
7887
8677
|
TCloudUiFormDirective,
|
|
7888
|
-
TCloudUiSlideToggleDirective
|
|
8678
|
+
TCloudUiSlideToggleDirective,
|
|
8679
|
+
TCloudUiRadioDirective,
|
|
8680
|
+
TCloudUiIconButtonDirective
|
|
7889
8681
|
];
|
|
7890
8682
|
const PIPES = [
|
|
7891
8683
|
ToTextPipe,
|
|
@@ -7977,11 +8769,18 @@ class TCloudUiModule {
|
|
|
7977
8769
|
TCloudUiSkeletonLoadingComponent,
|
|
7978
8770
|
TCloudUiTagComponent,
|
|
7979
8771
|
TCloudUiSubNavbarComponent,
|
|
8772
|
+
TCloudUiSubNavbarGroupComponent,
|
|
7980
8773
|
TCloudUiSubNavbarItemComponent,
|
|
7981
8774
|
TCloudUiTabGroupComponent,
|
|
7982
8775
|
TCloudUiTabItemComponent,
|
|
7983
8776
|
TCloudUiWizardStepsComponent,
|
|
7984
|
-
TCloudUiBreadcrumbComponent,
|
|
8777
|
+
TCloudUiBreadcrumbComponent,
|
|
8778
|
+
TCloudUiSearchInputComponent,
|
|
8779
|
+
TCloudUiAlertBannerComponent,
|
|
8780
|
+
TCloudUiFilterBarComponent,
|
|
8781
|
+
TCloudUiLegendComponent,
|
|
8782
|
+
TCloudUiSearchBarComponent,
|
|
8783
|
+
TCloudUiUploadAreaComponent, TCloudUiAlignDirective,
|
|
7985
8784
|
TCloudUiCheckboxDirective,
|
|
7986
8785
|
TCloudUiCurrencyDirective,
|
|
7987
8786
|
TCloudUiElCopyDirective,
|
|
@@ -7995,7 +8794,9 @@ class TCloudUiModule {
|
|
|
7995
8794
|
TCloudUiIpMaskDirective,
|
|
7996
8795
|
TCloudUiButtonDirective,
|
|
7997
8796
|
TCloudUiFormDirective,
|
|
7998
|
-
TCloudUiSlideToggleDirective,
|
|
8797
|
+
TCloudUiSlideToggleDirective,
|
|
8798
|
+
TCloudUiRadioDirective,
|
|
8799
|
+
TCloudUiIconButtonDirective, ToTextPipe,
|
|
7999
8800
|
BytesPipe,
|
|
8000
8801
|
CNPJPipe,
|
|
8001
8802
|
CPFPipe,
|
|
@@ -8058,11 +8859,18 @@ class TCloudUiModule {
|
|
|
8058
8859
|
TCloudUiSkeletonLoadingComponent,
|
|
8059
8860
|
TCloudUiTagComponent,
|
|
8060
8861
|
TCloudUiSubNavbarComponent,
|
|
8862
|
+
TCloudUiSubNavbarGroupComponent,
|
|
8061
8863
|
TCloudUiSubNavbarItemComponent,
|
|
8062
8864
|
TCloudUiTabGroupComponent,
|
|
8063
8865
|
TCloudUiTabItemComponent,
|
|
8064
8866
|
TCloudUiWizardStepsComponent,
|
|
8065
|
-
TCloudUiBreadcrumbComponent,
|
|
8867
|
+
TCloudUiBreadcrumbComponent,
|
|
8868
|
+
TCloudUiSearchInputComponent,
|
|
8869
|
+
TCloudUiAlertBannerComponent,
|
|
8870
|
+
TCloudUiFilterBarComponent,
|
|
8871
|
+
TCloudUiLegendComponent,
|
|
8872
|
+
TCloudUiSearchBarComponent,
|
|
8873
|
+
TCloudUiUploadAreaComponent, TCloudUiAlignDirective,
|
|
8066
8874
|
TCloudUiCheckboxDirective,
|
|
8067
8875
|
TCloudUiCurrencyDirective,
|
|
8068
8876
|
TCloudUiElCopyDirective,
|
|
@@ -8076,7 +8884,9 @@ class TCloudUiModule {
|
|
|
8076
8884
|
TCloudUiIpMaskDirective,
|
|
8077
8885
|
TCloudUiButtonDirective,
|
|
8078
8886
|
TCloudUiFormDirective,
|
|
8079
|
-
TCloudUiSlideToggleDirective,
|
|
8887
|
+
TCloudUiSlideToggleDirective,
|
|
8888
|
+
TCloudUiRadioDirective,
|
|
8889
|
+
TCloudUiIconButtonDirective, ToTextPipe,
|
|
8080
8890
|
BytesPipe,
|
|
8081
8891
|
CNPJPipe,
|
|
8082
8892
|
CPFPipe,
|
|
@@ -8139,11 +8949,18 @@ class TCloudUiModule {
|
|
|
8139
8949
|
TCloudUiSkeletonLoadingComponent,
|
|
8140
8950
|
TCloudUiTagComponent,
|
|
8141
8951
|
TCloudUiSubNavbarComponent,
|
|
8952
|
+
TCloudUiSubNavbarGroupComponent,
|
|
8142
8953
|
TCloudUiSubNavbarItemComponent,
|
|
8143
8954
|
TCloudUiTabGroupComponent,
|
|
8144
8955
|
TCloudUiTabItemComponent,
|
|
8145
8956
|
TCloudUiWizardStepsComponent,
|
|
8146
|
-
TCloudUiBreadcrumbComponent
|
|
8957
|
+
TCloudUiBreadcrumbComponent,
|
|
8958
|
+
TCloudUiSearchInputComponent,
|
|
8959
|
+
TCloudUiAlertBannerComponent,
|
|
8960
|
+
TCloudUiFilterBarComponent,
|
|
8961
|
+
TCloudUiLegendComponent,
|
|
8962
|
+
TCloudUiSearchBarComponent,
|
|
8963
|
+
TCloudUiUploadAreaComponent] }); }
|
|
8147
8964
|
}
|
|
8148
8965
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImport: i0, type: TCloudUiModule, decorators: [{
|
|
8149
8966
|
type: NgModule,
|
|
@@ -10092,5 +10909,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.19", ngImpo
|
|
|
10092
10909
|
* Generated bundle index. Do not edit.
|
|
10093
10910
|
*/
|
|
10094
10911
|
|
|
10095
|
-
export { BytesPipe, CNPJPipe, CPFPipe, CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR$1 as CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, DateBRPipe, DropdownGroupedSize, DropdownMultiSize$1 as DropdownMultiSize, DropdownSize$1 as DropdownSize, MonthNamePipe, MultiLevelDropdownSize, ProgressStatusBarGradientStatus, RespectivePipe, StatusInfoPipe, TCCondition, TCFiltersType, TCLOUD_UI_CONFIG, TCLOUD_UI_LAYOUT_SERVICE, TCLOUD_UI_USER_SERVICE, TCLOUD_UI_VIEWPORT_SERVICE, TCloudUiAccordionBodyComponent, TCloudUiAccordionComponent, TCloudUiAccordionTitleComponent, TCloudUiAlignDirective, TCloudUiBreadcrumbComponent, TCloudUiBreadcrumbService, TCloudUiButtonDirective, TCloudUiCalendarComponent, TCloudUiCardAccordionComponent, TCloudUiCardComponent, TCloudUiCardTitleComponent, TCloudUiCheckAccessDirective, TCloudUiCheckAccessService, TCloudUiCheckboxDirective, TCloudUiChoiceIssuesComponent, TCloudUiContainerColComponent, TCloudUiContainerComponent, TCloudUiContainerContentComponent, TCloudUiCubesComponent, TCloudUiCurrencyDirective, TCloudUiDataListComponent, TCloudUiDataListOptionComponent, TCloudUiDatepickerComponent, TCloudUiDatepickerTimeComponent, TCloudUiDigitOnlyDirective, TCloudUiDropdownComponent, TCloudUiDropdownMultiComponent, TCloudUiElCopyDirective, TCloudUiEmptyContentComponent, TCloudUiFaqComponent, TCloudUiFiltersComponent, TCloudUiFormDirective, TCloudUiHighLightDirective, TCloudUiHoverParentDirective, TCloudUiInputContainerComponent, TCloudUiInputPasswordComponent, TCloudUiInputSearchComponent, TCloudUiIpMaskDirective, TCloudUiLabelTokenComponent, TCloudUiLineStepCircleComponent, TCloudUiLineStepTitleComponent, TCloudUiLinhaLogoComponent, TCloudUiLoadingComponent, TCloudUiLoadingTransitionsService, TCloudUiMessageComponent, TCloudUiModalBodyComponent, TCloudUiModalComponent, TCloudUiModalFooterComponent, TCloudUiModalHeaderComponent, TCloudUiModule, TCloudUiMultiInputComponent, TCloudUiMultiSelectComponent, TCloudUiMultiplesValuesComponent, TCloudUiNgCheckAccessDirective, TCloudUiNgFeatureFlagsDirective, TCloudUiNotFoundComponent, TCloudUiNumberStepComponent, TCloudUiPaginationComponent, TCloudUiPaginationPipe, TCloudUiProgressBarComponent, TCloudUiRangeDateComponent, TCloudUiReorderItemsComponent, TCloudUiScrollBoxComponent, TCloudUiSearchInObjectService, TCloudUiSkeletonLoadingComponent, TCloudUiSkeletonLoadingComponentStyle, TCloudUiSlideToggleDirective, TCloudUiSubNavbarComponent, TCloudUiSubNavbarItemComponent, TCloudUiTabContentComponent, TCloudUiTabGroupComponent, TCloudUiTabHeadComponent, TCloudUiTabItemComponent, TCloudUiTabMenuComponent, TCloudUiTabSubtitleComponent, TCloudUiTabTitleComponent, TCloudUiTableComponent, TCloudUiTagComponent, TCloudUiToastComponent, TCloudUiTooltipDirective, TCloudUiWelcomeComponent, TCloudUiWizardStepsComponent, TagColorsEnum, TcRevButtonDirective, TcRevCalendarComponent, TcRevCardAccordionComponent, TcRevCardComponent, TcRevCardTitleComponent, TcRevCheckboxDirective, TcRevComponentsLibModule, TcRevDropdownComponent, TcRevDropdownGroupedComponent, TcRevDropdownMultiComponent, TcRevDropdownMultiLevelComponent, TcRevEmptyContentComponent, TcRevFaqComponent, TcRevIconButtonDirective, TcRevInputContainerComponent, TcRevInputDirective, TcRevLoadingComponent, TcRevMessageComponent, TcRevMultiInputComponent, TcRevPaginationComponent, TcRevProgressStatusBarComponent, TcRevRadioDirective, TcRevSearchInputComponent, TcRevSideDrawerComponent, TcRevSkeletonLoadingComponent, TcRevSkeletonLoadingComponentStyle, TcRevSlideToggleDirective, TcRevSmallLoadingComponent, TcRevSmallLoadingComponentStyle, TcRevSubNavbarComponent, TcRevSubNavbarItemComponent, TcRevTabGroupComponent, TcRevTabItemComponent, TcRevTagComponent, TcRevToastComponent, TcRevTooltipDirective, TcRevWizardStepsComponent, ToTextPipe, echartBarConfig, isTextEllipsed, provideTCloudUi };
|
|
10912
|
+
export { AcceptedFileType, BytesPipe, CNPJPipe, CPFPipe, CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR$1 as CUSTOM_INPUT_CONTROL_VALUE_ACCESSOR, DateBRPipe, DropdownGroupedSize, DropdownMultiSize$1 as DropdownMultiSize, DropdownSize$1 as DropdownSize, MonthNamePipe, MultiLevelDropdownSize, ProductActionPipe, ProgressStatusBarGradientStatus, RespectivePipe, StatusInfoPipe, TCCondition, TCFiltersType, TCLOUD_UI_CONFIG, TCLOUD_UI_LAYOUT_SERVICE, TCLOUD_UI_USER_SERVICE, TCLOUD_UI_VIEWPORT_SERVICE, TCloudUiAccordionBodyComponent, TCloudUiAccordionComponent, TCloudUiAccordionTitleComponent, TCloudUiAlertBannerComponent, TCloudUiAlignDirective, TCloudUiBreadcrumbComponent, TCloudUiBreadcrumbService, TCloudUiButtonDirective, TCloudUiCalendarComponent, TCloudUiCardAccordionComponent, TCloudUiCardComponent, TCloudUiCardTitleComponent, TCloudUiCheckAccessDirective, TCloudUiCheckAccessService, TCloudUiCheckboxDirective, TCloudUiChoiceIssuesComponent, TCloudUiContainerColComponent, TCloudUiContainerComponent, TCloudUiContainerContentComponent, TCloudUiCubesComponent, TCloudUiCurrencyDirective, TCloudUiDataListComponent, TCloudUiDataListOptionComponent, TCloudUiDatepickerComponent, TCloudUiDatepickerTimeComponent, TCloudUiDigitOnlyDirective, TCloudUiDropdownComponent, TCloudUiDropdownMultiComponent, TCloudUiElCopyDirective, TCloudUiEmptyContentComponent, TCloudUiFaqComponent, TCloudUiFilterBarComponent, TCloudUiFiltersComponent, TCloudUiFormDirective, TCloudUiHighLightDirective, TCloudUiHoverParentDirective, TCloudUiIconButtonDirective, TCloudUiInputContainerComponent, TCloudUiInputPasswordComponent, TCloudUiInputSearchComponent, TCloudUiIpMaskDirective, TCloudUiLabelTokenComponent, TCloudUiLegendComponent, TCloudUiLineStepCircleComponent, TCloudUiLineStepTitleComponent, TCloudUiLinhaLogoComponent, TCloudUiLoadingComponent, TCloudUiLoadingTransitionsService, TCloudUiMessageComponent, TCloudUiModalBodyComponent, TCloudUiModalComponent, TCloudUiModalFooterComponent, TCloudUiModalHeaderComponent, TCloudUiModule, TCloudUiMultiInputComponent, TCloudUiMultiSelectComponent, TCloudUiMultiplesValuesComponent, TCloudUiNgCheckAccessDirective, TCloudUiNgFeatureFlagsDirective, TCloudUiNotFoundComponent, TCloudUiNumberStepComponent, TCloudUiPaginationComponent, TCloudUiPaginationPipe, TCloudUiProgressBarComponent, TCloudUiRadioDirective, TCloudUiRangeDateComponent, TCloudUiReorderItemsComponent, TCloudUiScrollBoxComponent, TCloudUiSearchBarComponent, TCloudUiSearchInObjectService, TCloudUiSearchInputComponent, TCloudUiSkeletonLoadingComponent, TCloudUiSkeletonLoadingComponentStyle, TCloudUiSlideToggleDirective, TCloudUiSubNavbarComponent, TCloudUiSubNavbarGroupComponent, TCloudUiSubNavbarItemComponent, TCloudUiTabContentComponent, TCloudUiTabGroupComponent, TCloudUiTabHeadComponent, TCloudUiTabItemComponent, TCloudUiTabMenuComponent, TCloudUiTabSubtitleComponent, TCloudUiTabTitleComponent, TCloudUiTableComponent, TCloudUiTagComponent, TCloudUiToastComponent, TCloudUiTooltipDirective, TCloudUiUploadAreaComponent, TCloudUiWelcomeComponent, TCloudUiWizardStepsComponent, TagColorsEnum, TcRevButtonDirective, TcRevCalendarComponent, TcRevCardAccordionComponent, TcRevCardComponent, TcRevCardTitleComponent, TcRevCheckboxDirective, TcRevComponentsLibModule, TcRevDropdownComponent, TcRevDropdownGroupedComponent, TcRevDropdownMultiComponent, TcRevDropdownMultiLevelComponent, TcRevEmptyContentComponent, TcRevFaqComponent, TcRevIconButtonDirective, TcRevInputContainerComponent, TcRevInputDirective, TcRevLoadingComponent, TcRevMessageComponent, TcRevMultiInputComponent, TcRevPaginationComponent, TcRevProgressStatusBarComponent, TcRevRadioDirective, TcRevSearchInputComponent, TcRevSideDrawerComponent, TcRevSkeletonLoadingComponent, TcRevSkeletonLoadingComponentStyle, TcRevSlideToggleDirective, TcRevSmallLoadingComponent, TcRevSmallLoadingComponentStyle, TcRevSubNavbarComponent, TcRevSubNavbarItemComponent, TcRevTabGroupComponent, TcRevTabItemComponent, TcRevTagComponent, TcRevToastComponent, TcRevTooltipDirective, TcRevWizardStepsComponent, ToTextPipe, TopologyEnvironmentPipe, TopologyProductPipe, TopologyRegionPipe, TopologyStatusPipe, echartBarConfig, isTextEllipsed, provideTCloudUi };
|
|
10096
10913
|
//# sourceMappingURL=dev-tcloud-tcloud-ui.mjs.map
|