@sd-angular/core 1.3.147 → 1.3.148
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/bundles/sd-angular-core-grid-material.umd.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js +1 -1
- package/bundles/sd-angular-core-grid-material.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.js +217 -144
- package/bundles/sd-angular-core-table.umd.js.map +1 -1
- package/bundles/sd-angular-core-table.umd.min.js +1 -1
- package/bundles/sd-angular-core-table.umd.min.js.map +1 -1
- package/esm2015/grid-material/src/lib/components/column-inline-filter/column-inline-filter.component.js +2 -2
- package/esm2015/table/src/lib/components/column-inline-filter/column-inline-filter.component.js +34 -12
- package/esm2015/table/src/lib/models/table-column.model.js +43 -19
- package/esm2015/table/src/lib/models/table-configuration.model.js +1 -1
- package/esm2015/table/src/lib/table.component.js +19 -3
- package/fesm2015/sd-angular-core-grid-material.js +1 -1
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/fesm2015/sd-angular-core-table.js +91 -29
- package/fesm2015/sd-angular-core-table.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.147.tgz → sd-angular-core-1.3.148.tgz} +0 -0
- package/table/sd-angular-core-table.metadata.json +1 -1
- package/table/src/lib/components/column-inline-filter/column-inline-filter.component.d.ts +11 -4
- package/table/src/lib/models/table-column.model.d.ts +2 -1
- package/table/src/lib/models/table-configuration.model.d.ts +7 -0
|
@@ -1421,11 +1421,11 @@
|
|
|
1421
1421
|
this.exportTitle = 'Export';
|
|
1422
1422
|
_loadCompleted.set(this, false);
|
|
1423
1423
|
_initCellDef.set(this, function () {
|
|
1424
|
-
var e_1,
|
|
1424
|
+
var e_1, _8;
|
|
1425
1425
|
_this.cellDef = {};
|
|
1426
1426
|
try {
|
|
1427
|
-
for (var
|
|
1428
|
-
var cellDef =
|
|
1427
|
+
for (var _9 = __values(_this.sdCellDefs), _10 = _9.next(); !_10.done; _10 = _9.next()) {
|
|
1428
|
+
var cellDef = _10.value;
|
|
1429
1429
|
if (cellDef.sdMaterialCellDef) {
|
|
1430
1430
|
_this.cellDef[cellDef.sdMaterialCellDef] = cellDef;
|
|
1431
1431
|
}
|
|
@@ -1434,35 +1434,35 @@
|
|
|
1434
1434
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
1435
1435
|
finally {
|
|
1436
1436
|
try {
|
|
1437
|
-
if (
|
|
1437
|
+
if (_10 && !_10.done && (_8 = _9.return)) _8.call(_9);
|
|
1438
1438
|
}
|
|
1439
1439
|
finally { if (e_1) throw e_1.error; }
|
|
1440
1440
|
}
|
|
1441
1441
|
});
|
|
1442
1442
|
_initFilterDef.set(this, function () {
|
|
1443
|
-
var e_2,
|
|
1443
|
+
var e_2, _8;
|
|
1444
1444
|
_this.filterDefs = [];
|
|
1445
1445
|
try {
|
|
1446
|
-
for (var
|
|
1447
|
-
var filterDef =
|
|
1446
|
+
for (var _9 = __values(_this.sdFilterDefs), _10 = _9.next(); !_10.done; _10 = _9.next()) {
|
|
1447
|
+
var filterDef = _10.value;
|
|
1448
1448
|
_this.filterDefs.push(filterDef);
|
|
1449
1449
|
}
|
|
1450
1450
|
}
|
|
1451
1451
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
1452
1452
|
finally {
|
|
1453
1453
|
try {
|
|
1454
|
-
if (
|
|
1454
|
+
if (_10 && !_10.done && (_8 = _9.return)) _8.call(_9);
|
|
1455
1455
|
}
|
|
1456
1456
|
finally { if (e_2) throw e_2.error; }
|
|
1457
1457
|
}
|
|
1458
1458
|
});
|
|
1459
1459
|
_initFooterDef.set(this, function () {
|
|
1460
|
-
var e_3,
|
|
1460
|
+
var e_3, _8;
|
|
1461
1461
|
_this.footerDef = {};
|
|
1462
1462
|
_this.hasFooter = false;
|
|
1463
1463
|
try {
|
|
1464
|
-
for (var
|
|
1465
|
-
var footerDef =
|
|
1464
|
+
for (var _9 = __values(_this.sdFooterDefs), _10 = _9.next(); !_10.done; _10 = _9.next()) {
|
|
1465
|
+
var footerDef = _10.value;
|
|
1466
1466
|
if (footerDef.sdMaterialFooterDef) {
|
|
1467
1467
|
_this.hasFooter = true;
|
|
1468
1468
|
_this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;
|
|
@@ -1472,14 +1472,14 @@
|
|
|
1472
1472
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
1473
1473
|
finally {
|
|
1474
1474
|
try {
|
|
1475
|
-
if (
|
|
1475
|
+
if (_10 && !_10.done && (_8 = _9.return)) _8.call(_9);
|
|
1476
1476
|
}
|
|
1477
1477
|
finally { if (e_3) throw e_3.error; }
|
|
1478
1478
|
}
|
|
1479
1479
|
});
|
|
1480
1480
|
_filterExportInfo.set(this, function (pageNumber, pageSize) {
|
|
1481
1481
|
var _a, _b;
|
|
1482
|
-
var
|
|
1482
|
+
var _8 = _this.filterRegister.value.get(), columnOperator = _8.columnOperator, columnFilter = _8.columnFilter, externalFilter = _8.externalFilter, filterDef = _8.filterDef;
|
|
1483
1483
|
return {
|
|
1484
1484
|
columnOperator: columnOperator || {},
|
|
1485
1485
|
rawColumnFilter: columnFilter || {},
|
|
@@ -1493,7 +1493,8 @@
|
|
|
1493
1493
|
};
|
|
1494
1494
|
});
|
|
1495
1495
|
_initConfiguration$1.set(this, function (option) {
|
|
1496
|
-
var
|
|
1496
|
+
var e_4, _8;
|
|
1497
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7;
|
|
1497
1498
|
// Init pagination
|
|
1498
1499
|
option.paginate = {
|
|
1499
1500
|
hidden: (_a = option === null || option === void 0 ? void 0 : option.paginate) === null || _a === void 0 ? void 0 : _a.hidden,
|
|
@@ -1501,6 +1502,32 @@
|
|
|
1501
1502
|
pages: (_m = (_j = (_h = option === null || option === void 0 ? void 0 : option.paginate) === null || _h === void 0 ? void 0 : _h.pages) !== null && _j !== void 0 ? _j : (_l = (_k = _this.configuration) === null || _k === void 0 ? void 0 : _k.paginate) === null || _l === void 0 ? void 0 : _l.pages) !== null && _m !== void 0 ? _m : (_o = DEFAULT_TABLE_CONFIG.paginate) === null || _o === void 0 ? void 0 : _o.pages,
|
|
1502
1503
|
showFirstLastButtons: (_q = (_p = option === null || option === void 0 ? void 0 : option.paginate) === null || _p === void 0 ? void 0 : _p.showFirstLastButtons) !== null && _q !== void 0 ? _q : false,
|
|
1503
1504
|
};
|
|
1505
|
+
try {
|
|
1506
|
+
for (var _9 = __values(option.columns || []), _10 = _9.next(); !_10.done; _10 = _9.next()) {
|
|
1507
|
+
var column = _10.value;
|
|
1508
|
+
if (((_s = (_r = column.filter) === null || _r === void 0 ? void 0 : _r.operator) === null || _s === void 0 ? void 0 : _s.enable) && !((_v = (_u = (_t = column.filter) === null || _t === void 0 ? void 0 : _t.operator) === null || _u === void 0 ? void 0 : _u.list) === null || _v === void 0 ? void 0 : _v.length)) {
|
|
1509
|
+
if (column.type === 'string') {
|
|
1510
|
+
column.filter.operator.list = ((_y = (_x = (_w = _this.configuration) === null || _w === void 0 ? void 0 : _w.filter) === null || _x === void 0 ? void 0 : _x.operator) === null || _y === void 0 ? void 0 : _y.defaultListString) || [];
|
|
1511
|
+
}
|
|
1512
|
+
if (column.type === 'number') {
|
|
1513
|
+
column.filter.operator.list = ((_1 = (_0 = (_z = _this.configuration) === null || _z === void 0 ? void 0 : _z.filter) === null || _0 === void 0 ? void 0 : _0.operator) === null || _1 === void 0 ? void 0 : _1.defaultListNumber) || [];
|
|
1514
|
+
}
|
|
1515
|
+
if (column.type === 'values') {
|
|
1516
|
+
column.filter.operator.list = ((_4 = (_3 = (_2 = _this.configuration) === null || _2 === void 0 ? void 0 : _2.filter) === null || _3 === void 0 ? void 0 : _3.operator) === null || _4 === void 0 ? void 0 : _4.defaultListValues) || [];
|
|
1517
|
+
}
|
|
1518
|
+
if (column.type === 'date' || column.type === 'datetime') {
|
|
1519
|
+
column.filter.operator.list = ((_7 = (_6 = (_5 = _this.configuration) === null || _5 === void 0 ? void 0 : _5.filter) === null || _6 === void 0 ? void 0 : _6.operator) === null || _7 === void 0 ? void 0 : _7.defaultListDate) || [];
|
|
1520
|
+
}
|
|
1521
|
+
}
|
|
1522
|
+
}
|
|
1523
|
+
}
|
|
1524
|
+
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
1525
|
+
finally {
|
|
1526
|
+
try {
|
|
1527
|
+
if (_10 && !_10.done && (_8 = _9.return)) _8.call(_9);
|
|
1528
|
+
}
|
|
1529
|
+
finally { if (e_4) throw e_4.error; }
|
|
1530
|
+
}
|
|
1504
1531
|
return option;
|
|
1505
1532
|
});
|
|
1506
1533
|
_loadFilterRegister.set(this, function () {
|
|
@@ -1534,7 +1561,7 @@
|
|
|
1534
1561
|
var columns = _this.gridOption.columns;
|
|
1535
1562
|
var rawColumnFilter = filterInfo.rawColumnFilter, orderBy = filterInfo.orderBy, orderDirection = filterInfo.orderDirection, pageSize = filterInfo.pageSize, pageNumber = filterInfo.pageNumber;
|
|
1536
1563
|
var items = localItems.filter(function (tableItem) {
|
|
1537
|
-
var
|
|
1564
|
+
var e_5, _8;
|
|
1538
1565
|
var _a, _b, _c, _d;
|
|
1539
1566
|
var item = tableItem.current;
|
|
1540
1567
|
try {
|
|
@@ -1612,12 +1639,12 @@
|
|
|
1612
1639
|
}
|
|
1613
1640
|
}
|
|
1614
1641
|
}
|
|
1615
|
-
catch (
|
|
1642
|
+
catch (e_5_1) { e_5 = { error: e_5_1 }; }
|
|
1616
1643
|
finally {
|
|
1617
1644
|
try {
|
|
1618
|
-
if (columns_1_1 && !columns_1_1.done && (
|
|
1645
|
+
if (columns_1_1 && !columns_1_1.done && (_8 = columns_1.return)) _8.call(columns_1);
|
|
1619
1646
|
}
|
|
1620
|
-
finally { if (
|
|
1647
|
+
finally { if (e_5) throw e_5.error; }
|
|
1621
1648
|
}
|
|
1622
1649
|
return true;
|
|
1623
1650
|
});
|
|
@@ -1661,7 +1688,7 @@
|
|
|
1661
1688
|
});
|
|
1662
1689
|
_getFilter.set(this, function () {
|
|
1663
1690
|
var _a, _b, _c, _d, _e, _f;
|
|
1664
|
-
var
|
|
1691
|
+
var _8 = _this.filterRegister.value.get(), columnOperator = _8.columnOperator, columnFilter = _8.columnFilter, externalFilter = _8.externalFilter, filterDef = _8.filterDef;
|
|
1665
1692
|
return {
|
|
1666
1693
|
columnOperator: columnOperator || {},
|
|
1667
1694
|
rawColumnFilter: columnFilter || {},
|
|
@@ -1678,8 +1705,8 @@
|
|
|
1678
1705
|
return __awaiter(_this, void 0, void 0, function () {
|
|
1679
1706
|
var items, data, items, results, data;
|
|
1680
1707
|
var _this = this;
|
|
1681
|
-
return __generator(this, function (
|
|
1682
|
-
switch (
|
|
1708
|
+
return __generator(this, function (_8) {
|
|
1709
|
+
switch (_8.label) {
|
|
1683
1710
|
case 0:
|
|
1684
1711
|
this.isLoading = true;
|
|
1685
1712
|
if (!(this.gridOption.type === 'server')) return [3 /*break*/, 2];
|
|
@@ -1693,7 +1720,7 @@
|
|
|
1693
1720
|
};
|
|
1694
1721
|
})];
|
|
1695
1722
|
case 1:
|
|
1696
|
-
data =
|
|
1723
|
+
data = _8.sent();
|
|
1697
1724
|
this.isLoading = false;
|
|
1698
1725
|
return [2 /*return*/, {
|
|
1699
1726
|
items: (data === null || data === void 0 ? void 0 : data.items.map(MapToSdTableItem)) || [],
|
|
@@ -1711,11 +1738,11 @@
|
|
|
1711
1738
|
return [];
|
|
1712
1739
|
})];
|
|
1713
1740
|
case 3:
|
|
1714
|
-
data =
|
|
1741
|
+
data = _8.sent();
|
|
1715
1742
|
return [3 /*break*/, 5];
|
|
1716
1743
|
case 4:
|
|
1717
1744
|
data = results;
|
|
1718
|
-
|
|
1745
|
+
_8.label = 5;
|
|
1719
1746
|
case 5:
|
|
1720
1747
|
if (!Array.isArray(data)) {
|
|
1721
1748
|
this.notifyService.notify.warning('Dữ liệu không phải là một mảng');
|
|
@@ -1723,7 +1750,7 @@
|
|
|
1723
1750
|
}
|
|
1724
1751
|
__classPrivateFieldSet(this, _localItems, data.map(MapToSdTableItem));
|
|
1725
1752
|
this.isLoading = false;
|
|
1726
|
-
|
|
1753
|
+
_8.label = 6;
|
|
1727
1754
|
case 6: return [2 /*return*/, __classPrivateFieldGet(this, _filterLocal).call(this, __classPrivateFieldGet(this, _localItems), filterReq)];
|
|
1728
1755
|
}
|
|
1729
1756
|
});
|
|
@@ -1731,15 +1758,15 @@
|
|
|
1731
1758
|
});
|
|
1732
1759
|
_render.set(this, function (args) { return __awaiter(_this, void 0, void 0, function () {
|
|
1733
1760
|
var _a, _b, _c, _d;
|
|
1734
|
-
return __generator(this, function (
|
|
1735
|
-
switch (
|
|
1761
|
+
return __generator(this, function (_8) {
|
|
1762
|
+
switch (_8.label) {
|
|
1736
1763
|
case 0:
|
|
1737
1764
|
(_a = this.sdScroll) === null || _a === void 0 ? void 0 : _a.scrollTop();
|
|
1738
1765
|
this.items = (args === null || args === void 0 ? void 0 : args.items) || [];
|
|
1739
1766
|
this.total = (args === null || args === void 0 ? void 0 : args.total) || 0;
|
|
1740
1767
|
return [4 /*yield*/, ((_d = (_c = (_b = this.gridOption) === null || _b === void 0 ? void 0 : _b.reload) === null || _c === void 0 ? void 0 : _c.onReload) === null || _d === void 0 ? void 0 : _d.call(_c, this.items))];
|
|
1741
1768
|
case 1:
|
|
1742
|
-
|
|
1769
|
+
_8.sent();
|
|
1743
1770
|
this.isSelectAll = this.items.every(function (e) { return e.meta.selector.isSelected; });
|
|
1744
1771
|
__classPrivateFieldGet(this, _updateSelectedItems).call(this);
|
|
1745
1772
|
return [2 /*return*/];
|
|
@@ -1750,13 +1777,13 @@
|
|
|
1750
1777
|
if (force === void 0) { force = true; }
|
|
1751
1778
|
return __awaiter(_this, void 0, void 0, function () {
|
|
1752
1779
|
var _e, _f, data;
|
|
1753
|
-
return __generator(this, function (
|
|
1754
|
-
switch (
|
|
1780
|
+
return __generator(this, function (_8) {
|
|
1781
|
+
switch (_8.label) {
|
|
1755
1782
|
case 0:
|
|
1756
1783
|
(_f = (_e = this.gridFilter) === null || _e === void 0 ? void 0 : _e.updateFilter) === null || _f === void 0 ? void 0 : _f.call(_e);
|
|
1757
1784
|
return [4 /*yield*/, __classPrivateFieldGet(this, _load$1).call(this, __classPrivateFieldGet(this, _getFilter).call(this), force)];
|
|
1758
1785
|
case 1:
|
|
1759
|
-
data =
|
|
1786
|
+
data = _8.sent();
|
|
1760
1787
|
__classPrivateFieldGet(this, _render).call(this, data);
|
|
1761
1788
|
return [2 /*return*/];
|
|
1762
1789
|
}
|
|
@@ -1768,8 +1795,8 @@
|
|
|
1768
1795
|
if (pageSize === void 0) { pageSize = 10000; }
|
|
1769
1796
|
return __awaiter(_this, void 0, void 0, function () {
|
|
1770
1797
|
var _g, _h, result, filterInfo, result, exportedItems, results;
|
|
1771
|
-
return __generator(this, function (
|
|
1772
|
-
switch (
|
|
1798
|
+
return __generator(this, function (_8) {
|
|
1799
|
+
switch (_8.label) {
|
|
1773
1800
|
case 0:
|
|
1774
1801
|
if (!((_g = this.gridOption.export) === null || _g === void 0 ? void 0 : _g.items)) return [3 /*break*/, 2];
|
|
1775
1802
|
result = (_h = this.gridOption.export) === null || _h === void 0 ? void 0 : _h.items(__classPrivateFieldGet(this, _filterExportInfo).call(this, pageNumber, pageSize));
|
|
@@ -1783,13 +1810,13 @@
|
|
|
1783
1810
|
result = result.toPromise();
|
|
1784
1811
|
}
|
|
1785
1812
|
return [4 /*yield*/, result];
|
|
1786
|
-
case 1: return [2 /*return*/,
|
|
1813
|
+
case 1: return [2 /*return*/, _8.sent()];
|
|
1787
1814
|
case 2:
|
|
1788
1815
|
filterInfo = __classPrivateFieldGet(this, _filterExportInfo).call(this, pageNumber, pageSize);
|
|
1789
1816
|
if (!(this.gridOption.type === 'server')) return [3 /*break*/, 4];
|
|
1790
1817
|
result = this.gridOption.items(filterInfo);
|
|
1791
1818
|
return [4 /*yield*/, result];
|
|
1792
|
-
case 3: return [2 /*return*/,
|
|
1819
|
+
case 3: return [2 /*return*/, _8.sent()];
|
|
1793
1820
|
case 4:
|
|
1794
1821
|
exportedItems = [];
|
|
1795
1822
|
if (!(typeof this.gridOption.items === 'function')) return [3 /*break*/, 8];
|
|
@@ -1797,15 +1824,15 @@
|
|
|
1797
1824
|
if (!(results instanceof Promise)) return [3 /*break*/, 6];
|
|
1798
1825
|
return [4 /*yield*/, results];
|
|
1799
1826
|
case 5:
|
|
1800
|
-
exportedItems =
|
|
1827
|
+
exportedItems = _8.sent();
|
|
1801
1828
|
return [3 /*break*/, 7];
|
|
1802
1829
|
case 6:
|
|
1803
1830
|
exportedItems = results;
|
|
1804
|
-
|
|
1831
|
+
_8.label = 7;
|
|
1805
1832
|
case 7: return [3 /*break*/, 9];
|
|
1806
1833
|
case 8:
|
|
1807
1834
|
exportedItems = this.gridOption.items;
|
|
1808
|
-
|
|
1835
|
+
_8.label = 9;
|
|
1809
1836
|
case 9: return [2 /*return*/, __classPrivateFieldGet(this, _filterLocal).call(this, exportedItems, filterInfo)];
|
|
1810
1837
|
}
|
|
1811
1838
|
});
|
|
@@ -1832,13 +1859,13 @@
|
|
|
1832
1859
|
return ((_b = (_a = _this.gridOption.export) === null || _a === void 0 ? void 0 : _a.columns) === null || _b === void 0 ? void 0 : _b.filter(function (e) { var _a; return !((_a = e.export) === null || _a === void 0 ? void 0 : _a.disabled); })) || [];
|
|
1833
1860
|
});
|
|
1834
1861
|
_onExport.set(this, function (isCSV) { return __awaiter(_this, void 0, void 0, function () {
|
|
1835
|
-
var _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, columns_2, pageSize_1, batch, total_1, pageNumber_1, exportItems_1, items_1, promises_1, handleData, sheets,
|
|
1836
|
-
var
|
|
1862
|
+
var _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, columns_2, pageSize_1, batch, total_1, pageNumber_1, exportItems_1, items_1, promises_1, handleData, sheets, _8, _9, sheet, _10, _11, _12, e_6_1;
|
|
1863
|
+
var e_6, _13;
|
|
1837
1864
|
var _this = this;
|
|
1838
|
-
return __generator(this, function (
|
|
1839
|
-
switch (
|
|
1865
|
+
return __generator(this, function (_14) {
|
|
1866
|
+
switch (_14.label) {
|
|
1840
1867
|
case 0:
|
|
1841
|
-
|
|
1868
|
+
_14.trys.push([0, , 18, 19]);
|
|
1842
1869
|
columns_2 = __classPrivateFieldGet(this, _getExportColumns).call(this);
|
|
1843
1870
|
pageSize_1 = ((_k = (_j = this.gridOption) === null || _j === void 0 ? void 0 : _j.export) === null || _k === void 0 ? void 0 : _k.maxItemsPerRequest) || 1000;
|
|
1844
1871
|
batch = ((_m = (_l = this.gridOption) === null || _l === void 0 ? void 0 : _l.export) === null || _m === void 0 ? void 0 : _m.batch) || 1;
|
|
@@ -1849,14 +1876,14 @@
|
|
|
1849
1876
|
items_1 = [];
|
|
1850
1877
|
promises_1 = [];
|
|
1851
1878
|
handleData = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
1852
|
-
var _u, results, results_1, results_1_1, result, results_2, totalPage, percent, allColumns, allExportedColumns, _loop_1, exportItems_2, exportItems_2_1, item,
|
|
1853
|
-
var
|
|
1879
|
+
var _u, results, results_1, results_1_1, result, results_2, totalPage, percent, allColumns, allExportedColumns, _loop_1, exportItems_2, exportItems_2_1, item, e_7_1;
|
|
1880
|
+
var e_8, _8, e_7, _9;
|
|
1854
1881
|
var _this = this;
|
|
1855
|
-
return __generator(this, function (
|
|
1856
|
-
switch (
|
|
1882
|
+
return __generator(this, function (_10) {
|
|
1883
|
+
switch (_10.label) {
|
|
1857
1884
|
case 0: return [4 /*yield*/, Promise.all(promises_1)];
|
|
1858
1885
|
case 1:
|
|
1859
|
-
results =
|
|
1886
|
+
results = _10.sent();
|
|
1860
1887
|
promises_1 = [];
|
|
1861
1888
|
exportItems_1 = [];
|
|
1862
1889
|
try {
|
|
@@ -1871,23 +1898,23 @@
|
|
|
1871
1898
|
}
|
|
1872
1899
|
}
|
|
1873
1900
|
}
|
|
1874
|
-
catch (
|
|
1901
|
+
catch (e_8_1) { e_8 = { error: e_8_1 }; }
|
|
1875
1902
|
finally {
|
|
1876
1903
|
try {
|
|
1877
|
-
if (results_1_1 && !results_1_1.done && (
|
|
1904
|
+
if (results_1_1 && !results_1_1.done && (_8 = results_1.return)) _8.call(results_1);
|
|
1878
1905
|
}
|
|
1879
|
-
finally { if (
|
|
1906
|
+
finally { if (e_8) throw e_8.error; }
|
|
1880
1907
|
}
|
|
1881
1908
|
if (!((_u = this.gridOption.export) === null || _u === void 0 ? void 0 : _u.mapping)) return [3 /*break*/, 4];
|
|
1882
1909
|
results_2 = this.gridOption.export.mapping(exportItems_1);
|
|
1883
1910
|
if (!(results_2 instanceof Promise)) return [3 /*break*/, 3];
|
|
1884
1911
|
return [4 /*yield*/, results_2];
|
|
1885
1912
|
case 2:
|
|
1886
|
-
exportItems_1 =
|
|
1913
|
+
exportItems_1 = _10.sent();
|
|
1887
1914
|
return [3 /*break*/, 4];
|
|
1888
1915
|
case 3:
|
|
1889
1916
|
exportItems_1 = results_2;
|
|
1890
|
-
|
|
1917
|
+
_10.label = 4;
|
|
1891
1918
|
case 4:
|
|
1892
1919
|
totalPage = total_1 / pageSize_1;
|
|
1893
1920
|
percent = Math.round(((pageNumber_1 - 1) * 100.0) / totalPage);
|
|
@@ -1895,16 +1922,16 @@
|
|
|
1895
1922
|
allColumns = __classPrivateFieldGet(this, _allColumns).call(this);
|
|
1896
1923
|
allExportedColumns = __classPrivateFieldGet(this, _allExportedColumns).call(this);
|
|
1897
1924
|
_loop_1 = function (item) {
|
|
1898
|
-
var obj, handle, columns_3, columns_3_1, exportColumn,
|
|
1899
|
-
var
|
|
1900
|
-
return __generator(this, function (
|
|
1901
|
-
switch (
|
|
1925
|
+
var obj, handle, columns_3, columns_3_1, exportColumn, e_9_1;
|
|
1926
|
+
var e_9, _8;
|
|
1927
|
+
return __generator(this, function (_9) {
|
|
1928
|
+
switch (_9.label) {
|
|
1902
1929
|
case 0:
|
|
1903
1930
|
obj = {};
|
|
1904
1931
|
handle = function (exportColumn) { return __awaiter(_this, void 0, void 0, function () {
|
|
1905
|
-
var _v, _w, _x, column, exportedColumn, transform,
|
|
1906
|
-
return __generator(this, function (
|
|
1907
|
-
switch (
|
|
1932
|
+
var _v, _w, _x, column, exportedColumn, transform, _8, _9, date, transformDate, date, transformDate, date, transformDate, _10, _11;
|
|
1933
|
+
return __generator(this, function (_12) {
|
|
1934
|
+
switch (_12.label) {
|
|
1908
1935
|
case 0:
|
|
1909
1936
|
obj[exportColumn.field] = item[exportColumn.field];
|
|
1910
1937
|
column = allColumns.find(function (e) { return e.field === exportColumn.field; });
|
|
@@ -1928,15 +1955,15 @@
|
|
|
1928
1955
|
isExport: true,
|
|
1929
1956
|
});
|
|
1930
1957
|
if (!(transform instanceof Promise)) return [3 /*break*/, 2];
|
|
1931
|
-
|
|
1932
|
-
|
|
1958
|
+
_8 = obj;
|
|
1959
|
+
_9 = column.field;
|
|
1933
1960
|
return [4 /*yield*/, transform];
|
|
1934
1961
|
case 1:
|
|
1935
|
-
|
|
1962
|
+
_8[_9] = _12.sent();
|
|
1936
1963
|
return [3 /*break*/, 3];
|
|
1937
1964
|
case 2:
|
|
1938
1965
|
obj[column.field] = transform;
|
|
1939
|
-
|
|
1966
|
+
_12.label = 3;
|
|
1940
1967
|
case 3:
|
|
1941
1968
|
obj[column.field] = (_v = obj[column.field]) !== null && _v !== void 0 ? _v : '';
|
|
1942
1969
|
return [3 /*break*/, 13];
|
|
@@ -1992,45 +2019,45 @@
|
|
|
1992
2019
|
case 10:
|
|
1993
2020
|
if (!(column.type === 'values')) return [3 /*break*/, 12];
|
|
1994
2021
|
// Nếu là values thì lấy giá trị của value được chọn
|
|
1995
|
-
|
|
1996
|
-
|
|
2022
|
+
_10 = obj;
|
|
2023
|
+
_11 = column.field;
|
|
1997
2024
|
return [4 /*yield*/, this.columnValuesPipe.transform(item[column.field], column)];
|
|
1998
2025
|
case 11:
|
|
1999
2026
|
// Nếu là values thì lấy giá trị của value được chọn
|
|
2000
|
-
|
|
2027
|
+
_10[_11] = _12.sent();
|
|
2001
2028
|
return [3 /*break*/, 13];
|
|
2002
2029
|
case 12:
|
|
2003
2030
|
obj[column.field] = item[column.field];
|
|
2004
|
-
|
|
2031
|
+
_12.label = 13;
|
|
2005
2032
|
case 13: return [2 /*return*/];
|
|
2006
2033
|
}
|
|
2007
2034
|
});
|
|
2008
2035
|
}); };
|
|
2009
|
-
|
|
2036
|
+
_9.label = 1;
|
|
2010
2037
|
case 1:
|
|
2011
|
-
|
|
2012
|
-
columns_3 = (
|
|
2013
|
-
|
|
2038
|
+
_9.trys.push([1, 6, 7, 8]);
|
|
2039
|
+
columns_3 = (e_9 = void 0, __values(columns_2)), columns_3_1 = columns_3.next();
|
|
2040
|
+
_9.label = 2;
|
|
2014
2041
|
case 2:
|
|
2015
2042
|
if (!!columns_3_1.done) return [3 /*break*/, 5];
|
|
2016
2043
|
exportColumn = columns_3_1.value;
|
|
2017
2044
|
return [4 /*yield*/, handle(exportColumn)];
|
|
2018
2045
|
case 3:
|
|
2019
|
-
|
|
2020
|
-
|
|
2046
|
+
_9.sent();
|
|
2047
|
+
_9.label = 4;
|
|
2021
2048
|
case 4:
|
|
2022
2049
|
columns_3_1 = columns_3.next();
|
|
2023
2050
|
return [3 /*break*/, 2];
|
|
2024
2051
|
case 5: return [3 /*break*/, 8];
|
|
2025
2052
|
case 6:
|
|
2026
|
-
|
|
2027
|
-
|
|
2053
|
+
e_9_1 = _9.sent();
|
|
2054
|
+
e_9 = { error: e_9_1 };
|
|
2028
2055
|
return [3 /*break*/, 8];
|
|
2029
2056
|
case 7:
|
|
2030
2057
|
try {
|
|
2031
|
-
if (columns_3_1 && !columns_3_1.done && (
|
|
2058
|
+
if (columns_3_1 && !columns_3_1.done && (_8 = columns_3.return)) _8.call(columns_3);
|
|
2032
2059
|
}
|
|
2033
|
-
finally { if (
|
|
2060
|
+
finally { if (e_9) throw e_9.error; }
|
|
2034
2061
|
return [7 /*endfinally*/];
|
|
2035
2062
|
case 8:
|
|
2036
2063
|
items_1.push(obj);
|
|
@@ -2038,37 +2065,37 @@
|
|
|
2038
2065
|
}
|
|
2039
2066
|
});
|
|
2040
2067
|
};
|
|
2041
|
-
|
|
2068
|
+
_10.label = 5;
|
|
2042
2069
|
case 5:
|
|
2043
|
-
|
|
2070
|
+
_10.trys.push([5, 10, 11, 12]);
|
|
2044
2071
|
exportItems_2 = __values(exportItems_1), exportItems_2_1 = exportItems_2.next();
|
|
2045
|
-
|
|
2072
|
+
_10.label = 6;
|
|
2046
2073
|
case 6:
|
|
2047
2074
|
if (!!exportItems_2_1.done) return [3 /*break*/, 9];
|
|
2048
2075
|
item = exportItems_2_1.value;
|
|
2049
2076
|
return [5 /*yield**/, _loop_1(item)];
|
|
2050
2077
|
case 7:
|
|
2051
|
-
|
|
2052
|
-
|
|
2078
|
+
_10.sent();
|
|
2079
|
+
_10.label = 8;
|
|
2053
2080
|
case 8:
|
|
2054
2081
|
exportItems_2_1 = exportItems_2.next();
|
|
2055
2082
|
return [3 /*break*/, 6];
|
|
2056
2083
|
case 9: return [3 /*break*/, 12];
|
|
2057
2084
|
case 10:
|
|
2058
|
-
|
|
2059
|
-
|
|
2085
|
+
e_7_1 = _10.sent();
|
|
2086
|
+
e_7 = { error: e_7_1 };
|
|
2060
2087
|
return [3 /*break*/, 12];
|
|
2061
2088
|
case 11:
|
|
2062
2089
|
try {
|
|
2063
|
-
if (exportItems_2_1 && !exportItems_2_1.done && (
|
|
2090
|
+
if (exportItems_2_1 && !exportItems_2_1.done && (_9 = exportItems_2.return)) _9.call(exportItems_2);
|
|
2064
2091
|
}
|
|
2065
|
-
finally { if (
|
|
2092
|
+
finally { if (e_7) throw e_7.error; }
|
|
2066
2093
|
return [7 /*endfinally*/];
|
|
2067
2094
|
case 12: return [2 /*return*/];
|
|
2068
2095
|
}
|
|
2069
2096
|
});
|
|
2070
2097
|
}); };
|
|
2071
|
-
|
|
2098
|
+
_14.label = 1;
|
|
2072
2099
|
case 1:
|
|
2073
2100
|
if (!(pageNumber_1 * pageSize_1 < total_1)) return [3 /*break*/, 3];
|
|
2074
2101
|
promises_1.push(__classPrivateFieldGet(this, _exportedItems).call(this, pageNumber_1, pageSize_1));
|
|
@@ -2078,14 +2105,14 @@
|
|
|
2078
2105
|
}
|
|
2079
2106
|
return [4 /*yield*/, handleData()];
|
|
2080
2107
|
case 2:
|
|
2081
|
-
|
|
2108
|
+
_14.sent();
|
|
2082
2109
|
return [3 /*break*/, 1];
|
|
2083
2110
|
case 3:
|
|
2084
2111
|
if (!(promises_1.length > 0)) return [3 /*break*/, 5];
|
|
2085
2112
|
return [4 /*yield*/, handleData()];
|
|
2086
2113
|
case 4:
|
|
2087
|
-
|
|
2088
|
-
|
|
2114
|
+
_14.sent();
|
|
2115
|
+
_14.label = 5;
|
|
2089
2116
|
case 5:
|
|
2090
2117
|
if (!isCSV) return [3 /*break*/, 7];
|
|
2091
2118
|
return [4 /*yield*/, this.exportService.exportCSV({
|
|
@@ -2094,19 +2121,19 @@
|
|
|
2094
2121
|
fileName: (_p = (_o = this.gridOption) === null || _o === void 0 ? void 0 : _o.export) === null || _p === void 0 ? void 0 : _p.fileName,
|
|
2095
2122
|
})];
|
|
2096
2123
|
case 6:
|
|
2097
|
-
|
|
2124
|
+
_14.sent();
|
|
2098
2125
|
return [2 /*return*/];
|
|
2099
2126
|
case 7:
|
|
2100
2127
|
sheets = [];
|
|
2101
2128
|
if (!Array.isArray((_r = (_q = this.gridOption) === null || _q === void 0 ? void 0 : _q.export) === null || _r === void 0 ? void 0 : _r.sheets)) return [3 /*break*/, 16];
|
|
2102
|
-
|
|
2129
|
+
_14.label = 8;
|
|
2103
2130
|
case 8:
|
|
2104
|
-
|
|
2105
|
-
|
|
2106
|
-
|
|
2131
|
+
_14.trys.push([8, 14, 15, 16]);
|
|
2132
|
+
_8 = __values(this.gridOption.export.sheets), _9 = _8.next();
|
|
2133
|
+
_14.label = 9;
|
|
2107
2134
|
case 9:
|
|
2108
|
-
if (!!
|
|
2109
|
-
sheet =
|
|
2135
|
+
if (!!_9.done) return [3 /*break*/, 13];
|
|
2136
|
+
sheet = _9.value;
|
|
2110
2137
|
if (!(sheet.name && sheet.items && sheet.fields)) return [3 /*break*/, 12];
|
|
2111
2138
|
if (!Array.isArray(sheet.items)) return [3 /*break*/, 10];
|
|
2112
2139
|
sheets.push({
|
|
@@ -2116,29 +2143,29 @@
|
|
|
2116
2143
|
});
|
|
2117
2144
|
return [3 /*break*/, 12];
|
|
2118
2145
|
case 10:
|
|
2119
|
-
|
|
2120
|
-
|
|
2146
|
+
_11 = (_10 = sheets).push;
|
|
2147
|
+
_12 = {
|
|
2121
2148
|
name: sheet.name
|
|
2122
2149
|
};
|
|
2123
2150
|
return [4 /*yield*/, sheet.items()];
|
|
2124
2151
|
case 11:
|
|
2125
|
-
|
|
2126
|
-
|
|
2127
|
-
|
|
2128
|
-
|
|
2152
|
+
_11.apply(_10, [(_12.items = _14.sent(),
|
|
2153
|
+
_12.fields = sheet.fields,
|
|
2154
|
+
_12)]);
|
|
2155
|
+
_14.label = 12;
|
|
2129
2156
|
case 12:
|
|
2130
|
-
|
|
2157
|
+
_9 = _8.next();
|
|
2131
2158
|
return [3 /*break*/, 9];
|
|
2132
2159
|
case 13: return [3 /*break*/, 16];
|
|
2133
2160
|
case 14:
|
|
2134
|
-
|
|
2135
|
-
|
|
2161
|
+
e_6_1 = _14.sent();
|
|
2162
|
+
e_6 = { error: e_6_1 };
|
|
2136
2163
|
return [3 /*break*/, 16];
|
|
2137
2164
|
case 15:
|
|
2138
2165
|
try {
|
|
2139
|
-
if (
|
|
2166
|
+
if (_9 && !_9.done && (_13 = _8.return)) _13.call(_8);
|
|
2140
2167
|
}
|
|
2141
|
-
finally { if (
|
|
2168
|
+
finally { if (e_6) throw e_6.error; }
|
|
2142
2169
|
return [7 /*endfinally*/];
|
|
2143
2170
|
case 16: return [4 /*yield*/, this.exportService.export({
|
|
2144
2171
|
columns: columns_2,
|
|
@@ -2147,7 +2174,7 @@
|
|
|
2147
2174
|
sheets: sheets,
|
|
2148
2175
|
})];
|
|
2149
2176
|
case 17:
|
|
2150
|
-
|
|
2177
|
+
_14.sent();
|
|
2151
2178
|
return [2 /*return*/];
|
|
2152
2179
|
case 18:
|
|
2153
2180
|
this.isExporting = false;
|
|
@@ -2184,7 +2211,7 @@
|
|
|
2184
2211
|
};
|
|
2185
2212
|
this.onExpand = function (rowData) { return __awaiter(_this, void 0, void 0, function () {
|
|
2186
2213
|
var _y, _z, _0, _1, _2, data;
|
|
2187
|
-
return __generator(this, function (
|
|
2214
|
+
return __generator(this, function (_8) {
|
|
2188
2215
|
if ((_y = this.gridOption.expand) === null || _y === void 0 ? void 0 : _y.always) {
|
|
2189
2216
|
return [2 /*return*/];
|
|
2190
2217
|
}
|
|
@@ -2260,7 +2287,7 @@
|
|
|
2260
2287
|
};
|
|
2261
2288
|
this.setFilter = function (args) {
|
|
2262
2289
|
var _a, _b;
|
|
2263
|
-
var
|
|
2290
|
+
var _8 = args || {}, columnFilter = _8.columnFilter, externalFilter = _8.externalFilter, filterDef = _8.filterDef;
|
|
2264
2291
|
if (((_b = (_a = _this.gridOption) === null || _a === void 0 ? void 0 : _a.filter) === null || _b === void 0 ? void 0 : _b.inlineColumn) && columnFilter) {
|
|
2265
2292
|
_this.columnFilter = columnFilter;
|
|
2266
2293
|
}
|
|
@@ -2348,13 +2375,13 @@
|
|
|
2348
2375
|
var _this = this;
|
|
2349
2376
|
__classPrivateFieldGet(this, _subscription$1).add(__classPrivateFieldGet(this, _reload).pipe(operators.debounceTime(200), operators.switchMap(function (data) { return __awaiter(_this, void 0, void 0, function () {
|
|
2350
2377
|
var filterInfo, result;
|
|
2351
|
-
return __generator(this, function (
|
|
2352
|
-
switch (
|
|
2378
|
+
return __generator(this, function (_8) {
|
|
2379
|
+
switch (_8.label) {
|
|
2353
2380
|
case 0:
|
|
2354
2381
|
filterInfo = __classPrivateFieldGet(this, _getFilter).call(this);
|
|
2355
2382
|
return [4 /*yield*/, __classPrivateFieldGet(this, _load$1).call(this, filterInfo, !__classPrivateFieldGet(this, _loadCompleted) || data.force)];
|
|
2356
2383
|
case 1:
|
|
2357
|
-
result =
|
|
2384
|
+
result = _8.sent();
|
|
2358
2385
|
__classPrivateFieldSet(this, _loadCompleted, true);
|
|
2359
2386
|
return [2 /*return*/, result];
|
|
2360
2387
|
}
|
|
@@ -2395,7 +2422,7 @@
|
|
|
2395
2422
|
SdTable.decorators = [
|
|
2396
2423
|
{ type: core.Component, args: [{
|
|
2397
2424
|
selector: 'sd-table',
|
|
2398
|
-
template: "<ng-container *ngIf=\"gridConfigurationObserver | async as gridConfiguration\">\r\n <ng-container *ngIf=\"gridConfiguration | sdGridConfigurationResult : gridOption : sdSubInformation as configuration\">\r\n <sd-grid-filter\r\n *ngIf=\"!gridOption.filter?.disabled && filterRegister\"\r\n [filterRegister]=\"filterRegister\"\r\n [filter]=\"gridOption?.filter\"\r\n [columns]=\"configuration.firstColumns\"\r\n [externalFilters]=\"gridOption?.filter?.externalFilters\"\r\n [filterDefs]=\"filterDefs\"\r\n #gridFilter>\r\n </sd-grid-filter>\r\n <ng-container *ngIf=\"items | sdGroup : gridOption; $implicit as groupedItems\">\r\n <div class=\"c-container\">\r\n <div class=\"c-loading\" *ngIf=\"isLoading\">\r\n <mat-spinner *ngIf=\"isLoading\"></mat-spinner>\r\n </div>\r\n <ng-container>\r\n <div\r\n class=\"c-table\"\r\n sdScroll\r\n [ngStyle]=\"{\r\n 'max-height': gridOption?.style?.maxHeight,\r\n 'min-height': gridOption?.style?.minHeight\r\n }\">\r\n <table\r\n *ngIf=\"items?.length; else elseEmpty\"\r\n mat-table\r\n [dataSource]=\"groupedItems\"\r\n matSort\r\n [matSortDisabled]=\"!gridOption.sort?.enable\"\r\n multiTemplateDataRows>\r\n <ng-container matColumnDef=\"sdSubInformation\" sticky>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\" [attr.colspan]=\"configuration.displayedColumns.length\">\r\n <ng-container *ngIf=\"sdSubInformation?.templateRef\">\r\n <ng-container *ngIf=\"gridOption?.expand?.always; else useExpandCollapse\">\r\n <ng-container *ngTemplateOutlet=\"sdSubInformation.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-template #useExpandCollapse>\r\n <div [@detailExpand]=\"item.isExpanded ? 'expanded' : 'collapsed'\">\r\n <ng-container *ngIf=\"item.isExpanded\">\r\n <ng-container *ngTemplateOutlet=\"sdSubInformation.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdSubInformationAction\" stickyEnd>\r\n <th\r\n class=\"p-0\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"width: 1px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button\r\n *ngIf=\"!element.isExpanding && !gridOption?.expand?.always\"\r\n mat-icon-button\r\n aria-label=\"Expand & Collapse\"\r\n (click)=\"onExpand(element)\">\r\n <mat-icon *ngIf=\"!element.isExpanded\">expand_more</mat-icon>\r\n <mat-icon *ngIf=\"element.isExpanded\">expand_less</mat-icon>\r\n </button>\r\n <div *ngIf=\"element.isExpanding\" class=\"lds-ring\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdSelection\" sticky>\r\n <th\r\n class=\"text-center px-15\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <ng-container *ngIf=\"items | selectionVisibleSelectAll : gridOption?.selector | async\">\r\n <mat-checkbox\r\n *ngIf=\"!gridOption.selector?.single\"\r\n class=\"c-selection\"\r\n color=\"primary\"\r\n [(ngModel)]=\"isSelectAll\"\r\n (change)=\"onSelectAll()\">\r\n </mat-checkbox>\r\n </ng-container>\r\n </th>\r\n <td class=\"text-center px-15\" mat-cell *matCellDef=\"let item\" style=\"min-width: 50px; max-width: 50px\">\r\n <ng-container *ngIf=\"item | selectionVisible : gridOption?.selector\">\r\n <mat-checkbox\r\n class=\"c-selection\"\r\n color=\"primary\"\r\n [(ngModel)]=\"item.isSelected\"\r\n (change)=\"onSelect(item)\"\r\n [disabled]=\"selectedItems | selectionDisable : item : gridOption?.selector\">\r\n </mat-checkbox>\r\n </ng-container>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdCommand\">\r\n <th\r\n class=\"px-8 py-8\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td class=\"px-8\" mat-cell *matCellDef=\"let item\">\r\n <sd-desktop-command [commands]=\"gridOption.commands\" [item]=\"item\"></sd-desktop-command>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdGroup\">\r\n <th mat-header-cell *matHeaderCellDef class=\"px-8 py-8\" [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\" [attr.colspan]=\"!item?.sdGroup ? 1 : configuration.displayedColumns.length\">\r\n <div [innerHtml]=\"item?.sdGroup?.htmlTemplate | safeHtml\"></div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container\r\n *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n cdkDrag\r\n class=\"px-8 py-8 c-th\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\"\r\n [attr.rowspan]=\"configuration.multipleHeader && column.type !== 'children-col' ? 2 : 1\"\r\n [attr.colspan]=\"column.type === 'children-col' ? column.children?.length : 1\">\r\n <div>\r\n <div\r\n aria-hidden=\"false\"\r\n role=\"presentation\"\r\n mat-sort-header\r\n [disabled]=\"!column.sortable || column.type === 'children-col'\"\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"configuration.firstColumns[i].titleHtml || configuration.firstColumns[i].title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\"\r\n [columnOperator]=\"columnOperator\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\">\r\n </sd-column-inline-filter>\r\n </div>\r\n </th>\r\n <td class=\"c-td px-0\" mat-cell *matCellDef=\"let item\">\r\n <sd-desktop-cell\r\n class=\"d-block px-8\"\r\n *ngIf=\"!item?.sdGroup\"\r\n [sdId]=\"item.meta.id\"\r\n [key]=\"key\"\r\n [value]=\"item[column.field]\"\r\n [column]=\"column\"\r\n [item]=\"item\"\r\n [idx]=\"i\"\r\n [cellDef]=\"cellDef\"\r\n [gridOption]=\"gridOption\">\r\n </sd-desktop-cell>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef>\r\n <ng-container *ngIf=\"footerDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"footerDef[column.field].templateRef; context: { items: items, column: column }\">\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.secondColumns; let i = index\" [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header class=\"c-th px-8\" [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"column.titleHtml || column.title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\">\r\n </sd-column-inline-filter>\r\n </div>\r\n </th>\r\n <td class=\"c-td px-0\" mat-cell *matCellDef=\"let item\">\r\n <sd-desktop-cell\r\n class=\"d-block px-8\"\r\n [sdId]=\"item.meta.id\"\r\n [key]=\"key\"\r\n [value]=\"item[column.field]\"\r\n [column]=\"column\"\r\n [item]=\"item\"\r\n [idx]=\"i\"\r\n [cellDef]=\"cellDef\"\r\n [gridOption]=\"gridOption\">\r\n </sd-desktop-cell>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef>\r\n <ng-container *ngIf=\"footerDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"footerDef[column.field].templateRef; context: { items: items, column: column }\">\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <tr class=\"c-first-header\" mat-header-row *matHeaderRowDef=\"configuration.firstHeaders; sticky: true\"></tr>\r\n <ng-container *ngIf=\"configuration.secondHeaders?.length\">\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\"></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: configuration.displayedColumns\"\r\n matRipple\r\n class=\"c-row\"\r\n [class.selected]=\"row.isSelected\"></tr>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: ['sdSubInformation']\" class=\"c-detail-row\"></tr>\r\n <ng-container *ngIf=\"hasFooter && configuration.displayedFooters?.length\">\r\n <tr mat-footer-row *matFooterRowDef=\"configuration.displayedFooters; sticky: true\"></tr>\r\n </ng-container>\r\n </table>\r\n <ng-template #elseEmpty>\r\n <table mat-table [dataSource]=\"[{}]\">\r\n <ng-container matColumnDef=\"sdSelection\" sticky>\r\n <th\r\n class=\"px-15\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdCommand\">\r\n <th\r\n class=\"px-8\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdSubInformationAction\">\r\n <th\r\n class=\"p-0\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"width: 1px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEmpty\">\r\n <td class=\"c-empty\" mat-cell *matCellDef=\"let item\" [attr.colspan]=\"configuration.displayedColumns.length\">\r\n <ng-container *ngIf=\"sdEmptyData?.templateRef; else sdEmptyDataNoRef\">\r\n <ng-container *ngTemplateOutlet=\"sdEmptyData.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-template #sdEmptyDataNoRef>\r\n <mat-icon fontSet=\"material-icons-outlined\">leaderboard</mat-icon>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdGroup\">\r\n <th mat-header-cell *matHeaderCellDef class=\"px-8 py-8\" [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\"></td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container\r\n *ngFor=\"let column of configuration.columns\"\r\n [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\" [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"column.titleHtml || column.title\"></div>\r\n </th>\r\n </ng-container>\r\n <ng-container\r\n *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"c-th px-8 py-8\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\"\r\n [attr.rowspan]=\"configuration.multipleHeader && column.type !== 'children-col' ? 2 : 1\"\r\n [attr.colspan]=\"column.type === 'children-col' ? column.children?.length : 1\">\r\n <div>\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"configuration.firstColumns[i].titleHtml || configuration.firstColumns[i].title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\"></sd-column-inline-filter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.secondColumns\" [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\" [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"column.titleHtml || column.title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\"></sd-column-inline-filter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <tr class=\"c-first-header\" mat-header-row *matHeaderRowDef=\"configuration.firstHeaders; sticky: true\"></tr>\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['sdEmpty']\"></tr>\r\n </table>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-paginator\">\r\n <div class=\"c-action\">\r\n <sd-button\r\n *ngIf=\"gridFilter && !gridOption.filter?.inlineColumn\"\r\n class=\"mr-10\"\r\n [title]=\"'Filter' | sdTranslate\"\r\n icon=\"filter_alt\"\r\n size=\"sm\"\r\n (action)=\"gridFilter.open()\"\r\n type=\"link\">\r\n </sd-button>\r\n <sd-button\r\n *ngIf=\"gridOption.reload?.visible\"\r\n class=\"mr-10\"\r\n [title]=\"'Reload' | sdTranslate\"\r\n icon=\"refresh\"\r\n size=\"sm\"\r\n (action)=\"reload()\"\r\n [disabled]=\"!items?.length\"\r\n type=\"link\">\r\n </sd-button>\r\n <ng-container *ngIf=\"gridOption.export?.visible && items?.length\">\r\n <ng-container *ngIf=\"isExporting; else unExporting\">\r\n <sd-button class=\"mr-10\" [loading]=\"isExporting\" [title]=\"exportTitle | sdTranslate\" icon=\"get_app\" size=\"sm\" type=\"link\">\r\n </sd-button>\r\n </ng-container>\r\n <ng-template #unExporting>\r\n <sd-button\r\n class=\"mr-10\"\r\n [title]=\"exportTitle | sdTranslate\"\r\n icon=\"get_app\"\r\n size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\"\r\n type=\"link\">\r\n </sd-button>\r\n </ng-template>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item (click)=\"exportExcel()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> Xu\u1EA5t excel</span>\r\n </button>\r\n <button mat-menu-item (click)=\"exportCSV()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> Xu\u1EA5t CSV</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <sd-button\r\n *ngIf=\"gridOption.config?.visible\"\r\n class=\"mr-10\"\r\n [title]=\"'Configure' | sdTranslate\"\r\n icon=\"settings\"\r\n size=\"sm\"\r\n (action)=\"popupGridConfiguration.open()\"\r\n type=\"link\">\r\n </sd-button>\r\n </div>\r\n <mat-paginator\r\n [class.d-none]=\"gridOption.paginate?.hidden\"\r\n [length]=\"total\"\r\n [pageSize]=\"gridOption.paginate?.pageSize\"\r\n [pageSizeOptions]=\"gridOption.paginate?.pages\"\r\n [showFirstLastButtons]=\"gridOption.paginate?.showFirstLastButtons\"></mat-paginator>\r\n </div>\r\n </div>\r\n <sd-grid-quick-action [gridOption]=\"gridOption\" [selectedItems]=\"selectedItems\" (clear)=\"onClearSelection(groupedItems)\">\r\n </sd-grid-quick-action>\r\n <sd-popup-grid-configuration [gridOption]=\"gridOption\" [key]=\"key\" #popupGridConfiguration> </sd-popup-grid-configuration>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n",
|
|
2425
|
+
template: "<ng-container *ngIf=\"gridConfigurationObserver | async as gridConfiguration\">\r\n <ng-container *ngIf=\"gridConfiguration | sdGridConfigurationResult : gridOption : sdSubInformation as configuration\">\r\n <sd-grid-filter\r\n *ngIf=\"!gridOption.filter?.disabled && filterRegister\"\r\n [filterRegister]=\"filterRegister\"\r\n [filter]=\"gridOption?.filter\"\r\n [columns]=\"configuration.firstColumns\"\r\n [externalFilters]=\"gridOption?.filter?.externalFilters\"\r\n [filterDefs]=\"filterDefs\"\r\n #gridFilter>\r\n </sd-grid-filter>\r\n <ng-container *ngIf=\"items | sdGroup : gridOption; $implicit as groupedItems\">\r\n <div class=\"c-container\">\r\n <div class=\"c-loading\" *ngIf=\"isLoading\">\r\n <mat-spinner *ngIf=\"isLoading\"></mat-spinner>\r\n </div>\r\n <ng-container>\r\n <div\r\n class=\"c-table\"\r\n sdScroll\r\n [ngStyle]=\"{\r\n 'max-height': gridOption?.style?.maxHeight,\r\n 'min-height': gridOption?.style?.minHeight\r\n }\">\r\n <table\r\n *ngIf=\"items?.length; else elseEmpty\"\r\n mat-table\r\n [dataSource]=\"groupedItems\"\r\n matSort\r\n [matSortDisabled]=\"!gridOption.sort?.enable\"\r\n multiTemplateDataRows>\r\n <ng-container matColumnDef=\"sdSubInformation\" sticky>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\" [attr.colspan]=\"configuration.displayedColumns.length\">\r\n <ng-container *ngIf=\"sdSubInformation?.templateRef\">\r\n <ng-container *ngIf=\"gridOption?.expand?.always; else useExpandCollapse\">\r\n <ng-container *ngTemplateOutlet=\"sdSubInformation.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-template #useExpandCollapse>\r\n <div [@detailExpand]=\"item.isExpanded ? 'expanded' : 'collapsed'\">\r\n <ng-container *ngIf=\"item.isExpanded\">\r\n <ng-container *ngTemplateOutlet=\"sdSubInformation.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n </div>\r\n </ng-template>\r\n </ng-container>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdSubInformationAction\" stickyEnd>\r\n <th\r\n class=\"p-0\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"width: 1px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button\r\n *ngIf=\"!element.isExpanding && !gridOption?.expand?.always\"\r\n mat-icon-button\r\n aria-label=\"Expand & Collapse\"\r\n (click)=\"onExpand(element)\">\r\n <mat-icon *ngIf=\"!element.isExpanded\">expand_more</mat-icon>\r\n <mat-icon *ngIf=\"element.isExpanded\">expand_less</mat-icon>\r\n </button>\r\n <div *ngIf=\"element.isExpanding\" class=\"lds-ring\">\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n <div></div>\r\n </div>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdSelection\" sticky>\r\n <th\r\n class=\"text-center px-15\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <ng-container *ngIf=\"items | selectionVisibleSelectAll : gridOption?.selector | async\">\r\n <mat-checkbox\r\n *ngIf=\"!gridOption.selector?.single\"\r\n class=\"c-selection\"\r\n color=\"primary\"\r\n [(ngModel)]=\"isSelectAll\"\r\n (change)=\"onSelectAll()\">\r\n </mat-checkbox>\r\n </ng-container>\r\n </th>\r\n <td class=\"text-center px-15\" mat-cell *matCellDef=\"let item\" style=\"min-width: 50px; max-width: 50px\">\r\n <ng-container *ngIf=\"item | selectionVisible : gridOption?.selector\">\r\n <mat-checkbox\r\n class=\"c-selection\"\r\n color=\"primary\"\r\n [(ngModel)]=\"item.isSelected\"\r\n (change)=\"onSelect(item)\"\r\n [disabled]=\"selectedItems | selectionDisable : item : gridOption?.selector\">\r\n </mat-checkbox>\r\n </ng-container>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdCommand\">\r\n <th\r\n class=\"px-8 py-8\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td class=\"px-8\" mat-cell *matCellDef=\"let item\">\r\n <sd-desktop-command [commands]=\"gridOption.commands\" [item]=\"item\"></sd-desktop-command>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdGroup\">\r\n <th mat-header-cell *matHeaderCellDef class=\"px-8 py-8\" [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\" [attr.colspan]=\"!item?.sdGroup ? 1 : configuration.displayedColumns.length\">\r\n <div [innerHtml]=\"item?.sdGroup?.htmlTemplate | safeHtml\"></div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container\r\n *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n cdkDrag\r\n class=\"px-8 py-8 c-th\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\"\r\n [attr.rowspan]=\"configuration.multipleHeader && column.type !== 'children-col' ? 2 : 1\"\r\n [attr.colspan]=\"column.type === 'children-col' ? column.children?.length : 1\">\r\n <div>\r\n <div\r\n aria-hidden=\"false\"\r\n role=\"presentation\"\r\n mat-sort-header\r\n [disabled]=\"!column.sortable || column.type === 'children-col'\"\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"configuration.firstColumns[i].titleHtml || configuration.firstColumns[i].title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn && columnOperator\"\r\n [value]=\"columnFilter[column.field]\"\r\n [(inlineOperator)]=\"columnOperator[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\">\r\n </sd-column-inline-filter>\r\n </div>\r\n </th>\r\n <td class=\"c-td px-0\" mat-cell *matCellDef=\"let item\">\r\n <sd-desktop-cell\r\n class=\"d-block px-8\"\r\n *ngIf=\"!item?.sdGroup\"\r\n [sdId]=\"item.meta.id\"\r\n [key]=\"key\"\r\n [value]=\"item[column.field]\"\r\n [column]=\"column\"\r\n [item]=\"item\"\r\n [idx]=\"i\"\r\n [cellDef]=\"cellDef\"\r\n [gridOption]=\"gridOption\">\r\n </sd-desktop-cell>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef>\r\n <ng-container *ngIf=\"footerDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"footerDef[column.field].templateRef; context: { items: items, column: column }\">\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.secondColumns; let i = index\" [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header class=\"c-th px-8\" [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"column.titleHtml || column.title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn && columnOperator\"\r\n [value]=\"columnFilter[column.field]\"\r\n [(inlineOperator)]=\"columnOperator[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\">\r\n </sd-column-inline-filter>\r\n </div>\r\n </th>\r\n <td class=\"c-td px-0\" mat-cell *matCellDef=\"let item\">\r\n <sd-desktop-cell\r\n class=\"d-block px-8\"\r\n [sdId]=\"item.meta.id\"\r\n [key]=\"key\"\r\n [value]=\"item[column.field]\"\r\n [column]=\"column\"\r\n [item]=\"item\"\r\n [idx]=\"i\"\r\n [cellDef]=\"cellDef\"\r\n [gridOption]=\"gridOption\">\r\n </sd-desktop-cell>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef>\r\n <ng-container *ngIf=\"footerDef[column.field]\">\r\n <ng-container *ngTemplateOutlet=\"footerDef[column.field].templateRef; context: { items: items, column: column }\">\r\n </ng-container>\r\n </ng-container>\r\n </td>\r\n </ng-container>\r\n <tr class=\"c-first-header\" mat-header-row *matHeaderRowDef=\"configuration.firstHeaders; sticky: true\"></tr>\r\n <ng-container *ngIf=\"configuration.secondHeaders?.length\">\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\"></tr>\r\n </ng-container>\r\n <tr\r\n mat-row\r\n *matRowDef=\"let row; columns: configuration.displayedColumns\"\r\n matRipple\r\n class=\"c-row\"\r\n [class.selected]=\"row.isSelected\"></tr>\r\n\r\n <tr mat-row *matRowDef=\"let row; columns: ['sdSubInformation']\" class=\"c-detail-row\"></tr>\r\n <ng-container *ngIf=\"hasFooter && configuration.displayedFooters?.length\">\r\n <tr mat-footer-row *matFooterRowDef=\"configuration.displayedFooters; sticky: true\"></tr>\r\n </ng-container>\r\n </table>\r\n <ng-template #elseEmpty>\r\n <table mat-table [dataSource]=\"[{}]\">\r\n <ng-container matColumnDef=\"sdSelection\" sticky>\r\n <th\r\n class=\"px-15\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdCommand\">\r\n <th\r\n class=\"px-8\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdSubInformationAction\">\r\n <th\r\n class=\"p-0\"\r\n mat-header-cell\r\n *matHeaderCellDef\r\n style=\"width: 1px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEmpty\">\r\n <td class=\"c-empty\" mat-cell *matCellDef=\"let item\" [attr.colspan]=\"configuration.displayedColumns.length\">\r\n <ng-container *ngIf=\"sdEmptyData?.templateRef; else sdEmptyDataNoRef\">\r\n <ng-container *ngTemplateOutlet=\"sdEmptyData.templateRef; context: { item: item }\"> </ng-container>\r\n </ng-container>\r\n <ng-template #sdEmptyDataNoRef>\r\n <mat-icon fontSet=\"material-icons-outlined\">leaderboard</mat-icon>\r\n </ng-template>\r\n </td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdGroup\">\r\n <th mat-header-cell *matHeaderCellDef class=\"px-8 py-8\" [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\"></td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container\r\n *ngFor=\"let column of configuration.columns\"\r\n [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\" [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"column.titleHtml || column.title\"></div>\r\n </th>\r\n </ng-container>\r\n <ng-container\r\n *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th\r\n mat-header-cell\r\n *matHeaderCellDef\r\n class=\"c-th px-8 py-8\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\"\r\n [attr.rowspan]=\"configuration.multipleHeader && column.type !== 'children-col' ? 2 : 1\"\r\n [attr.colspan]=\"column.type === 'children-col' ? column.children?.length : 1\">\r\n <div>\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"configuration.firstColumns[i].titleHtml || configuration.firstColumns[i].title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn && columnOperator\"\r\n [value]=\"columnFilter[column.field]\"\r\n [(inlineOperator)]=\"columnOperator[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\">\r\n </sd-column-inline-filter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.secondColumns\" [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\" [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div\r\n [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\"\r\n [innerHTML]=\"column.titleHtml || column.title\"></div>\r\n <sd-column-inline-filter\r\n *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\"\r\n [columnFilter]=\"columnFilter\"\r\n [column]=\"column\"\r\n (filterChange)=\"onFilterChange()\"></sd-column-inline-filter>\r\n </div>\r\n </th>\r\n </ng-container>\r\n <tr class=\"c-first-header\" mat-header-row *matHeaderRowDef=\"configuration.firstHeaders; sticky: true\"></tr>\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\"></tr>\r\n <tr mat-row *matRowDef=\"let row; columns: ['sdEmpty']\"></tr>\r\n </table>\r\n </ng-template>\r\n </div>\r\n </ng-container>\r\n <div class=\"c-paginator\">\r\n <div class=\"c-action\">\r\n <sd-button\r\n *ngIf=\"gridFilter && !gridOption.filter?.inlineColumn\"\r\n class=\"mr-10\"\r\n [title]=\"'Filter' | sdTranslate\"\r\n icon=\"filter_alt\"\r\n size=\"sm\"\r\n (action)=\"gridFilter.open()\"\r\n type=\"link\">\r\n </sd-button>\r\n <sd-button\r\n *ngIf=\"gridOption.reload?.visible\"\r\n class=\"mr-10\"\r\n [title]=\"'Reload' | sdTranslate\"\r\n icon=\"refresh\"\r\n size=\"sm\"\r\n (action)=\"reload()\"\r\n [disabled]=\"!items?.length\"\r\n type=\"link\">\r\n </sd-button>\r\n <ng-container *ngIf=\"gridOption.export?.visible && items?.length\">\r\n <ng-container *ngIf=\"isExporting; else unExporting\">\r\n <sd-button class=\"mr-10\" [loading]=\"isExporting\" [title]=\"exportTitle | sdTranslate\" icon=\"get_app\" size=\"sm\" type=\"link\">\r\n </sd-button>\r\n </ng-container>\r\n <ng-template #unExporting>\r\n <sd-button\r\n class=\"mr-10\"\r\n [title]=\"exportTitle | sdTranslate\"\r\n icon=\"get_app\"\r\n size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\"\r\n type=\"link\">\r\n </sd-button>\r\n </ng-template>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <button mat-menu-item (click)=\"exportExcel()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> Xu\u1EA5t excel</span>\r\n </button>\r\n <button mat-menu-item (click)=\"exportCSV()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> Xu\u1EA5t CSV</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <sd-button\r\n *ngIf=\"gridOption.config?.visible\"\r\n class=\"mr-10\"\r\n [title]=\"'Configure' | sdTranslate\"\r\n icon=\"settings\"\r\n size=\"sm\"\r\n (action)=\"popupGridConfiguration.open()\"\r\n type=\"link\">\r\n </sd-button>\r\n </div>\r\n <mat-paginator\r\n [class.d-none]=\"gridOption.paginate?.hidden\"\r\n [length]=\"total\"\r\n [pageSize]=\"gridOption.paginate?.pageSize\"\r\n [pageSizeOptions]=\"gridOption.paginate?.pages\"\r\n [showFirstLastButtons]=\"gridOption.paginate?.showFirstLastButtons\"></mat-paginator>\r\n </div>\r\n </div>\r\n <sd-grid-quick-action [gridOption]=\"gridOption\" [selectedItems]=\"selectedItems\" (clear)=\"onClearSelection(groupedItems)\">\r\n </sd-grid-quick-action>\r\n <sd-popup-grid-configuration [gridOption]=\"gridOption\" [key]=\"key\" #popupGridConfiguration> </sd-popup-grid-configuration>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>\r\n",
|
|
2399
2426
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
2400
2427
|
animations: [
|
|
2401
2428
|
animations.trigger('detailExpand', [
|
|
@@ -3310,47 +3337,74 @@
|
|
|
3310
3337
|
var SdFilterOperators = [
|
|
3311
3338
|
{
|
|
3312
3339
|
value: 'EQUAL',
|
|
3313
|
-
|
|
3340
|
+
symbol: '=',
|
|
3341
|
+
display: 'Bằng',
|
|
3314
3342
|
},
|
|
3315
3343
|
{
|
|
3316
3344
|
value: 'NOT_EQUAL',
|
|
3317
|
-
|
|
3345
|
+
symbol: '≠',
|
|
3346
|
+
display: 'Không bằng',
|
|
3318
3347
|
},
|
|
3319
|
-
{
|
|
3320
|
-
value: 'CONTAIN',
|
|
3321
|
-
display: '∈',
|
|
3322
|
-
},
|
|
3323
|
-
// {
|
|
3324
|
-
// value: 'START_WITH';
|
|
3325
|
-
// display: '=';
|
|
3326
|
-
// },
|
|
3327
|
-
// {
|
|
3328
|
-
// value: 'END_WITH';
|
|
3329
|
-
// display: '=';
|
|
3330
|
-
// },
|
|
3331
3348
|
{
|
|
3332
3349
|
value: 'GREATER_THAN',
|
|
3333
|
-
|
|
3350
|
+
symbol: '>',
|
|
3351
|
+
display: 'Lớn hơn',
|
|
3334
3352
|
},
|
|
3335
3353
|
{
|
|
3336
3354
|
value: 'LESS_THAN',
|
|
3337
|
-
|
|
3355
|
+
symbol: '<',
|
|
3356
|
+
display: 'Nhỏ hơn',
|
|
3338
3357
|
},
|
|
3339
3358
|
{
|
|
3340
3359
|
value: 'GREATER_OR_EQUAL',
|
|
3341
|
-
|
|
3360
|
+
symbol: '≥',
|
|
3361
|
+
display: 'Lớn hơn, hoặc bằng'
|
|
3342
3362
|
},
|
|
3343
3363
|
{
|
|
3344
3364
|
value: 'LESS_OR_EQUAL',
|
|
3345
|
-
|
|
3365
|
+
symbol: '≤',
|
|
3366
|
+
display: 'Nhỏ hơn, hoặc bằng'
|
|
3367
|
+
},
|
|
3368
|
+
{
|
|
3369
|
+
value: 'CONTAIN',
|
|
3370
|
+
symbol: 'join_inner',
|
|
3371
|
+
display: 'Chứa',
|
|
3372
|
+
},
|
|
3373
|
+
{
|
|
3374
|
+
value: 'NOT_CONTAIN',
|
|
3375
|
+
symbol: 'join',
|
|
3376
|
+
display: 'Không chứa',
|
|
3377
|
+
},
|
|
3378
|
+
{
|
|
3379
|
+
value: 'START_WITH',
|
|
3380
|
+
symbol: 'line_start_circle',
|
|
3381
|
+
display: 'Bắt đầu bởi'
|
|
3382
|
+
},
|
|
3383
|
+
{
|
|
3384
|
+
value: 'END_WITH',
|
|
3385
|
+
symbol: 'line_end_circle',
|
|
3386
|
+
display: 'Kết thúc bởi'
|
|
3387
|
+
},
|
|
3388
|
+
{
|
|
3389
|
+
value: 'IN',
|
|
3390
|
+
symbol: 'checklist_rtl',
|
|
3391
|
+
display: 'Nằm trong'
|
|
3392
|
+
},
|
|
3393
|
+
{
|
|
3394
|
+
value: 'NOT_IN',
|
|
3395
|
+
symbol: 'event_list',
|
|
3396
|
+
display: 'Không nằm trong'
|
|
3346
3397
|
},
|
|
3347
3398
|
];
|
|
3348
3399
|
|
|
3349
|
-
var _valueChanges, _subcription;
|
|
3400
|
+
var _inlineOperator_1, _valueChanges, _subcription;
|
|
3350
3401
|
var SdColumnInlineFilter = /** @class */ (function () {
|
|
3351
|
-
function SdColumnInlineFilter() {
|
|
3402
|
+
function SdColumnInlineFilter(ref) {
|
|
3352
3403
|
var _this = this;
|
|
3353
|
-
this.
|
|
3404
|
+
this.ref = ref;
|
|
3405
|
+
this.inlineSymbol = 'filter_alt';
|
|
3406
|
+
_inlineOperator_1.set(this, void 0);
|
|
3407
|
+
this.inlineOperatorChange = new core.EventEmitter();
|
|
3354
3408
|
this.columnFilter = {};
|
|
3355
3409
|
this.operators = [];
|
|
3356
3410
|
this.filterChange = new core.EventEmitter();
|
|
@@ -3359,14 +3413,30 @@
|
|
|
3359
3413
|
this.onFilterChange = function () {
|
|
3360
3414
|
_this.filterChange.emit();
|
|
3361
3415
|
};
|
|
3416
|
+
this.onChangeOperator = function (operator) {
|
|
3417
|
+
if (operator) {
|
|
3418
|
+
__classPrivateFieldSet(_this, _inlineOperator_1, operator.value);
|
|
3419
|
+
_this.inlineSymbol = operator.symbol;
|
|
3420
|
+
}
|
|
3421
|
+
else {
|
|
3422
|
+
__classPrivateFieldSet(_this, _inlineOperator_1, null);
|
|
3423
|
+
_this.inlineSymbol = 'filter_alt';
|
|
3424
|
+
}
|
|
3425
|
+
_this.inlineOperatorChange.emit(__classPrivateFieldGet(_this, _inlineOperator_1));
|
|
3426
|
+
_this.ref.markForCheck();
|
|
3427
|
+
};
|
|
3362
3428
|
}
|
|
3363
3429
|
SdColumnInlineFilter.prototype._value = function (value) {
|
|
3364
3430
|
this.value = value;
|
|
3365
3431
|
__classPrivateFieldGet(this, _valueChanges).next();
|
|
3366
3432
|
};
|
|
3367
|
-
Object.defineProperty(SdColumnInlineFilter.prototype, "
|
|
3368
|
-
set: function (
|
|
3369
|
-
|
|
3433
|
+
Object.defineProperty(SdColumnInlineFilter.prototype, "_inlineOperator", {
|
|
3434
|
+
set: function (inlineOperator) {
|
|
3435
|
+
var _a, _b;
|
|
3436
|
+
if (__classPrivateFieldGet(this, _inlineOperator_1) !== inlineOperator) {
|
|
3437
|
+
__classPrivateFieldSet(this, _inlineOperator_1, inlineOperator);
|
|
3438
|
+
this.inlineSymbol = (_b = (_a = SdFilterOperators.find(function (e) { return e.value === inlineOperator; })) === null || _a === void 0 ? void 0 : _a.symbol) !== null && _b !== void 0 ? _b : 'filter_alt';
|
|
3439
|
+
}
|
|
3370
3440
|
},
|
|
3371
3441
|
enumerable: false,
|
|
3372
3442
|
configurable: true
|
|
@@ -3412,19 +3482,22 @@
|
|
|
3412
3482
|
};
|
|
3413
3483
|
return SdColumnInlineFilter;
|
|
3414
3484
|
}());
|
|
3415
|
-
_valueChanges = new WeakMap(), _subcription = new WeakMap();
|
|
3485
|
+
_inlineOperator_1 = new WeakMap(), _valueChanges = new WeakMap(), _subcription = new WeakMap();
|
|
3416
3486
|
SdColumnInlineFilter.decorators = [
|
|
3417
3487
|
{ type: core.Component, args: [{
|
|
3418
3488
|
selector: 'sd-column-inline-filter',
|
|
3419
|
-
template: "<div class=\"d-flex c-inline-column\">\r\n <ng-container\r\n *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\r\n \">\r\n <
|
|
3489
|
+
template: "<div class=\"d-flex c-inline-column\">\r\n <ng-container\r\n *ngIf=\"\r\n column.type === 'string' ||\r\n column.type === 'number' ||\r\n column.type === 'bool' ||\r\n column.type === 'values' ||\r\n column.type === 'date' ||\r\n column.type === 'datetime' ||\r\n column.type === 'time';\r\n else noFilter\r\n \">\r\n <div class=\"d-flex align-items-center\" *ngIf=\"operators.length\">\r\n <!-- Only number column icon broken. add mb when not default symbol -->\r\n <sd-button class=\"{{ (column.type === 'number' && inlineSymbol !== 'filter_alt') ? 'mb-4 mr-2 ' :'mr-2 '}}\" fontSet=\"material-symbols-outlined\" [icon]=\"inlineSymbol\" size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\" type=\"link\"> </sd-button>\r\n <mat-menu #menu=\"matMenu\">\r\n <button *ngFor=\"let operator of operators\" (click)=\"onChangeOperator(operator)\" mat-menu-item type=\"button\">\r\n <mat-icon fontSet=\"material-symbols-outlined\" class=\"{{column.type === 'number' ? 'mb-8 ':''}}\">{{ operator.symbol }}</mat-icon>\r\n <span> {{ operator.display }}</span>\r\n </button>\r\n </mat-menu>\r\n </div>\r\n <sd-input\r\n *ngIf=\"column.type === 'string'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n type=\"text\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-input>\r\n <sd-input-number\r\n *ngIf=\"column.type === 'number'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (keyupEnter)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-input-number>\r\n <sd-select\r\n *ngIf=\"column.type === 'bool'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"[\r\n { value: '1', display: column.option?.displayOnTrue || 'True' },\r\n { value: '0', display: column.option?.displayOnFalse || 'False' }\r\n ]\"\r\n valueField=\"value\"\r\n displayField=\"display\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n <ng-template sdSelectDisplayDef let-item=\"item\">\r\n <sd-badge *ngIf=\"item.value === '1'\" color=\"success\" [title]=\"column.option?.displayOnTrue || 'True'\"> </sd-badge>\r\n <sd-badge *ngIf=\"item.value === '0'\" color=\"danger\" [title]=\"column.option?.displayOnFalse || 'False'\"> </sd-badge>\r\n </ng-template>\r\n </sd-select>\r\n <sd-select\r\n *ngIf=\"column.type === 'values' && column?.option?.selection !== 'AUTOCOMPLETE'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"column.option.items\"\r\n [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\"\r\n [multiple]=\"column?.option?.selection === 'MULTIPLE' || column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\"\r\n [filtered]=\"column?.option?.selection === 'MULTIPLEAUTOCOMPLETE'\">\r\n </sd-select>\r\n <sd-autocomplete\r\n *ngIf=\"column.type === 'values' && column?.option?.selection === 'AUTOCOMPLETE'\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [items]=\"column.option.items\"\r\n [valueField]=\"column.option.valueField\"\r\n [displayField]=\"column.option.displayField\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-autocomplete>\r\n <ng-container *ngIf=\"column.type === 'date' || column.type === 'datetime' || column.type === 'time'\">\r\n <sd-date-range\r\n *ngIf=\"!column.option?.useFilterDate\"\r\n style=\"flex: 1\"\r\n size=\"sm\"\r\n [(from)]=\"columnFilter[column.field].from\"\r\n [(to)]=\"columnFilter[column.field].to\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-range>\r\n <sd-date-time\r\n *ngIf=\"column.option?.useFilterDate\"\r\n style=\"flex: 1\"\r\n type=\"date\"\r\n size=\"sm\"\r\n [(model)]=\"columnFilter[column.field]\"\r\n (sdChange)=\"onFilterChange()\"\r\n [disabled]=\"column.filter?.disabled\">\r\n </sd-date-time>\r\n </ng-container>\r\n </ng-container>\r\n <ng-template #noFilter>\r\n <sd-input type=\"text\" size=\"sm\" disabled> </sd-input>\r\n </ng-template>\r\n</div>\r\n",
|
|
3420
3490
|
changeDetection: core.ChangeDetectionStrategy.OnPush,
|
|
3421
3491
|
styles: [":host ::ng-deep .c-inline-column .mat-form-field-wrapper{background-color:#fff;border-radius:8px;margin:8px 0 0!important;padding:0!important}"]
|
|
3422
3492
|
},] }
|
|
3423
3493
|
];
|
|
3424
|
-
SdColumnInlineFilter.ctorParameters = function () { return [
|
|
3494
|
+
SdColumnInlineFilter.ctorParameters = function () { return [
|
|
3495
|
+
{ type: core.ChangeDetectorRef }
|
|
3496
|
+
]; };
|
|
3425
3497
|
SdColumnInlineFilter.propDecorators = {
|
|
3426
3498
|
_value: [{ type: core.Input, args: ['value',] }],
|
|
3427
|
-
|
|
3499
|
+
_inlineOperator: [{ type: core.Input, args: ['inlineOperator',] }],
|
|
3500
|
+
inlineOperatorChange: [{ type: core.Output }],
|
|
3428
3501
|
_columnFilter: [{ type: core.Input, args: ['columnFilter',] }],
|
|
3429
3502
|
_column: [{ type: core.Input, args: ['column',] }],
|
|
3430
3503
|
filterChange: [{ type: core.Output }]
|