@fxlt/common-ui 0.0.4 → 0.0.5-rc2
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 +9 -20
- package/fesm2022/fxlt-common-ui.mjs +208 -80
- 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 +9 -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
|
|
|
@@ -166,6 +162,9 @@ input[type='password'] {
|
|
|
166
162
|
}
|
|
167
163
|
|
|
168
164
|
/* system style */
|
|
165
|
+
.txt-heading-02 {
|
|
166
|
+
@apply font-semibold text-4xl tracking-normal leading-10 text-text-primary;
|
|
167
|
+
}
|
|
169
168
|
.txt-heading-03 {
|
|
170
169
|
@apply font-semibold text-3xl tracking-normal leading-10 text-text-primary;
|
|
171
170
|
}
|
|
@@ -413,25 +412,12 @@ input[type='password'] {
|
|
|
413
412
|
}
|
|
414
413
|
/* progress bar */
|
|
415
414
|
.progress-bar-container {
|
|
416
|
-
@apply bg-bg-hover mt-semi rounded-
|
|
415
|
+
@apply bg-bg-hover mt-semi rounded-md h-1.5 overflow-hidden shadow-inner;
|
|
417
416
|
}
|
|
418
417
|
.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;
|
|
418
|
+
@apply h-1.5 bg-primary rounded-md transition-all duration-700 ease-in-out;
|
|
434
419
|
}
|
|
420
|
+
|
|
435
421
|
/* radio button */
|
|
436
422
|
.radio-container {
|
|
437
423
|
@apply w-large h-large flex items-center justify-center rounded-full border;
|
|
@@ -485,3 +471,6 @@ input[type='password'] {
|
|
|
485
471
|
rgb(var(--gradient-primary-end))
|
|
486
472
|
) border-box;
|
|
487
473
|
}
|
|
474
|
+
.skeleton-load {
|
|
475
|
+
@apply rounded bg-gray-200 animate-pulse motion-reduce:animate-none;
|
|
476
|
+
}
|
|
@@ -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,106 @@ 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
|
-
|
|
1493
|
+
},
|
|
1494
|
+
series: [
|
|
1495
|
+
{
|
|
1496
|
+
type: 'pie',
|
|
1497
|
+
radius: ['40%', '70%'],
|
|
1498
|
+
center: ['40%', '50%'],
|
|
1499
|
+
avoidLabelOverlap: true,
|
|
1500
|
+
data,
|
|
1501
|
+
label: {
|
|
1502
|
+
show: this.showPieLabel,
|
|
1503
|
+
//{a} Series name
|
|
1504
|
+
//{b} Data name (slice label)
|
|
1505
|
+
//{c} Data value
|
|
1506
|
+
//{d} Percentage
|
|
1507
|
+
position: 'outside',
|
|
1508
|
+
formatter: '{d}%',
|
|
1509
|
+
fontSize: this.labelFontSize,
|
|
1510
|
+
fontFamily: this.labelFontFamily,
|
|
1511
|
+
color: FxUtils.convertColorFromVariable('--text-primary'),
|
|
1512
|
+
textBorderWidth: 0,
|
|
1513
|
+
textBorderColor: 'transparent',
|
|
1514
|
+
},
|
|
1515
|
+
labelLine: {
|
|
1516
|
+
show: this.showPieLabel,
|
|
1517
|
+
length: 12,
|
|
1518
|
+
length2: 12,
|
|
1519
|
+
},
|
|
1520
|
+
itemStyle: {
|
|
1521
|
+
borderWidth: 0,
|
|
1522
|
+
},
|
|
1523
|
+
emphasis: {
|
|
1524
|
+
scale: true,
|
|
1525
|
+
scaleSize: 10,
|
|
1526
|
+
itemStyle: { borderWidth: 0 },
|
|
1527
|
+
label: { textBorderWidth: 0 },
|
|
1528
|
+
},
|
|
1458
1529
|
},
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1530
|
+
],
|
|
1531
|
+
media: [
|
|
1532
|
+
{
|
|
1533
|
+
query: { maxWidth: 480 },
|
|
1534
|
+
option: {
|
|
1535
|
+
legend: {
|
|
1536
|
+
orient: 'horizontal',
|
|
1537
|
+
left: 'center',
|
|
1538
|
+
bottom: 0,
|
|
1539
|
+
},
|
|
1540
|
+
series: [
|
|
1541
|
+
{
|
|
1542
|
+
center: ['50%', '40%'],
|
|
1543
|
+
},
|
|
1544
|
+
],
|
|
1545
|
+
},
|
|
1464
1546
|
},
|
|
1547
|
+
],
|
|
1548
|
+
graphic: {
|
|
1549
|
+
type: 'group',
|
|
1550
|
+
left: '40%',
|
|
1551
|
+
top: '50%',
|
|
1552
|
+
bounding: 'raw',
|
|
1553
|
+
children: [
|
|
1554
|
+
{
|
|
1555
|
+
type: 'text',
|
|
1556
|
+
style: {
|
|
1557
|
+
text: total.toString(),
|
|
1558
|
+
fontSize: 24,
|
|
1559
|
+
fontWeight: 600,
|
|
1560
|
+
fontFamily: this.labelFontFamily,
|
|
1561
|
+
fill: FxUtils.convertColorFromVariable('--text-primary'),
|
|
1562
|
+
align: 'center',
|
|
1563
|
+
verticalAlign: 'middle',
|
|
1564
|
+
},
|
|
1565
|
+
y: 0,
|
|
1566
|
+
},
|
|
1567
|
+
],
|
|
1465
1568
|
},
|
|
1466
|
-
|
|
1467
|
-
}
|
|
1569
|
+
};
|
|
1570
|
+
},
|
|
1468
1571
|
sunburst: (data, colors) => ({
|
|
1469
1572
|
color: colors,
|
|
1470
1573
|
series: [
|
|
@@ -1546,11 +1649,11 @@ class ChartComponent {
|
|
|
1546
1649
|
});
|
|
1547
1650
|
}
|
|
1548
1651
|
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
|
|
1652
|
+
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
1653
|
}
|
|
1551
1654
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: ChartComponent, decorators: [{
|
|
1552
1655
|
type: Component,
|
|
1553
|
-
args: [{ selector: 'fx-ui-chart', standalone: false, template: "<div class=\"chart-wrapper\" [style.height]=\"height\" [class.loading]=\"loading\">\n <div\n
|
|
1656
|
+
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
1657
|
}], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { type: [{
|
|
1555
1658
|
type: Input
|
|
1556
1659
|
}], data: [{
|
|
@@ -1563,6 +1666,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
1563
1666
|
type: Input
|
|
1564
1667
|
}], loading: [{
|
|
1565
1668
|
type: Input
|
|
1669
|
+
}], pieLegendAlign: [{
|
|
1670
|
+
type: Input
|
|
1671
|
+
}], pieLegendPosition: [{
|
|
1672
|
+
type: Input
|
|
1673
|
+
}], showPieLabel: [{
|
|
1674
|
+
type: Input
|
|
1675
|
+
}], labelFontFamily: [{
|
|
1676
|
+
type: Input
|
|
1566
1677
|
}], chartClick: [{
|
|
1567
1678
|
type: Output
|
|
1568
1679
|
}], chartInit: [{
|
|
@@ -1921,7 +2032,7 @@ class FlowConnection {
|
|
|
1921
2032
|
];
|
|
1922
2033
|
}
|
|
1923
2034
|
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:
|
|
2035
|
+
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
2036
|
}
|
|
1926
2037
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: FlowConnection, decorators: [{
|
|
1927
2038
|
type: Component,
|
|
@@ -2699,6 +2810,22 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2699
2810
|
args: ['window:resize']
|
|
2700
2811
|
}] } });
|
|
2701
2812
|
|
|
2813
|
+
class TableCell {
|
|
2814
|
+
loading;
|
|
2815
|
+
skeletonClass = 'h-4 w-full';
|
|
2816
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TableCell, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
2817
|
+
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: [""] });
|
|
2818
|
+
}
|
|
2819
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: TableCell, decorators: [{
|
|
2820
|
+
type: Component,
|
|
2821
|
+
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" }]
|
|
2822
|
+
}], propDecorators: { loading: [{
|
|
2823
|
+
type: Input,
|
|
2824
|
+
args: [{ required: true }]
|
|
2825
|
+
}], skeletonClass: [{
|
|
2826
|
+
type: Input
|
|
2827
|
+
}] } });
|
|
2828
|
+
|
|
2702
2829
|
class TagComponent {
|
|
2703
2830
|
label;
|
|
2704
2831
|
type = 'default';
|
|
@@ -2851,6 +2978,7 @@ const FX_COMPONENTS = [
|
|
|
2851
2978
|
FlowConnection,
|
|
2852
2979
|
CircleProgressBar,
|
|
2853
2980
|
TreeDiagram,
|
|
2981
|
+
TableCell,
|
|
2854
2982
|
];
|
|
2855
2983
|
|
|
2856
2984
|
class ConfirmationDialogComponent {
|
|
@@ -2906,7 +3034,7 @@ const MY_MOMENT_FORMATS = {
|
|
|
2906
3034
|
};
|
|
2907
3035
|
class UiModule {
|
|
2908
3036
|
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,
|
|
3037
|
+
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
3038
|
FormsModule,
|
|
2911
3039
|
ReactiveFormsModule,
|
|
2912
3040
|
OwlDateTimeModule,
|
|
@@ -2914,14 +3042,14 @@ class UiModule {
|
|
|
2914
3042
|
OwlMomentDateTimeModule,
|
|
2915
3043
|
HasPermissionDirective,
|
|
2916
3044
|
TrimOnBlurDirective,
|
|
2917
|
-
NgHeroiconsModule,
|
|
3045
|
+
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
3046
|
// Module
|
|
2919
3047
|
FormsModule,
|
|
2920
3048
|
ReactiveFormsModule,
|
|
2921
3049
|
OwlDateTimeModule,
|
|
2922
3050
|
OwlNativeDateTimeModule,
|
|
2923
3051
|
HasPermissionDirective,
|
|
2924
|
-
NgHeroiconsModule, i3$1.MatSelectModule,
|
|
3052
|
+
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
3053
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, providers: [
|
|
2926
3054
|
importProvidersFrom(NgHeroiconsModule.forRoot()),
|
|
2927
3055
|
{ provide: OWL_DATE_TIME_FORMATS, useValue: MY_MOMENT_FORMATS },
|
|
@@ -2931,13 +3059,13 @@ class UiModule {
|
|
|
2931
3059
|
OwlDateTimeModule,
|
|
2932
3060
|
OwlNativeDateTimeModule,
|
|
2933
3061
|
OwlMomentDateTimeModule,
|
|
2934
|
-
NgHeroiconsModule,
|
|
3062
|
+
NgHeroiconsModule, i27.VflowComponent, i27.HandleComponent, i27.ResizableComponent, i27.MiniMapComponent, i27.NodeToolbarComponent, i27.CustomTemplateEdgeComponent, NgxEchartsModule.forRoot({ echarts: () => import('echarts') }), MATERIAL_MODULE,
|
|
2935
3063
|
// Module
|
|
2936
3064
|
FormsModule,
|
|
2937
3065
|
ReactiveFormsModule,
|
|
2938
3066
|
OwlDateTimeModule,
|
|
2939
3067
|
OwlNativeDateTimeModule,
|
|
2940
|
-
NgHeroiconsModule, i3$1.MatSelectModule,
|
|
3068
|
+
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
3069
|
}
|
|
2942
3070
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImport: i0, type: UiModule, decorators: [{
|
|
2943
3071
|
type: NgModule,
|
|
@@ -2985,5 +3113,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.4", ngImpor
|
|
|
2985
3113
|
* Generated bundle index. Do not edit.
|
|
2986
3114
|
*/
|
|
2987
3115
|
|
|
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 };
|
|
3116
|
+
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
3117
|
//# sourceMappingURL=fxlt-common-ui.mjs.map
|