@bcgov/nr-ngx-component-lib 0.0.56 → 0.0.57
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/components/icon/icon.component.d.ts +2 -0
- package/components/list-attachments/list-attachments.component.d.ts +1 -1
- package/components/list-event-history/list-event-history.component.d.ts +1 -1
- package/components/list-select/list-select.component.d.ts +1 -1
- package/components/resource-schedule/resource-schedule.component.d.ts +33 -0
- package/components/schedule/schedule.component.d.ts +83 -0
- package/components/tabs/tab/tab.component.d.ts +1 -1
- package/directives/pagination.base.d.ts +47 -0
- package/directives/row-list.base.d.ts +5 -36
- package/esm2022/components/icon/icon.component.mjs +12 -1
- package/esm2022/components/list-attachments/list-attachments.component.mjs +2 -2
- package/esm2022/components/list-event-history/list-event-history.component.mjs +2 -2
- package/esm2022/components/list-select/list-select.component.mjs +2 -2
- package/esm2022/components/resource-schedule/resource-schedule.component.mjs +47 -0
- package/esm2022/components/schedule/schedule.component.mjs +168 -0
- package/esm2022/components/tabs/tab/tab.component.mjs +1 -1
- package/esm2022/directives/pagination.base.mjs +88 -0
- package/esm2022/directives/row-list.base.mjs +22 -75
- package/esm2022/nr-ngx-component-lib.module.mjs +30 -8
- package/esm2022/public-api.mjs +4 -1
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs +332 -71
- package/fesm2022/bcgov-nr-ngx-component-lib.mjs.map +1 -1
- package/nr-ngx-component-lib.module.d.ts +27 -25
- package/package.json +1 -1
- package/public-api.d.ts +3 -0
- package/styles/global.scss +19 -0
|
@@ -45,9 +45,10 @@ import * as i2$5 from '@angular/material/dialog';
|
|
|
45
45
|
import { MatDialogRef, MAT_DIALOG_DATA, MatDialog, MatDialogModule } from '@angular/material/dialog';
|
|
46
46
|
import * as i2$6 from '@angular/material/tabs';
|
|
47
47
|
import { MatTabGroup, MatTabsModule } from '@angular/material/tabs';
|
|
48
|
+
import * as i2$7 from '@angular/material/menu';
|
|
49
|
+
import { MatMenuModule } from '@angular/material/menu';
|
|
48
50
|
import { MatButtonModule } from '@angular/material/button';
|
|
49
51
|
import { MatCheckboxModule } from '@angular/material/checkbox';
|
|
50
|
-
import { MatMenuModule } from '@angular/material/menu';
|
|
51
52
|
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
|
|
52
53
|
import { RouterModule } from '@angular/router';
|
|
53
54
|
|
|
@@ -182,6 +183,17 @@ const ICON = {
|
|
|
182
183
|
</g>
|
|
183
184
|
</g>
|
|
184
185
|
</svg>
|
|
186
|
+
`,
|
|
187
|
+
'user-clock': `
|
|
188
|
+
<!-- Font Awesome Free 5.15.4 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) -->
|
|
189
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512">
|
|
190
|
+
<path d="M496 224c-79.6 0-144 64.4-144 144s64.4 144 144 144 144-64.4 144-144-64.4-144-144-144zm64 150.3c0 5.3-4.4 9.7-9.7 9.7h-60.6c-5.3 0-9.7-4.4-9.7-9.7v-76.6c0-5.3 4.4-9.7 9.7-9.7h12.6c5.3 0 9.7 4.4 9.7 9.7V352h38.3c5.3 0 9.7 4.4 9.7 9.7v12.6zM320 368c0-27.8 6.7-54.1 18.2-77.5-8-1.5-16.2-2.5-24.6-2.5h-16.7c-22.2 10.2-46.9 16-72.9 16s-50.6-5.8-72.9-16h-16.7C60.2 288 0 348.2 0 422.4V464c0 26.5 21.5 48 48 48h347.1c-45.3-31.9-75.1-84.5-75.1-144zm-96-112c70.7 0 128-57.3 128-128S294.7 0 224 0 96 57.3 96 128s57.3 128 128 128z" />
|
|
191
|
+
</svg>
|
|
192
|
+
`,
|
|
193
|
+
'roster': `
|
|
194
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="120 -840 720 720">
|
|
195
|
+
<path d="M120-180v-600q0-24.75 17.625-42.375T180-840h600q24.75 0 42.375 17.625T840-780v600q0 24.75-17.625 42.375T780-120H180q-24.75 0-42.375-17.625T120-180Zm60-440h600v-160H180v160Zm220 220h160v-160H400v160Zm0 220h160v-160H400v160ZM180-400h160v-160H180v160Zm440 0h160v-160H620v160ZM180-180h160v-160H180v160Zm440 0h160v-160H620v160Z" />
|
|
196
|
+
</svg>
|
|
185
197
|
`
|
|
186
198
|
};
|
|
187
199
|
|
|
@@ -1311,30 +1323,11 @@ class ObservableAborter {
|
|
|
1311
1323
|
}
|
|
1312
1324
|
}
|
|
1313
1325
|
|
|
1314
|
-
class
|
|
1315
|
-
get isLoading() { return this._isLoading; }
|
|
1316
|
-
set isLoading(v) {
|
|
1317
|
-
if (v == this._isLoading)
|
|
1318
|
-
return;
|
|
1319
|
-
this._isLoading = v;
|
|
1320
|
-
this.isLoadingChange.emit(v);
|
|
1321
|
-
}
|
|
1322
|
-
get rows() { return this._rows; }
|
|
1323
|
-
get totalRowCount() { return this._totalRowCount; }
|
|
1324
|
-
get pageSize() { return this._pageConfig.pageSize; }
|
|
1325
|
-
get pageNumber() { return this._pageConfig.pageNumber; }
|
|
1326
|
-
get sortActive() { return this._pageConfig.sortActive; }
|
|
1327
|
-
get sortDirection() { return this._pageConfig.sortDirection; }
|
|
1328
|
-
get filter() {
|
|
1329
|
-
return this._filter;
|
|
1330
|
-
}
|
|
1326
|
+
class PaginationBase extends NrclBase {
|
|
1331
1327
|
constructor() {
|
|
1332
|
-
super();
|
|
1328
|
+
super(...arguments);
|
|
1333
1329
|
this.pageStateService = inject(PageStateService);
|
|
1334
1330
|
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
1335
|
-
this.isLoadingChange = new EventEmitter();
|
|
1336
|
-
this._isLoading = false;
|
|
1337
|
-
this._rows = [];
|
|
1338
1331
|
this._totalRowCount = 0;
|
|
1339
1332
|
this._pageConfig = {
|
|
1340
1333
|
pageSize: 0,
|
|
@@ -1342,49 +1335,26 @@ class RowListBase extends NrclBase {
|
|
|
1342
1335
|
sortActive: '',
|
|
1343
1336
|
sortDirection: 'asc'
|
|
1344
1337
|
};
|
|
1345
|
-
this.loadPageState();
|
|
1346
|
-
}
|
|
1347
|
-
ngAfterViewInit() {
|
|
1348
|
-
this.refreshRowList();
|
|
1349
1338
|
}
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
});
|
|
1358
|
-
return this._loadRowListRequest.promise
|
|
1359
|
-
.then(res => {
|
|
1360
|
-
this._totalRowCount = this.parseTotalRowCount(res);
|
|
1361
|
-
this._rows = this.parseRows(res);
|
|
1362
|
-
})
|
|
1363
|
-
.catch((e) => {
|
|
1364
|
-
if (e instanceof Aborted)
|
|
1365
|
-
return;
|
|
1366
|
-
this.loadRowListPageFailed(e);
|
|
1367
|
-
})
|
|
1368
|
-
.finally(() => {
|
|
1369
|
-
this.isLoading = false;
|
|
1370
|
-
this.changeDetectorRef.detectChanges();
|
|
1371
|
-
});
|
|
1339
|
+
get totalRowCount() { return this._totalRowCount; }
|
|
1340
|
+
get pageSize() { return this._pageConfig.pageSize; }
|
|
1341
|
+
get pageNumber() { return this._pageConfig.pageNumber; }
|
|
1342
|
+
get sortActive() { return this._pageConfig.sortActive; }
|
|
1343
|
+
get sortDirection() { return this._pageConfig.sortDirection; }
|
|
1344
|
+
get filter() {
|
|
1345
|
+
return this._filter;
|
|
1372
1346
|
}
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
return res['totalRowCount'];
|
|
1376
|
-
throw 'Missing res.totalRowCount, might need to override RowListBase.parseTotalRowCount';
|
|
1347
|
+
set filter(f) {
|
|
1348
|
+
this._filter = this.clone(f);
|
|
1377
1349
|
}
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
this._rows = [];
|
|
1381
|
-
this._totalRowCount = 0;
|
|
1350
|
+
ngAfterViewInit() {
|
|
1351
|
+
this.loadPageState();
|
|
1382
1352
|
}
|
|
1383
1353
|
clone(obj) {
|
|
1384
1354
|
return JSON.parse(JSON.stringify(obj));
|
|
1385
1355
|
}
|
|
1386
1356
|
onFilterChange(ev) {
|
|
1387
|
-
this.
|
|
1357
|
+
this.filter = ev;
|
|
1388
1358
|
this.onPageNumberChange(1);
|
|
1389
1359
|
}
|
|
1390
1360
|
onSortChange(ev) {
|
|
@@ -1398,14 +1368,13 @@ class RowListBase extends NrclBase {
|
|
|
1398
1368
|
}
|
|
1399
1369
|
onPageNumberChange(ev) {
|
|
1400
1370
|
this._pageConfig.pageNumber = ev;
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
});
|
|
1371
|
+
}
|
|
1372
|
+
get initialPageState() {
|
|
1373
|
+
return this.getInitialPageState();
|
|
1405
1374
|
}
|
|
1406
1375
|
loadPageState() {
|
|
1407
1376
|
let state = this.pageStateService.getPageState(this.constructor, () => this.initialPageState);
|
|
1408
|
-
this.
|
|
1377
|
+
this.filter = state.filter;
|
|
1409
1378
|
this._pageConfig.pageSize = state.pageConfig.pageSize;
|
|
1410
1379
|
this._pageConfig.pageNumber = state.pageConfig.pageNumber;
|
|
1411
1380
|
this._pageConfig.sortActive = state.pageConfig.sortActive;
|
|
@@ -1413,7 +1382,7 @@ class RowListBase extends NrclBase {
|
|
|
1413
1382
|
}
|
|
1414
1383
|
savePageState() {
|
|
1415
1384
|
let state = this.clone({
|
|
1416
|
-
filter: this.
|
|
1385
|
+
filter: this.filter,
|
|
1417
1386
|
pageConfig: {
|
|
1418
1387
|
pageSize: this._pageConfig.pageSize,
|
|
1419
1388
|
pageNumber: this._pageConfig.pageNumber,
|
|
@@ -1431,12 +1400,86 @@ class RowListBase extends NrclBase {
|
|
|
1431
1400
|
totalItems: this._totalRowCount
|
|
1432
1401
|
};
|
|
1433
1402
|
}
|
|
1434
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type:
|
|
1403
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginationBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1404
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: PaginationBase, usesInheritance: true, ngImport: i0 }); }
|
|
1405
|
+
}
|
|
1406
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: PaginationBase, decorators: [{
|
|
1407
|
+
type: Directive
|
|
1408
|
+
}] });
|
|
1409
|
+
|
|
1410
|
+
class RowListBase extends PaginationBase {
|
|
1411
|
+
constructor() {
|
|
1412
|
+
super(...arguments);
|
|
1413
|
+
this.pageStateService = inject(PageStateService);
|
|
1414
|
+
this.changeDetectorRef = inject(ChangeDetectorRef);
|
|
1415
|
+
this.isLoadingChange = new EventEmitter();
|
|
1416
|
+
this._isLoading = false;
|
|
1417
|
+
this._rows = [];
|
|
1418
|
+
}
|
|
1419
|
+
get isLoading() { return this._isLoading; }
|
|
1420
|
+
set isLoading(v) {
|
|
1421
|
+
if (v == this._isLoading)
|
|
1422
|
+
return;
|
|
1423
|
+
this._isLoading = v;
|
|
1424
|
+
this.isLoadingChange.emit(v);
|
|
1425
|
+
}
|
|
1426
|
+
get rows() { return this._rows; }
|
|
1427
|
+
ngAfterViewInit() {
|
|
1428
|
+
super.ngAfterViewInit();
|
|
1429
|
+
this.refreshRowList();
|
|
1430
|
+
}
|
|
1431
|
+
refreshRowList() {
|
|
1432
|
+
return this.loadRowList().then(result => this.parseRowList(result));
|
|
1433
|
+
}
|
|
1434
|
+
loadRowList() {
|
|
1435
|
+
this.isLoading = true;
|
|
1436
|
+
this.changeDetectorRef.detectChanges();
|
|
1437
|
+
if (this._loadRowListRequest)
|
|
1438
|
+
this._loadRowListRequest.abort();
|
|
1439
|
+
this._loadRowListRequest = new ObservableAborter(() => {
|
|
1440
|
+
return this.fetchRowListPage();
|
|
1441
|
+
});
|
|
1442
|
+
return this._loadRowListRequest.promise;
|
|
1443
|
+
}
|
|
1444
|
+
parseRowList(result) {
|
|
1445
|
+
return Promise.resolve(result)
|
|
1446
|
+
.then(res => {
|
|
1447
|
+
this._totalRowCount = this.parseTotalRowCount(res);
|
|
1448
|
+
this._rows = this.parseRows(res);
|
|
1449
|
+
})
|
|
1450
|
+
.catch((e) => {
|
|
1451
|
+
if (e instanceof Aborted)
|
|
1452
|
+
return;
|
|
1453
|
+
this.loadRowListPageFailed(e);
|
|
1454
|
+
})
|
|
1455
|
+
.finally(() => {
|
|
1456
|
+
this.isLoading = false;
|
|
1457
|
+
this.changeDetectorRef.detectChanges();
|
|
1458
|
+
});
|
|
1459
|
+
}
|
|
1460
|
+
parseTotalRowCount(res) {
|
|
1461
|
+
if ('totalRowCount' in res)
|
|
1462
|
+
return res['totalRowCount'];
|
|
1463
|
+
throw 'Missing res.totalRowCount, might need to override RowListBase.parseTotalRowCount';
|
|
1464
|
+
}
|
|
1465
|
+
loadRowListPageFailed(error) {
|
|
1466
|
+
console.warn(error);
|
|
1467
|
+
this._rows = [];
|
|
1468
|
+
this._totalRowCount = 0;
|
|
1469
|
+
}
|
|
1470
|
+
onPageNumberChange(ev) {
|
|
1471
|
+
super.onPageNumberChange(ev);
|
|
1472
|
+
this.refreshRowList()
|
|
1473
|
+
.then(() => {
|
|
1474
|
+
this.savePageState();
|
|
1475
|
+
});
|
|
1476
|
+
}
|
|
1477
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
1435
1478
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: RowListBase, outputs: { isLoadingChange: "isLoadingChange" }, usesInheritance: true, ngImport: i0 }); }
|
|
1436
1479
|
}
|
|
1437
1480
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: RowListBase, decorators: [{
|
|
1438
1481
|
type: Directive
|
|
1439
|
-
}],
|
|
1482
|
+
}], propDecorators: { isLoadingChange: [{
|
|
1440
1483
|
type: Output
|
|
1441
1484
|
}] } });
|
|
1442
1485
|
|
|
@@ -1671,7 +1714,7 @@ class ListAttachmentsComponent extends RowListBase {
|
|
|
1671
1714
|
];
|
|
1672
1715
|
}
|
|
1673
1716
|
}
|
|
1674
|
-
|
|
1717
|
+
getInitialPageState() {
|
|
1675
1718
|
return {
|
|
1676
1719
|
filter: {},
|
|
1677
1720
|
pageConfig: {
|
|
@@ -1760,7 +1803,7 @@ class ListEventHistoryComponent extends RowListBase {
|
|
|
1760
1803
|
throw Error('no provider for ListEventHistoryComponent.rowListProvider.displayRowListPage');
|
|
1761
1804
|
return this.rowListProvider.displayRowListPage(res);
|
|
1762
1805
|
}
|
|
1763
|
-
|
|
1806
|
+
getInitialPageState() {
|
|
1764
1807
|
return {
|
|
1765
1808
|
filter: {},
|
|
1766
1809
|
pageConfig: {
|
|
@@ -1815,7 +1858,7 @@ class ListSelectComponent extends RowListBase {
|
|
|
1815
1858
|
this.displayColumns = this.displayColumnsProvider([...this.defaultDisplayColumns]);
|
|
1816
1859
|
});
|
|
1817
1860
|
}
|
|
1818
|
-
|
|
1861
|
+
getInitialPageState() {
|
|
1819
1862
|
return {
|
|
1820
1863
|
filter: {},
|
|
1821
1864
|
pageConfig: {
|
|
@@ -2248,6 +2291,204 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2248
2291
|
args: [{ transform: booleanAttribute }]
|
|
2249
2292
|
}] } });
|
|
2250
2293
|
|
|
2294
|
+
class ScheduleRowHeadingDirective {
|
|
2295
|
+
constructor(template) {
|
|
2296
|
+
this.template = template;
|
|
2297
|
+
}
|
|
2298
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleRowHeadingDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2299
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScheduleRowHeadingDirective, selector: "[nrclScheduleRowHeading]", ngImport: i0 }); }
|
|
2300
|
+
}
|
|
2301
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleRowHeadingDirective, decorators: [{
|
|
2302
|
+
type: Directive,
|
|
2303
|
+
args: [{
|
|
2304
|
+
selector: '[nrclScheduleRowHeading]'
|
|
2305
|
+
}]
|
|
2306
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
2307
|
+
// ================================================================================
|
|
2308
|
+
class ScheduleItemDirective {
|
|
2309
|
+
constructor(template) {
|
|
2310
|
+
this.template = template;
|
|
2311
|
+
}
|
|
2312
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleItemDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2313
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ScheduleItemDirective, selector: "[nrclScheduleItem]", inputs: { name: ["nrclScheduleItem", "name"] }, ngImport: i0 }); }
|
|
2314
|
+
}
|
|
2315
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleItemDirective, decorators: [{
|
|
2316
|
+
type: Directive,
|
|
2317
|
+
args: [{
|
|
2318
|
+
selector: '[nrclScheduleItem]'
|
|
2319
|
+
}]
|
|
2320
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }], propDecorators: { name: [{
|
|
2321
|
+
type: Input,
|
|
2322
|
+
args: ['nrclScheduleItem']
|
|
2323
|
+
}] } });
|
|
2324
|
+
// --------------------------------------------------------------------------------
|
|
2325
|
+
class ScheduleComponent extends RowListBase {
|
|
2326
|
+
constructor() {
|
|
2327
|
+
super(...arguments);
|
|
2328
|
+
this.weekStart = 0;
|
|
2329
|
+
this._days = [];
|
|
2330
|
+
this._weeks = [];
|
|
2331
|
+
this._templates = [];
|
|
2332
|
+
}
|
|
2333
|
+
ngOnChanges(changes) {
|
|
2334
|
+
this.refreshRowList();
|
|
2335
|
+
}
|
|
2336
|
+
ngAfterViewInit() {
|
|
2337
|
+
setTimeout(() => {
|
|
2338
|
+
super.ngAfterViewInit();
|
|
2339
|
+
});
|
|
2340
|
+
}
|
|
2341
|
+
fetchRowListPage() {
|
|
2342
|
+
if (!this.provider?.fetchSchedule)
|
|
2343
|
+
throw Error('ScheduleComponent.provider.fetchSchedule not set');
|
|
2344
|
+
return this.provider.fetchSchedule({
|
|
2345
|
+
pageNumber: this.pageNumber,
|
|
2346
|
+
pageSize: this.pageSize,
|
|
2347
|
+
sortActive: this.sortActive,
|
|
2348
|
+
sortDirection: this.sortDirection,
|
|
2349
|
+
});
|
|
2350
|
+
}
|
|
2351
|
+
parseRows(res) {
|
|
2352
|
+
if (!this.provider?.parseSchedule)
|
|
2353
|
+
throw Error('ResourceScheduleComponent.provider.parseSchedule not set');
|
|
2354
|
+
let rows = this.provider.parseSchedule(res);
|
|
2355
|
+
return this.makeRows(rows);
|
|
2356
|
+
}
|
|
2357
|
+
getInitialPageState() {
|
|
2358
|
+
if (!this.provider?.getInitialPageState)
|
|
2359
|
+
throw Error('ResourceScheduleComponent.provider.getInitialPageState not set');
|
|
2360
|
+
return this.provider.getInitialPageState();
|
|
2361
|
+
}
|
|
2362
|
+
onSamePageFilterChange(ev) {
|
|
2363
|
+
this.filter = ev;
|
|
2364
|
+
}
|
|
2365
|
+
makeRows(schedule) {
|
|
2366
|
+
let start = moment(this.startDate);
|
|
2367
|
+
let today = moment();
|
|
2368
|
+
this._weeks = Array.from({ length: this.dayCount }).reduce((a, x, i) => {
|
|
2369
|
+
let m = start.clone().add(i, 'day');
|
|
2370
|
+
let date = m.format('MMM D');
|
|
2371
|
+
let day = m.day();
|
|
2372
|
+
if (a.length == 0)
|
|
2373
|
+
return a.concat({
|
|
2374
|
+
start: date,
|
|
2375
|
+
end: date,
|
|
2376
|
+
span: 1
|
|
2377
|
+
});
|
|
2378
|
+
let prev = a[a.length - 1];
|
|
2379
|
+
if (day == this.weekStart)
|
|
2380
|
+
return a.concat({
|
|
2381
|
+
start: date,
|
|
2382
|
+
end: date,
|
|
2383
|
+
span: 1
|
|
2384
|
+
});
|
|
2385
|
+
prev.end = date;
|
|
2386
|
+
prev.span += 1;
|
|
2387
|
+
return a;
|
|
2388
|
+
}, []);
|
|
2389
|
+
this._days = Array.from({ length: this.dayCount }).map((x, i) => {
|
|
2390
|
+
let d = start.clone().add(i, 'day');
|
|
2391
|
+
return {
|
|
2392
|
+
dayName: d.format('ddd'),
|
|
2393
|
+
monthDay: d.date(),
|
|
2394
|
+
date: d.format('Y-MM-DD'),
|
|
2395
|
+
isFirst: d.date() == 1,
|
|
2396
|
+
isWeekend: d.day() == 0 || d.day() == 6,
|
|
2397
|
+
isToday: d.isSame(today, 'day'),
|
|
2398
|
+
};
|
|
2399
|
+
});
|
|
2400
|
+
this._templates = Array.from({ length: schedule.length });
|
|
2401
|
+
return schedule.map((row, i) => {
|
|
2402
|
+
this._templates[i] = Array.from({ length: this.dayCount });
|
|
2403
|
+
return {
|
|
2404
|
+
id: row.id ?? String(i),
|
|
2405
|
+
heading: row.heading,
|
|
2406
|
+
items: row.items
|
|
2407
|
+
.then(rowItems => {
|
|
2408
|
+
return Array.from({ length: this.dayCount }).map((x, j) => {
|
|
2409
|
+
let rowItem = rowItems[j];
|
|
2410
|
+
if (rowItem == null)
|
|
2411
|
+
return {
|
|
2412
|
+
id: String(j),
|
|
2413
|
+
name: 'empty'
|
|
2414
|
+
};
|
|
2415
|
+
this._templates[i][j] = this.itemTemplates?.find(i => i.name == rowItem?.name)?.template;
|
|
2416
|
+
return rowItem;
|
|
2417
|
+
});
|
|
2418
|
+
})
|
|
2419
|
+
};
|
|
2420
|
+
}) || [];
|
|
2421
|
+
}
|
|
2422
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
2423
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ScheduleComponent, selector: "nrcl-schedule", inputs: { provider: "provider", startDate: "startDate", weekStart: ["weekStart", "weekStart", numberAttribute], dayCount: ["dayCount", "dayCount", numberAttribute], menu: "menu" }, host: { properties: { "style.--nrcl-schedule-day-count": "this.dayCount" } }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ScheduleRowHeadingDirective, descendants: true }, { propertyName: "itemTemplates", predicate: ScheduleItemDirective }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div class=\"schedule\">\n <div class=\"upper-left\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"row weeks\">\n @for ( week of _weeks; track $index ) {\n @if ( week.span == 1 ) {\n <div class=\"week\">\n {{ week.start }}\n </div>\n }\n @else {\n <div class=\"week\" [style.grid-column]=\"'span ' + week.span\">\n {{ week.start }} - {{ week.end }}\n </div>\n }\n }\n </div>\n\n <div class=\"row days\"> \n @for ( day of _days; track $index ) {\n <div class=\"day\"\n [class.weekend]=\"day.isWeekend\"\n [class.today]=\"day.isToday\"\n [class.first]=\"day.isFirst\"\n >\n <div class=\"day-name\">{{ day.dayName }}</div>\n <div class=\"date\">{{ day.monthDay }}</div>\n </div>\n }\n </div>\n\n @for ( row of rows | paginate: paginateState( 'nrcl-schedule' ); track row.id; let rowIndex = $index ) {\n <div class=\"row items\">\n <div class=\"outer heading\">\n <div class=\"inner heading\">\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate?.template\" \n [ngTemplateOutletContext]=\"{ $implicit: row.heading }\" \n ></ng-container>\n </div>\n </div> \n\n @if ( row.items | async; as rowItems ) {\n @for ( item of rowItems; track item.id; let colIndex = $index ) {\n <div class=\"outer item\"\n [class.menu-open]=\"itemMenu.menuOpen\"\n >\n <div class=\"inner item\" #itemMenu=\"matMenuTrigger\"\n [class]=\"'item-' + item.name\" \n matRipple\n [matMenuTriggerFor]=\"menu\"\n [matMenuTriggerData]=\"{ $implicit: { item: item, heading: row.heading } }\"\n [matTooltip]=\"item?.tooltip?.()\"\n matTooltipClass=\"nrcl-schedule-multiline\"\n [class.travel]=\"item?.travel\"\n >\n <ng-container \n [ngTemplateOutlet]=\"_templates[ rowIndex ][ colIndex ] || empty\" \n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n \n @let icons = item?.icons?.();\n @if ( icons && icons.length > 0 ) {\n <div class=\"icons\">\n @for ( icon of icons; track icon ) {\n <nrcl-icon small>{{ icon }}</nrcl-icon>\n } \n </div>\n }\n </div>\n </div>\n }\n }\n @else {\n @for ( day of _days; track day ) {\n <div class=\"item item-loading\"></div>\n }\n }\n </div>\n }\n</div>\n\n<nrcl-gap/>\n\n<nrcl-row-list-pagination\n paginationId=\"nrcl-schedule\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n></nrcl-row-list-pagination>\n\n<ng-template #empty>\n <div class=\"empty\">(empty)</div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-schedule-border-color: #c6c8cb;--nrcl-schedule-background-color: white;--nrcl-schedule-alternate-background-color: #f2f2f2;--nrcl-schedule-hover-background-color: #d7d7d7;--nrcl-schedule-row-weeks-height: 30px;--nrcl-schedule-row-weeks-font-size: 15px;--nrcl-schedule-row-weeks-font-weight: bold;--nrcl-schedule-row-weeks-foreground-color: black;--nrcl-schedule-row-days-height: 45px;--nrcl-schedule-row-days-font-size: 15px;--nrcl-schedule-row-days-font-weight: normal;--nrcl-schedule-row-days-foreground-color: black;--nrcl-schedule-row-days-weekend-background-color: #e0f8fc;--nrcl-schedule-row-days-today-background-color: #fcf8d9;--nrcl-schedule-row-schedule-height: 70px;--nrcl-schedule-heading-width: 300px;--nrcl-schedule-item-width: 100px}:host{display:flex;flex-direction:column;font-family:var(--nrcl-font-family);height:100%}:host .schedule{display:grid;grid-template-columns:var(--nrcl-schedule-heading-width) repeat(var(--nrcl-schedule-day-count),var(--nrcl-schedule-item-width));overflow:auto;height:100%;flex-grow:1}:host .schedule .upper-left{grid-row:1/span 2;grid-column:1;border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color);position:sticky;top:0;left:0;z-index:2;background:var(--nrcl-schedule-background-color)}:host .schedule .row{display:contents}:host .schedule .row.weeks>*{height:var(--nrcl-schedule-row-weeks-height)}:host .schedule .row.days>*{height:var(--nrcl-schedule-row-days-height)}:host .schedule .row .outer.heading,:host .schedule .row .day,:host .schedule .row .week{border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.heading{border-left:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.item:last-child{border-right:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row:last-child .outer.item{border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .week{border-top:1px solid var(--nrcl-schedule-border-color);display:flex;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-weeks-font-size);font-weight:var(--nrcl-schedule-row-weeks-font-weight);color:var(--nrcl-schedule-row-weeks-foreground-color);position:sticky;top:0;background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day{display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-days-font-size);font-weight:var(--nrcl-schedule-row-days-font-weight);color:var(--nrcl-schedule-row-days-foreground-color);position:sticky;top:calc(var(--nrcl-schedule-row-weeks-height) + 2px);background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day .day-name{font-size:13px}:host .schedule .row .day.weekend{background-color:var(--nrcl-schedule-row-days-weekend-background-color)}:host .schedule .row .day.today{background-color:var(--nrcl-schedule-row-days-today-background-color)}:host .schedule .row .day.first:after{content:\"\";position:absolute;top:0;left:0;bottom:0;border-left:2px solid black}:host .schedule .row.items .outer.item{padding:2px;box-sizing:border-box;height:var(--nrcl-schedule-row-schedule-height);display:flex;flex-direction:column;justify-content:stretch;align-items:stretch}:host .schedule .row.items .outer.item.menu-open,:host .schedule .row.items .outer.item:hover{background-color:#000;border-radius:6px}:host .schedule .row.items .outer.item .item{flex-grow:1;cursor:pointer;border-radius:4px;position:relative;padding:4px 4px 8px}:host .schedule .row.items .outer.item .item .icons{position:absolute;right:2px;bottom:2px;display:flex;flex-direction:column;gap:2px;background-color:#f1ebe4;border-radius:4px;padding:3px}:host .schedule .row.items .outer.item .item.travel{position:relative}:host .schedule .row.items .outer.item .item.travel:after{content:\"\";position:absolute;inset:0 0 2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAABAQMAAAD+YPzoAAAABlBMVEX///8AAABVwtN+AAAAAnRSTlP/AOW3MEoAAAAMSURBVHicY+BwEgAAALAAW97nJhUAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:calc(100% - 8px) 3px;background-position:bottom}:host .schedule .row.items .outer.item .item.travel:hover:after{filter:brightness(0)}:host .schedule .row.items .outer.heading{box-sizing:border-box;cursor:default;position:sticky;left:0;z-index:1;height:var(--nrcl-schedule-row-schedule-height)}:host .schedule .row.items .outer.heading .heading{flex-grow:1;cursor:default;height:100%}:host .schedule .row:nth-child(odd) .outer{background-color:var(--nrcl-schedule-background-color)}:host .schedule .row:nth-child(2n) .outer{background-color:var(--nrcl-schedule-alternate-background-color)}:host .schedule .row:hover .outer{background-color:var(--nrcl-schedule-hover-background-color)}.empty{height:100%;display:flex;justify-content:center;align-items:center;color:#aaa}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2$7.MatMenuTrigger, selector: "[mat-menu-trigger-for], [matMenuTriggerFor]", inputs: ["mat-menu-trigger-for", "matMenuTriggerFor", "matMenuTriggerData", "matMenuTriggerRestoreFocus"], outputs: ["menuOpened", "onMenuOpen", "menuClosed", "onMenuClose"], exportAs: ["matMenuTrigger"] }, { kind: "directive", type: i1$1.MatRipple, selector: "[mat-ripple], [matRipple]", inputs: ["matRippleColor", "matRippleUnbounded", "matRippleCentered", "matRippleRadius", "matRippleAnimation", "matRippleDisabled", "matRippleTrigger"], exportAs: ["matRipple"] }, { kind: "directive", type: i2.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "component", type: GapComponent, selector: "nrcl-gap", inputs: ["horizontal", "vertical", "divider"] }, { kind: "component", type: RowListPaginationComponent, selector: "nrcl-row-list-pagination", inputs: ["paginationId", "pageSizeOptions", "pageSize", "pageNumber", "rowCount", "showPageSize", "noRowsMessage"], outputs: ["pageSizeChange", "pageNumberChange"] }, { kind: "component", type: IconComponent, selector: "nrcl-icon", inputs: ["small", "large"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "pipe", type: i1$6.PaginatePipe, name: "paginate" }] }); }
|
|
2424
|
+
}
|
|
2425
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ScheduleComponent, decorators: [{
|
|
2426
|
+
type: Component,
|
|
2427
|
+
args: [{ selector: 'nrcl-schedule', host: {
|
|
2428
|
+
'[style.--nrcl-schedule-day-count]': 'this.dayCount'
|
|
2429
|
+
}, template: "<div class=\"schedule\">\n <div class=\"upper-left\">\n <ng-content></ng-content>\n </div>\n\n <div class=\"row weeks\">\n @for ( week of _weeks; track $index ) {\n @if ( week.span == 1 ) {\n <div class=\"week\">\n {{ week.start }}\n </div>\n }\n @else {\n <div class=\"week\" [style.grid-column]=\"'span ' + week.span\">\n {{ week.start }} - {{ week.end }}\n </div>\n }\n }\n </div>\n\n <div class=\"row days\"> \n @for ( day of _days; track $index ) {\n <div class=\"day\"\n [class.weekend]=\"day.isWeekend\"\n [class.today]=\"day.isToday\"\n [class.first]=\"day.isFirst\"\n >\n <div class=\"day-name\">{{ day.dayName }}</div>\n <div class=\"date\">{{ day.monthDay }}</div>\n </div>\n }\n </div>\n\n @for ( row of rows | paginate: paginateState( 'nrcl-schedule' ); track row.id; let rowIndex = $index ) {\n <div class=\"row items\">\n <div class=\"outer heading\">\n <div class=\"inner heading\">\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate?.template\" \n [ngTemplateOutletContext]=\"{ $implicit: row.heading }\" \n ></ng-container>\n </div>\n </div> \n\n @if ( row.items | async; as rowItems ) {\n @for ( item of rowItems; track item.id; let colIndex = $index ) {\n <div class=\"outer item\"\n [class.menu-open]=\"itemMenu.menuOpen\"\n >\n <div class=\"inner item\" #itemMenu=\"matMenuTrigger\"\n [class]=\"'item-' + item.name\" \n matRipple\n [matMenuTriggerFor]=\"menu\"\n [matMenuTriggerData]=\"{ $implicit: { item: item, heading: row.heading } }\"\n [matTooltip]=\"item?.tooltip?.()\"\n matTooltipClass=\"nrcl-schedule-multiline\"\n [class.travel]=\"item?.travel\"\n >\n <ng-container \n [ngTemplateOutlet]=\"_templates[ rowIndex ][ colIndex ] || empty\" \n [ngTemplateOutletContext]=\"{ $implicit: item }\"\n ></ng-container>\n \n @let icons = item?.icons?.();\n @if ( icons && icons.length > 0 ) {\n <div class=\"icons\">\n @for ( icon of icons; track icon ) {\n <nrcl-icon small>{{ icon }}</nrcl-icon>\n } \n </div>\n }\n </div>\n </div>\n }\n }\n @else {\n @for ( day of _days; track day ) {\n <div class=\"item item-loading\"></div>\n }\n }\n </div>\n }\n</div>\n\n<nrcl-gap/>\n\n<nrcl-row-list-pagination\n paginationId=\"nrcl-schedule\"\n [pageSize]=\"pageSize\"\n [pageNumber]=\"pageNumber\"\n [rowCount]=\"totalRowCount\"\n (pageNumberChange)=\"onPageNumberChange( $event )\"\n (pageSizeChange)=\"onPageSizeChange( $event )\"\n></nrcl-row-list-pagination>\n\n<ng-template #empty>\n <div class=\"empty\">(empty)</div>\n</ng-template>\n", styles: ["::ng-deep :root{--nrcl-schedule-border-color: #c6c8cb;--nrcl-schedule-background-color: white;--nrcl-schedule-alternate-background-color: #f2f2f2;--nrcl-schedule-hover-background-color: #d7d7d7;--nrcl-schedule-row-weeks-height: 30px;--nrcl-schedule-row-weeks-font-size: 15px;--nrcl-schedule-row-weeks-font-weight: bold;--nrcl-schedule-row-weeks-foreground-color: black;--nrcl-schedule-row-days-height: 45px;--nrcl-schedule-row-days-font-size: 15px;--nrcl-schedule-row-days-font-weight: normal;--nrcl-schedule-row-days-foreground-color: black;--nrcl-schedule-row-days-weekend-background-color: #e0f8fc;--nrcl-schedule-row-days-today-background-color: #fcf8d9;--nrcl-schedule-row-schedule-height: 70px;--nrcl-schedule-heading-width: 300px;--nrcl-schedule-item-width: 100px}:host{display:flex;flex-direction:column;font-family:var(--nrcl-font-family);height:100%}:host .schedule{display:grid;grid-template-columns:var(--nrcl-schedule-heading-width) repeat(var(--nrcl-schedule-day-count),var(--nrcl-schedule-item-width));overflow:auto;height:100%;flex-grow:1}:host .schedule .upper-left{grid-row:1/span 2;grid-column:1;border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color);position:sticky;top:0;left:0;z-index:2;background:var(--nrcl-schedule-background-color)}:host .schedule .row{display:contents}:host .schedule .row.weeks>*{height:var(--nrcl-schedule-row-weeks-height)}:host .schedule .row.days>*{height:var(--nrcl-schedule-row-days-height)}:host .schedule .row .outer.heading,:host .schedule .row .day,:host .schedule .row .week{border-right:1px solid var(--nrcl-schedule-border-color);border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.heading{border-left:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .outer.item:last-child{border-right:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row:last-child .outer.item{border-bottom:1px solid var(--nrcl-schedule-border-color)}:host .schedule .row .week{border-top:1px solid var(--nrcl-schedule-border-color);display:flex;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-weeks-font-size);font-weight:var(--nrcl-schedule-row-weeks-font-weight);color:var(--nrcl-schedule-row-weeks-foreground-color);position:sticky;top:0;background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day{display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:var(--nrcl-schedule-row-days-font-size);font-weight:var(--nrcl-schedule-row-days-font-weight);color:var(--nrcl-schedule-row-days-foreground-color);position:sticky;top:calc(var(--nrcl-schedule-row-weeks-height) + 2px);background-color:var(--nrcl-schedule-background-color);z-index:1}:host .schedule .row .day .day-name{font-size:13px}:host .schedule .row .day.weekend{background-color:var(--nrcl-schedule-row-days-weekend-background-color)}:host .schedule .row .day.today{background-color:var(--nrcl-schedule-row-days-today-background-color)}:host .schedule .row .day.first:after{content:\"\";position:absolute;top:0;left:0;bottom:0;border-left:2px solid black}:host .schedule .row.items .outer.item{padding:2px;box-sizing:border-box;height:var(--nrcl-schedule-row-schedule-height);display:flex;flex-direction:column;justify-content:stretch;align-items:stretch}:host .schedule .row.items .outer.item.menu-open,:host .schedule .row.items .outer.item:hover{background-color:#000;border-radius:6px}:host .schedule .row.items .outer.item .item{flex-grow:1;cursor:pointer;border-radius:4px;position:relative;padding:4px 4px 8px}:host .schedule .row.items .outer.item .item .icons{position:absolute;right:2px;bottom:2px;display:flex;flex-direction:column;gap:2px;background-color:#f1ebe4;border-radius:4px;padding:3px}:host .schedule .row.items .outer.item .item.travel{position:relative}:host .schedule .row.items .outer.item .item.travel:after{content:\"\";position:absolute;inset:0 0 2px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAABAQMAAAD+YPzoAAAABlBMVEX///8AAABVwtN+AAAAAnRSTlP/AOW3MEoAAAAMSURBVHicY+BwEgAAALAAW97nJhUAAAAASUVORK5CYII=);background-repeat:no-repeat;background-size:calc(100% - 8px) 3px;background-position:bottom}:host .schedule .row.items .outer.item .item.travel:hover:after{filter:brightness(0)}:host .schedule .row.items .outer.heading{box-sizing:border-box;cursor:default;position:sticky;left:0;z-index:1;height:var(--nrcl-schedule-row-schedule-height)}:host .schedule .row.items .outer.heading .heading{flex-grow:1;cursor:default;height:100%}:host .schedule .row:nth-child(odd) .outer{background-color:var(--nrcl-schedule-background-color)}:host .schedule .row:nth-child(2n) .outer{background-color:var(--nrcl-schedule-alternate-background-color)}:host .schedule .row:hover .outer{background-color:var(--nrcl-schedule-hover-background-color)}.empty{height:100%;display:flex;justify-content:center;align-items:center;color:#aaa}\n"] }]
|
|
2430
|
+
}], propDecorators: { provider: [{
|
|
2431
|
+
type: Input
|
|
2432
|
+
}], startDate: [{
|
|
2433
|
+
type: Input
|
|
2434
|
+
}], weekStart: [{
|
|
2435
|
+
type: Input,
|
|
2436
|
+
args: [{ transform: numberAttribute }]
|
|
2437
|
+
}], dayCount: [{
|
|
2438
|
+
type: Input,
|
|
2439
|
+
args: [{ transform: numberAttribute }]
|
|
2440
|
+
}], menu: [{
|
|
2441
|
+
type: Input
|
|
2442
|
+
}], itemTemplates: [{
|
|
2443
|
+
type: ContentChildren,
|
|
2444
|
+
args: [ScheduleItemDirective]
|
|
2445
|
+
}], headerTemplate: [{
|
|
2446
|
+
type: ContentChild,
|
|
2447
|
+
args: [ScheduleRowHeadingDirective]
|
|
2448
|
+
}] } });
|
|
2449
|
+
|
|
2450
|
+
class ResourceScheduleRowHeadingDirective {
|
|
2451
|
+
constructor(template) {
|
|
2452
|
+
this.template = template;
|
|
2453
|
+
}
|
|
2454
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleRowHeadingDirective, deps: [{ token: i0.TemplateRef }], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
2455
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "18.2.14", type: ResourceScheduleRowHeadingDirective, selector: "[nrclResourceScheduleRowHeading]", ngImport: i0 }); }
|
|
2456
|
+
}
|
|
2457
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleRowHeadingDirective, decorators: [{
|
|
2458
|
+
type: Directive,
|
|
2459
|
+
args: [{
|
|
2460
|
+
selector: '[nrclResourceScheduleRowHeading]'
|
|
2461
|
+
}]
|
|
2462
|
+
}], ctorParameters: () => [{ type: i0.TemplateRef }] });
|
|
2463
|
+
class ResourceScheduleComponent {
|
|
2464
|
+
constructor() {
|
|
2465
|
+
this.weekStart = 0;
|
|
2466
|
+
}
|
|
2467
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
2468
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "16.1.0", version: "18.2.14", type: ResourceScheduleComponent, selector: "nrcl-resource-schedule", inputs: { provider: "provider", startDate: "startDate", weekStart: "weekStart", dayCount: ["dayCount", "dayCount", numberAttribute], menu: "menu" }, queries: [{ propertyName: "headerTemplate", first: true, predicate: ResourceScheduleRowHeadingDirective, descendants: true }], viewQueries: [{ propertyName: "scheduleComponent", first: true, predicate: ScheduleComponent, descendants: true }], ngImport: i0, template: "<nrcl-schedule #schedule\n [provider]=\"provider\"\n [startDate]=\"startDate\"\n [weekStart]=\"weekStart\"\n [dayCount]=\"dayCount\"\n [menu]=\"menu\"\n>\n <ng-content></ng-content>\n\n <ng-template nrclScheduleRowHeading let-item>\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\" \n ></ng-container>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"rostered\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"out-of-service\" let-data>\n <h1>Out of Svc</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-duty-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-standby-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-off-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-regular-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-duty-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-standby-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-off-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-regular-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n</nrcl-schedule>\n\n", styles: ["::ng-deep :root{--nrcl-resource-schedule-item-foregroud-color: black;--nrcl-resource-schedule-item-text-shadow: 1px 0px 5px #ffffffa0, -1px 0px 5px #ffffffa0, 0px 1px 5px #ffffffa0, 0px -1px 5px #ffffffa0;--nrcl-resource-schedule-item-regular-day-background-color: #0AA647;--nrcl-resource-schedule-item-off-day-background-color: #d4d2d2;--nrcl-resource-schedule-item-duty-day-background-color: #2f9fe0;--nrcl-resource-schedule-item-standby-day-background-color: #f6cf43;--nrcl-resource-schedule-item-out-of-service-background-color: #f55353;--nrcl-resource-schedule-item-rostered-background-color: #ba9ef7}:host{height:100%;display:block}.nrcl-schedule ::ng-deep .inner.item{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;color:var(--nrcl-resource-schedule-item-foregroud-color)}.nrcl-schedule ::ng-deep .inner.item h1,.nrcl-schedule ::ng-deep .inner.item h2,.nrcl-schedule ::ng-deep .inner.item h3{padding:0;margin:0;font-weight:200}.nrcl-schedule ::ng-deep .inner.item h1{font-size:15px;line-height:15px;text-align:center}.nrcl-schedule ::ng-deep .inner.item h2{flex-grow:1;font-size:14px;line-height:14px;text-align:center;display:flex;justify-content:center;align-items:center}.nrcl-schedule ::ng-deep .inner.item h3{font-size:14px;line-height:14px;text-align:center}.nrcl-schedule ::ng-deep .inner.item.item-out-of-service{background-color:var(--nrcl-resource-schedule-item-out-of-service-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-rostered{background-color:var(--nrcl-resource-schedule-item-rostered-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}\n"], dependencies: [{ kind: "directive", type: i1$2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: ScheduleComponent, selector: "nrcl-schedule", inputs: ["provider", "startDate", "weekStart", "dayCount", "menu"] }, { kind: "directive", type: ScheduleItemDirective, selector: "[nrclScheduleItem]", inputs: ["nrclScheduleItem"] }, { kind: "directive", type: ScheduleRowHeadingDirective, selector: "[nrclScheduleRowHeading]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
|
|
2469
|
+
}
|
|
2470
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ResourceScheduleComponent, decorators: [{
|
|
2471
|
+
type: Component,
|
|
2472
|
+
args: [{ selector: "nrcl-resource-schedule", changeDetection: ChangeDetectionStrategy.OnPush, template: "<nrcl-schedule #schedule\n [provider]=\"provider\"\n [startDate]=\"startDate\"\n [weekStart]=\"weekStart\"\n [dayCount]=\"dayCount\"\n [menu]=\"menu\"\n>\n <ng-content></ng-content>\n\n <ng-template nrclScheduleRowHeading let-item>\n <ng-container \n [ngTemplateOutlet]=\"headerTemplate.template\"\n [ngTemplateOutletContext]=\"{ $implicit: item }\" \n ></ng-container>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"rostered\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"out-of-service\" let-data>\n <h1>Out of Svc</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>{{ data.shiftType }}</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-duty-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-standby-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-off-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"available-regular-day\" let-data>\n <h1>Available</h1>\n <h2>{{ data.allocationType }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-duty-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Duty Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-standby-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Standby Day</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-off-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Day Off</h3>\n </ng-template>\n\n <ng-template nrclScheduleItem=\"assigned-regular-day\" let-data>\n <!-- <h1></h1> -->\n <h2>{{ data.assignmentName }}</h2>\n <h3>Regular Day</h3>\n </ng-template>\n</nrcl-schedule>\n\n", styles: ["::ng-deep :root{--nrcl-resource-schedule-item-foregroud-color: black;--nrcl-resource-schedule-item-text-shadow: 1px 0px 5px #ffffffa0, -1px 0px 5px #ffffffa0, 0px 1px 5px #ffffffa0, 0px -1px 5px #ffffffa0;--nrcl-resource-schedule-item-regular-day-background-color: #0AA647;--nrcl-resource-schedule-item-off-day-background-color: #d4d2d2;--nrcl-resource-schedule-item-duty-day-background-color: #2f9fe0;--nrcl-resource-schedule-item-standby-day-background-color: #f6cf43;--nrcl-resource-schedule-item-out-of-service-background-color: #f55353;--nrcl-resource-schedule-item-rostered-background-color: #ba9ef7}:host{height:100%;display:block}.nrcl-schedule ::ng-deep .inner.item{display:flex;flex-direction:column;justify-content:stretch;align-items:stretch;color:var(--nrcl-resource-schedule-item-foregroud-color)}.nrcl-schedule ::ng-deep .inner.item h1,.nrcl-schedule ::ng-deep .inner.item h2,.nrcl-schedule ::ng-deep .inner.item h3{padding:0;margin:0;font-weight:200}.nrcl-schedule ::ng-deep .inner.item h1{font-size:15px;line-height:15px;text-align:center}.nrcl-schedule ::ng-deep .inner.item h2{flex-grow:1;font-size:14px;line-height:14px;text-align:center;display:flex;justify-content:center;align-items:center}.nrcl-schedule ::ng-deep .inner.item h3{font-size:14px;line-height:14px;text-align:center}.nrcl-schedule ::ng-deep .inner.item.item-out-of-service{background-color:var(--nrcl-resource-schedule-item-out-of-service-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-rostered{background-color:var(--nrcl-resource-schedule-item-rostered-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-available-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-duty-day{background-color:var(--nrcl-resource-schedule-item-duty-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-standby-day{background-color:var(--nrcl-resource-schedule-item-standby-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-off-day{background-color:var(--nrcl-resource-schedule-item-off-day-background-color)}.nrcl-schedule ::ng-deep .inner.item.item-assigned-regular-day{background-color:var(--nrcl-resource-schedule-item-regular-day-background-color)}\n"] }]
|
|
2473
|
+
}], propDecorators: { provider: [{
|
|
2474
|
+
type: Input
|
|
2475
|
+
}], startDate: [{
|
|
2476
|
+
type: Input
|
|
2477
|
+
}], weekStart: [{
|
|
2478
|
+
type: Input
|
|
2479
|
+
}], dayCount: [{
|
|
2480
|
+
type: Input,
|
|
2481
|
+
args: [{ transform: numberAttribute }]
|
|
2482
|
+
}], menu: [{
|
|
2483
|
+
type: Input
|
|
2484
|
+
}], scheduleComponent: [{
|
|
2485
|
+
type: ViewChild,
|
|
2486
|
+
args: [ScheduleComponent]
|
|
2487
|
+
}], headerTemplate: [{
|
|
2488
|
+
type: ContentChild,
|
|
2489
|
+
args: [ResourceScheduleRowHeadingDirective]
|
|
2490
|
+
}] } });
|
|
2491
|
+
|
|
2251
2492
|
class SnackbarUtilService {
|
|
2252
2493
|
constructor() {
|
|
2253
2494
|
this.snackbar = inject(MatSnackBar);
|
|
@@ -2408,7 +2649,12 @@ class NrNgxComponentLibModule {
|
|
|
2408
2649
|
TabComponent,
|
|
2409
2650
|
TabLabelDirective,
|
|
2410
2651
|
TabContentDirective,
|
|
2411
|
-
LoadingStatusComponent
|
|
2652
|
+
LoadingStatusComponent,
|
|
2653
|
+
ScheduleComponent,
|
|
2654
|
+
ScheduleItemDirective,
|
|
2655
|
+
ScheduleRowHeadingDirective,
|
|
2656
|
+
ResourceScheduleComponent,
|
|
2657
|
+
ResourceScheduleRowHeadingDirective], imports: [BrowserAnimationsModule,
|
|
2412
2658
|
CommonModule,
|
|
2413
2659
|
FormsModule,
|
|
2414
2660
|
MatButtonModule,
|
|
@@ -2470,7 +2716,12 @@ class NrNgxComponentLibModule {
|
|
|
2470
2716
|
TabComponent,
|
|
2471
2717
|
TabLabelDirective,
|
|
2472
2718
|
TabContentDirective,
|
|
2473
|
-
LoadingStatusComponent
|
|
2719
|
+
LoadingStatusComponent,
|
|
2720
|
+
ScheduleComponent,
|
|
2721
|
+
ScheduleItemDirective,
|
|
2722
|
+
ScheduleRowHeadingDirective,
|
|
2723
|
+
ResourceScheduleComponent,
|
|
2724
|
+
ResourceScheduleRowHeadingDirective] }); }
|
|
2474
2725
|
static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NrNgxComponentLibModule, providers: [
|
|
2475
2726
|
SnackbarUtilService,
|
|
2476
2727
|
ConfigurationService,
|
|
@@ -2574,6 +2825,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2574
2825
|
TabLabelDirective,
|
|
2575
2826
|
TabContentDirective,
|
|
2576
2827
|
LoadingStatusComponent,
|
|
2828
|
+
ScheduleComponent,
|
|
2829
|
+
ScheduleItemDirective,
|
|
2830
|
+
ScheduleRowHeadingDirective,
|
|
2831
|
+
ResourceScheduleComponent,
|
|
2832
|
+
ResourceScheduleRowHeadingDirective,
|
|
2577
2833
|
],
|
|
2578
2834
|
exports: [
|
|
2579
2835
|
ButtonComponent,
|
|
@@ -2614,6 +2870,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2614
2870
|
TabLabelDirective,
|
|
2615
2871
|
TabContentDirective,
|
|
2616
2872
|
LoadingStatusComponent,
|
|
2873
|
+
ScheduleComponent,
|
|
2874
|
+
ScheduleItemDirective,
|
|
2875
|
+
ScheduleRowHeadingDirective,
|
|
2876
|
+
ResourceScheduleComponent,
|
|
2877
|
+
ResourceScheduleRowHeadingDirective,
|
|
2617
2878
|
],
|
|
2618
2879
|
providers: [
|
|
2619
2880
|
SnackbarUtilService,
|
|
@@ -2633,5 +2894,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
2633
2894
|
* Generated bundle index. Do not edit.
|
|
2634
2895
|
*/
|
|
2635
2896
|
|
|
2636
|
-
export { Aborted, ButtonComponent, CellContentComponent, CodeTable, ConfigurationService, ConfigurationSubscriberBase, DATE_FORMATS, DesktopViewDirective, DeviceViewComponent, DialogBase, DialogComponent, DialogConfirmComponent, DialogService, ExpansionPanelComponent, ExpansionPanelFooterComponent, ExpansionPanelHeaderComponent, ExpansionPanelSectionComponent, FilterContainerComponent, FilterDateComponent, FilterSearchComponent, FilterSelectComponent, FiltersPanelComponent, FormFieldComponent, FormLayoutComponent, GapComponent, IconComponent, IndicatorComponent, IndicatorSelectComponent, ListAttachmentsComponent, ListEventHistoryComponent, ListSelectComponent, LoadingStatusComponent, MobileViewDirective, NrNgxComponentLibModule, NrclBase, ObservableAborter, PageContainerComponent, PageHeaderComponent, PageStateService, RowListBase, RowListDesktopComponent, RowListMobileComponent, RowListPaginationComponent, RowListSortingComponent, SnackbarComponent, SnackbarUtilService, TabComponent, TabContentDirective, TabGroupComponent, TabLabelDirective, TagListComponent, mapToCodeDescription, unwrapFilterValue, wrapFilterValue };
|
|
2897
|
+
export { Aborted, ButtonComponent, CellContentComponent, CodeTable, ConfigurationService, ConfigurationSubscriberBase, DATE_FORMATS, DesktopViewDirective, DeviceViewComponent, DialogBase, DialogComponent, DialogConfirmComponent, DialogService, ExpansionPanelComponent, ExpansionPanelFooterComponent, ExpansionPanelHeaderComponent, ExpansionPanelSectionComponent, FilterContainerComponent, FilterDateComponent, FilterSearchComponent, FilterSelectComponent, FiltersPanelComponent, FormFieldComponent, FormLayoutComponent, GapComponent, IconComponent, IndicatorComponent, IndicatorSelectComponent, ListAttachmentsComponent, ListEventHistoryComponent, ListSelectComponent, LoadingStatusComponent, MobileViewDirective, NrNgxComponentLibModule, NrclBase, ObservableAborter, PageContainerComponent, PageHeaderComponent, PageStateService, PaginationBase, ResourceScheduleComponent, ResourceScheduleRowHeadingDirective, RowListBase, RowListDesktopComponent, RowListMobileComponent, RowListPaginationComponent, RowListSortingComponent, ScheduleComponent, ScheduleItemDirective, ScheduleRowHeadingDirective, SnackbarComponent, SnackbarUtilService, TabComponent, TabContentDirective, TabGroupComponent, TabLabelDirective, TagListComponent, mapToCodeDescription, unwrapFilterValue, wrapFilterValue };
|
|
2637
2898
|
//# sourceMappingURL=bcgov-nr-ngx-component-lib.mjs.map
|