@fxlt/common-ui 0.0.4 → 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 +6 -20
- package/fesm2022/fxlt-common-ui.mjs +191 -81
- package/fesm2022/fxlt-common-ui.mjs.map +1 -1
- package/index.d.ts +45 -28
- package/package.json +1 -1
- package/src/lib/styles/animations.css +15 -0
- package/src/lib/styles/components.css +6 -20
- package/src/lib/styles/theme.css +1 -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/theme.css +1 -1
package/animations.css
CHANGED
|
@@ -113,3 +113,18 @@
|
|
|
113
113
|
.fade-out-animation {
|
|
114
114
|
animation: fade-out 0.4s ease-out forwards;
|
|
115
115
|
}
|
|
116
|
+
|
|
117
|
+
@keyframes pulse-glow {
|
|
118
|
+
0%,
|
|
119
|
+
100% {
|
|
120
|
+
opacity: 1;
|
|
121
|
+
filter: brightness(1);
|
|
122
|
+
}
|
|
123
|
+
50% {
|
|
124
|
+
opacity: 0.7;
|
|
125
|
+
filter: brightness(1.4);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
.animate-pulse-glow {
|
|
129
|
+
animation: pulse-glow 3s ease-in-out infinite;
|
|
130
|
+
}
|
package/components.css
CHANGED
|
@@ -104,10 +104,6 @@
|
|
|
104
104
|
.mdc-data-table__cell {
|
|
105
105
|
border-left: 1px solid rgb(var(--border-default)) !important;
|
|
106
106
|
background-color: rgb(var(--bg-primary)) !important;
|
|
107
|
-
/* padding-top: 8px !important;
|
|
108
|
-
padding-bottom: 8px !important;
|
|
109
|
-
padding-left: 16px !important;
|
|
110
|
-
padding-right: 16px !important; */
|
|
111
107
|
font-family: 'BeVietnamPro';
|
|
112
108
|
}
|
|
113
109
|
|
|
@@ -413,25 +409,12 @@ input[type='password'] {
|
|
|
413
409
|
}
|
|
414
410
|
/* progress bar */
|
|
415
411
|
.progress-bar-container {
|
|
416
|
-
@apply bg-bg-hover mt-semi rounded-
|
|
412
|
+
@apply bg-bg-hover mt-semi rounded-md h-1.5 overflow-hidden shadow-inner;
|
|
417
413
|
}
|
|
418
414
|
.progress-bar-buffer {
|
|
419
|
-
@apply h-1.5 bg-primary rounded-
|
|
420
|
-
}
|
|
421
|
-
@keyframes pulse-glow {
|
|
422
|
-
0%,
|
|
423
|
-
100% {
|
|
424
|
-
opacity: 1;
|
|
425
|
-
filter: brightness(1);
|
|
426
|
-
}
|
|
427
|
-
50% {
|
|
428
|
-
opacity: 0.7;
|
|
429
|
-
filter: brightness(1.4);
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
.animate-pulse-glow {
|
|
433
|
-
animation: pulse-glow 3s ease-in-out infinite;
|
|
415
|
+
@apply h-1.5 bg-primary rounded-md transition-all duration-700 ease-in-out;
|
|
434
416
|
}
|
|
417
|
+
|
|
435
418
|
/* radio button */
|
|
436
419
|
.radio-container {
|
|
437
420
|
@apply w-large h-large flex items-center justify-center rounded-full border;
|
|
@@ -485,3 +468,6 @@ input[type='password'] {
|
|
|
485
468
|
rgb(var(--gradient-primary-end))
|
|
486
469
|
) border-box;
|
|
487
470
|
}
|
|
471
|
+
.skeleton-load {
|
|
472
|
+
@apply rounded bg-gray-200 animate-pulse motion-reduce:animate-none;
|
|
473
|
+
}
|
|
@@ -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) {
|
|
@@ -356,6 +356,24 @@ class FxUtils {
|
|
|
356
356
|
const regex = /^(?=.{6,}$)(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9]).*$/;
|
|
357
357
|
return regex.test(password);
|
|
358
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
|
+
}
|
|
359
377
|
}
|
|
360
378
|
|
|
361
379
|
class HttpWrapper {
|
|
@@ -455,6 +473,7 @@ class BaseTableComponent extends BaseComponent {
|
|
|
455
473
|
toastr;
|
|
456
474
|
_lock = false;
|
|
457
475
|
keywordChange$ = new Subject();
|
|
476
|
+
dataSourcePlaceholder;
|
|
458
477
|
config;
|
|
459
478
|
paginator;
|
|
460
479
|
table;
|
|
@@ -469,10 +488,16 @@ class BaseTableComponent extends BaseComponent {
|
|
|
469
488
|
this.keywordChange$.pipe(debounceTime(300)).subscribe(async (keyword) => {
|
|
470
489
|
await this.refresh();
|
|
471
490
|
});
|
|
491
|
+
this.dataSourcePlaceholder = Array(this.pageSize).fill({});
|
|
472
492
|
this.init();
|
|
473
493
|
}
|
|
474
494
|
init() { }
|
|
475
495
|
ngAfterViewInit() {
|
|
496
|
+
if (this.paginator && this.paginator.page) {
|
|
497
|
+
this.paginator.page.subscribe(event => {
|
|
498
|
+
this.onPageChange(event);
|
|
499
|
+
});
|
|
500
|
+
}
|
|
476
501
|
this.ref.detectChanges();
|
|
477
502
|
}
|
|
478
503
|
async refresh() {
|
|
@@ -486,7 +511,7 @@ class BaseTableComponent extends BaseComponent {
|
|
|
486
511
|
async fetch() {
|
|
487
512
|
this.loading = true;
|
|
488
513
|
try {
|
|
489
|
-
const params = { page: this.page + 1, pageSize: this.pageSize, ...this.filters };
|
|
514
|
+
const params = { page: (this.page ?? 0) + 1, pageSize: this.pageSize, ...this.filters };
|
|
490
515
|
const result = await this.api.search(params);
|
|
491
516
|
this.setDataSource(result);
|
|
492
517
|
}
|
|
@@ -658,8 +683,14 @@ class BaseTableComponent extends BaseComponent {
|
|
|
658
683
|
throw err;
|
|
659
684
|
}
|
|
660
685
|
}
|
|
661
|
-
|
|
662
|
-
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);
|
|
663
694
|
}
|
|
664
695
|
toggleExpand(element) {
|
|
665
696
|
this.expandedElement = this.expandedElement === element ? null : element;
|
|
@@ -1312,18 +1343,31 @@ class ChartComponent {
|
|
|
1312
1343
|
palette;
|
|
1313
1344
|
height = '400px';
|
|
1314
1345
|
loading = false;
|
|
1346
|
+
pieLegendAlign = '10%';
|
|
1347
|
+
pieLegendPosition = 'middle';
|
|
1348
|
+
showPieLabel = true;
|
|
1349
|
+
labelFontFamily = 'BeVietnamPro';
|
|
1315
1350
|
chartClick = new EventEmitter();
|
|
1316
1351
|
chartInit = new EventEmitter();
|
|
1317
1352
|
labelFontSize = 12;
|
|
1318
|
-
|
|
1353
|
+
canInit = false;
|
|
1319
1354
|
chartOptions = {};
|
|
1320
1355
|
chartInstance;
|
|
1321
1356
|
resizeObserver;
|
|
1357
|
+
intersectionObserver;
|
|
1322
1358
|
constructor(ref, cdr) {
|
|
1323
1359
|
this.ref = ref;
|
|
1324
1360
|
this.cdr = cdr;
|
|
1325
1361
|
}
|
|
1326
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);
|
|
1327
1371
|
this.resizeObserver = new ResizeObserver(() => {
|
|
1328
1372
|
if (this.chartInstance)
|
|
1329
1373
|
this.chartInstance.resize();
|
|
@@ -1331,11 +1375,13 @@ class ChartComponent {
|
|
|
1331
1375
|
this.resizeObserver.observe(this.ref.nativeElement);
|
|
1332
1376
|
}
|
|
1333
1377
|
ngOnDestroy() {
|
|
1334
|
-
|
|
1335
|
-
|
|
1378
|
+
this.resizeObserver?.disconnect();
|
|
1379
|
+
this.intersectionObserver?.disconnect();
|
|
1336
1380
|
}
|
|
1337
1381
|
ngOnChanges() {
|
|
1338
|
-
this.
|
|
1382
|
+
if (this.canInit) {
|
|
1383
|
+
this.rebuildChart();
|
|
1384
|
+
}
|
|
1339
1385
|
}
|
|
1340
1386
|
onThemeChange() {
|
|
1341
1387
|
requestAnimationFrame(() => {
|
|
@@ -1348,8 +1394,7 @@ class ChartComponent {
|
|
|
1348
1394
|
onChartInit(chart) {
|
|
1349
1395
|
this.chartInstance = chart;
|
|
1350
1396
|
this.chartInit.emit(chart);
|
|
1351
|
-
requestAnimationFrame(() =>
|
|
1352
|
-
setTimeout(() => this.chartInstance?.resize(), 100);
|
|
1397
|
+
requestAnimationFrame(() => chart.resize());
|
|
1353
1398
|
}
|
|
1354
1399
|
rebuildChart() {
|
|
1355
1400
|
this.chartOptions = this.buildOptions();
|
|
@@ -1373,9 +1418,13 @@ class ChartComponent {
|
|
|
1373
1418
|
type: 'category',
|
|
1374
1419
|
data: data?.categories || [],
|
|
1375
1420
|
axisLabel: {
|
|
1421
|
+
interval: 0,
|
|
1376
1422
|
fontFamily: this.labelFontFamily,
|
|
1377
1423
|
fontSize: this.labelFontSize,
|
|
1378
1424
|
color: FxUtils.convertColorFromVariable('--text-secondary'),
|
|
1425
|
+
width: 80,
|
|
1426
|
+
overflow: 'truncate',
|
|
1427
|
+
ellipsis: '…',
|
|
1379
1428
|
},
|
|
1380
1429
|
axisLine: {
|
|
1381
1430
|
lineStyle: { color: FxUtils.convertColorFromVariable('--border-strong') },
|
|
@@ -1399,6 +1448,12 @@ class ChartComponent {
|
|
|
1399
1448
|
series: [
|
|
1400
1449
|
{
|
|
1401
1450
|
type: 'bar',
|
|
1451
|
+
itemStyle: {
|
|
1452
|
+
color: (params) => {
|
|
1453
|
+
const palette = colors || [];
|
|
1454
|
+
return palette[params.dataIndex % palette.length];
|
|
1455
|
+
},
|
|
1456
|
+
},
|
|
1402
1457
|
data: data?.values || [],
|
|
1403
1458
|
label: {
|
|
1404
1459
|
show: true,
|
|
@@ -1413,58 +1468,88 @@ class ChartComponent {
|
|
|
1413
1468
|
},
|
|
1414
1469
|
],
|
|
1415
1470
|
}),
|
|
1416
|
-
pie: (data, colors) =>
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
series: [
|
|
1434
|
-
{
|
|
1435
|
-
type: 'pie',
|
|
1436
|
-
radius: ['40%', '70%'],
|
|
1437
|
-
avoidLabelOverlap: true,
|
|
1438
|
-
data,
|
|
1439
|
-
label: {
|
|
1440
|
-
//{a} Series name
|
|
1441
|
-
//{b} Data name (slice label)
|
|
1442
|
-
//{c} Data value
|
|
1443
|
-
//{d} Percentage
|
|
1444
|
-
formatter: '{b}: {c}',
|
|
1445
|
-
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: {
|
|
1446
1488
|
fontFamily: this.labelFontFamily,
|
|
1489
|
+
fontSize: 13,
|
|
1490
|
+
fontWeight: 500,
|
|
1447
1491
|
color: FxUtils.convertColorFromVariable('--text-primary'),
|
|
1448
|
-
textBorderWidth: 0,
|
|
1449
|
-
textBorderColor: 'transparent',
|
|
1450
1492
|
},
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
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
|
+
},
|
|
1464
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
|
+
],
|
|
1465
1550
|
},
|
|
1466
|
-
|
|
1467
|
-
}
|
|
1551
|
+
};
|
|
1552
|
+
},
|
|
1468
1553
|
sunburst: (data, colors) => ({
|
|
1469
1554
|
color: colors,
|
|
1470
1555
|
series: [
|
|
@@ -1546,11 +1631,11 @@ class ChartComponent {
|
|
|
1546
1631
|
});
|
|
1547
1632
|
}
|
|
1548
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 });
|
|
1549
|
-
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"] }] });
|
|
1550
1635
|
}
|
|
1551
1636
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ChartComponent, decorators: [{
|
|
1552
1637
|
type: Component,
|
|
1553
|
-
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"] }]
|
|
1554
1639
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { type: [{
|
|
1555
1640
|
type: Input
|
|
1556
1641
|
}], data: [{
|
|
@@ -1563,6 +1648,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
1563
1648
|
type: Input
|
|
1564
1649
|
}], loading: [{
|
|
1565
1650
|
type: Input
|
|
1651
|
+
}], pieLegendAlign: [{
|
|
1652
|
+
type: Input
|
|
1653
|
+
}], pieLegendPosition: [{
|
|
1654
|
+
type: Input
|
|
1655
|
+
}], showPieLabel: [{
|
|
1656
|
+
type: Input
|
|
1657
|
+
}], labelFontFamily: [{
|
|
1658
|
+
type: Input
|
|
1566
1659
|
}], chartClick: [{
|
|
1567
1660
|
type: Output
|
|
1568
1661
|
}], chartInit: [{
|
|
@@ -1921,7 +2014,7 @@ class FlowConnection {
|
|
|
1921
2014
|
];
|
|
1922
2015
|
}
|
|
1923
2016
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FlowConnection, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1924
|
-
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"] }] });
|
|
1925
2018
|
}
|
|
1926
2019
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FlowConnection, decorators: [{
|
|
1927
2020
|
type: Component,
|
|
@@ -2699,6 +2792,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2699
2792
|
args: ['window:resize']
|
|
2700
2793
|
}] } });
|
|
2701
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
|
+
|
|
2702
2811
|
class TagComponent {
|
|
2703
2812
|
label;
|
|
2704
2813
|
type = 'default';
|
|
@@ -2851,6 +2960,7 @@ const FX_COMPONENTS = [
|
|
|
2851
2960
|
FlowConnection,
|
|
2852
2961
|
CircleProgressBar,
|
|
2853
2962
|
TreeDiagram,
|
|
2963
|
+
TableCell,
|
|
2854
2964
|
];
|
|
2855
2965
|
|
|
2856
2966
|
class ConfirmationDialogComponent {
|
|
@@ -2906,7 +3016,7 @@ const MY_MOMENT_FORMATS = {
|
|
|
2906
3016
|
};
|
|
2907
3017
|
class UiModule {
|
|
2908
3018
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
2909
|
-
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,
|
|
2910
3020
|
FormsModule,
|
|
2911
3021
|
ReactiveFormsModule,
|
|
2912
3022
|
OwlDateTimeModule,
|
|
@@ -2914,14 +3024,14 @@ class UiModule {
|
|
|
2914
3024
|
OwlMomentDateTimeModule,
|
|
2915
3025
|
HasPermissionDirective,
|
|
2916
3026
|
TrimOnBlurDirective,
|
|
2917
|
-
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,
|
|
2918
3028
|
// Module
|
|
2919
3029
|
FormsModule,
|
|
2920
3030
|
ReactiveFormsModule,
|
|
2921
3031
|
OwlDateTimeModule,
|
|
2922
3032
|
OwlNativeDateTimeModule,
|
|
2923
3033
|
HasPermissionDirective,
|
|
2924
|
-
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] });
|
|
2925
3035
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, providers: [
|
|
2926
3036
|
importProvidersFrom(NgHeroiconsModule.forRoot()),
|
|
2927
3037
|
{ provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS },
|
|
@@ -2931,13 +3041,13 @@ class UiModule {
|
|
|
2931
3041
|
OwlDateTimeModule,
|
|
2932
3042
|
OwlNativeDateTimeModule,
|
|
2933
3043
|
OwlMomentDateTimeModule,
|
|
2934
|
-
NgHeroiconsModule,
|
|
3044
|
+
NgHeroiconsModule, i27.VflowComponent, i27.HandleComponent, i27.ResizableComponent, i27.MiniMapComponent, i27.NodeToolbarComponent, i27.CustomTemplateEdgeComponent, NgxEchartsModule.forRoot({ echarts: () => import('echarts') }), MATERIAL_MODULE,
|
|
2935
3045
|
// Module
|
|
2936
3046
|
FormsModule,
|
|
2937
3047
|
ReactiveFormsModule,
|
|
2938
3048
|
OwlDateTimeModule,
|
|
2939
3049
|
OwlNativeDateTimeModule,
|
|
2940
|
-
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] });
|
|
2941
3051
|
}
|
|
2942
3052
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, decorators: [{
|
|
2943
3053
|
type: NgModule,
|
|
@@ -2985,5 +3095,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2985
3095
|
* Generated bundle index. Do not edit.
|
|
2986
3096
|
*/
|
|
2987
3097
|
|
|
2988
|
-
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 };
|
|
2989
3099
|
//# sourceMappingURL=fxlt-common-ui.mjs.map
|