@fxlt/common-ui 0.0.4-rc2 → 0.0.5-rc1
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/animations.css +15 -0
- package/components.css +42 -22
- package/dm-sans/DMSans-Bold.ttf +0 -0
- package/dm-sans/DMSans-Light.ttf +0 -0
- package/dm-sans/DMSans-Medium.ttf +0 -0
- package/dm-sans/DMSans-Regular.ttf +0 -0
- package/dm-sans/DMSans-SemiBold.ttf +0 -0
- package/dm-sans/DMSans-Thin.ttf +0 -0
- package/fesm2022/fxlt-common-ui.mjs +200 -83
- package/fesm2022/fxlt-common-ui.mjs.map +1 -1
- package/fonts.css +70 -0
- package/index.d.ts +47 -29
- package/orbitron/Orbitron-Bold.ttf +0 -0
- package/orbitron/Orbitron-Medium.ttf +0 -0
- package/orbitron/Orbitron-Regular.ttf +0 -0
- package/orbitron/Orbitron-SemiBold.ttf +0 -0
- package/package.json +1 -3
- package/src/lib/styles/animations.css +15 -0
- package/src/lib/styles/components.css +42 -22
- package/src/lib/styles/fonts.css +70 -0
- package/src/lib/styles/theme.css +5 -1
- package/src/lib/ui/components/chart/chart.component.html +10 -8
- package/src/lib/ui/components/table-cell/table-cell.component.html +7 -0
- package/src/lib/ui/components/tag/tag.component.html +7 -35
- package/tailwind.config.js +9 -0
- package/theme.css +5 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Directive, Input, Component, createComponent, Injectable, ViewChild, Inject, EventEmitter, NgModule, HostListener, PLATFORM_ID, Output, Optional, Self, ChangeDetectionStrategy, TemplateRef, ContentChildren, ViewChildren, importProvidersFrom } from '@angular/core';
|
|
3
|
-
import * as
|
|
3
|
+
import * as i33 from '@angular/material/paginator';
|
|
4
4
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
|
5
|
-
import * as
|
|
5
|
+
import * as i34 from '@angular/material/table';
|
|
6
6
|
import { MatTableDataSource, MatTable, MatTableModule } from '@angular/material/table';
|
|
7
7
|
import * as i2 from '@angular/common';
|
|
8
8
|
import { isPlatformBrowser, CommonModule } from '@angular/common';
|
|
@@ -23,36 +23,36 @@ import * as i2$2 from '@angular/router';
|
|
|
23
23
|
import { catchError } from 'rxjs/operators';
|
|
24
24
|
import * as i3$1 from '@angular/material/select';
|
|
25
25
|
import { MatSelectModule } from '@angular/material/select';
|
|
26
|
-
import * as
|
|
26
|
+
import * as i30 from '@angular/material/radio';
|
|
27
27
|
import { MatRadioModule } from '@angular/material/radio';
|
|
28
|
-
import * as
|
|
28
|
+
import * as i31 from '@angular/material/button';
|
|
29
29
|
import { MatButtonModule } from '@angular/material/button';
|
|
30
|
-
import * as
|
|
30
|
+
import * as i32 from '@angular/material/icon';
|
|
31
31
|
import { MatIconModule } from '@angular/material/icon';
|
|
32
|
-
import * as
|
|
32
|
+
import * as i35 from '@angular/material/snack-bar';
|
|
33
33
|
import { MatSnackBarModule } from '@angular/material/snack-bar';
|
|
34
|
-
import * as
|
|
34
|
+
import * as i37 from '@angular/material/checkbox';
|
|
35
35
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
36
|
-
import * as
|
|
36
|
+
import * as i38 from '@angular/material/card';
|
|
37
37
|
import { MatCardModule } from '@angular/material/card';
|
|
38
|
-
import * as
|
|
38
|
+
import * as i39 from '@angular/material/datepicker';
|
|
39
39
|
import { MatDatepickerModule } from '@angular/material/datepicker';
|
|
40
|
-
import * as
|
|
40
|
+
import * as i40 from '@angular/material/timepicker';
|
|
41
41
|
import { MatTimepickerModule } from '@angular/material/timepicker';
|
|
42
|
-
import * as
|
|
42
|
+
import * as i41 from '@angular/material/badge';
|
|
43
43
|
import { MatBadgeModule } from '@angular/material/badge';
|
|
44
|
-
import * as
|
|
44
|
+
import * as i42 from '@angular/material/expansion';
|
|
45
45
|
import { MatExpansionModule } from '@angular/material/expansion';
|
|
46
|
-
import * as
|
|
46
|
+
import * as i43 from '@angular/material/form-field';
|
|
47
47
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
|
48
|
-
import * as
|
|
48
|
+
import * as i44 from '@angular/material/menu';
|
|
49
49
|
import { MatMenuModule } from '@angular/material/menu';
|
|
50
50
|
import * as i3 from '@danielmoncada/angular-datetime-picker';
|
|
51
51
|
import { OwlDateTimeModule, OwlNativeDateTimeModule, OWL_DATE_TIME_FORMATS } from '@danielmoncada/angular-datetime-picker';
|
|
52
52
|
import * as i2$3 from 'ngx-echarts';
|
|
53
53
|
import { NgxEchartsModule } from 'ngx-echarts';
|
|
54
54
|
import { __decorate, __param } from 'tslib';
|
|
55
|
-
import * as
|
|
55
|
+
import * as i27 from 'ngx-vflow';
|
|
56
56
|
import { Vflow } from 'ngx-vflow';
|
|
57
57
|
import { OwlMomentDateTimeModule } from '@danielmoncada/angular-datetime-picker-moment-adapter';
|
|
58
58
|
|
|
@@ -257,7 +257,7 @@ class FxUtils {
|
|
|
257
257
|
return this.isNull(obj) || obj.length === 0;
|
|
258
258
|
}
|
|
259
259
|
static isArrayNotEmpty(obj) {
|
|
260
|
-
return !
|
|
260
|
+
return !this.isArrayEmpty(obj);
|
|
261
261
|
}
|
|
262
262
|
static replaceStartWithAsterisk(inputString, numToReplace) {
|
|
263
263
|
if (numToReplace >= inputString.length) {
|
|
@@ -317,6 +317,7 @@ class FxUtils {
|
|
|
317
317
|
case 'failed':
|
|
318
318
|
case 'inactive':
|
|
319
319
|
case 'critical':
|
|
320
|
+
case 'stopped':
|
|
320
321
|
return 'critical';
|
|
321
322
|
case 'high':
|
|
322
323
|
if (isCriticalExist) {
|
|
@@ -327,13 +328,16 @@ class FxUtils {
|
|
|
327
328
|
case 'processing':
|
|
328
329
|
case 'paused':
|
|
329
330
|
case 'medium':
|
|
331
|
+
case 'warning':
|
|
330
332
|
return 'warning';
|
|
331
333
|
case 'completed':
|
|
332
334
|
case 'success':
|
|
333
335
|
case 'active':
|
|
334
336
|
case 'low':
|
|
337
|
+
case 'running':
|
|
335
338
|
return 'success';
|
|
336
339
|
case 'queue':
|
|
340
|
+
case 'waiting':
|
|
337
341
|
case 'info':
|
|
338
342
|
return 'information';
|
|
339
343
|
case 'discovery':
|
|
@@ -352,6 +356,24 @@ class FxUtils {
|
|
|
352
356
|
const regex = /^(?=.{6,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9]).*$/;
|
|
353
357
|
return regex.test(password);
|
|
354
358
|
}
|
|
359
|
+
static formatSizeUnits(bytes) {
|
|
360
|
+
if (bytes >= 1073741824) {
|
|
361
|
+
return (bytes / 1073741824).toFixed(2) + " GB";
|
|
362
|
+
}
|
|
363
|
+
else if (bytes >= 1048576) {
|
|
364
|
+
return (bytes / 1048576).toFixed(2) + " MB";
|
|
365
|
+
}
|
|
366
|
+
else if (bytes >= 1024) {
|
|
367
|
+
return (bytes / 1024).toFixed(2) + " KB";
|
|
368
|
+
}
|
|
369
|
+
else if (bytes > 1) {
|
|
370
|
+
return bytes + " bytes";
|
|
371
|
+
}
|
|
372
|
+
else if (bytes == 1) {
|
|
373
|
+
return bytes + " byte";
|
|
374
|
+
}
|
|
375
|
+
return "0 bytes";
|
|
376
|
+
}
|
|
355
377
|
}
|
|
356
378
|
|
|
357
379
|
class HttpWrapper {
|
|
@@ -451,6 +473,7 @@ class BaseTableComponent extends BaseComponent {
|
|
|
451
473
|
toastr;
|
|
452
474
|
_lock = false;
|
|
453
475
|
keywordChange$ = new Subject();
|
|
476
|
+
dataSourcePlaceholder;
|
|
454
477
|
config;
|
|
455
478
|
paginator;
|
|
456
479
|
table;
|
|
@@ -465,10 +488,16 @@ class BaseTableComponent extends BaseComponent {
|
|
|
465
488
|
this.keywordChange$.pipe(debounceTime(300)).subscribe(async (keyword) => {
|
|
466
489
|
await this.refresh();
|
|
467
490
|
});
|
|
491
|
+
this.dataSourcePlaceholder = Array(this.pageSize).fill({});
|
|
468
492
|
this.init();
|
|
469
493
|
}
|
|
470
494
|
init() { }
|
|
471
495
|
ngAfterViewInit() {
|
|
496
|
+
if (this.paginator && this.paginator.page) {
|
|
497
|
+
this.paginator.page.subscribe(event => {
|
|
498
|
+
this.onPageChange(event);
|
|
499
|
+
});
|
|
500
|
+
}
|
|
472
501
|
this.ref.detectChanges();
|
|
473
502
|
}
|
|
474
503
|
async refresh() {
|
|
@@ -482,7 +511,7 @@ class BaseTableComponent extends BaseComponent {
|
|
|
482
511
|
async fetch() {
|
|
483
512
|
this.loading = true;
|
|
484
513
|
try {
|
|
485
|
-
const params = { page: this.page + 1, pageSize: this.pageSize, ...this.filters };
|
|
514
|
+
const params = { page: (this.page ?? 0) + 1, pageSize: this.pageSize, ...this.filters };
|
|
486
515
|
const result = await this.api.search(params);
|
|
487
516
|
this.setDataSource(result);
|
|
488
517
|
}
|
|
@@ -654,8 +683,14 @@ class BaseTableComponent extends BaseComponent {
|
|
|
654
683
|
throw err;
|
|
655
684
|
}
|
|
656
685
|
}
|
|
657
|
-
|
|
658
|
-
return
|
|
686
|
+
tagClass(tag) {
|
|
687
|
+
return FxUtils.getTagClass(tag);
|
|
688
|
+
}
|
|
689
|
+
capitalize(label) {
|
|
690
|
+
return _.capitalize(label);
|
|
691
|
+
}
|
|
692
|
+
value(model, key, defaultValue) {
|
|
693
|
+
return _.get(model, key, defaultValue);
|
|
659
694
|
}
|
|
660
695
|
toggleExpand(element) {
|
|
661
696
|
this.expandedElement = this.expandedElement === element ? null : element;
|
|
@@ -1308,18 +1343,31 @@ class ChartComponent {
|
|
|
1308
1343
|
palette;
|
|
1309
1344
|
height = '400px';
|
|
1310
1345
|
loading = false;
|
|
1346
|
+
pieLegendAlign = '10%';
|
|
1347
|
+
pieLegendPosition = 'middle';
|
|
1348
|
+
showPieLabel = true;
|
|
1349
|
+
labelFontFamily = 'BeVietnamPro';
|
|
1311
1350
|
chartClick = new EventEmitter();
|
|
1312
1351
|
chartInit = new EventEmitter();
|
|
1313
1352
|
labelFontSize = 12;
|
|
1314
|
-
|
|
1353
|
+
canInit = false;
|
|
1315
1354
|
chartOptions = {};
|
|
1316
1355
|
chartInstance;
|
|
1317
1356
|
resizeObserver;
|
|
1357
|
+
intersectionObserver;
|
|
1318
1358
|
constructor(ref, cdr) {
|
|
1319
1359
|
this.ref = ref;
|
|
1320
1360
|
this.cdr = cdr;
|
|
1321
1361
|
}
|
|
1322
1362
|
ngAfterViewInit() {
|
|
1363
|
+
this.intersectionObserver = new IntersectionObserver(([entry]) => {
|
|
1364
|
+
if (entry.isIntersecting && !this.canInit) {
|
|
1365
|
+
this.canInit = true;
|
|
1366
|
+
this.rebuildChart();
|
|
1367
|
+
this.cdr.detectChanges();
|
|
1368
|
+
}
|
|
1369
|
+
}, { threshold: 0.1 });
|
|
1370
|
+
this.intersectionObserver.observe(this.ref.nativeElement);
|
|
1323
1371
|
this.resizeObserver = new ResizeObserver(() => {
|
|
1324
1372
|
if (this.chartInstance)
|
|
1325
1373
|
this.chartInstance.resize();
|
|
@@ -1327,11 +1375,13 @@ class ChartComponent {
|
|
|
1327
1375
|
this.resizeObserver.observe(this.ref.nativeElement);
|
|
1328
1376
|
}
|
|
1329
1377
|
ngOnDestroy() {
|
|
1330
|
-
|
|
1331
|
-
|
|
1378
|
+
this.resizeObserver?.disconnect();
|
|
1379
|
+
this.intersectionObserver?.disconnect();
|
|
1332
1380
|
}
|
|
1333
1381
|
ngOnChanges() {
|
|
1334
|
-
this.
|
|
1382
|
+
if (this.canInit) {
|
|
1383
|
+
this.rebuildChart();
|
|
1384
|
+
}
|
|
1335
1385
|
}
|
|
1336
1386
|
onThemeChange() {
|
|
1337
1387
|
requestAnimationFrame(() => {
|
|
@@ -1344,8 +1394,7 @@ class ChartComponent {
|
|
|
1344
1394
|
onChartInit(chart) {
|
|
1345
1395
|
this.chartInstance = chart;
|
|
1346
1396
|
this.chartInit.emit(chart);
|
|
1347
|
-
requestAnimationFrame(() =>
|
|
1348
|
-
setTimeout(() => this.chartInstance?.resize(), 100);
|
|
1397
|
+
requestAnimationFrame(() => chart.resize());
|
|
1349
1398
|
}
|
|
1350
1399
|
rebuildChart() {
|
|
1351
1400
|
this.chartOptions = this.buildOptions();
|
|
@@ -1369,9 +1418,13 @@ class ChartComponent {
|
|
|
1369
1418
|
type: 'category',
|
|
1370
1419
|
data: data?.categories || [],
|
|
1371
1420
|
axisLabel: {
|
|
1421
|
+
interval: 0,
|
|
1372
1422
|
fontFamily: this.labelFontFamily,
|
|
1373
1423
|
fontSize: this.labelFontSize,
|
|
1374
1424
|
color: FxUtils.convertColorFromVariable('--text-secondary'),
|
|
1425
|
+
width: 80,
|
|
1426
|
+
overflow: 'truncate',
|
|
1427
|
+
ellipsis: '…',
|
|
1375
1428
|
},
|
|
1376
1429
|
axisLine: {
|
|
1377
1430
|
lineStyle: { color: FxUtils.convertColorFromVariable('--border-strong') },
|
|
@@ -1395,6 +1448,12 @@ class ChartComponent {
|
|
|
1395
1448
|
series: [
|
|
1396
1449
|
{
|
|
1397
1450
|
type: 'bar',
|
|
1451
|
+
itemStyle: {
|
|
1452
|
+
color: (params) => {
|
|
1453
|
+
const palette = colors || [];
|
|
1454
|
+
return palette[params.dataIndex % palette.length];
|
|
1455
|
+
},
|
|
1456
|
+
},
|
|
1398
1457
|
data: data?.values || [],
|
|
1399
1458
|
label: {
|
|
1400
1459
|
show: true,
|
|
@@ -1409,58 +1468,88 @@ class ChartComponent {
|
|
|
1409
1468
|
},
|
|
1410
1469
|
],
|
|
1411
1470
|
}),
|
|
1412
|
-
pie: (data, colors) =>
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
series: [
|
|
1430
|
-
{
|
|
1431
|
-
type: 'pie',
|
|
1432
|
-
radius: ['40%', '70%'],
|
|
1433
|
-
avoidLabelOverlap: true,
|
|
1434
|
-
data,
|
|
1435
|
-
label: {
|
|
1436
|
-
//{a} Series name
|
|
1437
|
-
//{b} Data name (slice label)
|
|
1438
|
-
//{c} Data value
|
|
1439
|
-
//{d} Percentage
|
|
1440
|
-
formatter: '{b}: {c}',
|
|
1441
|
-
fontSize: this.labelFontSize,
|
|
1471
|
+
pie: (data, colors) => {
|
|
1472
|
+
const total = data.reduce((sum, d) => sum + d.value, 0);
|
|
1473
|
+
return {
|
|
1474
|
+
color: colors,
|
|
1475
|
+
tooltip: { trigger: 'item' },
|
|
1476
|
+
legend: {
|
|
1477
|
+
orient: 'vertical',
|
|
1478
|
+
right: this.pieLegendAlign,
|
|
1479
|
+
top: this.pieLegendPosition,
|
|
1480
|
+
icon: 'circle',
|
|
1481
|
+
align: 'left',
|
|
1482
|
+
itemGap: 12,
|
|
1483
|
+
formatter: (name) => {
|
|
1484
|
+
const item = data.find((d) => d.name === name);
|
|
1485
|
+
return item ? `${name}: ${item.value}` : name;
|
|
1486
|
+
},
|
|
1487
|
+
textStyle: {
|
|
1442
1488
|
fontFamily: this.labelFontFamily,
|
|
1489
|
+
fontSize: 13,
|
|
1490
|
+
fontWeight: 500,
|
|
1443
1491
|
color: FxUtils.convertColorFromVariable('--text-primary'),
|
|
1444
|
-
textBorderWidth: 0,
|
|
1445
|
-
textBorderColor: 'transparent',
|
|
1446
1492
|
},
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1493
|
+
},
|
|
1494
|
+
series: [
|
|
1495
|
+
{
|
|
1496
|
+
type: 'pie',
|
|
1497
|
+
radius: ['40%', '70%'],
|
|
1498
|
+
center: ['40%', '50%'],
|
|
1499
|
+
avoidLabelOverlap: true,
|
|
1500
|
+
data,
|
|
1501
|
+
label: {
|
|
1502
|
+
//{a} Series name
|
|
1503
|
+
//{b} Data name (slice label)
|
|
1504
|
+
//{c} Data value
|
|
1505
|
+
//{d} Percentage
|
|
1506
|
+
position: 'outside',
|
|
1507
|
+
formatter: '{d}%',
|
|
1508
|
+
fontSize: this.labelFontSize,
|
|
1509
|
+
fontFamily: this.labelFontFamily,
|
|
1510
|
+
color: FxUtils.convertColorFromVariable('--text-primary'),
|
|
1511
|
+
textBorderWidth: 0,
|
|
1512
|
+
textBorderColor: 'transparent',
|
|
1513
|
+
},
|
|
1514
|
+
labelLine: {
|
|
1515
|
+
show: this.showPieLabel,
|
|
1516
|
+
length: 12,
|
|
1517
|
+
length2: 12,
|
|
1518
|
+
},
|
|
1519
|
+
itemStyle: {
|
|
1520
|
+
borderWidth: 0,
|
|
1521
|
+
},
|
|
1522
|
+
emphasis: {
|
|
1523
|
+
scale: true,
|
|
1524
|
+
scaleSize: 10,
|
|
1525
|
+
itemStyle: { borderWidth: 0 },
|
|
1526
|
+
label: { textBorderWidth: 0 },
|
|
1527
|
+
},
|
|
1460
1528
|
},
|
|
1529
|
+
],
|
|
1530
|
+
graphic: {
|
|
1531
|
+
type: 'group',
|
|
1532
|
+
left: '40%',
|
|
1533
|
+
top: '50%',
|
|
1534
|
+
bounding: 'raw',
|
|
1535
|
+
children: [
|
|
1536
|
+
{
|
|
1537
|
+
type: 'text',
|
|
1538
|
+
style: {
|
|
1539
|
+
text: total.toString(),
|
|
1540
|
+
fontSize: 24,
|
|
1541
|
+
fontWeight: 600,
|
|
1542
|
+
fontFamily: this.labelFontFamily,
|
|
1543
|
+
fill: FxUtils.convertColorFromVariable('--text-primary'),
|
|
1544
|
+
align: 'center',
|
|
1545
|
+
verticalAlign: 'middle',
|
|
1546
|
+
},
|
|
1547
|
+
y: 0,
|
|
1548
|
+
},
|
|
1549
|
+
],
|
|
1461
1550
|
},
|
|
1462
|
-
|
|
1463
|
-
}
|
|
1551
|
+
};
|
|
1552
|
+
},
|
|
1464
1553
|
sunburst: (data, colors) => ({
|
|
1465
1554
|
color: colors,
|
|
1466
1555
|
series: [
|
|
@@ -1542,11 +1631,11 @@ class ChartComponent {
|
|
|
1542
1631
|
});
|
|
1543
1632
|
}
|
|
1544
1633
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ChartComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
1545
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: ChartComponent, isStandalone: false, selector: "fx-ui-chart", inputs: { type: "type", data: "data", options: "options", palette: "palette", height: "height", loading: "loading" }, outputs: { chartClick: "chartClick", chartInit: "chartInit" }, host: { listeners: { "window:theme-changed": "onThemeChange()" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <div\n
|
|
1634
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: ChartComponent, isStandalone: false, selector: "fx-ui-chart", inputs: { type: "type", data: "data", options: "options", palette: "palette", height: "height", loading: "loading", pieLegendAlign: "pieLegendAlign", pieLegendPosition: "pieLegendPosition", showPieLabel: "showPieLabel", labelFontFamily: "labelFontFamily" }, outputs: { chartClick: "chartClick", chartInit: "chartInit" }, host: { listeners: { "window:theme-changed": "onThemeChange()" } }, usesOnChanges: true, ngImport: i0, template: "<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <ng-container *ngIf=\"canInit\">\n <div\n echarts\n [options]=\"chartOptions\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n class=\"w-full h-full\">\n </div>\n </ng-container>\n\n <div class=\"chart-loader\" *ngIf=\"loading\">\n <span class=\"txt-default\">Loading...</span>\n </div>\n</div>\n", styles: [":host{display:block;width:100%}.chart-wrapper{position:relative;width:100%;height:100%}.chart-container{width:100%;height:100%}.chart-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(var(--bg-primary-hover)/.6);font-weight:500;font-size:1.1rem;z-index:2;border-radius:4px}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2$3.NgxEchartsDirective, selector: "echarts, [echarts]", inputs: ["options", "theme", "initOpts", "merge", "autoResize", "loading", "loadingType", "loadingOpts"], outputs: ["chartInit", "optionsError", "chartClick", "chartDblClick", "chartMouseDown", "chartMouseMove", "chartMouseUp", "chartMouseOver", "chartMouseOut", "chartGlobalOut", "chartContextMenu", "chartHighlight", "chartDownplay", "chartSelectChanged", "chartLegendSelectChanged", "chartLegendSelected", "chartLegendUnselected", "chartLegendLegendSelectAll", "chartLegendLegendInverseSelect", "chartLegendScroll", "chartDataZoom", "chartDataRangeSelected", "chartGraphRoam", "chartGeoRoam", "chartTreeRoam", "chartTimelineChanged", "chartTimelinePlayChanged", "chartRestore", "chartDataViewChanged", "chartMagicTypeChanged", "chartGeoSelectChanged", "chartGeoSelected", "chartGeoUnselected", "chartAxisAreaSelected", "chartBrush", "chartBrushEnd", "chartBrushSelected", "chartGlobalCursorTaken", "chartRendered", "chartFinished"], exportAs: ["echarts"] }] });
|
|
1546
1635
|
}
|
|
1547
1636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ChartComponent, decorators: [{
|
|
1548
1637
|
type: Component,
|
|
1549
|
-
args: [{ selector: 'fx-ui-chart', standalone: false, template: "<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <div\n
|
|
1638
|
+
args: [{ selector: 'fx-ui-chart', standalone: false, template: "<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <ng-container *ngIf=\"canInit\">\n <div\n echarts\n [options]=\"chartOptions\"\n (chartInit)=\"onChartInit($event)\"\n (chartClick)=\"onChartClick($event)\"\n class=\"w-full h-full\">\n </div>\n </ng-container>\n\n <div class=\"chart-loader\" *ngIf=\"loading\">\n <span class=\"txt-default\">Loading...</span>\n </div>\n</div>\n", styles: [":host{display:block;width:100%}.chart-wrapper{position:relative;width:100%;height:100%}.chart-container{width:100%;height:100%}.chart-loader{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(var(--bg-primary-hover)/.6);font-weight:500;font-size:1.1rem;z-index:2;border-radius:4px}\n"] }]
|
|
1550
1639
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { type: [{
|
|
1551
1640
|
type: Input
|
|
1552
1641
|
}], data: [{
|
|
@@ -1559,6 +1648,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
1559
1648
|
type: Input
|
|
1560
1649
|
}], loading: [{
|
|
1561
1650
|
type: Input
|
|
1651
|
+
}], pieLegendAlign: [{
|
|
1652
|
+
type: Input
|
|
1653
|
+
}], pieLegendPosition: [{
|
|
1654
|
+
type: Input
|
|
1655
|
+
}], showPieLabel: [{
|
|
1656
|
+
type: Input
|
|
1657
|
+
}], labelFontFamily: [{
|
|
1658
|
+
type: Input
|
|
1562
1659
|
}], chartClick: [{
|
|
1563
1660
|
type: Output
|
|
1564
1661
|
}], chartInit: [{
|
|
@@ -1917,7 +2014,7 @@ class FlowConnection {
|
|
|
1917
2014
|
];
|
|
1918
2015
|
}
|
|
1919
2016
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FlowConnection, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1920
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: FlowConnection, isStandalone: false, selector: "fx-ui-flow-connection", inputs: { nodes: "nodes", edges: "edges", backgroundColor: "backgroundColor", view: "view" }, ngImport: i0, template: "<vflow\n [background]=\"{\n type: 'solid',\n color: `rgba(var(${backgroundColor})`\n}\"\n [nodes]=\"nodes\"\n [edges]=\"edges\"\n (onConnect)=\"handleConnection($event)\"\n [view]=\"view\"\n/>\n", styles: [""], dependencies: [{ kind: "component", type:
|
|
2017
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.4", type: FlowConnection, isStandalone: false, selector: "fx-ui-flow-connection", inputs: { nodes: "nodes", edges: "edges", backgroundColor: "backgroundColor", view: "view" }, ngImport: i0, template: "<vflow\n [background]=\"{\n type: 'solid',\n color: `rgba(var(${backgroundColor})`\n}\"\n [nodes]=\"nodes\"\n [edges]=\"edges\"\n (onConnect)=\"handleConnection($event)\"\n [view]=\"view\"\n/>\n", styles: [""], dependencies: [{ kind: "component", type: i27.VflowComponent, selector: "vflow", inputs: ["view", "minZoom", "maxZoom", "background", "optimization", "entitiesSelectable", "keyboardShortcuts", "connection", "snapGrid", "elevateNodesOnSelect", "elevateEdgesOnSelect", "nodes", "alignmentHelper", "edges"], outputs: ["onComponentNodeEvent"] }, { kind: "directive", type: i27.ConnectionControllerDirective, selector: "[onConnect], [onReconnect]", outputs: ["onConnect", "onReconnect"] }] });
|
|
1921
2018
|
}
|
|
1922
2019
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FlowConnection, decorators: [{
|
|
1923
2020
|
type: Component,
|
|
@@ -2695,17 +2792,34 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2695
2792
|
args: ['window:resize']
|
|
2696
2793
|
}] } });
|
|
2697
2794
|
|
|
2795
|
+
class TableCell {
|
|
2796
|
+
loading;
|
|
2797
|
+
skeletonClass = 'h-4 w-full';
|
|
2798
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2799
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: TableCell, isStandalone: false, selector: "fx-ui-table-cell", inputs: { loading: "loading", skeletonClass: "skeletonClass" }, ngImport: i0, template: "@if (!loading) {\n <div animate.enter=\"fade-in-animation\" class=\"inline-block my-normal\">\n <ng-content />\n </div>\n} @else {\n <div animate.enter=\"fade-in-animation\" class=\"skeleton-load my-semi\" [class]=\"skeletonClass\"></div>\n}\n", styles: [""] });
|
|
2800
|
+
}
|
|
2801
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TableCell, decorators: [{
|
|
2802
|
+
type: Component,
|
|
2803
|
+
args: [{ selector: 'fx-ui-table-cell', standalone: false, template: "@if (!loading) {\n <div animate.enter=\"fade-in-animation\" class=\"inline-block my-normal\">\n <ng-content />\n </div>\n} @else {\n <div animate.enter=\"fade-in-animation\" class=\"skeleton-load my-semi\" [class]=\"skeletonClass\"></div>\n}\n" }]
|
|
2804
|
+
}], propDecorators: { loading: [{
|
|
2805
|
+
type: Input,
|
|
2806
|
+
args: [{ required: true }]
|
|
2807
|
+
}], skeletonClass: [{
|
|
2808
|
+
type: Input
|
|
2809
|
+
}] } });
|
|
2810
|
+
|
|
2698
2811
|
class TagComponent {
|
|
2699
2812
|
label;
|
|
2700
2813
|
type = 'default';
|
|
2701
2814
|
rounded = true;
|
|
2702
2815
|
icon;
|
|
2816
|
+
solid = false;
|
|
2703
2817
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TagComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2704
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: TagComponent, isStandalone: false, selector: "fx-ui-tag", inputs: { label: "label", type: "type", rounded: "rounded", icon: "icon" }, ngImport: i0, template: "<div\n class=\"flex flex-row gap-
|
|
2818
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.4", type: TagComponent, isStandalone: false, selector: "fx-ui-tag", inputs: { label: "label", type: "type", rounded: "rounded", icon: "icon", solid: "solid" }, ngImport: i0, template: "<div\n [class]=\"`flex flex-row gap-small ${rounded ? 'tag-round' : 'tag-square'} tag-${type}${solid ? '-solid' : ''}`\"\n>\n @if(icon){\n <fx-ui-hero-icon\n [class]=\"`flex txt-tag-${type} ${solid ? 'text-white': ''}`\"\n [icon]=\"icon\"\n [size]=\"18\"\n ></fx-ui-hero-icon>\n }\n\n <div [class]=\"`txt-tag-${type} ${solid ? 'text-white': ''}`\">\n {{ label }}\n </div>\n</div>\n", styles: [""], dependencies: [{ kind: "component", type: HeroIconComponent, selector: "fx-ui-hero-icon", inputs: ["icon", "solid", "outline", "size", "color", "class"] }] });
|
|
2705
2819
|
}
|
|
2706
2820
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TagComponent, decorators: [{
|
|
2707
2821
|
type: Component,
|
|
2708
|
-
args: [{ selector: 'fx-ui-tag', standalone: false, template: "<div\n class=\"flex flex-row gap-
|
|
2822
|
+
args: [{ selector: 'fx-ui-tag', standalone: false, template: "<div\n [class]=\"`flex flex-row gap-small ${rounded ? 'tag-round' : 'tag-square'} tag-${type}${solid ? '-solid' : ''}`\"\n>\n @if(icon){\n <fx-ui-hero-icon\n [class]=\"`flex txt-tag-${type} ${solid ? 'text-white': ''}`\"\n [icon]=\"icon\"\n [size]=\"18\"\n ></fx-ui-hero-icon>\n }\n\n <div [class]=\"`txt-tag-${type} ${solid ? 'text-white': ''}`\">\n {{ label }}\n </div>\n</div>\n" }]
|
|
2709
2823
|
}], propDecorators: { label: [{
|
|
2710
2824
|
type: Input
|
|
2711
2825
|
}], type: [{
|
|
@@ -2714,6 +2828,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2714
2828
|
type: Input
|
|
2715
2829
|
}], icon: [{
|
|
2716
2830
|
type: Input
|
|
2831
|
+
}], solid: [{
|
|
2832
|
+
type: Input
|
|
2717
2833
|
}] } });
|
|
2718
2834
|
|
|
2719
2835
|
class TreeDiagram {
|
|
@@ -2844,6 +2960,7 @@ const FX_COMPONENTS = [
|
|
|
2844
2960
|
FlowConnection,
|
|
2845
2961
|
CircleProgressBar,
|
|
2846
2962
|
TreeDiagram,
|
|
2963
|
+
TableCell,
|
|
2847
2964
|
];
|
|
2848
2965
|
|
|
2849
2966
|
class ConfirmationDialogComponent {
|
|
@@ -2899,7 +3016,7 @@ const MY_MOMENT_FORMATS = {
|
|
|
2899
3016
|
};
|
|
2900
3017
|
class UiModule {
|
|
2901
3018
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2902
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: UiModule, declarations: [InputComponent, SelectComponent, RadioButtonComponent, CheckboxComponent, DndUploadComponent, ButtonComponent, RadioButtonToggleComponent, DatetimePicker, LoadingPanel, SearchBarComponent, TabGroupComponent, TabComponent, HeroIconComponent, ToastComponent, ToastContainerComponent, TagComponent, ChartComponent, SliderComponent, SwitchComponent, RichTextAreaComponent, SkeletonTableLoadingComponent, FlowConnection, CircleProgressBar, TreeDiagram, ConfirmationDialogComponent], imports: [CommonModule,
|
|
3019
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.4", ngImport: i0, type: UiModule, declarations: [InputComponent, SelectComponent, RadioButtonComponent, CheckboxComponent, DndUploadComponent, ButtonComponent, RadioButtonToggleComponent, DatetimePicker, LoadingPanel, SearchBarComponent, TabGroupComponent, TabComponent, HeroIconComponent, ToastComponent, ToastContainerComponent, TagComponent, ChartComponent, SliderComponent, SwitchComponent, RichTextAreaComponent, SkeletonTableLoadingComponent, FlowConnection, CircleProgressBar, TreeDiagram, TableCell, ConfirmationDialogComponent], imports: [CommonModule,
|
|
2903
3020
|
FormsModule,
|
|
2904
3021
|
ReactiveFormsModule,
|
|
2905
3022
|
OwlDateTimeModule,
|
|
@@ -2907,14 +3024,14 @@ class UiModule {
|
|
|
2907
3024
|
OwlMomentDateTimeModule,
|
|
2908
3025
|
HasPermissionDirective,
|
|
2909
3026
|
TrimOnBlurDirective,
|
|
2910
|
-
NgHeroiconsModule,
|
|
3027
|
+
NgHeroiconsModule, i27.VflowComponent, i27.HandleComponent, i27.ResizableComponent, i27.SelectableDirective, i27.MiniMapComponent, i27.NodeToolbarComponent, i27.CustomTemplateEdgeComponent, i27.DragHandleDirective, i27.ConnectionControllerDirective, i27.NodeHtmlTemplateDirective, i27.NodeSvgTemplateDirective, i27.GroupNodeTemplateDirective, i27.EdgeLabelHtmlTemplateDirective, i27.EdgeTemplateDirective, i27.ConnectionTemplateDirective, i27.HandleTemplateDirective, i2$3.NgxEchartsModule, i3$1.MatSelectModule, i30.MatRadioModule, i31.MatButtonModule, i32.MatIconModule, i33.MatPaginatorModule, i34.MatTableModule, i35.MatSnackBarModule, i1$1.MatDialogModule, i37.MatCheckboxModule, i38.MatCardModule, i39.MatDatepickerModule, i40.MatTimepickerModule, i41.MatBadgeModule, i42.MatExpansionModule, i43.MatFormFieldModule, i44.MatMenuModule], exports: [InputComponent, SelectComponent, RadioButtonComponent, CheckboxComponent, DndUploadComponent, ButtonComponent, RadioButtonToggleComponent, DatetimePicker, LoadingPanel, SearchBarComponent, TabGroupComponent, TabComponent, HeroIconComponent, ToastComponent, ToastContainerComponent, TagComponent, ChartComponent, SliderComponent, SwitchComponent, RichTextAreaComponent, SkeletonTableLoadingComponent, FlowConnection, CircleProgressBar, TreeDiagram, TableCell, ConfirmationDialogComponent,
|
|
2911
3028
|
// Module
|
|
2912
3029
|
FormsModule,
|
|
2913
3030
|
ReactiveFormsModule,
|
|
2914
3031
|
OwlDateTimeModule,
|
|
2915
3032
|
OwlNativeDateTimeModule,
|
|
2916
3033
|
HasPermissionDirective,
|
|
2917
|
-
NgHeroiconsModule, i3$1.MatSelectModule,
|
|
3034
|
+
NgHeroiconsModule, i3$1.MatSelectModule, i30.MatRadioModule, i31.MatButtonModule, i32.MatIconModule, i33.MatPaginatorModule, i34.MatTableModule, i35.MatSnackBarModule, i1$1.MatDialogModule, i37.MatCheckboxModule, i38.MatCardModule, i39.MatDatepickerModule, i40.MatTimepickerModule, i41.MatBadgeModule, i42.MatExpansionModule, i43.MatFormFieldModule, i44.MatMenuModule] });
|
|
2918
3035
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, providers: [
|
|
2919
3036
|
importProvidersFrom(NgHeroiconsModule.forRoot()),
|
|
2920
3037
|
{ provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS },
|
|
@@ -2924,13 +3041,13 @@ class UiModule {
|
|
|
2924
3041
|
OwlDateTimeModule,
|
|
2925
3042
|
OwlNativeDateTimeModule,
|
|
2926
3043
|
OwlMomentDateTimeModule,
|
|
2927
|
-
NgHeroiconsModule,
|
|
3044
|
+
NgHeroiconsModule, i27.VflowComponent, i27.HandleComponent, i27.ResizableComponent, i27.MiniMapComponent, i27.NodeToolbarComponent, i27.CustomTemplateEdgeComponent, NgxEchartsModule.forRoot({ echarts: () => import('echarts') }), MATERIAL_MODULE,
|
|
2928
3045
|
// Module
|
|
2929
3046
|
FormsModule,
|
|
2930
3047
|
ReactiveFormsModule,
|
|
2931
3048
|
OwlDateTimeModule,
|
|
2932
3049
|
OwlNativeDateTimeModule,
|
|
2933
|
-
NgHeroiconsModule, i3$1.MatSelectModule,
|
|
3050
|
+
NgHeroiconsModule, i3$1.MatSelectModule, i30.MatRadioModule, i31.MatButtonModule, i32.MatIconModule, i33.MatPaginatorModule, i34.MatTableModule, i35.MatSnackBarModule, i1$1.MatDialogModule, i37.MatCheckboxModule, i38.MatCardModule, i39.MatDatepickerModule, i40.MatTimepickerModule, i41.MatBadgeModule, i42.MatExpansionModule, i43.MatFormFieldModule, i44.MatMenuModule] });
|
|
2934
3051
|
}
|
|
2935
3052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, decorators: [{
|
|
2936
3053
|
type: NgModule,
|
|
@@ -2978,5 +3095,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2978
3095
|
* Generated bundle index. Do not edit.
|
|
2979
3096
|
*/
|
|
2980
3097
|
|
|
2981
|
-
export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, ChartComponent, CheckboxComponent, CircleProgressBar, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, FlowConnection, FxLoadingService, FxStorageService, FxToastrService, FxUtils, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InputComponent, LoadingPanel, MY_MOMENT_FORMATS, PermissionGuard, PermissionService, QuillStyleLoaderService, RadioButtonComponent, RadioButtonToggleComponent, RichTextAreaComponent, SearchBarComponent, SelectComponent, SkeletonTableLoadingComponent, SliderComponent, SwitchComponent, TabComponent, TabGroupComponent, TagComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule };
|
|
3098
|
+
export { AuthInterceptor, AuthStateService, BaseComponent, BaseDialogComponent, BaseResolver, BaseTableComponent, BreadcrumbService, ButtonComponent, ChartComponent, CheckboxComponent, CircleProgressBar, ConfirmationDialogComponent, DatetimePicker, DndUploadComponent, FlowConnection, FxLoadingService, FxStorageService, FxToastrService, FxUtils, HasPermissionDirective, HeroIconComponent, HttpLoaderFactory, HttpWrapper, InputComponent, LoadingPanel, MY_MOMENT_FORMATS, PermissionGuard, PermissionService, QuillStyleLoaderService, RadioButtonComponent, RadioButtonToggleComponent, RichTextAreaComponent, SearchBarComponent, SelectComponent, SkeletonTableLoadingComponent, SliderComponent, SwitchComponent, TabComponent, TabGroupComponent, TableCell, TagComponent, ThemeService, ToastComponent, ToastContainerComponent, TranslationModule, TranslationService, TreeDiagram, TrimOnBlurDirective, UiModule };
|
|
2982
3099
|
//# sourceMappingURL=fxlt-common-ui.mjs.map
|