ngx-techlify-core 18.90.0 → 18.91.0

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.
@@ -24,7 +24,7 @@ export function techlifyListContract(options) {
24
24
  it('should reload when filter changes', fakeAsync(() => {
25
25
  const component = options.getComponent();
26
26
  const filterField = options.filterField ?? 'search';
27
- if (!component.filterForm?.contains(filterField)) {
27
+ if (!component.filterForm?.get(filterField)) {
28
28
  pending(`Filter '${filterField}' does not exist.`);
29
29
  return;
30
30
  }
@@ -66,4 +66,4 @@ export function techlifyListContract(options) {
66
66
  });
67
67
  });
68
68
  }
69
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktbGlzdC5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvYmFzZS1tb2RlbC90ZWNobGlmeS1saXN0L2NvbnRyYWN0L3RlY2hsaWZ5LWxpc3QuY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFVMUUsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxPQUFvQztJQUVwQyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1FBQzVDLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7WUFDL0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBRSxTQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsU0FBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuQyxTQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUs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QUM7WUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDLENBQUMsQ0FBQztBQUVQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmYWtlQXN5bmMsIHRpY2ssIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgVGVjaGxpZnlMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vdGVjaGxpZnktbGlzdC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlY2hsaWZ5TGlzdENvbnRyYWN0T3B0aW9ucyB7XG4gICAgZ2V0Rml4dHVyZTogKCkgPT4gQ29tcG9uZW50Rml4dHVyZTxhbnk+O1xuICAgIGdldENvbXBvbmVudDogKCkgPT4gVGVjaGxpZnlMaXN0Q29tcG9uZW50O1xuICAgIGdldFNlcnZpY2U6ICgpID0+IGFueTtcbiAgICBmaWx0ZXJGaWVsZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlY2hsaWZ5TGlzdENvbnRyYWN0KFxuICAgIG9wdGlvbnM6IFRlY2hsaWZ5TGlzdENvbnRyYWN0T3B0aW9uc1xuKTogdm9pZCB7XG4gICAgZGVzY3JpYmUoJ1RlY2hsaWZ5TGlzdENvbXBvbmVudCBDb250cmFjdCcsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3VsZCBwYXNzIGEgc2VydmljZSB0byB0aGUgYmFzZSBjbGFzcycsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBleHBlY3QoKGNvbXBvbmVudCBhcyBhbnkpLnNlcnZpY2UpLnRvQmUob3B0aW9ucy5nZXRTZXJ2aWNlKCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYSBmaWx0ZXIgZm9ybScsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBleHBlY3QoY29tcG9uZW50LmZpbHRlckZvcm0pLnRvQmVUcnV0aHkoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBjYWxsIGxvYWREYXRhIG9uIGluaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBvcHRpb25zLmdldENvbXBvbmVudCgpO1xuICAgICAgICAgICAgc3B5T24oY29tcG9uZW50IGFzIGFueSwgJ2xvYWREYXRhJyk7XG4gICAgICAgICAgICAoY29tcG9uZW50IGFzIGFueSkubmdPbkluaXQoKTtcbiAgICAgICAgICAgIGV4cGVjdChjb21wb25lbnQubG9hZERhdGEpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBwYXRjaCBmaWx0ZXJzIGZyb20gcm91dGUgb24gaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBzcHlPbihjb21wb25lbnQgYXMgYW55LCAncGF0Y2hGaWx0ZXJzRnJvbVJvdXRlJyk7XG4gICAgICAgICAgICAoY29tcG9uZW50IGFzIGFueSkubmdPbkluaXQoKTtcbiAgICAgICAgICAgIGV4cGVjdChjb21wb25lbnQucGF0Y2hGaWx0ZXJzRnJvbVJvdXRlKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgcmVsb2FkIHdoZW4gZmlsdGVyIGNoYW5nZXMnLCBmYWtlQXN5bmMoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gb3B0aW9ucy5nZXRDb21wb25lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckZpZWxkID0gb3B0aW9ucy5maWx0ZXJGaWVsZCA/PyAnc2VhcmNoJztcbiAgICAgICAgICAgIGlmICghY29tcG9uZW50LmZpbHRlckZvcm0/LmNvbnRhaW5zKGZpbHRlckZpZWxkKSkge1xuICAgICAgICAgICAgICAgIHBlbmRpbmcoYEZpbHRlciAnJHtmaWx0ZXJGaWVsZH0nIGRvZXMgbm90IGV4aXN0LmApO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNweU9uKGNvbXBvbmVudCBhcyBhbnksICdyZWxvYWQnKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC5saXN0ZW5GaWx0ZXJDaGFuZ2VzKCk7XG4gICAgICAgICAgICBjb21wb25lbnQuZmlsdGVyRm9ybS5nZXQoZmlsdGVyRmllbGQpPy5zZXRWYWx1ZSgnYWJjJyk7XG4gICAgICAgICAgICB0aWNrKDUwMSk7XG4gICAgICAgICAgICBleHBlY3QoY29tcG9uZW50LnJlbG9hZCkudG9IYXZlQmVlbkNhbGxlZCgpO1xuXG4gICAgICAgIH0pKTtcblxuICAgICAgICBpdCgnc2hvdWxkIGxvYWQgbmV4dCBwYWdlIG9uIHNjcm9sbCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBjb21wb25lbnQucGFnZSA9IDE7XG4gICAgICAgICAgICBjb21wb25lbnQubGFzdFBhZ2UgPSAzO1xuICAgICAgICAgICAgY29tcG9uZW50LmlzV29ya2luZyA9IGZhbHNlO1xuICAgICAgICAgICAgc3B5T24oY29tcG9uZW50IGFzIGFueSwgJ2xvYWREYXRhJyk7XG4gICAgICAgICAgICBjb21wb25lbnQub25TY3JvbGwoKTtcbiAgICAgICAgICAgIGV4cGVjdChjb21wb25lbnQucGFnZSkudG9CZSgyKTtcbiAgICAgICAgICAgIGV4cGVjdChjb21wb25lbnQubG9hZERhdGEpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgbG9hZCBuZXh0IHBhZ2Ugd2hpbGUgYWxyZWFkeSBsb2FkaW5nJywgKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gb3B0aW9ucy5nZXRDb21wb25lbnQoKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC5wYWdlID0gMTtcbiAgICAgICAgICAgIGNvbXBvbmVudC5sYXN0UGFnZSA9IDM7XG4gICAgICAgICAgICBjb21wb25lbnQuaXNXb3JraW5nID0gdHJ1ZTtcbiAgICAgICAgICAgIHNweU9uKGNvbXBvbmVudCBhcyBhbnksICdsb2FkRGF0YScpO1xuICAgICAgICAgICAgY29tcG9uZW50Lm9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBleHBlY3QoY29tcG9uZW50LmxvYWREYXRhKS5ub3QudG9IYXZlQmVlbkNhbGxlZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIHVwZGF0ZSBzb3J0X2J5IGZpbHRlcicsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBjb25zdCBjb250cm9sID0gY29tcG9uZW50LmZpbHRlckZvcm0uZ2V0KCdzb3J0X2J5Jyk7XG4gICAgICAgICAgICBpZiAoIWNvbnRyb2wpIHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nKCdObyBzb3J0X2J5IGNvbnRyb2wuJyk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc3B5T24oY29udHJvbCwgJ3NldFZhbHVlJyk7XG4gICAgICAgICAgICBjb21wb25lbnQuc29ydENvbHVtbih7IGFjdGl2ZTogJ25hbWUnLCBkaXJlY3Rpb246ICdhc2MnIH0pO1xuICAgICAgICAgICAgZXhwZWN0KGNvbnRyb2wuc2V0VmFsdWUpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKCduYW1lfEFTQycpO1xuICAgICAgICB9KTtcblxuICAgIH0pO1xuXG59Il19
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGVjaGxpZnktbGlzdC5jb250cmFjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvYmFzZS1tb2RlbC90ZWNobGlmeS1saXN0L2NvbnRyYWN0L3RlY2hsaWZ5LWxpc3QuY29udHJhY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQW9CLE1BQU0sdUJBQXVCLENBQUM7QUFVMUUsTUFBTSxVQUFVLG9CQUFvQixDQUNoQyxPQUFvQztJQUVwQyxRQUFRLENBQUMsZ0NBQWdDLEVBQUUsR0FBRyxFQUFFO1FBQzVDLEVBQUUsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7WUFDL0MsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBRSxTQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQywyQkFBMkIsRUFBRSxHQUFHLEVBQUU7WUFDakMsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3pDLE1BQU0sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUM7UUFDOUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxFQUFFLENBQUMsOEJBQThCLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUN6QyxLQUFLLENBQUMsU0FBZ0IsRUFBRSxVQUFVLENBQUMsQ0FBQztZQUNuQyxTQUFpQixDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzlCLE1BQU0sQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUs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QUM7WUFDRCxLQUFLLENBQUMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBQzNCLFNBQVMsQ0FBQyxVQUFVLENBQUMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1lBQzNELE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDOUQsQ0FBQyxDQUFDLENBQUM7SUFFUCxDQUFDLENBQUMsQ0FBQztBQUVQLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmYWtlQXN5bmMsIHRpY2ssIENvbXBvbmVudEZpeHR1cmUgfSBmcm9tICdAYW5ndWxhci9jb3JlL3Rlc3RpbmcnO1xuaW1wb3J0IHsgVGVjaGxpZnlMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vdGVjaGxpZnktbGlzdC5jb21wb25lbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRlY2hsaWZ5TGlzdENvbnRyYWN0T3B0aW9ucyB7XG4gICAgZ2V0Rml4dHVyZTogKCkgPT4gQ29tcG9uZW50Rml4dHVyZTxhbnk+O1xuICAgIGdldENvbXBvbmVudDogKCkgPT4gVGVjaGxpZnlMaXN0Q29tcG9uZW50O1xuICAgIGdldFNlcnZpY2U6ICgpID0+IGFueTtcbiAgICBmaWx0ZXJGaWVsZD86IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlY2hsaWZ5TGlzdENvbnRyYWN0KFxuICAgIG9wdGlvbnM6IFRlY2hsaWZ5TGlzdENvbnRyYWN0T3B0aW9uc1xuKTogdm9pZCB7XG4gICAgZGVzY3JpYmUoJ1RlY2hsaWZ5TGlzdENvbXBvbmVudCBDb250cmFjdCcsICgpID0+IHtcbiAgICAgICAgaXQoJ3Nob3VsZCBwYXNzIGEgc2VydmljZSB0byB0aGUgYmFzZSBjbGFzcycsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBleHBlY3QoKGNvbXBvbmVudCBhcyBhbnkpLnNlcnZpY2UpLnRvQmUob3B0aW9ucy5nZXRTZXJ2aWNlKCkpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYSBmaWx0ZXIgZm9ybScsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBleHBlY3QoY29tcG9uZW50LmZpbHRlckZvcm0pLnRvQmVUcnV0aHkoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBjYWxsIGxvYWREYXRhIG9uIGluaXQnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBvcHRpb25zLmdldENvbXBvbmVudCgpO1xuICAgICAgICAgICAgc3B5T24oY29tcG9uZW50IGFzIGFueSwgJ2xvYWREYXRhJyk7XG4gICAgICAgICAgICAoY29tcG9uZW50IGFzIGFueSkubmdPbkluaXQoKTtcbiAgICAgICAgICAgIGV4cGVjdChjb21wb25lbnQubG9hZERhdGEpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBwYXRjaCBmaWx0ZXJzIGZyb20gcm91dGUgb24gaW5pdCcsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBzcHlPbihjb21wb25lbnQgYXMgYW55LCAncGF0Y2hGaWx0ZXJzRnJvbVJvdXRlJyk7XG4gICAgICAgICAgICAoY29tcG9uZW50IGFzIGFueSkubmdPbkluaXQoKTtcbiAgICAgICAgICAgIGV4cGVjdChjb21wb25lbnQucGF0Y2hGaWx0ZXJzRnJvbVJvdXRlKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgcmVsb2FkIHdoZW4gZmlsdGVyIGNoYW5nZXMnLCBmYWtlQXN5bmMoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29tcG9uZW50ID0gb3B0aW9ucy5nZXRDb21wb25lbnQoKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbHRlckZpZWxkID0gb3B0aW9ucy5maWx0ZXJGaWVsZCA/PyAnc2VhcmNoJztcbiAgICAgICAgICAgIGlmICghY29tcG9uZW50LmZpbHRlckZvcm0/LmdldChmaWx0ZXJGaWVsZCkpIHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nKGBGaWx0ZXIgJyR7ZmlsdGVyRmllbGR9JyBkb2VzIG5vdCBleGlzdC5gKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzcHlPbihjb21wb25lbnQgYXMgYW55LCAncmVsb2FkJyk7XG4gICAgICAgICAgICBjb21wb25lbnQubGlzdGVuRmlsdGVyQ2hhbmdlcygpO1xuICAgICAgICAgICAgY29tcG9uZW50LmZpbHRlckZvcm0uZ2V0KGZpbHRlckZpZWxkKT8uc2V0VmFsdWUoJ2FiYycpO1xuICAgICAgICAgICAgdGljayg1MDEpO1xuICAgICAgICAgICAgZXhwZWN0KGNvbXBvbmVudC5yZWxvYWQpLnRvSGF2ZUJlZW5DYWxsZWQoKTtcblxuICAgICAgICB9KSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBsb2FkIG5leHQgcGFnZSBvbiBzY3JvbGwnLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBvcHRpb25zLmdldENvbXBvbmVudCgpO1xuICAgICAgICAgICAgY29tcG9uZW50LnBhZ2UgPSAxO1xuICAgICAgICAgICAgY29tcG9uZW50Lmxhc3RQYWdlID0gMztcbiAgICAgICAgICAgIGNvbXBvbmVudC5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgIHNweU9uKGNvbXBvbmVudCBhcyBhbnksICdsb2FkRGF0YScpO1xuICAgICAgICAgICAgY29tcG9uZW50Lm9uU2Nyb2xsKCk7XG4gICAgICAgICAgICBleHBlY3QoY29tcG9uZW50LnBhZ2UpLnRvQmUoMik7XG4gICAgICAgICAgICBleHBlY3QoY29tcG9uZW50LmxvYWREYXRhKS50b0hhdmVCZWVuQ2FsbGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgbm90IGxvYWQgbmV4dCBwYWdlIHdoaWxlIGFscmVhZHkgbG9hZGluZycsICgpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNvbXBvbmVudCA9IG9wdGlvbnMuZ2V0Q29tcG9uZW50KCk7XG4gICAgICAgICAgICBjb21wb25lbnQucGFnZSA9IDE7XG4gICAgICAgICAgICBjb21wb25lbnQubGFzdFBhZ2UgPSAzO1xuICAgICAgICAgICAgY29tcG9uZW50LmlzV29ya2luZyA9IHRydWU7XG4gICAgICAgICAgICBzcHlPbihjb21wb25lbnQgYXMgYW55LCAnbG9hZERhdGEnKTtcbiAgICAgICAgICAgIGNvbXBvbmVudC5vblNjcm9sbCgpO1xuICAgICAgICAgICAgZXhwZWN0KGNvbXBvbmVudC5sb2FkRGF0YSkubm90LnRvSGF2ZUJlZW5DYWxsZWQoKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCB1cGRhdGUgc29ydF9ieSBmaWx0ZXInLCAoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb21wb25lbnQgPSBvcHRpb25zLmdldENvbXBvbmVudCgpO1xuICAgICAgICAgICAgY29uc3QgY29udHJvbCA9IGNvbXBvbmVudC5maWx0ZXJGb3JtLmdldCgnc29ydF9ieScpO1xuICAgICAgICAgICAgaWYgKCFjb250cm9sKSB7XG4gICAgICAgICAgICAgICAgcGVuZGluZygnTm8gc29ydF9ieSBjb250cm9sLicpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNweU9uKGNvbnRyb2wsICdzZXRWYWx1ZScpO1xuICAgICAgICAgICAgY29tcG9uZW50LnNvcnRDb2x1bW4oeyBhY3RpdmU6ICduYW1lJywgZGlyZWN0aW9uOiAnYXNjJyB9KTtcbiAgICAgICAgICAgIGV4cGVjdChjb250cm9sLnNldFZhbHVlKS50b0hhdmVCZWVuQ2FsbGVkV2l0aCgnbmFtZXxBU0MnKTtcbiAgICAgICAgfSk7XG5cbiAgICB9KTtcblxufSJdfQ==
@@ -9,15 +9,15 @@ export class LockedDateLockUnlockButtonComponent {
9
9
  }
10
10
  lock() {
11
11
  this.lockedDateService.lock(this.lockedDate).subscribe({
12
- next: () => {
13
- this.onSave.emit();
12
+ next: (response) => {
13
+ this.onSave.emit(response.item);
14
14
  }
15
15
  });
16
16
  }
17
17
  unlock() {
18
18
  this.lockedDateService.unlock(this.lockedDate).subscribe({
19
- next: () => {
20
- this.onSave.emit();
19
+ next: (response) => {
20
+ this.onSave.emit(response.item);
21
21
  }
22
22
  });
23
23
  }
@@ -32,4 +32,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
32
32
  }], onSave: [{
33
33
  type: Output
34
34
  }] } });
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvbG9ja2VkLWRhdGUvbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uL2xvY2tlZC1kYXRlLWxvY2stdW5sb2NrLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvY2tlZC1kYXRlL2xvY2tlZC1kYXRlLWxvY2stdW5sb2NrLWJ1dHRvbi9sb2NrZWQtZGF0ZS1sb2NrLXVubG9jay1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU92RSxNQUFNLE9BQU8sbUNBQW1DO0lBSzlDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRjlDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWlCLENBQUM7SUFFN0QsSUFBSTtRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsR0FBRyxFQUFFO2dCQUNULElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDckIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNO1FBQ0osSUFBSSxDQUFDLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQ3ZELElBQUksRUFBRSxHQUFHLEVBQUU7Z0JBQ1QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNyQixDQUFDO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzsrR0FyQlUsbUNBQW1DO21HQUFuQyxtQ0FBbUMsK0lDUGhELDJUQU9BOzs0RkRBYSxtQ0FBbUM7a0JBSi9DLFNBQVM7K0JBQ0Usb0NBQW9DO3NGQUtyQyxVQUFVO3NCQUFsQixLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBMb2NrZWREYXRlU2VydmljZSB9IGZyb20gJy4uL2xvY2tlZC1kYXRlLnNlcnZpY2UnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhcHAtbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2tlZC1kYXRlLWxvY2stdW5sb2NrLWJ1dHRvbi5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTG9ja2VkRGF0ZUxvY2tVbmxvY2tCdXR0b25Db21wb25lbnQge1xuXG4gIEBJbnB1dCgpIGxvY2tlZERhdGU6IGFueTtcbiAgQE91dHB1dCgpIG9uU2F2ZSA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgbG9ja2VkRGF0ZVNlcnZpY2U6IExvY2tlZERhdGVTZXJ2aWNlKSB7IH1cblxuICBsb2NrKCkge1xuICAgIHRoaXMubG9ja2VkRGF0ZVNlcnZpY2UubG9jayh0aGlzLmxvY2tlZERhdGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIHVubG9jaygpIHtcbiAgICB0aGlzLmxvY2tlZERhdGVTZXJ2aWNlLnVubG9jayh0aGlzLmxvY2tlZERhdGUpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAoKSA9PiB7XG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPHNwYW4gcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIiAqbmdJZj1cImxvY2tlZERhdGU/LnN0YXR1c19pZCA9PSAyXCIgKGNsaWNrKT1cImxvY2soKVwiPlxuICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2tcIj48L2k+XG48L3NwYW4+XG5cbjxzcGFuIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCIgKm5nSWY9XCJsb2NrZWREYXRlPy5zdGF0dXNfaWQgPT0gMVwiIChjbGljayk9XCJ1bmxvY2soKVwiPlxuICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2stb3BlblwiPjwvaT5cbjwvc3Bhbj5cbiJdfQ==
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25neC10ZWNobGlmeS1jb3JlL3NyYy9saWIvbG9ja2VkLWRhdGUvbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uL2xvY2tlZC1kYXRlLWxvY2stdW5sb2NrLWJ1dHRvbi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvY2tlZC1kYXRlL2xvY2tlZC1kYXRlLWxvY2stdW5sb2NrLWJ1dHRvbi9sb2NrZWQtZGF0ZS1sb2NrLXVubG9jay1idXR0b24uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7OztBQU92RSxNQUFNLE9BQU8sbUNBQW1DO0lBSzlDLFlBQW9CLGlCQUFvQztRQUFwQyxzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBRjlDLFdBQU0sR0FBRyxJQUFJLFlBQVksRUFBTyxDQUFDO0lBRWlCLENBQUM7SUFFN0QsSUFBSTtRQUNGLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNyRCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTTtRQUNKLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUN2RCxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2xDLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDOytHQXJCVSxtQ0FBbUM7bUdBQW5DLG1DQUFtQywrSUNQaEQsMlRBT0E7OzRGREFhLG1DQUFtQztrQkFKL0MsU0FBUzsrQkFDRSxvQ0FBb0M7c0ZBS3JDLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IExvY2tlZERhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vbG9ja2VkLWRhdGUuc2VydmljZSc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2NrZWQtZGF0ZS1sb2NrLXVubG9jay1idXR0b24nLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uLmNvbXBvbmVudC5odG1sJ1xufSlcbmV4cG9ydCBjbGFzcyBMb2NrZWREYXRlTG9ja1VubG9ja0J1dHRvbkNvbXBvbmVudCB7XG5cbiAgQElucHV0KCkgbG9ja2VkRGF0ZTogYW55O1xuICBAT3V0cHV0KCkgb25TYXZlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSBsb2NrZWREYXRlU2VydmljZTogTG9ja2VkRGF0ZVNlcnZpY2UpIHsgfVxuXG4gIGxvY2soKSB7XG4gICAgdGhpcy5sb2NrZWREYXRlU2VydmljZS5sb2NrKHRoaXMubG9ja2VkRGF0ZSkuc3Vic2NyaWJlKHtcbiAgICAgIG5leHQ6IChyZXNwb25zZTogYW55KSA9PiB7XG4gICAgICAgIHRoaXMub25TYXZlLmVtaXQocmVzcG9uc2UuaXRlbSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1bmxvY2soKSB7XG4gICAgdGhpcy5sb2NrZWREYXRlU2VydmljZS51bmxvY2sodGhpcy5sb2NrZWREYXRlKS5zdWJzY3JpYmUoe1xuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcbiAgICAgICAgdGhpcy5vblNhdmUuZW1pdChyZXNwb25zZS5pdGVtKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPHNwYW4gcm9sZT1cImJ1dHRvblwiIGNsYXNzPVwidGV4dC1zZWNvbmRhcnlcIiAqbmdJZj1cImxvY2tlZERhdGU/LnN0YXR1c19pZCA9PSAyXCIgKGNsaWNrKT1cImxvY2soKVwiPlxuICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2tcIj48L2k+XG48L3NwYW4+XG5cbjxzcGFuIHJvbGU9XCJidXR0b25cIiBjbGFzcz1cInRleHQtc2Vjb25kYXJ5XCIgKm5nSWY9XCJsb2NrZWREYXRlPy5zdGF0dXNfaWQgPT0gMVwiIChjbGljayk9XCJ1bmxvY2soKVwiPlxuICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2stb3BlblwiPjwvaT5cbjwvc3Bhbj5cbiJdfQ==
@@ -1,26 +1,28 @@
1
1
  import { Component, signal } from '@angular/core';
2
2
  import { TechlifyListComponent } from '../../base-model';
3
- import { DatePipe } from '@angular/common';
4
3
  import { LockedDateFormComponent } from '../locked-date-form/locked-date-form.component';
5
4
  import * as i0 from "@angular/core";
6
5
  import * as i1 from "../locked-date.service";
7
6
  import * as i2 from "@angular/forms";
8
- import * as i3 from "@angular/common";
9
- import * as i4 from "ngx-infinite-scroll";
10
- import * as i5 from "@angular/material/sort";
11
- import * as i6 from "@angular/material/table";
12
- import * as i7 from "@angular/material/card";
13
- import * as i8 from "../../delete-button/techlify-delete-button.component";
14
- import * as i9 from "../../timeline-filter/timeline-filter.component";
15
- import * as i10 from "../../form-button/techlify-form-button.component";
16
- import * as i11 from "../locked-date-lock-unlock-button/locked-date-lock-unlock-button.component";
7
+ import * as i3 from "../../user-config/user-config.service";
8
+ import * as i4 from "@angular/common";
9
+ import * as i5 from "ngx-infinite-scroll";
10
+ import * as i6 from "@angular/material/sort";
11
+ import * as i7 from "@angular/material/table";
12
+ import * as i8 from "@angular/material/card";
13
+ import * as i9 from "@angular/material/tooltip";
14
+ import * as i10 from "../../delete-button/techlify-delete-button.component";
15
+ import * as i11 from "../../timeline-filter/timeline-filter.component";
16
+ import * as i12 from "../../form-button/techlify-form-button.component";
17
+ import * as i13 from "../locked-date-lock-unlock-button/locked-date-lock-unlock-button.component";
17
18
  export class LockedDateListComponent extends TechlifyListComponent {
18
- constructor(service, fb, datePipe) {
19
- super();
19
+ constructor(service, fb, userConfigService) {
20
+ super(service);
20
21
  this.service = service;
21
22
  this.fb = fb;
22
- this.datePipe = datePipe;
23
+ this.userConfigService = userConfigService;
23
24
  this.formComponent = signal(LockedDateFormComponent);
25
+ this.scrollContainer = '.mat-sidenav-content';
24
26
  this.displayedColumns = [
25
27
  'index',
26
28
  'date',
@@ -29,6 +31,16 @@ export class LockedDateListComponent extends TechlifyListComponent {
29
31
  'locked_by',
30
32
  'actions'
31
33
  ];
34
+ const config = this.userConfigService.getConfig();
35
+ if (config?.scrollContainer) {
36
+ this.scrollContainer = config.scrollContainer === 'root'
37
+ ? null
38
+ : config.scrollContainer;
39
+ }
40
+ this.filterFormConfiguration = {
41
+ date_from: { date: true },
42
+ date_to: { date: true },
43
+ };
32
44
  this.filterForm = this.fb.group({
33
45
  date_from: [''],
34
46
  date_to: [''],
@@ -36,32 +48,15 @@ export class LockedDateListComponent extends TechlifyListComponent {
36
48
  });
37
49
  }
38
50
  ngOnInit() {
51
+ this.patchFiltersFromRoute();
39
52
  this.listenFilterChanges();
40
53
  this.loadData();
41
54
  }
42
- loadData() {
43
- this.isWorking = true;
44
- let filters = this.filterForm.value;
45
- filters.page = this.page;
46
- filters.date_from = filters.date_from
47
- ? this.datePipe.transform(filters.date_from, 'yyyy-MM-dd')
48
- : '';
49
- filters.date_to = filters.date_to
50
- ? this.datePipe.transform(filters.date_to, 'yyyy-MM-dd')
51
- : '';
52
- this.service.index(filters).subscribe({
53
- next: (response) => {
54
- this.models = this.models.concat(response.data);
55
- this.lastPage = response.last_page;
56
- this.isWorking = false;
57
- }
58
- });
59
- }
60
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateListComponent, deps: [{ token: i1.LockedDateService }, { token: i2.FormBuilder }, { token: i3.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
61
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LockedDateListComponent, selector: "app-locked-date-list", providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [scrollWindow]=\"false\"\n [infiniteScrollContainer]=\"'.mat-sidenav-content'\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.date | date: 'longDate'}}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='reload()'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i5.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i5.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i6.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i6.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i6.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i6.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i6.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i6.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i6.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i6.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i6.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i6.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i6.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i6.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i7.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i7.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i8.TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: i9.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "component", type: i10.TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "component", type: i11.LockedDateLockUnlockButtonComponent, selector: "app-locked-date-lock-unlock-button", inputs: ["lockedDate"], outputs: ["onSave"] }, { kind: "pipe", type: i3.DatePipe, name: "date" }] }); }
55
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateListComponent, deps: [{ token: i1.LockedDateService }, { token: i2.FormBuilder }, { token: i3.UserConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
56
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LockedDateListComponent, selector: "app-locked-date-list", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [infiniteScrollContainer]=\"scrollContainer\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <span>{{element?.date | date: 'longDate'}}</span>\n <span>\n <i class=\"fa-solid fa-lock text-danger\" *ngIf=\"element?.status_id == 1\" matTooltip=\"Locked\"></i>\n <i class=\"fa-solid fa-lock-open text-success\" *ngIf=\"element?.status_id == 2\" matTooltip=\"Unlocked\"></i>\n </span>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='modelsUpdatedById($event)'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i5.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i6.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i6.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i7.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i7.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i7.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i7.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i7.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i7.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i7.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i7.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i7.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i7.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i7.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i7.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i8.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i8.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i9.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i10.TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: i11.TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "component", type: i12.TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "component", type: i13.LockedDateLockUnlockButtonComponent, selector: "app-locked-date-lock-unlock-button", inputs: ["lockedDate"], outputs: ["onSave"] }, { kind: "pipe", type: i4.DatePipe, name: "date" }] }); }
62
57
  }
63
58
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateListComponent, decorators: [{
64
59
  type: Component,
65
- args: [{ selector: 'app-locked-date-list', providers: [DatePipe], template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [scrollWindow]=\"false\"\n [infiniteScrollContainer]=\"'.mat-sidenav-content'\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.date | date: 'longDate'}}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='reload()'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>" }]
66
- }], ctorParameters: () => [{ type: i1.LockedDateService }, { type: i2.FormBuilder }, { type: i3.DatePipe }] });
67
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2VkLWRhdGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvY2tlZC1kYXRlL2xvY2tlZC1kYXRlcy1saXN0L2xvY2tlZC1kYXRlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9sb2NrZWQtZGF0ZS9sb2NrZWQtZGF0ZXMtbGlzdC9sb2NrZWQtZGF0ZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMzQyxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxnREFBZ0QsQ0FBQzs7Ozs7Ozs7Ozs7OztBQU96RixNQUFNLE9BQU8sdUJBQXdCLFNBQVEscUJBQXFCO0lBYWhFLFlBQStCLE9BQTBCLEVBQy9DLEVBQWUsRUFDZixRQUFrQjtRQUUxQixLQUFLLEVBQUUsQ0FBQztRQUpxQixZQUFPLEdBQVAsT0FBTyxDQUFtQjtRQUMvQyxPQUFFLEdBQUYsRUFBRSxDQUFhO1FBQ2YsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWI1QixrQkFBYSxHQUFHLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBRWhELHFCQUFnQixHQUFhO1lBQzNCLE9BQU87WUFDUCxNQUFNO1lBQ04sU0FBUztZQUNULFdBQVc7WUFDWCxXQUFXO1lBQ1gsU0FBUztTQUNWLENBQUM7UUFRQSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDO1lBQzlCLFNBQVMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNmLE9BQU8sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUNiLE9BQU8sRUFBRSxDQUFDLFdBQVcsQ0FBQztTQUN2QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsUUFBUTtRQUNOLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBQzNCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNsQixDQUFDO0lBRVEsUUFBUTtRQUNmLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBRXRCLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQ3BDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztRQUN6QixPQUFPLENBQUMsU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTO1lBQ25DLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQztZQUMxRCxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ1AsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztZQUMvQixDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUM7WUFDeEQsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUNwQyxJQUFJLEVBQUUsQ0FBQyxRQUFhLEVBQUUsRUFBRTtnQkFDdEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ2hELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDLFNBQVMsQ0FBQztnQkFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7WUFDekIsQ0FBQztTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7K0dBbERVLHVCQUF1QjttR0FBdkIsdUJBQXVCLCtDQUZ2QixDQUFDLFFBQVEsQ0FBQyxpRENWdkIseWlIQThFTTs7NEZEbEVPLHVCQUF1QjtrQkFMbkMsU0FBUzsrQkFDRSxzQkFBc0IsYUFFckIsQ0FBQyxRQUFRLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIE9uSW5pdCwgc2lnbmFsIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBUZWNobGlmeUxpc3RDb21wb25lbnQgfSBmcm9tICcuLi8uLi9iYXNlLW1vZGVsJztcbmltcG9ydCB7IExvY2tlZERhdGVTZXJ2aWNlIH0gZnJvbSAnLi4vbG9ja2VkLWRhdGUuc2VydmljZSc7XG5pbXBvcnQgeyBGb3JtQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IERhdGVQaXBlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IExvY2tlZERhdGVGb3JtQ29tcG9uZW50IH0gZnJvbSAnLi4vbG9ja2VkLWRhdGUtZm9ybS9sb2NrZWQtZGF0ZS1mb3JtLmNvbXBvbmVudCc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2FwcC1sb2NrZWQtZGF0ZS1saXN0JyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvY2tlZC1kYXRlLWxpc3QuY29tcG9uZW50Lmh0bWwnLFxuICBwcm92aWRlcnM6IFtEYXRlUGlwZV1cbn0pXG5leHBvcnQgY2xhc3MgTG9ja2VkRGF0ZUxpc3RDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuXG4gIGZvcm1Db21wb25lbnQgPSBzaWduYWwoTG9ja2VkRGF0ZUZvcm1Db21wb25lbnQpO1xuXG4gIGRpc3BsYXllZENvbHVtbnM6IHN0cmluZ1tdID0gW1xuICAgICdpbmRleCcsXG4gICAgJ2RhdGUnLFxuICAgICdkZXRhaWxzJyxcbiAgICAnbG9ja2VkX29uJyxcbiAgICAnbG9ja2VkX2J5JyxcbiAgICAnYWN0aW9ucydcbiAgXTtcblxuICBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgb3ZlcnJpZGUgc2VydmljZTogTG9ja2VkRGF0ZVNlcnZpY2UsXG4gICAgcHJpdmF0ZSBmYjogRm9ybUJ1aWxkZXIsXG4gICAgcHJpdmF0ZSBkYXRlUGlwZTogRGF0ZVBpcGVcbiAgKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZGF0ZV9mcm9tOiBbJyddLFxuICAgICAgZGF0ZV90bzogWycnXSxcbiAgICAgIHNvcnRfYnk6IFsnZGF0ZXxERVNDJ10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLmxpc3RlbkZpbHRlckNoYW5nZXMoKTtcbiAgICB0aGlzLmxvYWREYXRhKCk7XG4gIH1cblxuICBvdmVycmlkZSBsb2FkRGF0YSgpIHtcbiAgICB0aGlzLmlzV29ya2luZyA9IHRydWU7XG5cbiAgICBsZXQgZmlsdGVycyA9IHRoaXMuZmlsdGVyRm9ybS52YWx1ZTtcbiAgICBmaWx0ZXJzLnBhZ2UgPSB0aGlzLnBhZ2U7XG4gICAgZmlsdGVycy5kYXRlX2Zyb20gPSBmaWx0ZXJzLmRhdGVfZnJvbVxuICAgICAgPyB0aGlzLmRhdGVQaXBlLnRyYW5zZm9ybShmaWx0ZXJzLmRhdGVfZnJvbSwgJ3l5eXktTU0tZGQnKVxuICAgICAgOiAnJztcbiAgICBmaWx0ZXJzLmRhdGVfdG8gPSBmaWx0ZXJzLmRhdGVfdG9cbiAgICAgID8gdGhpcy5kYXRlUGlwZS50cmFuc2Zvcm0oZmlsdGVycy5kYXRlX3RvLCAneXl5eS1NTS1kZCcpXG4gICAgICA6ICcnO1xuXG4gICAgdGhpcy5zZXJ2aWNlLmluZGV4KGZpbHRlcnMpLnN1YnNjcmliZSh7XG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xuICAgICAgICB0aGlzLm1vZGVscyA9IHRoaXMubW9kZWxzLmNvbmNhdChyZXNwb25zZS5kYXRhKTtcbiAgICAgICAgdGhpcy5sYXN0UGFnZSA9IHJlc3BvbnNlLmxhc3RfcGFnZTtcbiAgICAgICAgdGhpcy5pc1dvcmtpbmcgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxuICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJkLXByaW50LW5vbmVcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxoNSBjbGFzcz1cIm1iLTBcIj5Mb2NrZWQgRGF0ZXM8L2g1PlxuICAgICAgICA8YXBwLXRlY2hsaWZ5LWZvcm0tYnV0dG9uIFtjb21wb25lbnRdPVwiZm9ybUNvbXBvbmVudCgpXCJcbiAgICAgICAgICAoc2F2ZWQpPVwibW9kZWxDcmVhdGVkKCRldmVudClcIj48L2FwcC10ZWNobGlmeS1mb3JtLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiBjbGFzcz0nZC1mbGV4IGZsZXgtcm93IGdhcC0yJz5cbiAgICAgICAgPGFwcC10aW1lbGluZS1maWx0ZXIgbGFiZWxUZXh0PVwiUGVyaW9kXCIgW2Zvcm1dPSdmaWx0ZXJGb3JtJz48L2FwcC10aW1lbGluZS1maWx0ZXI+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuXG4gIDxtYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDx0YWJsZSBjbGFzcz0ndy0xMDAnIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtb2RlbHNcIiBtYXRTb3J0IG11bHRpVGVtcGxhdGVEYXRhUm93cyBpbmZpbml0ZVNjcm9sbFxuICAgICAgICBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIxXCIgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIiAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiIFtzY3JvbGxXaW5kb3ddPVwiZmFsc2VcIlxuICAgICAgICBbaW5maW5pdGVTY3JvbGxDb250YWluZXJdPVwiJy5tYXQtc2lkZW5hdi1jb250ZW50J1wiIFtmcm9tUm9vdF09XCJ0cnVlXCIgKG1hdFNvcnRDaGFuZ2UpPVwic29ydENvbHVtbigkZXZlbnQpXCI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJpbmRleFwiPlxuICAgICAgICAgIDx0aCBtYXQtaGVhZGVyLWNlbGwgKm1hdEhlYWRlckNlbGxEZWY+ICMgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudDsgbGV0IGkgPSBkYXRhSW5kZXhcIj4ge3sgaSsxIH19IDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRhdGVcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmIG1hdC1zb3J0LWhlYWRlcj4gRGF0ZSA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICB7e2VsZW1lbnQ/LmRhdGUgfCBkYXRlOiAnbG9uZ0RhdGUnfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsb2NrZWRfb25cIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBMb2NrZWQgT24gPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uY3JlYXRlZF9hdCB8IGRhdGU6J21lZGl1bScgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsb2NrZWRfYnlcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBMb2NrZWQgQnkgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uY3JlYXRvcj8ubmFtZSB9fVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRldGFpbHNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBEZXRhaWxzIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIHt7IGVsZW1lbnQ/LmRldGFpbHMgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gQWN0aW9ucyA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGdhcC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgIDxhcHAtbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uIFtsb2NrZWREYXRlXT0nZWxlbWVudCdcbiAgICAgICAgICAgICAgICAob25TYXZlKT0ncmVsb2FkKCknPjwvYXBwLWxvY2tlZC1kYXRlLWxvY2stdW5sb2NrLWJ1dHRvbj5cbiAgICAgICAgICAgICAgPGFwcC10ZWNobGlmeS1kZWxldGUtYnV0dG9uIFtzZXJ2aWNlXT1cInNlcnZpY2VcIiBbbW9kZWxdPVwiZWxlbWVudFwiXG4gICAgICAgICAgICAgICAgW2RhdGFdPVwie3R5cGU6ICdMb2NrZWQgRGF0ZScsIHRpdGxlOiBlbGVtZW50Py5kYXRlIHwgZGF0ZTonbG9uZ0RhdGUnfVwiXG4gICAgICAgICAgICAgICAgKGRlbGV0ZWQpPVwibW9kZWxzRGVsZXRlZEJ5SWQoJGV2ZW50KVwiPjwvYXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPHRyIG1hdC1oZWFkZXItcm93ICptYXRIZWFkZXJSb3dEZWY9XCJkaXNwbGF5ZWRDb2x1bW5zOyBzdGlja3k6IHRydWVcIj48L3RyPlxuICAgICAgICA8dHIgbWF0LXJvdyAqbWF0Um93RGVmPVwibGV0IHJvdzsgY29sdW1uczogZGlzcGxheWVkQ29sdW1ucztcIj48L3RyPlxuICAgICAgPC90YWJsZT5cbiAgICA8L21hdC1jYXJkLWNvbnRlbnQ+XG4gIDwvbWF0LWNhcmQ+XG48L2Rpdj4iXX0=
60
+ args: [{ selector: 'app-locked-date-list', template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [infiniteScrollContainer]=\"scrollContainer\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <span>{{element?.date | date: 'longDate'}}</span>\n <span>\n <i class=\"fa-solid fa-lock text-danger\" *ngIf=\"element?.status_id == 1\" matTooltip=\"Locked\"></i>\n <i class=\"fa-solid fa-lock-open text-success\" *ngIf=\"element?.status_id == 2\" matTooltip=\"Unlocked\"></i>\n </span>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='modelsUpdatedById($event)'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>" }]
61
+ }], ctorParameters: () => [{ type: i1.LockedDateService }, { type: i2.FormBuilder }, { type: i3.UserConfigService }] });
62
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9ja2VkLWRhdGUtbGlzdC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZ3gtdGVjaGxpZnktY29yZS9zcmMvbGliL2xvY2tlZC1kYXRlL2xvY2tlZC1kYXRlcy1saXN0L2xvY2tlZC1kYXRlLWxpc3QuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmd4LXRlY2hsaWZ5LWNvcmUvc3JjL2xpYi9sb2NrZWQtZGF0ZS9sb2NrZWQtZGF0ZXMtbGlzdC9sb2NrZWQtZGF0ZS1saXN0LmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQVUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQzFELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBR3pELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLGdEQUFnRCxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7QUFPekYsTUFBTSxPQUFPLHVCQUF3QixTQUFRLHFCQUFxQjtJQWFoRSxZQUErQixPQUEwQixFQUMvQyxFQUFlLEVBQ2YsaUJBQW9DO1FBRTVDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUpjLFlBQU8sR0FBUCxPQUFPLENBQW1CO1FBQy9DLE9BQUUsR0FBRixFQUFFLENBQWE7UUFDZixzQkFBaUIsR0FBakIsaUJBQWlCLENBQW1CO1FBZDlDLGtCQUFhLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7UUFDaEQsb0JBQWUsR0FBRyxzQkFBc0IsQ0FBQztRQUV6QyxxQkFBZ0IsR0FBYTtZQUMzQixPQUFPO1lBQ1AsTUFBTTtZQUNOLFNBQVM7WUFDVCxXQUFXO1lBQ1gsV0FBVztZQUNYLFNBQVM7U0FDVixDQUFDO1FBUUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ2xELElBQUksTUFBTSxFQUFFLGVBQWUsRUFBRSxDQUFDO1lBQzVCLElBQUksQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsS0FBSyxNQUFNO2dCQUN0RCxDQUFDLENBQUMsSUFBSTtnQkFDTixDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxDQUFDLHVCQUF1QixHQUFHO1lBQzdCLFNBQVMsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUU7WUFDekIsT0FBTyxFQUFFLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRTtTQUN4QixDQUFDO1FBQ0YsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQztZQUM5QixTQUFTLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDZixPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUM7WUFDYixPQUFPLEVBQUUsQ0FBQyxXQUFXLENBQUM7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUM3QixJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbEIsQ0FBQzsrR0F6Q1UsdUJBQXVCO21HQUF2Qix1QkFBdUIsbUZDWHBDLHc2SEFvRk07OzRGRHpFTyx1QkFBdUI7a0JBSm5DLFNBQVM7K0JBQ0Usc0JBQXNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBPbkluaXQsIHNpZ25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgVGVjaGxpZnlMaXN0Q29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYmFzZS1tb2RlbCc7XG5pbXBvcnQgeyBMb2NrZWREYXRlU2VydmljZSB9IGZyb20gJy4uL2xvY2tlZC1kYXRlLnNlcnZpY2UnO1xuaW1wb3J0IHsgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBMb2NrZWREYXRlRm9ybUNvbXBvbmVudCB9IGZyb20gJy4uL2xvY2tlZC1kYXRlLWZvcm0vbG9ja2VkLWRhdGUtZm9ybS5jb21wb25lbnQnO1xuaW1wb3J0IHsgVXNlckNvbmZpZ1NlcnZpY2UgfSBmcm9tICcuLi8uLi91c2VyLWNvbmZpZy91c2VyLWNvbmZpZy5zZXJ2aWNlJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnYXBwLWxvY2tlZC1kYXRlLWxpc3QnLFxuICB0ZW1wbGF0ZVVybDogJy4vbG9ja2VkLWRhdGUtbGlzdC5jb21wb25lbnQuaHRtbCdcbn0pXG5leHBvcnQgY2xhc3MgTG9ja2VkRGF0ZUxpc3RDb21wb25lbnQgZXh0ZW5kcyBUZWNobGlmeUxpc3RDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICBmb3JtQ29tcG9uZW50ID0gc2lnbmFsKExvY2tlZERhdGVGb3JtQ29tcG9uZW50KTtcbiAgc2Nyb2xsQ29udGFpbmVyID0gJy5tYXQtc2lkZW5hdi1jb250ZW50JztcblxuICBkaXNwbGF5ZWRDb2x1bW5zOiBzdHJpbmdbXSA9IFtcbiAgICAnaW5kZXgnLFxuICAgICdkYXRlJyxcbiAgICAnZGV0YWlscycsXG4gICAgJ2xvY2tlZF9vbicsXG4gICAgJ2xvY2tlZF9ieScsXG4gICAgJ2FjdGlvbnMnXG4gIF07XG5cbiAgY29uc3RydWN0b3IocHJvdGVjdGVkIG92ZXJyaWRlIHNlcnZpY2U6IExvY2tlZERhdGVTZXJ2aWNlLFxuICAgIHByaXZhdGUgZmI6IEZvcm1CdWlsZGVyLFxuICAgIHByaXZhdGUgdXNlckNvbmZpZ1NlcnZpY2U6IFVzZXJDb25maWdTZXJ2aWNlXG4gICkge1xuICAgIHN1cGVyKHNlcnZpY2UpO1xuXG4gICAgY29uc3QgY29uZmlnID0gdGhpcy51c2VyQ29uZmlnU2VydmljZS5nZXRDb25maWcoKTtcbiAgICBpZiAoY29uZmlnPy5zY3JvbGxDb250YWluZXIpIHtcbiAgICAgIHRoaXMuc2Nyb2xsQ29udGFpbmVyID0gY29uZmlnLnNjcm9sbENvbnRhaW5lciA9PT0gJ3Jvb3QnXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IGNvbmZpZy5zY3JvbGxDb250YWluZXI7XG4gICAgfVxuXG4gICAgdGhpcy5maWx0ZXJGb3JtQ29uZmlndXJhdGlvbiA9IHtcbiAgICAgIGRhdGVfZnJvbTogeyBkYXRlOiB0cnVlIH0sXG4gICAgICBkYXRlX3RvOiB7IGRhdGU6IHRydWUgfSxcbiAgICB9O1xuICAgIHRoaXMuZmlsdGVyRm9ybSA9IHRoaXMuZmIuZ3JvdXAoe1xuICAgICAgZGF0ZV9mcm9tOiBbJyddLFxuICAgICAgZGF0ZV90bzogWycnXSxcbiAgICAgIHNvcnRfYnk6IFsnZGF0ZXxERVNDJ10sXG4gICAgfSk7XG4gIH1cblxuICBuZ09uSW5pdCgpIHtcbiAgICB0aGlzLnBhdGNoRmlsdGVyc0Zyb21Sb3V0ZSgpO1xuICAgIHRoaXMubGlzdGVuRmlsdGVyQ2hhbmdlcygpO1xuICAgIHRoaXMubG9hZERhdGEoKTtcbiAgfVxufVxuIiwiPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LWNvbHVtbiBnYXAtMlwiPlxuICA8bWF0LWNhcmQgYXBwZWFyYW5jZT1cIm91dGxpbmVkXCIgY2xhc3M9XCJkLXByaW50LW5vbmVcIj5cbiAgICA8bWF0LWNhcmQtY29udGVudCBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIganVzdGlmeS1jb250ZW50LWJldHdlZW5cIj5cbiAgICAgIDxkaXYgY2xhc3M9XCJkLWZsZXggZmxleC1yb3cgZ2FwLTIgYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1iZXR3ZWVuXCI+XG4gICAgICAgIDxoNSBjbGFzcz1cIm1iLTBcIj5Mb2NrZWQgRGF0ZXM8L2g1PlxuICAgICAgICA8YXBwLXRlY2hsaWZ5LWZvcm0tYnV0dG9uIFtjb21wb25lbnRdPVwiZm9ybUNvbXBvbmVudCgpXCJcbiAgICAgICAgICAoc2F2ZWQpPVwibW9kZWxDcmVhdGVkKCRldmVudClcIj48L2FwcC10ZWNobGlmeS1mb3JtLWJ1dHRvbj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICA8Zm9ybSBbZm9ybUdyb3VwXT1cImZpbHRlckZvcm1cIiBjbGFzcz0nZC1mbGV4IGZsZXgtcm93IGdhcC0yJz5cbiAgICAgICAgPGFwcC10aW1lbGluZS1maWx0ZXIgbGFiZWxUZXh0PVwiUGVyaW9kXCIgW2Zvcm1dPSdmaWx0ZXJGb3JtJz48L2FwcC10aW1lbGluZS1maWx0ZXI+XG4gICAgICA8L2Zvcm0+XG4gICAgPC9tYXQtY2FyZC1jb250ZW50PlxuICA8L21hdC1jYXJkPlxuXG4gIDxtYXQtY2FyZD5cbiAgICA8bWF0LWNhcmQtY29udGVudD5cbiAgICAgIDx0YWJsZSBjbGFzcz0ndy0xMDAnIG1hdC10YWJsZSBbZGF0YVNvdXJjZV09XCJtb2RlbHNcIiBtYXRTb3J0IG11bHRpVGVtcGxhdGVEYXRhUm93cyBpbmZpbml0ZVNjcm9sbFxuICAgICAgICBbaW5maW5pdGVTY3JvbGxEaXN0YW5jZV09XCIxXCIgW2luZmluaXRlU2Nyb2xsVGhyb3R0bGVdPVwiNTBcIiAoc2Nyb2xsZWQpPVwib25TY3JvbGwoKVwiXG4gICAgICAgIFtpbmZpbml0ZVNjcm9sbENvbnRhaW5lcl09XCJzY3JvbGxDb250YWluZXJcIiBbZnJvbVJvb3RdPVwidHJ1ZVwiIChtYXRTb3J0Q2hhbmdlKT1cInNvcnRDb2x1bW4oJGV2ZW50KVwiPlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgbWF0Q29sdW1uRGVmPVwiaW5kZXhcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiAjIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnQ7IGxldCBpID0gZGF0YUluZGV4XCI+IHt7IGkrMSB9fSA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJkYXRlXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZiBtYXQtc29ydC1oZWFkZXI+IERhdGUgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImQtZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgICAgPHNwYW4+e3tlbGVtZW50Py5kYXRlIHwgZGF0ZTogJ2xvbmdEYXRlJ319PC9zcGFuPlxuICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2sgdGV4dC1kYW5nZXJcIiAqbmdJZj1cImVsZW1lbnQ/LnN0YXR1c19pZCA9PSAxXCIgbWF0VG9vbHRpcD1cIkxvY2tlZFwiPjwvaT5cbiAgICAgICAgICAgICAgICA8aSBjbGFzcz1cImZhLXNvbGlkIGZhLWxvY2stb3BlbiB0ZXh0LXN1Y2Nlc3NcIiAqbmdJZj1cImVsZW1lbnQ/LnN0YXR1c19pZCA9PSAyXCIgbWF0VG9vbHRpcD1cIlVubG9ja2VkXCI+PC9pPlxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsb2NrZWRfb25cIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBMb2NrZWQgT24gPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uY3JlYXRlZF9hdCB8IGRhdGU6J21lZGl1bScgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJsb2NrZWRfYnlcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBMb2NrZWQgQnkgPC90aD5cbiAgICAgICAgICA8dGQgbWF0LWNlbGwgKm1hdENlbGxEZWY9XCJsZXQgZWxlbWVudFwiPlxuICAgICAgICAgICAge3sgZWxlbWVudD8uY3JlYXRvcj8ubmFtZSB9fVxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctY29udGFpbmVyIG1hdENvbHVtbkRlZj1cImRldGFpbHNcIj5cbiAgICAgICAgICA8dGggbWF0LWhlYWRlci1jZWxsICptYXRIZWFkZXJDZWxsRGVmPiBEZXRhaWxzIDwvdGg+XG4gICAgICAgICAgPHRkIG1hdC1jZWxsICptYXRDZWxsRGVmPVwibGV0IGVsZW1lbnRcIj5cbiAgICAgICAgICAgIHt7IGVsZW1lbnQ/LmRldGFpbHMgfX1cbiAgICAgICAgICA8L3RkPlxuICAgICAgICAgIDx0ZCBtYXQtZm9vdGVyLWNlbGwgKm1hdEZvb3RlckNlbGxEZWY+PC90ZD5cbiAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgPG5nLWNvbnRhaW5lciBtYXRDb2x1bW5EZWY9XCJhY3Rpb25zXCI+XG4gICAgICAgICAgPHRoIG1hdC1oZWFkZXItY2VsbCAqbWF0SGVhZGVyQ2VsbERlZj4gQWN0aW9ucyA8L3RoPlxuICAgICAgICAgIDx0ZCBtYXQtY2VsbCAqbWF0Q2VsbERlZj1cImxldCBlbGVtZW50XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZC1mbGV4IGZsZXgtcm93IGdhcC0yIHRleHQtc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgIDxhcHAtbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uIFtsb2NrZWREYXRlXT0nZWxlbWVudCdcbiAgICAgICAgICAgICAgICAob25TYXZlKT0nbW9kZWxzVXBkYXRlZEJ5SWQoJGV2ZW50KSc+PC9hcHAtbG9ja2VkLWRhdGUtbG9jay11bmxvY2stYnV0dG9uPlxuICAgICAgICAgICAgICA8YXBwLXRlY2hsaWZ5LWRlbGV0ZS1idXR0b24gW3NlcnZpY2VdPVwic2VydmljZVwiIFttb2RlbF09XCJlbGVtZW50XCJcbiAgICAgICAgICAgICAgICBbZGF0YV09XCJ7dHlwZTogJ0xvY2tlZCBEYXRlJywgdGl0bGU6IGVsZW1lbnQ/LmRhdGUgfCBkYXRlOidsb25nRGF0ZSd9XCJcbiAgICAgICAgICAgICAgICAoZGVsZXRlZCk9XCJtb2RlbHNEZWxldGVkQnlJZCgkZXZlbnQpXCI+PC9hcHAtdGVjaGxpZnktZGVsZXRlLWJ1dHRvbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDwvdGQ+XG4gICAgICAgICAgPHRkIG1hdC1mb290ZXItY2VsbCAqbWF0Rm9vdGVyQ2VsbERlZj48L3RkPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8dHIgbWF0LWhlYWRlci1yb3cgKm1hdEhlYWRlclJvd0RlZj1cImRpc3BsYXllZENvbHVtbnM7IHN0aWNreTogdHJ1ZVwiPjwvdHI+XG4gICAgICAgIDx0ciBtYXQtcm93ICptYXRSb3dEZWY9XCJsZXQgcm93OyBjb2x1bW5zOiBkaXNwbGF5ZWRDb2x1bW5zO1wiPjwvdHI+XG4gICAgICA8L3RhYmxlPlxuICAgIDwvbWF0LWNhcmQtY29udGVudD5cbiAgPC9tYXQtY2FyZD5cbjwvZGl2PiJdfQ==
@@ -1078,7 +1078,7 @@ function techlifyListContract(options) {
1078
1078
  it('should reload when filter changes', fakeAsync(() => {
1079
1079
  const component = options.getComponent();
1080
1080
  const filterField = options.filterField ?? 'search';
1081
- if (!component.filterForm?.contains(filterField)) {
1081
+ if (!component.filterForm?.get(filterField)) {
1082
1082
  pending(`Filter '${filterField}' does not exist.`);
1083
1083
  return;
1084
1084
  }
@@ -15635,15 +15635,15 @@ class LockedDateLockUnlockButtonComponent {
15635
15635
  }
15636
15636
  lock() {
15637
15637
  this.lockedDateService.lock(this.lockedDate).subscribe({
15638
- next: () => {
15639
- this.onSave.emit();
15638
+ next: (response) => {
15639
+ this.onSave.emit(response.item);
15640
15640
  }
15641
15641
  });
15642
15642
  }
15643
15643
  unlock() {
15644
15644
  this.lockedDateService.unlock(this.lockedDate).subscribe({
15645
- next: () => {
15646
- this.onSave.emit();
15645
+ next: (response) => {
15646
+ this.onSave.emit(response.item);
15647
15647
  }
15648
15648
  });
15649
15649
  }
@@ -15660,12 +15660,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
15660
15660
  }] } });
15661
15661
 
15662
15662
  class LockedDateListComponent extends TechlifyListComponent {
15663
- constructor(service, fb, datePipe) {
15664
- super();
15663
+ constructor(service, fb, userConfigService) {
15664
+ super(service);
15665
15665
  this.service = service;
15666
15666
  this.fb = fb;
15667
- this.datePipe = datePipe;
15667
+ this.userConfigService = userConfigService;
15668
15668
  this.formComponent = signal(LockedDateFormComponent);
15669
+ this.scrollContainer = '.mat-sidenav-content';
15669
15670
  this.displayedColumns = [
15670
15671
  'index',
15671
15672
  'date',
@@ -15674,6 +15675,16 @@ class LockedDateListComponent extends TechlifyListComponent {
15674
15675
  'locked_by',
15675
15676
  'actions'
15676
15677
  ];
15678
+ const config = this.userConfigService.getConfig();
15679
+ if (config?.scrollContainer) {
15680
+ this.scrollContainer = config.scrollContainer === 'root'
15681
+ ? null
15682
+ : config.scrollContainer;
15683
+ }
15684
+ this.filterFormConfiguration = {
15685
+ date_from: { date: true },
15686
+ date_to: { date: true },
15687
+ };
15677
15688
  this.filterForm = this.fb.group({
15678
15689
  date_from: [''],
15679
15690
  date_to: [''],
@@ -15681,34 +15692,17 @@ class LockedDateListComponent extends TechlifyListComponent {
15681
15692
  });
15682
15693
  }
15683
15694
  ngOnInit() {
15695
+ this.patchFiltersFromRoute();
15684
15696
  this.listenFilterChanges();
15685
15697
  this.loadData();
15686
15698
  }
15687
- loadData() {
15688
- this.isWorking = true;
15689
- let filters = this.filterForm.value;
15690
- filters.page = this.page;
15691
- filters.date_from = filters.date_from
15692
- ? this.datePipe.transform(filters.date_from, 'yyyy-MM-dd')
15693
- : '';
15694
- filters.date_to = filters.date_to
15695
- ? this.datePipe.transform(filters.date_to, 'yyyy-MM-dd')
15696
- : '';
15697
- this.service.index(filters).subscribe({
15698
- next: (response) => {
15699
- this.models = this.models.concat(response.data);
15700
- this.lastPage = response.last_page;
15701
- this.isWorking = false;
15702
- }
15703
- });
15704
- }
15705
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateListComponent, deps: [{ token: LockedDateService }, { token: i3.FormBuilder }, { token: i2.DatePipe }], target: i0.ɵɵFactoryTarget.Component }); }
15706
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LockedDateListComponent, selector: "app-locked-date-list", providers: [DatePipe], usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [scrollWindow]=\"false\"\n [infiniteScrollContainer]=\"'.mat-sidenav-content'\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.date | date: 'longDate'}}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='reload()'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i13.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "component", type: TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "component", type: LockedDateLockUnlockButtonComponent, selector: "app-locked-date-lock-unlock-button", inputs: ["lockedDate"], outputs: ["onSave"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] }); }
15699
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateListComponent, deps: [{ token: LockedDateService }, { token: i3.FormBuilder }, { token: UserConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
15700
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: LockedDateListComponent, selector: "app-locked-date-list", usesInheritance: true, ngImport: i0, template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [infiniteScrollContainer]=\"scrollContainer\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <span>{{element?.date | date: 'longDate'}}</span>\n <span>\n <i class=\"fa-solid fa-lock text-danger\" *ngIf=\"element?.status_id == 1\" matTooltip=\"Locked\"></i>\n <i class=\"fa-solid fa-lock-open text-success\" *ngIf=\"element?.status_id == 2\" matTooltip=\"Unlocked\"></i>\n </span>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='modelsUpdatedById($event)'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>", dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i7$1.InfiniteScrollDirective, selector: "[infiniteScroll], [infinite-scroll], [data-infinite-scroll]", inputs: ["infiniteScrollDistance", "infiniteScrollUpDistance", "infiniteScrollThrottle", "infiniteScrollDisabled", "infiniteScrollContainer", "scrollWindow", "immediateCheck", "horizontal", "alwaysCallback", "fromRoot"], outputs: ["scrolled", "scrolledUp"] }, { kind: "directive", type: i12.MatSort, selector: "[matSort]", inputs: ["matSortActive", "matSortStart", "matSortDirection", "matSortDisableClear", "matSortDisabled"], outputs: ["matSortChange"], exportAs: ["matSort"] }, { kind: "component", type: i12.MatSortHeader, selector: "[mat-sort-header]", inputs: ["mat-sort-header", "arrowPosition", "start", "disabled", "sortActionDescription", "disableClear"], exportAs: ["matSortHeader"] }, { kind: "component", type: i13.MatTable, selector: "mat-table, table[mat-table]", exportAs: ["matTable"] }, { kind: "directive", type: i13.MatHeaderCellDef, selector: "[matHeaderCellDef]" }, { kind: "directive", type: i13.MatHeaderRowDef, selector: "[matHeaderRowDef]", inputs: ["matHeaderRowDef", "matHeaderRowDefSticky"] }, { kind: "directive", type: i13.MatColumnDef, selector: "[matColumnDef]", inputs: ["matColumnDef"] }, { kind: "directive", type: i13.MatCellDef, selector: "[matCellDef]" }, { kind: "directive", type: i13.MatRowDef, selector: "[matRowDef]", inputs: ["matRowDefColumns", "matRowDefWhen"] }, { kind: "directive", type: i13.MatFooterCellDef, selector: "[matFooterCellDef]" }, { kind: "directive", type: i13.MatHeaderCell, selector: "mat-header-cell, th[mat-header-cell]" }, { kind: "directive", type: i13.MatCell, selector: "mat-cell, td[mat-cell]" }, { kind: "directive", type: i13.MatFooterCell, selector: "mat-footer-cell, td[mat-footer-cell]" }, { kind: "component", type: i13.MatHeaderRow, selector: "mat-header-row, tr[mat-header-row]", exportAs: ["matHeaderRow"] }, { kind: "component", type: i13.MatRow, selector: "mat-row, tr[mat-row]", exportAs: ["matRow"] }, { kind: "component", type: i4$1.MatCard, selector: "mat-card", inputs: ["appearance"], exportAs: ["matCard"] }, { kind: "directive", type: i4$1.MatCardContent, selector: "mat-card-content" }, { kind: "directive", type: i15.MatTooltip, selector: "[matTooltip]", inputs: ["matTooltipPosition", "matTooltipPositionAtOrigin", "matTooltipDisabled", "matTooltipShowDelay", "matTooltipHideDelay", "matTooltipTouchGestures", "matTooltip", "matTooltipClass"], exportAs: ["matTooltip"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: TechlifyDeleteButtonComponent, selector: "app-techlify-delete-button", inputs: ["data", "model", "message", "service"], outputs: ["deleted"] }, { kind: "component", type: TimelineFilterComponent, selector: "app-timeline-filter", inputs: ["defaultValue", "required", "disabled", "value", "timelines", "dateFrom", "dateTo", "appearance", "showClearButton", "form", "labelText"], outputs: ["selectionChange"] }, { kind: "component", type: TechlifyFormButtonComponent, selector: "app-techlify-form-button", inputs: ["component", "model", "data", "width"], outputs: ["saved"] }, { kind: "component", type: LockedDateLockUnlockButtonComponent, selector: "app-locked-date-lock-unlock-button", inputs: ["lockedDate"], outputs: ["onSave"] }, { kind: "pipe", type: i2.DatePipe, name: "date" }] }); }
15707
15701
  }
15708
15702
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateListComponent, decorators: [{
15709
15703
  type: Component,
15710
- args: [{ selector: 'app-locked-date-list', providers: [DatePipe], template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\" [scrollWindow]=\"false\"\n [infiniteScrollContainer]=\"'.mat-sidenav-content'\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.date | date: 'longDate'}}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='reload()'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>" }]
15711
- }], ctorParameters: () => [{ type: LockedDateService }, { type: i3.FormBuilder }, { type: i2.DatePipe }] });
15704
+ args: [{ selector: 'app-locked-date-list', template: "<div class=\"d-flex flex-column gap-2\">\n <mat-card appearance=\"outlined\" class=\"d-print-none\">\n <mat-card-content class=\"d-flex flex-row align-items-center justify-content-between\">\n <div class=\"d-flex flex-row gap-2 align-items-center justify-content-between\">\n <h5 class=\"mb-0\">Locked Dates</h5>\n <app-techlify-form-button [component]=\"formComponent()\"\n (saved)=\"modelCreated($event)\"></app-techlify-form-button>\n </div>\n\n <form [formGroup]=\"filterForm\" class='d-flex flex-row gap-2'>\n <app-timeline-filter labelText=\"Period\" [form]='filterForm'></app-timeline-filter>\n </form>\n </mat-card-content>\n </mat-card>\n\n <mat-card>\n <mat-card-content>\n <table class='w-100' mat-table [dataSource]=\"models\" matSort multiTemplateDataRows infiniteScroll\n [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\" (scrolled)=\"onScroll()\"\n [infiniteScrollContainer]=\"scrollContainer\" [fromRoot]=\"true\" (matSortChange)=\"sortColumn($event)\">\n\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let element; let i = dataIndex\"> {{ i+1 }} </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"date\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Date </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row align-items-center gap-2\">\n <span>{{element?.date | date: 'longDate'}}</span>\n <span>\n <i class=\"fa-solid fa-lock text-danger\" *ngIf=\"element?.status_id == 1\" matTooltip=\"Locked\"></i>\n <i class=\"fa-solid fa-lock-open text-success\" *ngIf=\"element?.status_id == 2\" matTooltip=\"Unlocked\"></i>\n </span>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_on\">\n <th mat-header-cell *matHeaderCellDef> Locked On </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.created_at | date:'medium' }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"locked_by\">\n <th mat-header-cell *matHeaderCellDef> Locked By </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.creator?.name }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\">\n {{ element?.details }}\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"d-flex flex-row gap-2 text-secondary\">\n <app-locked-date-lock-unlock-button [lockedDate]='element'\n (onSave)='modelsUpdatedById($event)'></app-locked-date-lock-unlock-button>\n <app-techlify-delete-button [service]=\"service\" [model]=\"element\"\n [data]=\"{type: 'Locked Date', title: element?.date | date:'longDate'}\"\n (deleted)=\"modelsDeletedById($event)\"></app-techlify-delete-button>\n </div>\n </td>\n <td mat-footer-cell *matFooterCellDef></td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky: true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </mat-card-content>\n </mat-card>\n</div>" }]
15705
+ }], ctorParameters: () => [{ type: LockedDateService }, { type: i3.FormBuilder }, { type: UserConfigService }] });
15712
15706
 
15713
15707
  class LockedDateModule {
15714
15708
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: LockedDateModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }