@sd-angular/core 1.3.35 → 1.3.36
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-export.umd.js +1 -51
- package/bundles/sd-angular-core-export.umd.js.map +1 -1
- package/bundles/sd-angular-core-export.umd.min.js +1 -1
- package/bundles/sd-angular-core-export.umd.min.js.map +1 -1
- package/bundles/sd-angular-core-grid-material.umd.js +153 -181
- 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/esm2015/export/src/lib/export.service.js +2 -43
- package/esm2015/grid-material/src/lib/components/popup-export/popup-export.component.js +1 -8
- package/esm2015/grid-material/src/lib/grid-material.component.js +18 -36
- package/esm2015/grid-material/src/lib/models/grid-export.model.js +1 -1
- package/export/src/lib/export.service.d.ts +1 -2
- package/fesm2015/sd-angular-core-export.js +1 -42
- package/fesm2015/sd-angular-core-export.js.map +1 -1
- package/fesm2015/sd-angular-core-grid-material.js +17 -42
- package/fesm2015/sd-angular-core-grid-material.js.map +1 -1
- package/grid-material/sd-angular-core-grid-material.metadata.json +1 -1
- package/grid-material/src/lib/components/popup-export/popup-export.component.d.ts +0 -2
- package/grid-material/src/lib/grid-material.component.d.ts +0 -1
- package/grid-material/src/lib/models/grid-export.model.d.ts +0 -1
- package/package.json +1 -1
- package/{sd-angular-core-1.3.35.tgz → sd-angular-core-1.3.36.tgz} +0 -0
|
@@ -897,13 +897,6 @@
|
|
|
897
897
|
isCSV: true
|
|
898
898
|
});
|
|
899
899
|
};
|
|
900
|
-
this.exportRaw = function () {
|
|
901
|
-
_this.export.emit({
|
|
902
|
-
file: null,
|
|
903
|
-
columns: __classPrivateFieldGet(_this, _getExportColumns).call(_this),
|
|
904
|
-
isRaw: true
|
|
905
|
-
});
|
|
906
|
-
};
|
|
907
900
|
this.loadFiles = function (group) {
|
|
908
901
|
if (group === void 0) { group = null; }
|
|
909
902
|
return __awaiter(_this, void 0, void 0, function () {
|
|
@@ -1885,11 +1878,11 @@
|
|
|
1885
1878
|
this.exportTitle = 'Export';
|
|
1886
1879
|
_loadCompleted.set(this, false);
|
|
1887
1880
|
_initCellDef.set(this, function () {
|
|
1888
|
-
var e_1,
|
|
1881
|
+
var e_1, _2;
|
|
1889
1882
|
_this.cellDef = {};
|
|
1890
1883
|
try {
|
|
1891
|
-
for (var
|
|
1892
|
-
var cellDef =
|
|
1884
|
+
for (var _3 = __values(_this.sdCellDefs), _4 = _3.next(); !_4.done; _4 = _3.next()) {
|
|
1885
|
+
var cellDef = _4.value;
|
|
1893
1886
|
if (cellDef.sdMaterialCellDef) {
|
|
1894
1887
|
_this.cellDef[cellDef.sdMaterialCellDef] = cellDef;
|
|
1895
1888
|
}
|
|
@@ -1898,35 +1891,35 @@
|
|
|
1898
1891
|
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
1899
1892
|
finally {
|
|
1900
1893
|
try {
|
|
1901
|
-
if (
|
|
1894
|
+
if (_4 && !_4.done && (_2 = _3.return)) _2.call(_3);
|
|
1902
1895
|
}
|
|
1903
1896
|
finally { if (e_1) throw e_1.error; }
|
|
1904
1897
|
}
|
|
1905
1898
|
});
|
|
1906
1899
|
_initFilterDef.set(this, function () {
|
|
1907
|
-
var e_2,
|
|
1900
|
+
var e_2, _2;
|
|
1908
1901
|
_this.filterDefs = [];
|
|
1909
1902
|
try {
|
|
1910
|
-
for (var
|
|
1911
|
-
var filterDef =
|
|
1903
|
+
for (var _3 = __values(_this.sdFilterDefs), _4 = _3.next(); !_4.done; _4 = _3.next()) {
|
|
1904
|
+
var filterDef = _4.value;
|
|
1912
1905
|
_this.filterDefs.push(filterDef);
|
|
1913
1906
|
}
|
|
1914
1907
|
}
|
|
1915
1908
|
catch (e_2_1) { e_2 = { error: e_2_1 }; }
|
|
1916
1909
|
finally {
|
|
1917
1910
|
try {
|
|
1918
|
-
if (
|
|
1911
|
+
if (_4 && !_4.done && (_2 = _3.return)) _2.call(_3);
|
|
1919
1912
|
}
|
|
1920
1913
|
finally { if (e_2) throw e_2.error; }
|
|
1921
1914
|
}
|
|
1922
1915
|
});
|
|
1923
1916
|
_initFooterDef.set(this, function () {
|
|
1924
|
-
var e_3,
|
|
1917
|
+
var e_3, _2;
|
|
1925
1918
|
_this.footerDef = {};
|
|
1926
1919
|
_this.hasFooter = false;
|
|
1927
1920
|
try {
|
|
1928
|
-
for (var
|
|
1929
|
-
var footerDef =
|
|
1921
|
+
for (var _3 = __values(_this.sdFooterDefs), _4 = _3.next(); !_4.done; _4 = _3.next()) {
|
|
1922
|
+
var footerDef = _4.value;
|
|
1930
1923
|
if (footerDef.sdMaterialFooterDef) {
|
|
1931
1924
|
_this.hasFooter = true;
|
|
1932
1925
|
_this.footerDef[footerDef.sdMaterialFooterDef] = footerDef;
|
|
@@ -1936,7 +1929,7 @@
|
|
|
1936
1929
|
catch (e_3_1) { e_3 = { error: e_3_1 }; }
|
|
1937
1930
|
finally {
|
|
1938
1931
|
try {
|
|
1939
|
-
if (
|
|
1932
|
+
if (_4 && !_4.done && (_2 = _3.return)) _2.call(_3);
|
|
1940
1933
|
}
|
|
1941
1934
|
finally { if (e_3) throw e_3.error; }
|
|
1942
1935
|
}
|
|
@@ -1968,7 +1961,7 @@
|
|
|
1968
1961
|
var columns = _this.gridOption.columns;
|
|
1969
1962
|
var rawColumnFilter = filterInfo.rawColumnFilter, orderBy = filterInfo.orderBy, orderDirection = filterInfo.orderDirection, pageSize = filterInfo.pageSize, pageNumber = filterInfo.pageNumber;
|
|
1970
1963
|
var items = localItems.filter(function (item) {
|
|
1971
|
-
var e_4,
|
|
1964
|
+
var e_4, _2;
|
|
1972
1965
|
var _a, _b, _c, _d;
|
|
1973
1966
|
try {
|
|
1974
1967
|
for (var columns_1 = __values(columns), columns_1_1 = columns_1.next(); !columns_1_1.done; columns_1_1 = columns_1.next()) {
|
|
@@ -2042,7 +2035,7 @@
|
|
|
2042
2035
|
catch (e_4_1) { e_4 = { error: e_4_1 }; }
|
|
2043
2036
|
finally {
|
|
2044
2037
|
try {
|
|
2045
|
-
if (columns_1_1 && !columns_1_1.done && (
|
|
2038
|
+
if (columns_1_1 && !columns_1_1.done && (_2 = columns_1.return)) _2.call(columns_1);
|
|
2046
2039
|
}
|
|
2047
2040
|
finally { if (e_4) throw e_4.error; }
|
|
2048
2041
|
}
|
|
@@ -2100,14 +2093,14 @@
|
|
|
2100
2093
|
_load$1.set(this, function (filterReq, force) {
|
|
2101
2094
|
if (force === void 0) { force = true; }
|
|
2102
2095
|
return __awaiter(_this, void 0, void 0, function () {
|
|
2103
|
-
var result, data, results,
|
|
2104
|
-
return __generator(this, function (
|
|
2105
|
-
switch (
|
|
2096
|
+
var result, data, results, _2, _3, error_1;
|
|
2097
|
+
return __generator(this, function (_4) {
|
|
2098
|
+
switch (_4.label) {
|
|
2106
2099
|
case 0:
|
|
2107
2100
|
this.isLoading = true;
|
|
2108
|
-
|
|
2101
|
+
_4.label = 1;
|
|
2109
2102
|
case 1:
|
|
2110
|
-
|
|
2103
|
+
_4.trys.push([1, 8, 9, 10]);
|
|
2111
2104
|
if (!(this.gridOption.type === 'server')) return [3 /*break*/, 3];
|
|
2112
2105
|
result = this.gridOption.items(filterReq);
|
|
2113
2106
|
if (rxjs.isObservable(result)) {
|
|
@@ -2115,7 +2108,7 @@
|
|
|
2115
2108
|
}
|
|
2116
2109
|
return [4 /*yield*/, result];
|
|
2117
2110
|
case 2:
|
|
2118
|
-
data =
|
|
2111
|
+
data = _4.sent();
|
|
2119
2112
|
return [2 /*return*/, {
|
|
2120
2113
|
items: data.items || [],
|
|
2121
2114
|
total: data.total || 0
|
|
@@ -2124,19 +2117,19 @@
|
|
|
2124
2117
|
if (!force) return [3 /*break*/, 6];
|
|
2125
2118
|
results = this.gridOption.items();
|
|
2126
2119
|
if (!(results instanceof Promise)) return [3 /*break*/, 5];
|
|
2127
|
-
|
|
2128
|
-
|
|
2120
|
+
_2 = __classPrivateFieldSet;
|
|
2121
|
+
_3 = [this, _localItems];
|
|
2129
2122
|
return [4 /*yield*/, results];
|
|
2130
2123
|
case 4:
|
|
2131
|
-
|
|
2124
|
+
_2.apply(void 0, _3.concat([_4.sent()]));
|
|
2132
2125
|
return [3 /*break*/, 6];
|
|
2133
2126
|
case 5:
|
|
2134
2127
|
__classPrivateFieldSet(this, _localItems, results);
|
|
2135
|
-
|
|
2128
|
+
_4.label = 6;
|
|
2136
2129
|
case 6: return [2 /*return*/, __classPrivateFieldGet(this, _filterLocal).call(this, __classPrivateFieldGet(this, _localItems), filterReq)];
|
|
2137
2130
|
case 7: return [3 /*break*/, 10];
|
|
2138
2131
|
case 8:
|
|
2139
|
-
error_1 =
|
|
2132
|
+
error_1 = _4.sent();
|
|
2140
2133
|
this.notifyService.handle.error(error_1);
|
|
2141
2134
|
return [3 /*break*/, 10];
|
|
2142
2135
|
case 9:
|
|
@@ -2150,8 +2143,8 @@
|
|
|
2150
2143
|
});
|
|
2151
2144
|
_render.set(this, function (args) { return __awaiter(_this, void 0, void 0, function () {
|
|
2152
2145
|
var _a, _b, _c, _d;
|
|
2153
|
-
return __generator(this, function (
|
|
2154
|
-
switch (
|
|
2146
|
+
return __generator(this, function (_2) {
|
|
2147
|
+
switch (_2.label) {
|
|
2155
2148
|
case 0:
|
|
2156
2149
|
(_a = this.sdScroll) === null || _a === void 0 ? void 0 : _a.scrollTop();
|
|
2157
2150
|
this.items = (args === null || args === void 0 ? void 0 : args.items) || [];
|
|
@@ -2162,7 +2155,7 @@
|
|
|
2162
2155
|
});
|
|
2163
2156
|
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))];
|
|
2164
2157
|
case 1:
|
|
2165
|
-
|
|
2158
|
+
_2.sent();
|
|
2166
2159
|
this.isSelectAll = this.items.every(function (e) { return e.isSelected; });
|
|
2167
2160
|
__classPrivateFieldGet(this, _updateSelectedItems).call(this);
|
|
2168
2161
|
return [2 /*return*/];
|
|
@@ -2173,11 +2166,11 @@
|
|
|
2173
2166
|
if (force === void 0) { force = true; }
|
|
2174
2167
|
return __awaiter(_this, void 0, void 0, function () {
|
|
2175
2168
|
var data;
|
|
2176
|
-
return __generator(this, function (
|
|
2177
|
-
switch (
|
|
2169
|
+
return __generator(this, function (_2) {
|
|
2170
|
+
switch (_2.label) {
|
|
2178
2171
|
case 0: return [4 /*yield*/, __classPrivateFieldGet(this, _load$1).call(this, __classPrivateFieldGet(this, _getFilter).call(this), force)];
|
|
2179
2172
|
case 1:
|
|
2180
|
-
data =
|
|
2173
|
+
data = _2.sent();
|
|
2181
2174
|
__classPrivateFieldGet(this, _render).call(this, data);
|
|
2182
2175
|
return [2 /*return*/];
|
|
2183
2176
|
}
|
|
@@ -2189,8 +2182,8 @@
|
|
|
2189
2182
|
if (pageSize === void 0) { pageSize = 10000; }
|
|
2190
2183
|
return __awaiter(_this, void 0, void 0, function () {
|
|
2191
2184
|
var _e, _f, result, filterInfo, result, exportedItems, results;
|
|
2192
|
-
return __generator(this, function (
|
|
2193
|
-
switch (
|
|
2185
|
+
return __generator(this, function (_2) {
|
|
2186
|
+
switch (_2.label) {
|
|
2194
2187
|
case 0:
|
|
2195
2188
|
if (!((_e = this.gridOption.export) === null || _e === void 0 ? void 0 : _e.items)) return [3 /*break*/, 2];
|
|
2196
2189
|
result = (_f = this.gridOption.export) === null || _f === void 0 ? void 0 : _f.items(__classPrivateFieldGet(this, _filterExportInfo).call(this, pageNumber, pageSize));
|
|
@@ -2204,7 +2197,7 @@
|
|
|
2204
2197
|
result = result.toPromise();
|
|
2205
2198
|
}
|
|
2206
2199
|
return [4 /*yield*/, result];
|
|
2207
|
-
case 1: return [2 /*return*/,
|
|
2200
|
+
case 1: return [2 /*return*/, _2.sent()];
|
|
2208
2201
|
case 2:
|
|
2209
2202
|
filterInfo = __classPrivateFieldGet(this, _filterExportInfo).call(this, pageNumber, pageSize);
|
|
2210
2203
|
if (!(this.gridOption.type === 'server')) return [3 /*break*/, 4];
|
|
@@ -2213,7 +2206,7 @@
|
|
|
2213
2206
|
result = result.toPromise();
|
|
2214
2207
|
}
|
|
2215
2208
|
return [4 /*yield*/, result];
|
|
2216
|
-
case 3: return [2 /*return*/,
|
|
2209
|
+
case 3: return [2 /*return*/, _2.sent()];
|
|
2217
2210
|
case 4:
|
|
2218
2211
|
exportedItems = [];
|
|
2219
2212
|
if (!(typeof (this.gridOption.items) === 'function')) return [3 /*break*/, 8];
|
|
@@ -2221,15 +2214,15 @@
|
|
|
2221
2214
|
if (!(results instanceof Promise)) return [3 /*break*/, 6];
|
|
2222
2215
|
return [4 /*yield*/, results];
|
|
2223
2216
|
case 5:
|
|
2224
|
-
exportedItems =
|
|
2217
|
+
exportedItems = _2.sent();
|
|
2225
2218
|
return [3 /*break*/, 7];
|
|
2226
2219
|
case 6:
|
|
2227
2220
|
exportedItems = results;
|
|
2228
|
-
|
|
2221
|
+
_2.label = 7;
|
|
2229
2222
|
case 7: return [3 /*break*/, 9];
|
|
2230
2223
|
case 8:
|
|
2231
2224
|
exportedItems = this.gridOption.items;
|
|
2232
|
-
|
|
2225
|
+
_2.label = 9;
|
|
2233
2226
|
case 9: return [2 /*return*/, __classPrivateFieldGet(this, _filterLocal).call(this, exportedItems, filterInfo)];
|
|
2234
2227
|
}
|
|
2235
2228
|
});
|
|
@@ -2269,14 +2262,14 @@
|
|
|
2269
2262
|
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); })) || [];
|
|
2270
2263
|
});
|
|
2271
2264
|
_onExport.set(this, function (args) { return __awaiter(_this, void 0, void 0, function () {
|
|
2272
|
-
var _g, _h, _j, _k, _l, _m, _o, _p, _q, _r,
|
|
2273
|
-
var e_5,
|
|
2265
|
+
var _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, file, isCSV, columns_2, pageSize_1, batch, total_1, pageNumber_1, exportItems_1, items_1, promises_1, handleData, sheets, _2, _3, sheet, _4, _5, _6, e_5_1;
|
|
2266
|
+
var e_5, _7;
|
|
2274
2267
|
var _this = this;
|
|
2275
|
-
return __generator(this, function (
|
|
2276
|
-
switch (
|
|
2268
|
+
return __generator(this, function (_8) {
|
|
2269
|
+
switch (_8.label) {
|
|
2277
2270
|
case 0:
|
|
2278
|
-
|
|
2279
|
-
file = args.file, isCSV = args.isCSV
|
|
2271
|
+
_8.trys.push([0, , 20, 21]);
|
|
2272
|
+
file = args.file, isCSV = args.isCSV;
|
|
2280
2273
|
columns_2 = args.columns;
|
|
2281
2274
|
pageSize_1 = ((_h = (_g = this.gridOption) === null || _g === void 0 ? void 0 : _g.export) === null || _h === void 0 ? void 0 : _h.maxItemsPerRequest) || 1000;
|
|
2282
2275
|
batch = ((_k = (_j = this.gridOption) === null || _j === void 0 ? void 0 : _j.export) === null || _k === void 0 ? void 0 : _k.batch) || 1;
|
|
@@ -2287,14 +2280,14 @@
|
|
|
2287
2280
|
items_1 = [];
|
|
2288
2281
|
promises_1 = [];
|
|
2289
2282
|
handleData = function () { return __awaiter(_this, void 0, void 0, function () {
|
|
2290
|
-
var
|
|
2291
|
-
var e_7,
|
|
2283
|
+
var _s, results, results_1, results_1_1, result, results_2, totalPage, percent, allColumns, allExportedColumns, _loop_1, exportItems_2, exportItems_2_1, item, e_6_1;
|
|
2284
|
+
var e_7, _2, e_6, _3;
|
|
2292
2285
|
var _this = this;
|
|
2293
|
-
return __generator(this, function (
|
|
2294
|
-
switch (
|
|
2286
|
+
return __generator(this, function (_4) {
|
|
2287
|
+
switch (_4.label) {
|
|
2295
2288
|
case 0: return [4 /*yield*/, Promise.all(promises_1)];
|
|
2296
2289
|
case 1:
|
|
2297
|
-
results =
|
|
2290
|
+
results = _4.sent();
|
|
2298
2291
|
promises_1 = [];
|
|
2299
2292
|
exportItems_1 = [];
|
|
2300
2293
|
try {
|
|
@@ -2312,20 +2305,20 @@
|
|
|
2312
2305
|
catch (e_7_1) { e_7 = { error: e_7_1 }; }
|
|
2313
2306
|
finally {
|
|
2314
2307
|
try {
|
|
2315
|
-
if (results_1_1 && !results_1_1.done && (
|
|
2308
|
+
if (results_1_1 && !results_1_1.done && (_2 = results_1.return)) _2.call(results_1);
|
|
2316
2309
|
}
|
|
2317
2310
|
finally { if (e_7) throw e_7.error; }
|
|
2318
2311
|
}
|
|
2319
|
-
if (!((
|
|
2312
|
+
if (!((_s = this.gridOption.export) === null || _s === void 0 ? void 0 : _s.mapping)) return [3 /*break*/, 4];
|
|
2320
2313
|
results_2 = this.gridOption.export.mapping(exportItems_1);
|
|
2321
2314
|
if (!(results_2 instanceof Promise)) return [3 /*break*/, 3];
|
|
2322
2315
|
return [4 /*yield*/, results_2];
|
|
2323
2316
|
case 2:
|
|
2324
|
-
exportItems_1 =
|
|
2317
|
+
exportItems_1 = _4.sent();
|
|
2325
2318
|
return [3 /*break*/, 4];
|
|
2326
2319
|
case 3:
|
|
2327
2320
|
exportItems_1 = results_2;
|
|
2328
|
-
|
|
2321
|
+
_4.label = 4;
|
|
2329
2322
|
case 4:
|
|
2330
2323
|
totalPage = total_1 / pageSize_1;
|
|
2331
2324
|
percent = Math.round((pageNumber_1 - 1) * 100.0 / totalPage);
|
|
@@ -2334,15 +2327,15 @@
|
|
|
2334
2327
|
allExportedColumns = __classPrivateFieldGet(this, _allExportedColumns).call(this);
|
|
2335
2328
|
_loop_1 = function (item) {
|
|
2336
2329
|
var obj, handle, columns_3, columns_3_1, exportColumn, e_8_1;
|
|
2337
|
-
var e_8,
|
|
2338
|
-
return __generator(this, function (
|
|
2339
|
-
switch (
|
|
2330
|
+
var e_8, _2;
|
|
2331
|
+
return __generator(this, function (_3) {
|
|
2332
|
+
switch (_3.label) {
|
|
2340
2333
|
case 0:
|
|
2341
2334
|
obj = {};
|
|
2342
2335
|
handle = function (exportColumn) { return __awaiter(_this, void 0, void 0, function () {
|
|
2343
|
-
var
|
|
2344
|
-
return __generator(this, function (
|
|
2345
|
-
switch (
|
|
2336
|
+
var _t, _u, column, exportedColumn, transform, _2, _3, date, transformDate, date, transformDate, date, transformDate, _4, _5;
|
|
2337
|
+
return __generator(this, function (_6) {
|
|
2338
|
+
switch (_6.label) {
|
|
2346
2339
|
case 0:
|
|
2347
2340
|
obj[exportColumn.field] = item[exportColumn.field];
|
|
2348
2341
|
column = allColumns.find(function (e) { return e.field === exportColumn.field; });
|
|
@@ -2366,15 +2359,15 @@
|
|
|
2366
2359
|
isExport: true
|
|
2367
2360
|
});
|
|
2368
2361
|
if (!(transform instanceof Promise)) return [3 /*break*/, 2];
|
|
2369
|
-
|
|
2370
|
-
|
|
2362
|
+
_2 = obj;
|
|
2363
|
+
_3 = column.field;
|
|
2371
2364
|
return [4 /*yield*/, transform];
|
|
2372
2365
|
case 1:
|
|
2373
|
-
|
|
2366
|
+
_2[_3] = _6.sent();
|
|
2374
2367
|
return [3 /*break*/, 3];
|
|
2375
2368
|
case 2:
|
|
2376
2369
|
obj[column.field] = transform;
|
|
2377
|
-
|
|
2370
|
+
_6.label = 3;
|
|
2378
2371
|
case 3: return [3 /*break*/, 13];
|
|
2379
2372
|
case 4:
|
|
2380
2373
|
if (!(item[column.field] === undefined || item[column.field] === null || item[column.field] === '')) return [3 /*break*/, 5];
|
|
@@ -2389,10 +2382,10 @@
|
|
|
2389
2382
|
if (!(column.type === 'bool')) return [3 /*break*/, 7];
|
|
2390
2383
|
// Nếu là bool thì gán bằng giá trị trueValue và falseValue (nếu có), mặc định là TRUE/FALSE
|
|
2391
2384
|
if (item[column.field]) {
|
|
2392
|
-
obj[column.field] = ((
|
|
2385
|
+
obj[column.field] = ((_t = column.option) === null || _t === void 0 ? void 0 : _t.displayOnTrue) || 'True';
|
|
2393
2386
|
}
|
|
2394
2387
|
else if (obj[column.field] !== undefined && obj[column.field] !== null) {
|
|
2395
|
-
obj[column.field] = ((
|
|
2388
|
+
obj[column.field] = ((_u = column.option) === null || _u === void 0 ? void 0 : _u.displayOnFalse) || 'False';
|
|
2396
2389
|
}
|
|
2397
2390
|
return [3 /*break*/, 13];
|
|
2398
2391
|
case 7:
|
|
@@ -2428,43 +2421,43 @@
|
|
|
2428
2421
|
case 10:
|
|
2429
2422
|
if (!(column.type === 'values')) return [3 /*break*/, 12];
|
|
2430
2423
|
// Nếu là values thì lấy giá trị của value được chọn
|
|
2431
|
-
|
|
2432
|
-
|
|
2424
|
+
_4 = obj;
|
|
2425
|
+
_5 = column.field;
|
|
2433
2426
|
return [4 /*yield*/, this.columnValuesPipe.transform(item[column.field], column)];
|
|
2434
2427
|
case 11:
|
|
2435
2428
|
// Nếu là values thì lấy giá trị của value được chọn
|
|
2436
|
-
|
|
2429
|
+
_4[_5] = _6.sent();
|
|
2437
2430
|
return [3 /*break*/, 13];
|
|
2438
2431
|
case 12:
|
|
2439
2432
|
obj[column.field] = item[column.field];
|
|
2440
|
-
|
|
2433
|
+
_6.label = 13;
|
|
2441
2434
|
case 13: return [2 /*return*/];
|
|
2442
2435
|
}
|
|
2443
2436
|
});
|
|
2444
2437
|
}); };
|
|
2445
|
-
|
|
2438
|
+
_3.label = 1;
|
|
2446
2439
|
case 1:
|
|
2447
|
-
|
|
2440
|
+
_3.trys.push([1, 6, 7, 8]);
|
|
2448
2441
|
columns_3 = (e_8 = void 0, __values(columns_2)), columns_3_1 = columns_3.next();
|
|
2449
|
-
|
|
2442
|
+
_3.label = 2;
|
|
2450
2443
|
case 2:
|
|
2451
2444
|
if (!!columns_3_1.done) return [3 /*break*/, 5];
|
|
2452
2445
|
exportColumn = columns_3_1.value;
|
|
2453
2446
|
return [4 /*yield*/, handle(exportColumn)];
|
|
2454
2447
|
case 3:
|
|
2455
|
-
|
|
2456
|
-
|
|
2448
|
+
_3.sent();
|
|
2449
|
+
_3.label = 4;
|
|
2457
2450
|
case 4:
|
|
2458
2451
|
columns_3_1 = columns_3.next();
|
|
2459
2452
|
return [3 /*break*/, 2];
|
|
2460
2453
|
case 5: return [3 /*break*/, 8];
|
|
2461
2454
|
case 6:
|
|
2462
|
-
e_8_1 =
|
|
2455
|
+
e_8_1 = _3.sent();
|
|
2463
2456
|
e_8 = { error: e_8_1 };
|
|
2464
2457
|
return [3 /*break*/, 8];
|
|
2465
2458
|
case 7:
|
|
2466
2459
|
try {
|
|
2467
|
-
if (columns_3_1 && !columns_3_1.done && (
|
|
2460
|
+
if (columns_3_1 && !columns_3_1.done && (_2 = columns_3.return)) _2.call(columns_3);
|
|
2468
2461
|
}
|
|
2469
2462
|
finally { if (e_8) throw e_8.error; }
|
|
2470
2463
|
return [7 /*endfinally*/];
|
|
@@ -2474,29 +2467,29 @@
|
|
|
2474
2467
|
}
|
|
2475
2468
|
});
|
|
2476
2469
|
};
|
|
2477
|
-
|
|
2470
|
+
_4.label = 5;
|
|
2478
2471
|
case 5:
|
|
2479
|
-
|
|
2472
|
+
_4.trys.push([5, 10, 11, 12]);
|
|
2480
2473
|
exportItems_2 = __values(exportItems_1), exportItems_2_1 = exportItems_2.next();
|
|
2481
|
-
|
|
2474
|
+
_4.label = 6;
|
|
2482
2475
|
case 6:
|
|
2483
2476
|
if (!!exportItems_2_1.done) return [3 /*break*/, 9];
|
|
2484
2477
|
item = exportItems_2_1.value;
|
|
2485
2478
|
return [5 /*yield**/, _loop_1(item)];
|
|
2486
2479
|
case 7:
|
|
2487
|
-
|
|
2488
|
-
|
|
2480
|
+
_4.sent();
|
|
2481
|
+
_4.label = 8;
|
|
2489
2482
|
case 8:
|
|
2490
2483
|
exportItems_2_1 = exportItems_2.next();
|
|
2491
2484
|
return [3 /*break*/, 6];
|
|
2492
2485
|
case 9: return [3 /*break*/, 12];
|
|
2493
2486
|
case 10:
|
|
2494
|
-
e_6_1 =
|
|
2487
|
+
e_6_1 = _4.sent();
|
|
2495
2488
|
e_6 = { error: e_6_1 };
|
|
2496
2489
|
return [3 /*break*/, 12];
|
|
2497
2490
|
case 11:
|
|
2498
2491
|
try {
|
|
2499
|
-
if (exportItems_2_1 && !exportItems_2_1.done && (
|
|
2492
|
+
if (exportItems_2_1 && !exportItems_2_1.done && (_3 = exportItems_2.return)) _3.call(exportItems_2);
|
|
2500
2493
|
}
|
|
2501
2494
|
finally { if (e_6) throw e_6.error; }
|
|
2502
2495
|
return [7 /*endfinally*/];
|
|
@@ -2504,7 +2497,7 @@
|
|
|
2504
2497
|
}
|
|
2505
2498
|
});
|
|
2506
2499
|
}); };
|
|
2507
|
-
|
|
2500
|
+
_8.label = 1;
|
|
2508
2501
|
case 1:
|
|
2509
2502
|
if (!(pageNumber_1 * pageSize_1 < total_1)) return [3 /*break*/, 3];
|
|
2510
2503
|
promises_1.push(__classPrivateFieldGet(this, _exportedItems).call(this, pageNumber_1, pageSize_1));
|
|
@@ -2514,16 +2507,16 @@
|
|
|
2514
2507
|
}
|
|
2515
2508
|
return [4 /*yield*/, handleData()];
|
|
2516
2509
|
case 2:
|
|
2517
|
-
|
|
2510
|
+
_8.sent();
|
|
2518
2511
|
return [3 /*break*/, 1];
|
|
2519
2512
|
case 3:
|
|
2520
2513
|
if (!(promises_1.length > 0)) return [3 /*break*/, 5];
|
|
2521
2514
|
return [4 /*yield*/, handleData()];
|
|
2522
2515
|
case 4:
|
|
2523
|
-
|
|
2524
|
-
|
|
2516
|
+
_8.sent();
|
|
2517
|
+
_8.label = 5;
|
|
2525
2518
|
case 5:
|
|
2526
|
-
if (!!(file === null || file === void 0 ? void 0 : file.filePath)) return [3 /*break*/,
|
|
2519
|
+
if (!!(file === null || file === void 0 ? void 0 : file.filePath)) return [3 /*break*/, 18];
|
|
2527
2520
|
if (!isCSV) return [3 /*break*/, 7];
|
|
2528
2521
|
return [4 /*yield*/, this.exportService.exportCSV({
|
|
2529
2522
|
columns: columns_2,
|
|
@@ -2531,102 +2524,81 @@
|
|
|
2531
2524
|
fileName: (_m = (_l = this.gridOption) === null || _l === void 0 ? void 0 : _l.export) === null || _m === void 0 ? void 0 : _m.fileName
|
|
2532
2525
|
})];
|
|
2533
2526
|
case 6:
|
|
2534
|
-
|
|
2527
|
+
_8.sent();
|
|
2535
2528
|
return [2 /*return*/];
|
|
2536
2529
|
case 7:
|
|
2537
|
-
|
|
2538
|
-
return [
|
|
2539
|
-
|
|
2540
|
-
items: items_1,
|
|
2541
|
-
fileName: (_p = (_o = this.gridOption) === null || _o === void 0 ? void 0 : _o.export) === null || _p === void 0 ? void 0 : _p.fileName
|
|
2542
|
-
})];
|
|
2530
|
+
sheets = [];
|
|
2531
|
+
if (!Array.isArray((_p = (_o = this.gridOption) === null || _o === void 0 ? void 0 : _o.export) === null || _p === void 0 ? void 0 : _p.sheets)) return [3 /*break*/, 16];
|
|
2532
|
+
_8.label = 8;
|
|
2543
2533
|
case 8:
|
|
2544
|
-
|
|
2545
|
-
|
|
2534
|
+
_8.trys.push([8, 14, 15, 16]);
|
|
2535
|
+
_2 = __values(this.gridOption.export.sheets), _3 = _2.next();
|
|
2536
|
+
_8.label = 9;
|
|
2546
2537
|
case 9:
|
|
2547
|
-
|
|
2548
|
-
|
|
2549
|
-
|
|
2550
|
-
|
|
2551
|
-
_10.trys.push([10, 16, 17, 18]);
|
|
2552
|
-
_4 = __values(this.gridOption.export.sheets), _5 = _4.next();
|
|
2553
|
-
_10.label = 11;
|
|
2554
|
-
case 11:
|
|
2555
|
-
if (!!_5.done) return [3 /*break*/, 15];
|
|
2556
|
-
sheet = _5.value;
|
|
2557
|
-
if (!(sheet.name && sheet.items && sheet.fields)) return [3 /*break*/, 14];
|
|
2558
|
-
if (!Array.isArray(sheet.items)) return [3 /*break*/, 12];
|
|
2538
|
+
if (!!_3.done) return [3 /*break*/, 13];
|
|
2539
|
+
sheet = _3.value;
|
|
2540
|
+
if (!(sheet.name && sheet.items && sheet.fields)) return [3 /*break*/, 12];
|
|
2541
|
+
if (!Array.isArray(sheet.items)) return [3 /*break*/, 10];
|
|
2559
2542
|
sheets.push({
|
|
2560
2543
|
name: sheet.name,
|
|
2561
2544
|
items: sheet.items,
|
|
2562
2545
|
fields: sheet.fields
|
|
2563
2546
|
});
|
|
2564
|
-
return [3 /*break*/,
|
|
2565
|
-
case
|
|
2566
|
-
|
|
2567
|
-
|
|
2547
|
+
return [3 /*break*/, 12];
|
|
2548
|
+
case 10:
|
|
2549
|
+
_5 = (_4 = sheets).push;
|
|
2550
|
+
_6 = {
|
|
2568
2551
|
name: sheet.name
|
|
2569
2552
|
};
|
|
2570
2553
|
return [4 /*yield*/, sheet.items()];
|
|
2571
|
-
case
|
|
2572
|
-
|
|
2573
|
-
|
|
2574
|
-
|
|
2575
|
-
|
|
2554
|
+
case 11:
|
|
2555
|
+
_5.apply(_4, [(_6.items = _8.sent(),
|
|
2556
|
+
_6.fields = sheet.fields,
|
|
2557
|
+
_6)]);
|
|
2558
|
+
_8.label = 12;
|
|
2559
|
+
case 12:
|
|
2560
|
+
_3 = _2.next();
|
|
2561
|
+
return [3 /*break*/, 9];
|
|
2562
|
+
case 13: return [3 /*break*/, 16];
|
|
2576
2563
|
case 14:
|
|
2577
|
-
|
|
2578
|
-
return [3 /*break*/, 11];
|
|
2579
|
-
case 15: return [3 /*break*/, 18];
|
|
2580
|
-
case 16:
|
|
2581
|
-
e_5_1 = _10.sent();
|
|
2564
|
+
e_5_1 = _8.sent();
|
|
2582
2565
|
e_5 = { error: e_5_1 };
|
|
2583
|
-
return [3 /*break*/,
|
|
2584
|
-
case
|
|
2566
|
+
return [3 /*break*/, 16];
|
|
2567
|
+
case 15:
|
|
2585
2568
|
try {
|
|
2586
|
-
if (
|
|
2569
|
+
if (_3 && !_3.done && (_7 = _2.return)) _7.call(_2);
|
|
2587
2570
|
}
|
|
2588
2571
|
finally { if (e_5) throw e_5.error; }
|
|
2589
2572
|
return [7 /*endfinally*/];
|
|
2590
|
-
case
|
|
2573
|
+
case 16: return [4 /*yield*/, this.exportService.export({
|
|
2591
2574
|
columns: columns_2,
|
|
2592
2575
|
items: items_1,
|
|
2593
|
-
fileName: (
|
|
2576
|
+
fileName: (_r = (_q = this.gridOption) === null || _q === void 0 ? void 0 : _q.export) === null || _r === void 0 ? void 0 : _r.fileName,
|
|
2594
2577
|
sheets: sheets
|
|
2595
2578
|
})];
|
|
2596
|
-
case
|
|
2597
|
-
|
|
2579
|
+
case 17:
|
|
2580
|
+
_8.sent();
|
|
2598
2581
|
return [2 /*return*/];
|
|
2599
|
-
case
|
|
2582
|
+
case 18: return [4 /*yield*/, this.exportService.exportByTemplate({
|
|
2600
2583
|
filePath: file.filePath,
|
|
2601
2584
|
fileName: file.fileName,
|
|
2602
2585
|
columns: columns_2,
|
|
2603
2586
|
items: items_1
|
|
2604
2587
|
})];
|
|
2605
|
-
case
|
|
2606
|
-
|
|
2607
|
-
return [3 /*break*/,
|
|
2608
|
-
case
|
|
2588
|
+
case 19:
|
|
2589
|
+
_8.sent();
|
|
2590
|
+
return [3 /*break*/, 21];
|
|
2591
|
+
case 20:
|
|
2609
2592
|
this.isExporting = false;
|
|
2610
2593
|
this.exportTitle = "Export";
|
|
2611
2594
|
this.ref.detectChanges();
|
|
2612
2595
|
return [7 /*endfinally*/];
|
|
2613
|
-
case
|
|
2596
|
+
case 21: return [2 /*return*/];
|
|
2614
2597
|
}
|
|
2615
2598
|
});
|
|
2616
2599
|
}); });
|
|
2617
2600
|
this.onExport = function (args) { return __awaiter(_this, void 0, void 0, function () {
|
|
2618
|
-
|
|
2619
|
-
return __generator(this, function (_4) {
|
|
2620
|
-
translate = this.translateService.translate;
|
|
2621
|
-
if (!args.isCSV && this.gridOption.export.max && this.total > this.gridOption.export.max) {
|
|
2622
|
-
args.isRaw = true;
|
|
2623
|
-
__classPrivateFieldGet(this, _onExport).call(this, args);
|
|
2624
|
-
// this.notifyService.confirm(translate(`Total rows reach limit, do you want to export CSV`)).then(() => {
|
|
2625
|
-
// args.isCSV = true;
|
|
2626
|
-
// this.#onExport(args);
|
|
2627
|
-
// });
|
|
2628
|
-
return [2 /*return*/];
|
|
2629
|
-
}
|
|
2601
|
+
return __generator(this, function (_2) {
|
|
2630
2602
|
__classPrivateFieldGet(this, _onExport).call(this, args);
|
|
2631
2603
|
return [2 /*return*/];
|
|
2632
2604
|
});
|
|
@@ -2636,9 +2608,9 @@
|
|
|
2636
2608
|
_this.reload(false);
|
|
2637
2609
|
};
|
|
2638
2610
|
this.onExpand = function (rowData) { return __awaiter(_this, void 0, void 0, function () {
|
|
2639
|
-
var
|
|
2640
|
-
return __generator(this, function (
|
|
2641
|
-
if ((
|
|
2611
|
+
var _v, _w, _x, _y, _z, data;
|
|
2612
|
+
return __generator(this, function (_2) {
|
|
2613
|
+
if ((_v = this.gridOption.subInformation) === null || _v === void 0 ? void 0 : _v.always) {
|
|
2642
2614
|
return [2 /*return*/];
|
|
2643
2615
|
}
|
|
2644
2616
|
if (rowData.isExpanding) {
|
|
@@ -2648,8 +2620,8 @@
|
|
|
2648
2620
|
rowData.isExpanded = false;
|
|
2649
2621
|
return [2 /*return*/];
|
|
2650
2622
|
}
|
|
2651
|
-
data = (
|
|
2652
|
-
if (!((
|
|
2623
|
+
data = (_y = (_x = (_w = this.gridOption) === null || _w === void 0 ? void 0 : _w.subInformation) === null || _x === void 0 ? void 0 : _x.onExpand) === null || _y === void 0 ? void 0 : _y.call(_x, rowData);
|
|
2624
|
+
if (!((_z = this.gridOption.subInformation) === null || _z === void 0 ? void 0 : _z.multiple)) {
|
|
2653
2625
|
this.items.forEach(function (item) { return item.isExpanding = item.isExpanded = false; });
|
|
2654
2626
|
}
|
|
2655
2627
|
if (data instanceof Promise) {
|
|
@@ -2722,7 +2694,7 @@
|
|
|
2722
2694
|
};
|
|
2723
2695
|
this.onCreate = function () {
|
|
2724
2696
|
var _a, _b;
|
|
2725
|
-
var
|
|
2697
|
+
var _2 = _this.gridOption, type = _2.type, editor = _2.editor, columns = _2.columns;
|
|
2726
2698
|
if (!(editor === null || editor === void 0 ? void 0 : editor.addable)) {
|
|
2727
2699
|
return;
|
|
2728
2700
|
}
|
|
@@ -2778,23 +2750,23 @@
|
|
|
2778
2750
|
};
|
|
2779
2751
|
this.onSave = function (item) { return __awaiter(_this, void 0, void 0, function () {
|
|
2780
2752
|
var editor, result, message, result, err_1;
|
|
2781
|
-
return __generator(this, function (
|
|
2782
|
-
switch (
|
|
2753
|
+
return __generator(this, function (_2) {
|
|
2754
|
+
switch (_2.label) {
|
|
2783
2755
|
case 0:
|
|
2784
2756
|
if (item.editorHandlerRow.saving) {
|
|
2785
2757
|
return [2 /*return*/];
|
|
2786
2758
|
}
|
|
2787
2759
|
editor = this.gridOption.editor;
|
|
2788
|
-
|
|
2760
|
+
_2.label = 1;
|
|
2789
2761
|
case 1:
|
|
2790
|
-
|
|
2762
|
+
_2.trys.push([1, 7, 8, 9]);
|
|
2791
2763
|
item.editorHandlerRow.saving = true;
|
|
2792
2764
|
if (!editor.validate) return [3 /*break*/, 4];
|
|
2793
2765
|
result = editor.validate(item, this.items.indexOf(item));
|
|
2794
2766
|
if (!(result instanceof Promise)) return [3 /*break*/, 3];
|
|
2795
2767
|
return [4 /*yield*/, result];
|
|
2796
2768
|
case 2:
|
|
2797
|
-
message =
|
|
2769
|
+
message = _2.sent();
|
|
2798
2770
|
if (message) {
|
|
2799
2771
|
throw message;
|
|
2800
2772
|
}
|
|
@@ -2803,15 +2775,15 @@
|
|
|
2803
2775
|
if (result) {
|
|
2804
2776
|
throw result;
|
|
2805
2777
|
}
|
|
2806
|
-
|
|
2778
|
+
_2.label = 4;
|
|
2807
2779
|
case 4:
|
|
2808
2780
|
if (!editor.onSave) return [3 /*break*/, 6];
|
|
2809
2781
|
result = editor.onSave(item);
|
|
2810
2782
|
if (!(result instanceof Promise)) return [3 /*break*/, 6];
|
|
2811
2783
|
return [4 /*yield*/, result];
|
|
2812
2784
|
case 5:
|
|
2813
|
-
|
|
2814
|
-
|
|
2785
|
+
_2.sent();
|
|
2786
|
+
_2.label = 6;
|
|
2815
2787
|
case 6:
|
|
2816
2788
|
if (item.editorStatus === 'create' && editor.type === 'popup') {
|
|
2817
2789
|
if (this.gridOption.type === 'local') {
|
|
@@ -2822,7 +2794,7 @@
|
|
|
2822
2794
|
item.editorStatus = undefined;
|
|
2823
2795
|
return [3 /*break*/, 9];
|
|
2824
2796
|
case 7:
|
|
2825
|
-
err_1 =
|
|
2797
|
+
err_1 = _2.sent();
|
|
2826
2798
|
this.notifyService.notify.warning(err_1);
|
|
2827
2799
|
return [3 /*break*/, 9];
|
|
2828
2800
|
case 8:
|
|
@@ -2873,9 +2845,9 @@
|
|
|
2873
2845
|
_this.ref.detectChanges();
|
|
2874
2846
|
};
|
|
2875
2847
|
this.onRemove = function (item) { return __awaiter(_this, void 0, void 0, function () {
|
|
2876
|
-
var
|
|
2877
|
-
return __generator(this, function (
|
|
2878
|
-
switch (
|
|
2848
|
+
var _0, _1, editor, beforeRemove, result, idx2, idx1;
|
|
2849
|
+
return __generator(this, function (_2) {
|
|
2850
|
+
switch (_2.label) {
|
|
2879
2851
|
case 0:
|
|
2880
2852
|
editor = this.gridOption.editor;
|
|
2881
2853
|
if (!(editor === null || editor === void 0 ? void 0 : editor.beforeRemove)) return [3 /*break*/, 3];
|
|
@@ -2883,7 +2855,7 @@
|
|
|
2883
2855
|
if (!(beforeRemove instanceof Promise)) return [3 /*break*/, 2];
|
|
2884
2856
|
return [4 /*yield*/, beforeRemove];
|
|
2885
2857
|
case 1:
|
|
2886
|
-
result =
|
|
2858
|
+
result = _2.sent();
|
|
2887
2859
|
if (!result) {
|
|
2888
2860
|
return [2 /*return*/];
|
|
2889
2861
|
}
|
|
@@ -2892,7 +2864,7 @@
|
|
|
2892
2864
|
if (!beforeRemove) {
|
|
2893
2865
|
return [2 /*return*/];
|
|
2894
2866
|
}
|
|
2895
|
-
|
|
2867
|
+
_2.label = 3;
|
|
2896
2868
|
case 3:
|
|
2897
2869
|
if (editor.type === 'inline') {
|
|
2898
2870
|
if (this.gridOption.type === 'local') {
|
|
@@ -2904,10 +2876,10 @@
|
|
|
2904
2876
|
this.items.splice(idx1, 1);
|
|
2905
2877
|
this.items = __spread(this.items);
|
|
2906
2878
|
if (this.gridOption.type === 'local') {
|
|
2907
|
-
(
|
|
2879
|
+
(_0 = editor === null || editor === void 0 ? void 0 : editor.onRemove) === null || _0 === void 0 ? void 0 : _0.call(editor, item, __classPrivateFieldGet(this, _localItems));
|
|
2908
2880
|
}
|
|
2909
2881
|
else {
|
|
2910
|
-
(
|
|
2882
|
+
(_1 = editor === null || editor === void 0 ? void 0 : editor.onRemove) === null || _1 === void 0 ? void 0 : _1.call(editor, item, this.items);
|
|
2911
2883
|
}
|
|
2912
2884
|
this.ref.detectChanges();
|
|
2913
2885
|
return [2 /*return*/];
|
|
@@ -3034,13 +3006,13 @@
|
|
|
3034
3006
|
return data.source === 'INITIALIZE';
|
|
3035
3007
|
}), operators.switchMap(function (data) { return __awaiter(_this, void 0, void 0, function () {
|
|
3036
3008
|
var filterInfo, result;
|
|
3037
|
-
return __generator(this, function (
|
|
3038
|
-
switch (
|
|
3009
|
+
return __generator(this, function (_2) {
|
|
3010
|
+
switch (_2.label) {
|
|
3039
3011
|
case 0:
|
|
3040
3012
|
filterInfo = __classPrivateFieldGet(this, _getFilter).call(this);
|
|
3041
3013
|
return [4 /*yield*/, __classPrivateFieldGet(this, _load$1).call(this, filterInfo, !__classPrivateFieldGet(this, _loadCompleted) || data.force)];
|
|
3042
3014
|
case 1:
|
|
3043
|
-
result =
|
|
3015
|
+
result = _2.sent();
|
|
3044
3016
|
__classPrivateFieldSet(this, _loadCompleted, true);
|
|
3045
3017
|
return [2 /*return*/, result];
|
|
3046
3018
|
}
|
|
@@ -3121,7 +3093,7 @@
|
|
|
3121
3093
|
SdGridMaterial.decorators = [
|
|
3122
3094
|
{ type: core.Component, args: [{
|
|
3123
3095
|
selector: 'sd-grid-material',
|
|
3124
|
-
template: "<ng-container *ngIf=\"gridConfigurationObserver | async as gridConfiguration\">\r\n <ng-container *ngIf=\"\r\n gridConfiguration\r\n | sdGridConfigurationResult\r\n : gridOption\r\n : sdSubInformation as configuration\r\n \">\r\n <sd-grid-filter *ngIf=\"!gridOption.filter?.disabled\" [filter]=\"gridOption?.filter\"\r\n [columns]=\"configuration.firstColumns\" [filterDefs]=\"filterDefs\">\r\n </sd-grid-filter>\r\n <ng-container *ngIf=\"items | sdGroup:gridOption; $implicit as groupedItems\">\r\n <div class=\"c-container {{ gridOption?.style?.grid }}\" [ngClass]=\"{ 'mat-elevation-z2': gridOption?.shadow }\">\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 class=\"c-table\" sdScroll [ngStyle]=\"{\r\n 'max-height': gridOption?.maxHeight,\r\n 'min-height': gridOption?.minHeight\r\n }\">\r\n <table *ngIf=\"items?.length; else elseEmpty\" mat-table [dataSource]=\"groupedItems\" matSort\r\n [matSortDisabled]=\"!gridOption.sortable\" cdkDropList cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListDisabled]=\"!gridOption.dropDragColumnEnable\"\r\n (cdkDropListDropped)=\"drop($event, configuration.displayedColumns)\" multiTemplateDataRows>\r\n\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?.subInformation?.always;else useExpandCollapse\">\r\n <ng-container *ngTemplateOutlet=\"\r\n sdSubInformation.templateRef;\r\n context: { item: item }\r\n \">\r\n </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=\"\r\n sdSubInformation.templateRef;\r\n context: { item: item }\r\n \">\r\n </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 class=\"p-0\" mat-header-cell *matHeaderCellDef style=\"width: 1px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button *ngIf=\"!element.isExpanding && !gridOption?.subInformation?.always\" mat-icon-button\r\n aria-label=\"Expand & Collapse\" (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 class=\"text-center px-15\" mat-header-cell *matHeaderCellDef style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <ng-container *ngIf=\"items | selectionVisibleSelectAll: gridOption?.selection | async\">\r\n <mat-checkbox *ngIf=\"!gridOption.selection?.single\" class=\"c-selection\" color=\"primary\"\r\n [(ngModel)]=\"isSelectAll\" (change)=\"onSelectAll()\">\r\n </mat-checkbox>\r\n </ng-container>\r\n\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?.selection\">\r\n <mat-checkbox class=\"c-selection\" color=\"primary\" [(ngModel)]=\"item.isSelected\"\r\n (change)=\"onSelect(item)\" [disabled]=\"\r\n selectedItems | selectionDisable: item:gridOption?.selection\r\n \">\r\n </mat-checkbox>\r\n </ng-container>\r\n\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEditorValidation\">\r\n <th class=\"p-0\" mat-header-cell *matHeaderCellDef style=\"width: 2px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0 position-relative\" mat-cell *matCellDef=\"let item; index as idx\">\r\n <sd-desktop-editor-validation [sdId]=\"item.sdId\" [item]=\"item\" [items]=\"items\"\r\n [gridOption]=\"gridOption\">\r\n </sd-desktop-editor-validation>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEditor\">\r\n <th class=\"px-8 py-8\" mat-header-cell *matHeaderCellDef style=\"width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <button class=\"c-btn-add\"\r\n *ngIf=\"gridOption.editor?.addable && (!gridOption.editor.limit || gridOption.editor.limit > items.length)\"\r\n (click)=\"onCreate()\" aria-hidden=\"true\" mat-icon-button>\r\n <mat-icon class=\"c-icon-add\">add</mat-icon>\r\n </button>\r\n </th>\r\n <td class=\"px-8\" mat-cell *matCellDef=\"let item; index as idx\">\r\n <ng-container *sdLet=\"item.editorStatus | sdEditorHandlerRow:item:gridOption as editorHandler\">\r\n <div *ngIf=\"editorHandler\" class=\"d-flex align-items-center justify-content-center\">\r\n <button *ngIf=\"editorHandler.editable\" class=\"mx-2\" (click)=\"onUpdate(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">edit</mat-icon>\r\n </button>\r\n <button *ngIf=\"editorHandler.removable\" class=\"mx-2\" (click)=\"onRemove(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">delete</mat-icon>\r\n </button>\r\n <button *ngIf=\"editorHandler.savable\" class=\"mx-2\" (click)=\"onSave(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">save</mat-icon>\r\n </button>\r\n <button *ngIf=\"editorHandler.cancelable\" class=\"mx-2\" (click)=\"onCancel(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">close</mat-icon>\r\n </button>\r\n </div>\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 class=\"px-8 py-8\" mat-header-cell *matHeaderCellDef 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\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\"\r\n [attr.colspan]=\"!item?.sdGroup ? 1 : configuration.displayedColumns.length\">\r\n <div [innerHtml]=\"item?.sdGroup?.htmlTemplate | safeHtml\">\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\" [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef cdkDrag class=\"px-8 py-8 c-th\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\" [attr.rowspan]=\"\r\n configuration.multipleHeader && column.type !== 'children-col'\r\n ? 2\r\n : 1\r\n \" [attr.colspan]=\"\r\n column.type === 'children-col' ? column.children?.length : 1\r\n \">\r\n <div>\r\n <div aria-hidden=\"false\" role=\"presentation\" mat-sort-header [disabled]=\"\r\n !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\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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 class=\"d-block px-8\" *ngIf=\"!item?.sdGroup\" [sdId]=\"item.sdId\" [key]=\"key\"\r\n [value]=\"item[column.field]\" [column]=\"column\" [item]=\"item\" [idx]=\"i\" [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=\"\r\n footerDef[column.field].templateRef;\r\n context: { items: items, column: column }\r\n \">\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\"\r\n [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header class=\"c-th px-8\"\r\n [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\" [innerHTML]=\"column.titleHtml || column.title\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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 class=\"d-block px-8\" [sdId]=\"item.sdId\" [key]=\"key\" [value]=\"item[column.field]\"\r\n [column]=\"column\" [item]=\"item\" [idx]=\"i\" [cellDef]=\"cellDef\" [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=\"\r\n footerDef[column.field].templateRef;\r\n context: { items: items, column: column }\r\n \">\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\">\r\n </tr>\r\n <ng-container *ngIf=\"configuration.secondHeaders?.length\">\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\">\r\n </tr>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: configuration.displayedColumns\" matRipple class=\"c-row\"\r\n [class.selected]=\"row.isSelected\" [style]=\"row | sdStyleRowCss:gridOption\"></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 class=\"px-15\" mat-header-cell *matHeaderCellDef 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=\"sdEditorValidation\">\r\n <th class=\"p-0\" mat-header-cell *matHeaderCellDef style=\"width: 4px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\">\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEditor\">\r\n <th class=\"px-8 py-8\" mat-header-cell *matHeaderCellDef style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <button class=\"c-btn-add\"\r\n *ngIf=\"gridOption.editor?.addable && (!gridOption.editor.limit || gridOption.editor.limit > items.length)\"\r\n (click)=\"onCreate()\" aria-hidden=\"true\" mat-icon-button>\r\n <mat-icon class=\"c-icon-add\">add</mat-icon>\r\n </button>\r\n </th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdCommand\">\r\n <th class=\"px-8\" mat-header-cell *matHeaderCellDef 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 class=\"p-0\" mat-header-cell *matHeaderCellDef 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\"\r\n [attr.colspan]=\"configuration.displayedColumns.length\">\r\n <ng-container *ngIf=\"sdEmptyData?.templateRef; else sdEmptyDataNoRef\">\r\n <ng-container *ngTemplateOutlet=\"\r\n sdEmptyData.templateRef;\r\n context: { item: item }\r\n \">\r\n </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\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\">\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.columns\" [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\"\r\n [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\" [innerHTML]=\"column.titleHtml || column.title\">\r\n </div>\r\n </th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\" [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\" [attr.rowspan]=\"\r\n configuration.multipleHeader &&\r\n column.type !== 'children-col'\r\n ? 2\r\n : 1\r\n \" [attr.colspan]=\"\r\n column.type === 'children-col' ? column.children?.length : 1\r\n \">\r\n <div>\r\n <div [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\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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\"\r\n [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\" [innerHTML]=\"column.titleHtml || column.title\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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\">\r\n </tr>\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\">\r\n </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 *ngIf=\"\r\n !gridOption.filter?.disabled && !gridOption.filter?.inlineColumn\r\n \" class=\"mr-10\" [title]=\"'Filter' | sdTranslate\" icon=\"filter_alt\" size=\"sm\" (action)=\"gridFilter.open()\"\r\n type=\"link\">\r\n </sd-button>\r\n <sd-button *ngIf=\"gridOption.reload?.visible\" class=\"mr-10\" [title]=\"'Reload' | sdTranslate\" icon=\"refresh\"\r\n size=\"sm\" (action)=\"reload()\" [disabled]=\"!items?.length\" 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\"\r\n size=\"sm\" type=\"link\">\r\n </sd-button>\r\n </ng-container>\r\n <ng-template #unExporting>\r\n <sd-button class=\"mr-10\" [title]=\"exportTitle | sdTranslate\" icon=\"get_app\" size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\" type=\"link\">\r\n </sd-button>\r\n </ng-template>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <button *ngIf=\"gridOption.export?.visibleExcel !== false\" mat-menu-item\r\n (click)=\"sdPopupExport.exportDefault()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> {{ \"Export excel\" | sdTranslate }}</span>\r\n </button>\r\n <button *ngIf=\"gridOption.export?.visibleExcelRaw !== false\" mat-menu-item\r\n (click)=\"sdPopupExport.exportRaw()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> {{ \"Export excel raw\" | sdTranslate }}</span>\r\n </button>\r\n <button *ngIf=\"gridOption.export?.visibleCSV !== false\" mat-menu-item\r\n (click)=\"sdPopupExport.exportCSV()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> {{ \"Export CSV\" | sdTranslate }}</span>\r\n </button>\r\n <button *ngIf=\"gridOption.export?.key\" mat-menu-item (click)=\"sdPopupExport.open()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">settings</mat-icon>\r\n <span> {{ \"Configure\" | sdTranslate }}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <sd-button *ngIf=\"gridOption.config?.visible\" class=\"mr-10\" [title]=\"'Configure' | sdTranslate\"\r\n icon=\"settings\" size=\"sm\" (action)=\"popupGridConfiguration.open()\" type=\"link\">\r\n </sd-button>\r\n </div>\r\n <mat-paginator [class.d-none]=\"gridOption.paginate?.hidden\" [length]=\"total\"\r\n [pageSize]=\"gridOption.paginate?.pageSize\" [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\"\r\n (clear)=\"onClearSelection(groupedItems)\">\r\n </sd-grid-quick-action>\r\n <sd-popup-export *ngIf=\"gridOption.export?.visible\" [configuration]=\"configuration\" [gridOption]=\"gridOption\"\r\n (export)=\"onExport($event)\" #sdPopupExport>\r\n </sd-popup-export>\r\n <sd-popup-grid-configuration [gridOption]=\"gridOption\" [key]=\"key\" #popupGridConfiguration>\r\n </sd-popup-grid-configuration>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>",
|
|
3096
|
+
template: "<ng-container *ngIf=\"gridConfigurationObserver | async as gridConfiguration\">\r\n <ng-container *ngIf=\"\r\n gridConfiguration\r\n | sdGridConfigurationResult\r\n : gridOption\r\n : sdSubInformation as configuration\r\n \">\r\n <sd-grid-filter *ngIf=\"!gridOption.filter?.disabled\" [filter]=\"gridOption?.filter\"\r\n [columns]=\"configuration.firstColumns\" [filterDefs]=\"filterDefs\">\r\n </sd-grid-filter>\r\n <ng-container *ngIf=\"items | sdGroup:gridOption; $implicit as groupedItems\">\r\n <div class=\"c-container {{ gridOption?.style?.grid }}\" [ngClass]=\"{ 'mat-elevation-z2': gridOption?.shadow }\">\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 class=\"c-table\" sdScroll [ngStyle]=\"{\r\n 'max-height': gridOption?.maxHeight,\r\n 'min-height': gridOption?.minHeight\r\n }\">\r\n <table *ngIf=\"items?.length; else elseEmpty\" mat-table [dataSource]=\"groupedItems\" matSort\r\n [matSortDisabled]=\"!gridOption.sortable\" cdkDropList cdkDropListOrientation=\"horizontal\"\r\n [cdkDropListDisabled]=\"!gridOption.dropDragColumnEnable\"\r\n (cdkDropListDropped)=\"drop($event, configuration.displayedColumns)\" multiTemplateDataRows>\r\n\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?.subInformation?.always;else useExpandCollapse\">\r\n <ng-container *ngTemplateOutlet=\"\r\n sdSubInformation.templateRef;\r\n context: { item: item }\r\n \">\r\n </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=\"\r\n sdSubInformation.templateRef;\r\n context: { item: item }\r\n \">\r\n </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 class=\"p-0\" mat-header-cell *matHeaderCellDef style=\"width: 1px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\"></th>\r\n <td mat-cell *matCellDef=\"let element\">\r\n <button *ngIf=\"!element.isExpanding && !gridOption?.subInformation?.always\" mat-icon-button\r\n aria-label=\"Expand & Collapse\" (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 class=\"text-center px-15\" mat-header-cell *matHeaderCellDef style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <ng-container *ngIf=\"items | selectionVisibleSelectAll: gridOption?.selection | async\">\r\n <mat-checkbox *ngIf=\"!gridOption.selection?.single\" class=\"c-selection\" color=\"primary\"\r\n [(ngModel)]=\"isSelectAll\" (change)=\"onSelectAll()\">\r\n </mat-checkbox>\r\n </ng-container>\r\n\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?.selection\">\r\n <mat-checkbox class=\"c-selection\" color=\"primary\" [(ngModel)]=\"item.isSelected\"\r\n (change)=\"onSelect(item)\" [disabled]=\"\r\n selectedItems | selectionDisable: item:gridOption?.selection\r\n \">\r\n </mat-checkbox>\r\n </ng-container>\r\n\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEditorValidation\">\r\n <th class=\"p-0\" mat-header-cell *matHeaderCellDef style=\"width: 2px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0 position-relative\" mat-cell *matCellDef=\"let item; index as idx\">\r\n <sd-desktop-editor-validation [sdId]=\"item.sdId\" [item]=\"item\" [items]=\"items\"\r\n [gridOption]=\"gridOption\">\r\n </sd-desktop-editor-validation>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEditor\">\r\n <th class=\"px-8 py-8\" mat-header-cell *matHeaderCellDef style=\"width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <button class=\"c-btn-add\"\r\n *ngIf=\"gridOption.editor?.addable && (!gridOption.editor.limit || gridOption.editor.limit > items.length)\"\r\n (click)=\"onCreate()\" aria-hidden=\"true\" mat-icon-button>\r\n <mat-icon class=\"c-icon-add\">add</mat-icon>\r\n </button>\r\n </th>\r\n <td class=\"px-8\" mat-cell *matCellDef=\"let item; index as idx\">\r\n <ng-container *sdLet=\"item.editorStatus | sdEditorHandlerRow:item:gridOption as editorHandler\">\r\n <div *ngIf=\"editorHandler\" class=\"d-flex align-items-center justify-content-center\">\r\n <button *ngIf=\"editorHandler.editable\" class=\"mx-2\" (click)=\"onUpdate(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">edit</mat-icon>\r\n </button>\r\n <button *ngIf=\"editorHandler.removable\" class=\"mx-2\" (click)=\"onRemove(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">delete</mat-icon>\r\n </button>\r\n <button *ngIf=\"editorHandler.savable\" class=\"mx-2\" (click)=\"onSave(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">save</mat-icon>\r\n </button>\r\n <button *ngIf=\"editorHandler.cancelable\" class=\"mx-2\" (click)=\"onCancel(item)\" aria-hidden=\"true\"\r\n mat-icon-button>\r\n <mat-icon class=\"c-icon\">close</mat-icon>\r\n </button>\r\n </div>\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 class=\"px-8 py-8\" mat-header-cell *matHeaderCellDef 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\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\"\r\n [attr.colspan]=\"!item?.sdGroup ? 1 : configuration.displayedColumns.length\">\r\n <div [innerHtml]=\"item?.sdGroup?.htmlTemplate | safeHtml\">\r\n </div>\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\" [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef cdkDrag class=\"px-8 py-8 c-th\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\" [attr.rowspan]=\"\r\n configuration.multipleHeader && column.type !== 'children-col'\r\n ? 2\r\n : 1\r\n \" [attr.colspan]=\"\r\n column.type === 'children-col' ? column.children?.length : 1\r\n \">\r\n <div>\r\n <div aria-hidden=\"false\" role=\"presentation\" mat-sort-header [disabled]=\"\r\n !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\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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 class=\"d-block px-8\" *ngIf=\"!item?.sdGroup\" [sdId]=\"item.sdId\" [key]=\"key\"\r\n [value]=\"item[column.field]\" [column]=\"column\" [item]=\"item\" [idx]=\"i\" [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=\"\r\n footerDef[column.field].templateRef;\r\n context: { items: items, column: column }\r\n \">\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\"\r\n [matColumnDef]=\"column.field\">\r\n <th mat-header-cell *matHeaderCellDef mat-sort-header class=\"c-th px-8\"\r\n [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\" [innerHTML]=\"column.titleHtml || column.title\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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 class=\"d-block px-8\" [sdId]=\"item.sdId\" [key]=\"key\" [value]=\"item[column.field]\"\r\n [column]=\"column\" [item]=\"item\" [idx]=\"i\" [cellDef]=\"cellDef\" [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=\"\r\n footerDef[column.field].templateRef;\r\n context: { items: items, column: column }\r\n \">\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\">\r\n </tr>\r\n <ng-container *ngIf=\"configuration.secondHeaders?.length\">\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\">\r\n </tr>\r\n </ng-container>\r\n <tr mat-row *matRowDef=\"let row; columns: configuration.displayedColumns\" matRipple class=\"c-row\"\r\n [class.selected]=\"row.isSelected\" [style]=\"row | sdStyleRowCss:gridOption\"></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 class=\"px-15\" mat-header-cell *matHeaderCellDef 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=\"sdEditorValidation\">\r\n <th class=\"p-0\" mat-header-cell *matHeaderCellDef style=\"width: 4px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\">\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdEditor\">\r\n <th class=\"px-8 py-8\" mat-header-cell *matHeaderCellDef style=\"min-width: 50px; max-width: 50px\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n <button class=\"c-btn-add\"\r\n *ngIf=\"gridOption.editor?.addable && (!gridOption.editor.limit || gridOption.editor.limit > items.length)\"\r\n (click)=\"onCreate()\" aria-hidden=\"true\" mat-icon-button>\r\n <mat-icon class=\"c-icon-add\">add</mat-icon>\r\n </button>\r\n </th>\r\n </ng-container>\r\n <ng-container matColumnDef=\"sdCommand\">\r\n <th class=\"px-8\" mat-header-cell *matHeaderCellDef 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 class=\"p-0\" mat-header-cell *matHeaderCellDef 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\"\r\n [attr.colspan]=\"configuration.displayedColumns.length\">\r\n <ng-container *ngIf=\"sdEmptyData?.templateRef; else sdEmptyDataNoRef\">\r\n <ng-container *ngTemplateOutlet=\"\r\n sdEmptyData.templateRef;\r\n context: { item: item }\r\n \">\r\n </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\"\r\n [attr.rowspan]=\"configuration.multipleHeader ? 2 : 1\">\r\n </th>\r\n <td class=\"p-0\" mat-cell *matCellDef=\"let item\">\r\n </td>\r\n <td mat-footer-cell *matFooterCellDef></td>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.columns\" [matColumnDef]=\"column.field\"\r\n [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\"\r\n [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\" [innerHTML]=\"column.titleHtml || column.title\">\r\n </div>\r\n </th>\r\n </ng-container>\r\n <ng-container *ngFor=\"let column of configuration.firstColumns; let i = index\"\r\n [matColumnDef]=\"column.field\" [sticky]=\"configuration.fixedColumn[column.field]\">\r\n <th mat-header-cell *matHeaderCellDef class=\"c-th px-8 py-8\"\r\n [ngStyle]=\"{ 'min-width': configuration.firstColumns[i].width }\" [attr.rowspan]=\"\r\n configuration.multipleHeader &&\r\n column.type !== 'children-col'\r\n ? 2\r\n : 1\r\n \" [attr.colspan]=\"\r\n column.type === 'children-col' ? column.children?.length : 1\r\n \">\r\n <div>\r\n <div [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\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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\"\r\n [ngStyle]=\"{ 'min-width': column.width }\">\r\n <div>\r\n <div [class.text-right]=\"column.align === 'right' || (!column.align && column.type === 'number')\"\r\n [class.text-center]=\"column.align === 'center'\" [innerHTML]=\"column.titleHtml || column.title\">\r\n </div>\r\n <sd-column-inline-filter *ngIf=\"gridOption.filter?.inlineColumn\"\r\n [value]=\"columnFilter[column.field]\" [columnFilter]=\"columnFilter\" [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\">\r\n </tr>\r\n <tr class=\"c-second-header\" mat-header-row *matHeaderRowDef=\"configuration.secondHeaders; sticky: true\">\r\n </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 *ngIf=\"\r\n !gridOption.filter?.disabled && !gridOption.filter?.inlineColumn\r\n \" class=\"mr-10\" [title]=\"'Filter' | sdTranslate\" icon=\"filter_alt\" size=\"sm\" (action)=\"gridFilter.open()\"\r\n type=\"link\">\r\n </sd-button>\r\n <sd-button *ngIf=\"gridOption.reload?.visible\" class=\"mr-10\" [title]=\"'Reload' | sdTranslate\" icon=\"refresh\"\r\n size=\"sm\" (action)=\"reload()\" [disabled]=\"!items?.length\" 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\"\r\n size=\"sm\" type=\"link\">\r\n </sd-button>\r\n </ng-container>\r\n <ng-template #unExporting>\r\n <sd-button class=\"mr-10\" [title]=\"exportTitle | sdTranslate\" icon=\"get_app\" size=\"sm\"\r\n [matMenuTriggerFor]=\"menu\" type=\"link\">\r\n </sd-button>\r\n </ng-template>\r\n\r\n <mat-menu #menu=\"matMenu\">\r\n <button *ngIf=\"gridOption.export?.visibleExcel !== false\" mat-menu-item\r\n (click)=\"sdPopupExport.exportDefault()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> {{ \"Export excel\" | sdTranslate }}</span>\r\n </button>\r\n <button *ngIf=\"gridOption.export?.visibleCSV !== false\" mat-menu-item\r\n (click)=\"sdPopupExport.exportCSV()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">file_download</mat-icon>\r\n <span> {{ \"Export CSV\" | sdTranslate }}</span>\r\n </button>\r\n <button *ngIf=\"gridOption.export?.key\" mat-menu-item (click)=\"sdPopupExport.open()\" type=\"button\">\r\n <mat-icon fontSet=\"material-icons-outlined\">settings</mat-icon>\r\n <span> {{ \"Configure\" | sdTranslate }}</span>\r\n </button>\r\n </mat-menu>\r\n </ng-container>\r\n <sd-button *ngIf=\"gridOption.config?.visible\" class=\"mr-10\" [title]=\"'Configure' | sdTranslate\"\r\n icon=\"settings\" size=\"sm\" (action)=\"popupGridConfiguration.open()\" type=\"link\">\r\n </sd-button>\r\n </div>\r\n <mat-paginator [class.d-none]=\"gridOption.paginate?.hidden\" [length]=\"total\"\r\n [pageSize]=\"gridOption.paginate?.pageSize\" [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\"\r\n (clear)=\"onClearSelection(groupedItems)\">\r\n </sd-grid-quick-action>\r\n <sd-popup-export *ngIf=\"gridOption.export?.visible\" [configuration]=\"configuration\" [gridOption]=\"gridOption\"\r\n (export)=\"onExport($event)\" #sdPopupExport>\r\n </sd-popup-export>\r\n <sd-popup-grid-configuration [gridOption]=\"gridOption\" [key]=\"key\" #popupGridConfiguration>\r\n </sd-popup-grid-configuration>\r\n </ng-container>\r\n </ng-container>\r\n</ng-container>",
|
|
3125
3097
|
animations: [
|
|
3126
3098
|
animations.trigger('detailExpand', [
|
|
3127
3099
|
animations.state('collapsed', animations.style({ height: '0', minHeight: '0', visibility: 'hidden' })),
|