ngx-techlify-core 11.2.7 → 11.2.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/ngx-techlify-core.umd.js +6 -1
- package/bundles/ngx-techlify-core.umd.js.map +1 -1
- package/bundles/ngx-techlify-core.umd.min.js +1 -1
- package/bundles/ngx-techlify-core.umd.min.js.map +1 -1
- package/esm2015/lib/searchable-selector/searchable-selector.component.js +7 -2
- package/fesm2015/ngx-techlify-core.js +6 -1
- package/fesm2015/ngx-techlify-core.js.map +1 -1
- package/lib/searchable-selector/searchable-selector.component.d.ts +1 -0
- package/ngx-techlify-core.metadata.json +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"__symbolic":"module","version":4,"exports":[{"from":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter.component"},{"from":"./lib/snack/snack.module"},{"from":"./lib/alert.service"},{"from":"./lib/api-prefix.interceptor"},{"from":"./lib/authentication.guard"},{"from":"./lib/authentication.service"},{"from":"./lib/cache.interceptor"},{"from":"./lib/config.service"},{"from":"./lib/credentials.service"},{"from":"./lib/error-handler.interceptor"},{"from":"./lib/error-handler.service"},{"from":"./lib/form-validator.service"},{"from":"./lib/http-cache.service"},{"from":"./lib/http.service"},{"from":"./lib/logger.service"},{"from":"./lib/route-reusable-strategy"},{"from":"./lib/storage.service"},{"from":"./lib/techlify-config.model"},{"from":"./lib/token.interceptor"},{"from":"./lib/dataManager.service"}],"metadata":{"MaterialModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":38,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":39,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":40,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":41,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":42,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":43,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":44,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatLineModule","line":45,"character":4},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":46,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatNativeDateModule","line":47,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatOptionModule","line":48,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":49,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatPseudoCheckboxModule","line":50,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":51,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":52,"character":4},{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSortModule","line":53,"character":4},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":54,"character":4},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":55,"character":4},{"__symbolic":"reference","module":"@angular/material/divider","name":"MatDividerModule","line":56,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":57,"character":4},{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":58,"character":4},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":59,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":60,"character":4}]}]}],"members":{}},"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":4},{"__symbolic":"reference","name":"ɵa"}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":22,"character":15},"useClass":{"__symbolic":"reference","name":"ɵe"}},{"provide":{"__symbolic":"reference","module":"@angular/router","name":"RouteReuseStrategy","line":26,"character":15},"useClass":{"__symbolic":"reference","name":"ɵf"}}],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":36,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":36,"character":27}}]],"parameters":[{"__symbolic":"reference","name":"CoreModule"}]}]}},"ActionPopupModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":8,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵg"}],"exports":[{"__symbolic":"reference","name":"ɵg"}],"entryComponents":[{"__symbolic":"reference","name":"ɵg"}]}]}],"members":{}},"DataTableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵi"}],"exports":[{"__symbolic":"reference","name":"ɵi"}]}]}],"members":{}},"DocumentViewerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":10,"character":4},{"__symbolic":"reference","module":"ngx-doc-viewer","name":"NgxDocViewerModule","line":11,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵj"}],"exports":[{"__symbolic":"reference","name":"ɵj"}]}]}],"members":{}},"EntityFilesViewAllModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵo"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","name":"FileDropperModule"},{"__symbolic":"reference","name":"DocumentViewerModule"},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":22,"character":4},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"ɵo"}],"entryComponents":[{"__symbolic":"reference","name":"ɵk"}]}]}],"members":{}},"FileDropperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":8},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":9,"character":8},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵp"}],"exports":[{"__symbolic":"reference","name":"ɵp"}]}]}],"members":{}},"NoteModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵs"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"ɵq"}],"entryComponents":[{"__symbolic":"reference","name":"ɵs"}]}]}],"members":{}},"SearchableSelectorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"}],"exports":[{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"}]}]}],"members":{}},"UtilityModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":8},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":12,"character":8}],"declarations":[{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵw"}],"exports":[{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵw"}]}]}],"members":{}},"TimelineFilterModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵx"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵx"}]}]}],"members":{}},"LoaderModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵz"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":11,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵz"}]}]}],"members":{}},"EmailSubscriptionModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionRoutingModule"}]}]}],"members":{}},"EmailSubscriptionRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionUserModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionUserRoutingModule"}]}]}],"members":{}},"EmailSubscriptionUserRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":8,"character":12}]}]}],"members":{}},"EmailSubscriptionUserFormModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵba"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","name":"SearchableSelectorModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserFormRoutingModule"},{"__symbolic":"reference","name":"LoaderModule"}],"entryComponents":[{"__symbolic":"reference","name":"ɵba"}]}]}],"members":{}},"EmailSubscriptionUserFormRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionUserListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbb"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":17,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionUserListRoutingModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserFormModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserListFilterModule"}],"exports":[{"__symbolic":"reference","name":"ɵbb"}]}]}],"members":{}},"esulr":{"title":"Email Subscription Users","permissions":{"only":["app_admin"],"redirectTo":"/"}},"EmailSubscriptionUserListRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":22,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":23,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"ɵbb"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}],"data":{"__symbolic":"reference","name":"esulr"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":24,"character":12}]}]}],"members":{}},"EmailSubscriptionUserListFilterRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionUserListFilterModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbg"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","name":"SearchableSelectorModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserListFilterRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ɵbg"}]}]}],"members":{}},"EmailSubscriptionTypeRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionTypeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionTypeRoutingModule"}]}]}],"members":{}},"EmailSubscriptionTypeFormRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionTypeFormModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbh"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","name":"SearchableSelectorModule"},{"__symbolic":"reference","name":"EmailSubscriptionTypeFormRoutingModule"},{"__symbolic":"reference","name":"LoaderModule"}],"exports":[{"__symbolic":"reference","name":"ɵbh"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbh"}]}]}],"members":{}},"estlr":{"title":"Email Subscription Type","permissions":{"only":["client_admin"],"redirectTo":"/"}},"EmailSubscriptionTypeListRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":24,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":25,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"ɵbi"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}],"data":{"__symbolic":"reference","name":"estlr"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":26,"character":12}]}]}],"members":{}},"EmailSubscriptionTypeListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbi"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":19,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionTypeFormModule"},{"__symbolic":"reference","name":"EmailSubscriptionTypeListRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ɵbi"}]}]}],"members":{}},"esfur":{"permissions":{"only":["client_admin"]}},"EmailSubscriptionForUserRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":21,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"ɵbj"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}],"data":{"__symbolic":"reference","name":"esfur"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":22,"character":12}]}]}],"members":{}},"EmailSubscriptionForUserModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbj"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionForUserRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ɵbj"}]}]}],"members":{}},"TechlifyUpdateModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbk"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":16,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":18,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"ɵbm"},{"__symbolic":"reference","name":"ɵbn"},{"__symbolic":"reference","name":"ɵbp"}]}]}],"members":{}},"TechlifyUpdateHistoryModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":14,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"ɵbp"},{"__symbolic":"reference","name":"ɵbr"}],"declarations":[{"__symbolic":"reference","name":"ɵbs"}]}]}],"members":{}},"UpdateNotifierModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"UpdateNotifierComponent"},{"__symbolic":"reference","name":"ɵbt"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"ɵbu"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","name":"ActionPopupModule"}],"exports":[{"__symbolic":"reference","name":"UpdateNotifierComponent"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbt"}]}]}],"members":{}},"UpdateNotifierComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-update-notifier","template":"","styles":["::ng-deep .white-bg{background-color:#fff}"]}]}],"members":{"rootNavUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBar","line":16,"character":22},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"getNewUpdate":[{"__symbolic":"method"}],"showUpdate":[{"__symbolic":"method"}]}},"ExportExcelButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-export-excel-button","template":"<button mat-raised-button color=\"accent\" (click)=\"exportExcel()\">Export Excel</button>","styles":[""]}]}],"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"exportExcel":[{"__symbolic":"method"}]}},"ExportExcelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ExportExcelButtonComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"ExportExcelButtonComponent"}]}]}],"members":{}},"AuditLogForModelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-audit-log-for-model","template":"<button type=\"button\" *ngIf=\"logView==='recent'\" mat-icon-button matTooltip=\"Recent Audit Log\"\n (click)=\"$event.stopPropagation();getLogView()\">\n <mat-icon>history</mat-icon>\n</button>\n\n<button type=\"button\" *ngIf=\"logView==='all'\" mat-icon-button matTooltip=\"All Audit Logs\"\n (click)=\"$event.stopPropagation();getLogsView()\">\n <mat-icon>history</mat-icon>\n</button>","styles":[""]}]}],"members":{"modelType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"modelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"logView":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":18,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"getLogView":[{"__symbolic":"method"}],"getLogsView":[{"__symbolic":"method"}]}},"AuditLogForModelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogForModelComponent"}],"imports":[{"__symbolic":"reference","name":"AuditLogViewModelModule"},{"__symbolic":"reference","name":"AuditLogsViewModelModule"},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","name":"AuditLogForModelRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":18,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogForModelComponent"}]}]}],"members":{}},"AuditLogForModelRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":10,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-audit-log-list","template":"<div fxLayout=\"column\" fxLayoutAlign=\"start\" class=\"mat-typography\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"1.5rem\" class=\"p-3\">\n <h2 class=\"font-weight-bold\">\n Audit Logs\n </h2>\n\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <app-audit-log-list-filter *ngIf=\"showFilter\" (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [objectId]=\"objectId\"></app-audit-log-list-filter>\n <span fxFlex></span>\n\n <ng-container *ngIf=\"showExportButtons\">\n <div class=\"ml-4\">\n <app-export-excel-button elementId=\"audit-logs-table\" name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n </ng-container>\n </div>\n </div>\n\n <section class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"auditLogList\" matSort class=\"w-100\" multiTemplateDataRows id=\"audit-logs-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let auditLog; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.user?.email}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\n\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n (click)=\"logClicked(row);$event.stopPropagation();\" class=\"hoverable row-hover\"></tr>\n </table>\n </section>\n\n\n</div>","styles":["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{background-color:#f08080;margin-right:5px}:host ::ng-deep #new-value{background-color:#98fb98}"]}]}],"members":{"objectId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"objectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"showFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"showExportButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"userId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":29,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":29,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbw"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":33,"character":20},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":34,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"changeSort":[{"__symbolic":"method"}],"logClicked":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"filterChange":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"getTransformedChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AuditLogListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogListComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","name":"AuditLogListRoutingModule"},{"__symbolic":"reference","name":"ExportExcelModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":22,"character":4},{"__symbolic":"reference","name":"AuditLogListFilterModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogListComponent"}]}]}],"members":{}},"AuditLogListRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogListFilterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":7,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-audit-log-list-filter","template":"<form [formGroup]=\"auditLogFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field *ngIf=\"showObjectFilter\">\n <mat-label>Model</mat-label>\n <app-searchable-selector formControlName=\"object_type\" apiUrl=\"api/audit-log-types\" titleField=\"object_type\"\n valueField=\"object_type\" [sort]=\"false\" [enableSearch]=\"false\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('object_type')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('object_type')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Action</mat-label>\n <mat-select formControlName=\"action\">\n <mat-option value=\"created\">Created</mat-option>\n <mat-option value=\"updated\">Updated</mat-option>\n <mat-option value=\"deleted\">Deleted</mat-option>\n </mat-select>\n <button mat-button *ngIf=\"getFieldValue('action')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('action')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"date_from\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date (MM/DD/YYYY)\" />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('date_from')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('date_from')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('date_from')\">Invalid Date</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"date_to\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date (MM/DD/YYYY)\" />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('date_to')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('date_to')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('date_to')\">Invalid Date</mat-error>\n </mat-form-field>\n</form>","styles":[""]}]}],"members":{"objectId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"objectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":22,"character":26},{"__symbolic":"reference","name":"ɵl"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AuditLogListFilterModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogListFilterComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","name":"AuditLogListFilterRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"SearchableSelectorModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogListFilterComponent"}]}]}],"members":{}},"AuditLogListFilterRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogViewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-audit-log-view","template":"<div fxLayout=\"column\" class=\"m-4\" fxLayoutGap=\"1.5rem\">\n <h3 class=\"text-center\">Audit Log</h3>\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" *ngIf=\"logInfo\">\n <div>Object Type: {{logInfo?.object_type}}</div>\n <div>Object Id: {{logInfo?.object_id}}</div>\n <div>Action: {{logInfo?.action}}</div>\n <div>Created At: {{logInfo?.created_at | date:'medium'}}</div>\n <div>Created By: {{logInfo?.user?.email}}</div>\n </div>\n\n\n <div fxLayout=\"column\" *ngIf=\"logInfo?.action !== 'deleted'\">\n <div>\n <button mat-raised-button color=\"primary\" (click)=\"showDeltaChanges = !showDeltaChanges\">\n {{showDeltaChanges?'Hide JSON Changes': 'Show JSON Changes'}}\n </button>\n </div>\n <div [hidden]=\"!showDeltaChanges\">\n <h4 class=\"font-weight-bold\" *ngIf=\"logInfo\">Changes in JSON</h4>\n <div id=\"jsondiff\"></div>\n </div>\n </div>\n\n <div class=\"container\" *ngIf=\"changeList.length > 0\">\n <h4 class=\"font-weight-bold\"> Changes in Attributes</h4>\n <table class=\"table table-striped table-sm border\">\n <thead>\n <tr>\n <th scope=\"col\">#</th>\n <th scope=\"col\">Attribute</th>\n <th scope=\"col\">Old Value</th>\n <th scope=\"col\">New Value</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let change of changeList; let i= index;\">\n <th scope=\"row\">{{i+1}}</th>\n <td>{{change?.displayAttribute}}</td>\n <td>{{change?.oldValue}}</td>\n <td>{{change?.newValue}}</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n</div>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbw"},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":19,"character":19},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":20,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"getTransformedChanges":[{"__symbolic":"method"}],"fetchLogDetail":[{"__symbolic":"method"}],"patchDelta":[{"__symbolic":"method"}]}},"AuditLogViewModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogViewComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogViewRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogViewComponent"}]}]}],"members":{}},"AuditLogViewRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogViewModelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":6,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-audit-log-view","template":"<div fxLayout=\"column\" class=\"m-4\" fxLayoutGap=\"1.5rem\">\n <h3 class=\"text-center\">Audit Log</h3>\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" *ngIf=\"logInfo\">\n <div>Object Type: {{logInfo?.object_type}}</div>\n <div>Object Id: {{logInfo?.object_id}}</div>\n <div>Action: {{logInfo?.action}}</div>\n <div>Created At: {{logInfo?.created_at | date:'medium'}}</div>\n <div>Created By: {{logInfo?.user?.email}}</div>\n </div>\n\n\n <div class=\"container\" *ngIf=\"changeList.length > 0\">\n <h4 class=\"font-weight-bold\"> Changes in Attributes</h4>\n <table class=\"table table-striped table-sm border\">\n <thead>\n <tr>\n <th scope=\"col\">#</th>\n <th scope=\"col\">Attribute</th>\n <th scope=\"col\">Old Value</th>\n <th scope=\"col\">New Value</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let change of changeList; let i= index;\">\n <th scope=\"row\">{{i+1}}</th>\n <td>{{change?.displayAttribute}}</td>\n <td>{{change?.oldValue}}</td>\n <td>{{change?.newValue}}</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n\n <div>\n <button mat-raised-button (click)=\"close()\">Close</button>\n </div>\n</div>","styles":[".scroll-container{max-height:400px;overflow:auto}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":20,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵe"}]}],"ngOnInit":[{"__symbolic":"method"}],"getTransformedChanges":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}},"AuditLogViewModelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogViewModelRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}]}]}],"members":{}},"AuditLogViewModelRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogsViewModelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":7,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-audit-logs-view-model","template":"<div fxLayout=\"column\" class=\"m-4\" fxLayoutGap=\"1.5rem\">\n <app-audit-log-list [objectId]=\"data?.modelId\" [objectType]=\"data?.modelType\" [showExportButtons]=\"false\">\n </app-audit-log-list>\n</div>","styles":["::ng-deep app-audit-log-list .scroll-container{height:350px!important;overflow-y:scroll}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":17,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":18,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}]}},"AuditLogsViewModelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogsViewModelComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogsViewModelRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"AuditLogListModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogsViewModelComponent"}]}]}],"members":{}},"AuditLogsViewModelRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogRoutingModule"},{"__symbolic":"reference","name":"AuditLogListModule"},{"__symbolic":"reference","name":"AuditLogViewModule"}],"exports":[]}]}],"members":{}},"AuditLogRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":14,"character":12},"member":"forChild"},"arguments":[[{"path":"log-list","component":{"__symbolic":"reference","name":"AuditLogListComponent"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}]},{"path":"log-view/:id","component":{"__symbolic":"reference","name":"AuditLogViewComponent"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}]},{"path":"**","redirectTo":"log-list","pathMatch":"full"}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":15,"character":12}]}]}],"members":{}},"DateValidator":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"error","message":"Lambda not supported","line":3,"character":11,"module":"./lib/date-validator"}},"ImportCsvModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImportCsvComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":17,"character":4},{"__symbolic":"reference","name":"FileDropperModule"},{"__symbolic":"reference","name":"ImportCsvRoutingModule"},{"__symbolic":"reference","name":"ImportItemsModule"},{"__symbolic":"reference","name":"FailedItemsModule"}],"exports":[{"__symbolic":"reference","name":"ImportCsvComponent"}]}]}],"members":{}},"ImportCsvRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"ImportCsvComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":10,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-import-csv","template":"<div fxLayout=\"column\" fx class=\"m-4\">\n <h2 class=\"text-center\">\n {{importConfig?.importType}} Import\n <span>\n <button type=\"button\" *ngIf=\"failedItems.length > 0\" mat-raised-button color=\"warn\"\n (click)=\"reset()\">Reset</button>\n </span>\n </h2>\n\n <ng-container *ngIf=\"failedItems.length === 0\">\n <app-file-dropper *ngIf=\"fileData.length === 0\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n\n <app-import-items class=\"w-100\" *ngIf=\"fileData.length > 0\" [data]=\"fileData\" [importConfig]=\"importConfig\"\n (onSave)=\"mappingProcessed($event)\"></app-import-items>\n </ng-container>\n\n <app-failed-items class=\"w-100\" *ngIf=\"failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\"></app-failed-items>\n\n</div>","styles":[""]}]}],"members":{"importConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":30,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"fileChanged":[{"__symbolic":"method"}],"mappingProcessed":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"isValidDate":[{"__symbolic":"method"}]}},"ImportConfig":{"__symbolic":"class","members":{}},"ImportItemsRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"ImportItemsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-import-items","template":"<div fxLayout=\"column\" class=\"mt-2\">\n <p class=\"text-center secondary-color\">Map your column headers in your file to our properties</p>\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"submit()\" fxLayout=\"column\">\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\n </button>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\n <button mat-stroked-button color=\"primary\" class=\"mt-2\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>","styles":["table{width:100%}td,th{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"importConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"onSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":26,"character":16},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":28,"character":31}]}],"ngOnInit":[{"__symbolic":"method"}],"createImportMappingForm":[{"__symbolic":"method"}],"createField":[{"__symbolic":"method"}],"mapOutDataColumns":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"updatePropertyType":[{"__symbolic":"method"}],"uniqueValidator":[{"__symbolic":"method"}],"removeField":[{"__symbolic":"method"}]}},"ImportItemsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImportItemsComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":16,"character":4},{"__symbolic":"reference","name":"ImportItemsRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ImportItemsComponent"}]}]}],"members":{}},"FailedItemsRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"FailedItemsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-failed-items","template":"<div *ngIf=\"failedItems.length\" class=\"mt-4\">\n <div fxLayout fxLayoutAlign=\"center\">\n <h4>Failed Items</h4>\n </div>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\">\n <table class=\"table table-bordered table-striped table-hover table-sm\" fxFlex=\"80%\">\n <thead>\n <tr>\n <th>#</th>\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\n <th class=\"text-danger\">Error</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\n <tr>\n <td>{{i + 1}}</td>\n <td *ngFor=\"let field of selectedFields;\">\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\n {{ timesheet[field.property] | date:'mediumDate' }}\n </ng-container>\n <ng-template #elseProperty>\n {{ timesheet[field.property] }}\n </ng-template>\n </td>\n <td class=\"text-danger\">\n {{timesheet?.error}}\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n</div>","styles":[""]}]}],"members":{"failedItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"selectedFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"isValidDate":[{"__symbolic":"method"}]}},"FailedItemsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FailedItemsComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"FailedItemsRoutingModule"}],"exports":[{"__symbolic":"reference","name":"FailedItemsComponent"}]}]}],"members":{}},"LoginHistoryForUserModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"LoginHistoryForUserComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"LoginHistoryForUserRoutingModule"},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":17,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","name":"TimelineFilterModule"}],"exports":[{"__symbolic":"reference","name":"LoginHistoryForUserComponent"}]}]}],"members":{}},"LoginHistoryForUserRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":14,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"LoginHistoryForUserComponent"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}]}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":15,"character":12}]}]}],"members":{}},"LoginHistoryForUserComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":7,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-login-history-for-user","template":"<div class=\"mat-typography m-4\">\n <form fxLayoutAlign=\" start center\">\n <app-timeline-filter [form]=\"historyFilterForm\"></app-timeline-filter>\n </form>\n\n\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"loginHistoryList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"login-history-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let loginHistory; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Last Login</th>\n <td mat-cell *matCellDef=\"let loginHistory;\">\n {{loginHistory?.created_at | date:'medium' }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n </section>\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"userId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":26,"character":16}]}],"ngOnInit":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"filterChange":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBarModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":14,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"snack-bar-component-example-snack","template":"<div class=\"row-container\">\n <span class=\"icon-column\">\n <mat-icon class=\"success\"> check_circle_outline</mat-icon>\n </span>\n <span class=\"text-column\">\n {{ data }}\n </span>\n</div>","styles":[".error{color:#dc3545}.success{color:#28a745}.row-container{display:flex}.icon-column{flex:5%;padding-right:5px}.text-column{color:#fff;flex:95%;text-align:center}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":9,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MAT_SNACK_BAR_DATA","line":9,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"snack-bar-component-example-snack","template":"<div class=\"row-container\">\n <span class=\"icon-column\">\n <mat-icon class=\"error\"> cancel</mat-icon>\n </span>\n <span class=\"text-column\">\n {{ data }}\n </span>\n</div>","styles":[".error{color:#dc3545}.success{color:#28a745}.row-container{display:flex}.icon-column{flex:5%;padding-right:5px}.text-column{color:#fff;flex:95%;text-align:center}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MAT_SNACK_BAR_DATA","line":17,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]}},"ɵd":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":69,"character":45},"arguments":["HTTP_DYNAMIC_INTERCEPTORS"]},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":77,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":74,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":81,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":81,"character":17},"arguments":[{"__symbolic":"reference","name":"ɵd"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpHandler","line":79,"character":35},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":80,"character":22},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpInterceptor","line":81,"character":73}]}]}],"cache":[{"__symbolic":"method"}],"skipErrorHandler":[{"__symbolic":"method"}],"skipApiPrefix":[{"__symbolic":"method"}],"skipToken":[{"__symbolic":"method"}],"skipHeader":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"removeInterceptor":[{"__symbolic":"method"}],"addInterceptor":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵf":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/router","name":"RouteReuseStrategy","line":11,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"shouldDetach":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"shouldAttach":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"shouldReuseRoute":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-action-popup","template":"<div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>{{data.title}}</div>\n </div>\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\">\n <div fxFlex=\"100%\">{{data.message}}</div>\n\n <div fxFlex=\"100%\" fxLayout=\"row\" fxLayoutGap=\"1.5rem\" fxLayoutAlign=\"end\" class=\"my-4\">\n <button mat-raised-button (click)=\"closeDialog()\">\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n Proceed\n </button>\n </div>\n </div>\n\n </div>\n\n</div>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":13,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵg"}]},{"__symbolic":"reference","name":"ɵh"}]}],"ngOnInit":[{"__symbolic":"method"}],"closeDialog":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","members":{}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":19,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"app-data-table","template":"<div fxLayout=\"column\" [ngClass]=\"{\n 'mat-elevation-z1': !config.disableElevation\n }\" class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\" [ngStyle]=\"config.style\">\n <table mat-table [dataSource]=\"dataSource\" matSort [id]=\"elementId\">\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let index = index\">\n {{ (index + 1) }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"action-width d-print-none\">\n {{ config.customActionLabel }}\n </th>\n\n <td mat-cell *matCellDef=\"let element; let index = index\" class=\"d-print-none\">\n <div>\n <button *ngIf=\"\n config.actionsConfig.download && element[config.downloadLink]\n \" type=\"button\" mat-icon-button (click)=\"downloadClicked($event, element)\">\n <mat-icon>vertical_align_bottom</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.edit\" [disabled]=\"!this.checkEdit(element)\" type=\"button\"\n mat-icon-button (click)=\"editClicked($event, element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.print\" [disabled]=\"!this.checkPrint(element)\" type=\"button\"\n mat-icon-button (click)=\"printClicked($event,element)\">\n <mat-icon>print</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.view\" [disabled]=\"!this.checkView(element)\" type=\"button\"\n mat-icon-button (click)=\"viewClicked($event, element)\">\n <mat-icon>description</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.deactivate\" type=\"button\" mat-icon-button\n (click)=\"deactivateClicked($event, element)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <button #menuTrigger=\"matMenuTrigger\" *ngIf=\"\n config.actionsConfig.actionsMenu &&\n this.checkActions(element) &&\n config.actionsConfig.actionsMenu.length > 0\n \" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"actionsMenu\"\n (click)=\"actionMenuTriggerClick($event, menuTrigger)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n\n <mat-menu #actionsMenu=\"matMenu\">\n <div *ngFor=\"let item of config.actionsConfig.actionsMenu\">\n <button *ngIf=\"this.checkActionButton(element, item.value)\" mat-menu-item\n (click)=\"actionMenuClick($event, element, item.value)\">\n <span>{{ item.name }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n\n <!-- Actual Columns -->\n <ng-container matColumnDef=\"{{ column.value }}\" *ngFor=\"let column of config.columnsConfig\">\n <ng-container *ngIf=\"column?.sort; else noSort\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef>\n {{ column.title }}\n </th>\n </ng-template>\n <ng-container *ngIf=\"column.dateField; else currencyField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | date:column.format? column.format: 'mediumDate' }}\n </div>\n </td>\n </ng-container>\n\n <ng-template #currencyField>\n <div *ngIf=\"column.currencyField; else normalField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | currency: \"$\":'symbol' : '1.0-0' }}\n </div>\n </td>\n </div>\n </ng-template>\n\n <ng-template #normalField>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) }}\n </div>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"config.stickyHeader; else normalHeader\">\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns; sticky:true\"></tr>\n </ng-container>\n <ng-template #normalHeader>\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns;\">\n </tr>\n </ng-template>\n\n <div *ngIf=\"!config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\"></tr>\n </div>\n\n <div *ngIf=\"config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\" (click)=\"rowClicked($event, row)\"\n class=\"hoverable row-hover\"></tr>\n </div>\n </table>\n</div>","styles":["table{width:100%}.mat-table{background:inherit}.mat-column-select{overflow:initial}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0 2px}.action-width{min-width:175px;width:175px!important}.noOverFlow{overflow-x:auto;overflow-y:hidden}.scroll-container{max-height:400px;overflow:auto}.mat-header-row{background-color:inherit;position:sticky;top:0}tr.row-hover:hover{background-color:#dcdcdc}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px!important}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"selection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"action":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"selctionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":38,"character":3}}]}],"rowClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"tableScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"sortChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":41,"character":3}}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":48,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":48,"character":13},{"static":true}]}]}],"elementId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"isAllSelected":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"clearSelection":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"initializeConfig":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"editClicked":[{"__symbolic":"method"}],"viewClicked":[{"__symbolic":"method"}],"deactivateClicked":[{"__symbolic":"method"}],"downloadClicked":[{"__symbolic":"method"}],"printClicked":[{"__symbolic":"method"}],"rowClicked":[{"__symbolic":"method"}],"actionMenuClick":[{"__symbolic":"method"}],"actionMenuTriggerClick":[{"__symbolic":"method"}],"checkEdit":[{"__symbolic":"method"}],"checkView":[{"__symbolic":"method"}],"checkPrint":[{"__symbolic":"method"}],"checkActions":[{"__symbolic":"method"}],"checkActionButton":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"nextId":0}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-document-viewer","template":"<mat-card *ngIf=\"viewerType === 'image'\">\n <img [ngStyle]=\"config.imageStyle\" mat-card-image [src]=\"fileUrl\" />\n <mat-card-actions>\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit && !config.hideRemove\">\n Remove\n </button>\n </mat-card-actions>\n</mat-card>\n\n<div class=\"mat-elevation-z1 p-4\" *ngIf=\"viewerType !== 'image'\">\n <a [href]=\"fileUrl\" target=\"_blank\">{{fileName}}</a>\n <ngx-doc-viewer [ngStyle]=\"config.viewerStyle\" *ngIf=\"viewerType !== null\" [url]=\"fileUrl\" [viewer]=\"viewerType\">\n </ngx-doc-viewer>\n <div class=\"mt-2\" *ngIf=\"!config.hideRemove\">\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit\">\n Remove\n </button>\n </div>\n</div>","styles":[".image-fit{height:100%;object-fit:cover;width:100%}"]}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"file":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"fileUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"disableEdit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"remove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"removeFile":[{"__symbolic":"method"}],"initData":[{"__symbolic":"method"}],"getFileExtension":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"entity-file-form","template":"<form [formGroup]=\"entityFileGroup\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <div>Entity File</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\" fxLayoutAlign.=\"start\">\n <ng-container *ngIf=\"!hideTitleAndDetails\">\n <mat-form-field>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\">\n </mat-form-field>\n <mat-form-field>\n <textarea matInput formControlName=\"details\" placeholder=\"Details\" autocomplete=\"off\"></textarea>\n </mat-form-field>\n </ng-container>\n\n <ng-template #fileUpload>\n <section fxFlex=\"100%\">\n <div>Entity File*</div>\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n <div class=\"text-danger\" *ngIf=\"isFieldValid('url')\">\n {{getErrorMessage(\"url\")}}\n </div>\n </section>\n </ng-template>\n\n\n <div fxFlex=\"100%\" class=\"mt-2\" *ngIf=\"entityFileGroup.get('url').value;else fileUpload;\">\n <app-document-viewer [file]=\"entityFileGroup.get('file').value\"\n [fileUrl]=\"entityFileGroup.get('url').value\" [config]=\"this.viewerConfig\" (remove)=\"removeFile()\"\n [disableEdit]=\"updateMode\">\n </app-document-viewer>\n\n </div>\n\n <div class=\"mt-4 mb-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" color=\"primary\">Save</button>\n </div>\n </div>\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":32,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵk"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":34,"character":16},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵn"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"fileChanged":[{"__symbolic":"method"}],"removeFile":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getEntityFiles":[{"__symbolic":"method"}],"createEntityFile":[{"__symbolic":"method"}],"updateEntityFile":[{"__symbolic":"method"}],"deleteEntityFile":[{"__symbolic":"method"}],"uploadEntityFile":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBar","line":15,"character":33}]}],"addAlert":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":13,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-entity-files-view-all","template":"<div fxLayout=\"column\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"!displayMode\">\n <div fxLayout=\"column\" fxLayoutGap=\"0.25rem\">\n <h3 class=\"font-weight-bold\" fxLayoutAlign=\"center center\"> Files\n <button type=\"button\" class=\"mx-1\" mat-mini-fab color=\"primary\" (click)=\"addEntityFile()\" *ngIf=\"!viewOnly\">\n <mat-icon>add</mat-icon>\n </button>\n </h3>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start\" *ngIf=\"!removeSearch\">\n <mat-form-field class=\"mt-1\">\n <input type=\"text\" matInput [formControl]=\"search\" placeholder=\"Title\" name=\"title\"\n autocomplete=\"off\" />\n <button mat-button *ngIf=\"filters.title\" matSuffix mat-icon-button (click)=\"resetFieldValue()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <table mat-table [dataSource]=\"entityFiles\" class=\"w-100\" matSort multiTemplateDataRows\n infiniteScrollContainer=\"body\" infiniteScroll [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\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 </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\n </ng-container>\n\n <!-- Details Column -->\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.details}} </td>\n </ng-container>\n\n <!-- File Column -->\n <ng-container matColumnDef=\"file\">\n <th mat-header-cell *matHeaderCellDef> File </th>\n <td mat-cell *matCellDef=\"let element\">\n <a href=\"{{element.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" style=\"min-width:110px\">\n <button type=\"button\" mat-icon-button (click)=\"editEntityFile(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteEntityFile(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n</div>\n\n<div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\n\n <div *ngFor=\"let efile of entityFiles\">\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\"\n [disableEdit]=\"true\">\n </app-document-viewer>\n <a href=\"{{efile.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </div>\n\n</div>","styles":[""]}]}],"members":{"entityId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"entityType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"viewOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"removeSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"hideTitleAndDetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"displayMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":39,"character":21},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":41,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"fetchEntityFilesDetails":[{"__symbolic":"method"}],"addEntityFile":[{"__symbolic":"method"}],"editEntityFile":[{"__symbolic":"method"}],"deleteEntityFile":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}]}},"ɵp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-file-dropper","template":"<div\n id=\"{{ config.containerId }}\"\n [ngStyle]=\"config.styles\"\n class=\"file-border\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n (dragover)=\"dragOver($event)\"\n (click)=\"clickEvent($event)\"\n (drop)=\"dropEvent($event)\"\n [ngClass]=\"{ 'disable-div': isSingleMode && fileArray.length > 0 }\"\n>\n <div fxFill fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <div>\n <span>Drag and drop file</span>\n </div>\n\n <div class=\"mt-2\">\n <span>or</span>\n </div>\n\n <div class=\"mt-2\">\n <button mat-raised-button color=\"primary\" type=\"button\">Browse</button>\n </div>\n\n <div class=\"mt-4\">\n <span>Supported files</span>\n </div>\n\n <div *ngIf=\"config.acceptFileText\">\n <span>{{ config.acceptFileText }}</span>\n </div>\n </div>\n</div>\n<input\n type=\"file\"\n id=\"{{ config.fileId }}\"\n [accept]=\"config.acceptFile\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple === true\"\n style=\"display:none\"\n/>\n","styles":[".disable-div{cursor:not-allowed}.file-border{border:1px dashed #989898}"]}]}],"members":{"fileArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"fileChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"dragEnter":[{"__symbolic":"method"}],"dragOver":[{"__symbolic":"method"}],"dragLeave":[{"__symbolic":"method"}],"dropEvent":[{"__symbolic":"method"}],"onFileChange":[{"__symbolic":"method"}],"addFiles":[{"__symbolic":"method"}],"sortFiles":[{"__symbolic":"method"}],"fileSizeAllowed":[{"__symbolic":"method"}],"clickEvent":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-note-list","template":"<div fxLayout=\"column\" fxLayoutGap=\"1.5rem\" class=\"m-4\">\n\n <div fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"1rem\">\n <h3 class=\"m-0 font-weight-bold mr-3\">{{labelText}}s</h3>\n <button class=\"d-print-none\" *ngIf=\"!readonly\" mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"addNote()\">+ Add</button>\n </div>\n\n <div class=\"w-00 scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"notes\" class=\"w-100\" multiTemplateDataRows>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let note; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n\n <ng-container matColumnDef=\"note\">\n <th mat-header-cell *matHeaderCellDef> {{labelText}} </th>\n <td mat-cell *matCellDef=\"let note\">\n {{note?.note}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"d-print-none\"> Actions </th>\n <td mat-cell *matCellDef=\"let note\" class=\"d-print-none\">\n <button type=\"button\" mat-icon-button (click)=\"editNote(note)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteNote(note)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>","styles":[".scroll-container{max-height:400px;overflow-y:auto}"]}]}],"members":{"relatedModelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"modelType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"labelText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":31,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"addNote":[{"__symbolic":"method"}],"editNote":[{"__symbolic":"method"}],"deleteNote":[{"__symbolic":"method"}],"resetScroll":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getNotes":[{"__symbolic":"method"}],"addNote":[{"__symbolic":"method"}],"editNote":[{"__symbolic":"method"}],"deleteNote":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-note-form","template":"<form [formGroup]=\"noteFormGroup\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <div>{{data?.labelText}}</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n <mat-form-field fxFlex=\"100%\">\n <textarea matInput formControlName=\"note\" placeholder=\"{{data?.labelText}}\" autocomplete=\"off\"\n required></textarea>\n <mat-error *ngIf=\"isFieldValid('note')\">{{\n getErrorMessage(\"note\")\n }}</mat-error>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" color=\"primary\">Save</button>\n </div>\n </div>\n </div>\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":26,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵs"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":27,"character":16},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵr"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]}},"ɵt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":12,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-searchable-selector","providers":[{"provide":{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldControl","line":19,"character":15},"useExisting":{"__symbolic":"reference","name":"ɵt"}}],"template":"<div [formGroup]=\"selectorForm\" class=\"searchable-selctor-container\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [multiple]=\"multiple\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\" msInfiniteScroll (infiniteScroll)=\"onScroll()\"\n (openedChange)=\"openedChange($event)\">\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n </mat-form-field>\n <div>\n <!-- TODO:Implement scroll only for options and have search fixed -->\n <mat-option *ngFor=\" let item of dataItems\" [value]=\"getPropertyValue(item,valueField)\">\n {{getPropertyValue(item,titleField)}}\n </mat-option>\n </div>\n <div fxlayout=\"column\" class=\"w-100\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"my-4\" color=\"primary\" diameter=\"30\" *ngIf=\"isLoading\"></mat-spinner>\n </div>\n </mat-select>\n <mat-icon *ngIf=\"add\" class=\"relative-icon\" matSuffix (click)=\"addItem($event)\">add_circle_outline</mat-icon>\n <mat-icon *ngIf=\"edit && selectedValue\" class=\"relative-icon\" matSuffix (click)=\"editItem($event)\">edit</mat-icon>\n</div>","styles":[".searchable-selctor-container{display:flex}.relative-icon{position:relative;top:-4px}"]}]}],"members":{"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"titleField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"apiUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["value"]}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"selectedValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"selectedValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"enableSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"add":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"addConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"edit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"editConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"sortBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"searchField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"itemComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"selectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":66,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":75,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":84,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":102,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":102,"character":17}}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":97,"character":17},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":98,"character":27},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":100,"character":36,"context":{"typeName":"HTMLElement"},"module":"./lib/searchable-selector/searchable-selector.component"}]},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":101,"character":20},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":102,"character":42}]}],"openedChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"fetchItemList":[{"__symbolic":"method"}],"setDescribedByIds":[{"__symbolic":"method"}],"onContainerClick":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"getPropertyValue":[{"__symbolic":"method"}],"_handleInput":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reloadData":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"addItem":[{"__symbolic":"method"}],"editItem":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"nextId":0}},"ɵu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[msInfiniteScroll]"}]}],"members":{"threshold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"debounceTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"complete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"infiniteScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelect","line":22,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":22,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"evaluateThreshold":[{"__symbolic":"method"}],"registerScrollListener":[{"__symbolic":"method"}],"handleScrollEvent":[{"__symbolic":"method"}],"getSelectItemHeightPx":[{"__symbolic":"method"}]}},"ɵv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"num-items-selector","template":"<select [(ngModel)]=\"numItems\" class=\"form-control\" id=\"numItems\" name=\"numItems\" (change)=\"numItemsChanged()\">\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"250\">250</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"1000\">1000</option>\r\n <option value=\"2000\">2000</option>\r\n <option value=\"3000\">3000</option>\r\n <option value=\"4000\">4000</option>\r\n <option value=\"5000\">5000</option>\r\n <option value=\"5000000000\">All</option>\r\n</select> "}]}],"members":{"numItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"numItemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":14,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"numItemsChanged":[{"__symbolic":"method"}]}},"ɵw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"number-selector","template":"<div class=\"number-selector-wrapper\">\n <select name=\"selectedValue\" [(ngModel)]=\"selectedValue\" class=\"form-control\" (change)=\"numChanged()\">\n <option value=\"\">-- Student Status --</option>\n <option *ngFor=\"let start_value of items;\" value=\"{{start_value}}\">{{start_value}}</option>\n </select>\n</div>"}]}],"members":{"start_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"end_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":5}}]}],"selectedValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":5}}]}],"selectedValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"numChanged":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-timeline-filter","template":"<ng-container [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{labelText}}</mat-label>\n <mat-select (selectionChange)=\"changeTimeline($event.value)\" [value]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>","styles":[""]}]}],"members":{"timelines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"labelText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"dateFrom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"dateTo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"defaultValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"setFieldValue":[{"__symbolic":"method"}],"changeTimeline":[{"__symbolic":"method"}]}},"ɵy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"ɵz":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-loader","template":"<div [hidden]=\"!isLoading\">\n <mat-progress-spinner mode=\"indeterminate\" [strokeWidth]=\"2\" [diameter]=\"32 * size\"></mat-progress-spinner>\n <span class=\"message\">{{message}}</span>\n</div>\n","styles":[".mat-progress-spinner{display:inline-block;vertical-align:middle}.message{margin-left:.5em}"]}]}],"members":{"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"message":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":22,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"app-email-subscription-user-form","template":"<form [formGroup]=\"esUserFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription User</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\" required\n [selectedValue]=\"selectedUser\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('user_id')\">{{getErrorMessage('user_id')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\"\n required [selectedValue]=\"selectedType\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('email_type_id')\">{{getErrorMessage('email_type_id')}}</mat-error>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":42,"character":12}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":38,"character":26},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵba"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵe"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":16,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"app-email-subscription-user-list","template":"<div class=\"mat-typography m-4\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <app-email-subscription-user-list-filter (valueChange)=\"filterChange($event)\">\n </app-email-subscription-user-list-filter>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionUser()\">+\n User Subscription</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"esUserList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-user-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let esUser; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"user.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> User </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.user?.name }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email_type.title\">\n <th mat-header-cell *matHeaderCellDef> Email Type </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.email_type?.title }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"creator.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Creator</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.creator?.name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created On</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.created_at | date:'medium' }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let esUser\">\n <button type=\"button\" mat-icon-button (click)=\"deleteEmailSubscriptionUser($event,esUser)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"editEmailSubscriptionUser($event,esUser)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n </section>\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":31,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":31,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":44,"character":20},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":46,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"columnsChange":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"filterChange":[{"__symbolic":"method"}],"addEmailSubscriptionUser":[{"__symbolic":"method"}],"editEmailSubscriptionUser":[{"__symbolic":"method"}],"deleteEmailSubscriptionUser":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"changeSort":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":12,"character":30},{"__symbolic":"reference","name":"ɵbd"}]}],"canActivate":[{"__symbolic":"method"}],"canLoad":[{"__symbolic":"method"}],"isUserAuthenticated":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbe"}]}],"setCredentials":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"getExpiration":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbf"}]}],"getConfigsRaw":[{"__symbolic":"method"}],"getProjectKey":[{"__symbolic":"method"}],"getApiUrl":[{"__symbolic":"method"}],"getAuthClientSecret":[{"__symbolic":"method"}],"getStorage":[{"__symbolic":"method"}],"getAuthGrantType":[{"__symbolic":"method"}],"getCredentialsKey":[{"__symbolic":"method"}]},"statics":{"BASE_CREDENTIALS":"credentials","ɵprov":{}}},"ɵbf":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"loadFromMap":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":5,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-email-subscription-user-list-filter","template":"<form [formGroup]=\"esUserFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field class=\"ml-3\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class=\"ml-3\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</form>","styles":[""]}]}],"members":{"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":17,"character":26}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":21,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":22,"character":1},"arguments":[{"selector":"app-email-subscription-type-form","template":"<form [formGroup]=\"emailSubscriptionTypeFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription Type</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('title')\">{{getErrorMessage('title')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"code\" placeholder=\"Code\" autocomplete=\"off\" required />\n <mat-hint align=\"end\">Unique Value</mat-hint>\n <mat-error *ngIf=\"isFieldValid('code')\">{{getErrorMessage('code')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <mat-label>Frequency</mat-label>\n <app-searchable-selector formControlName=\"frequency_id\" apiUrl=\"api/email-subscription-frequencies\"\n [(selectedValue)]=\"selectedFrequency\" [enableSearch]=\"false\" required>\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('frequency_id')\">{{getErrorMessage('frequency_id')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <textarea matInput formControlName=\"description\" placeholder=\"Description\"\n autocomplete=\"off\"></textarea>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":41,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":41,"character":12}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":37,"character":26},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵbh"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵe"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":12,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-email-subscription-type-list","template":"<div class=\"mat-typography m-4\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <mat-form-field>\n <input matInput [formControl]=\"search\" placeholder=\"Email Type\" autocomplete=\"off\" />\n <button mat-button matSuffix mat-icon-button>\n <mat-icon>search</mat-icon>\n </button>\n <button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button (click)=\"search.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionType()\">+ Email\n Type</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"emailSubscriptionTypeList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-type-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Title </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.title }} </td>\n </ng-container>\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.code }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"frequency.title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.frequency?.title }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.description }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType\">\n <button type=\"button\" mat-icon-button\n (click)=\"deleteEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button\n (click)=\"editEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n </section>\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":30,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":30,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":44,"character":20},{"__symbolic":"reference","name":"ɵe"}]}],"ngOnInit":[{"__symbolic":"method"}],"columnsChange":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"addEmailSubscriptionType":[{"__symbolic":"method"}],"editEmailSubscriptionType":[{"__symbolic":"method"}],"deleteEmailSubscriptionType":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"changeSort":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":5,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-email-subscription-for-user","template":"<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"ngOnInit":[{"__symbolic":"method"}],"fetchSubscriptions":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"unsubscribe":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":13,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-techlify-updates-list","template":"<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n <button mat-raised-button (click)=\"modifyTechlifyUpdate()\" class=\"primary-bg text-white\">\n <mat-icon>\n add\n </mat-icon>\n Create\n </button>\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\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 </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"modifyTechlifyUpdate(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"deleteTechlifyUpdate(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":38,"character":20},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":41,"character":16}]}],"ngOnInit":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"modifyTechlifyUpdate":[{"__symbolic":"method"}],"deleteTechlifyUpdate":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"sortColumn":[{"__symbolic":"method"}],"assignFilter":[{"__symbolic":"method"}]}},"ɵbl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getTechlifyUpdates":[{"__symbolic":"method"}],"createTechlifyUpdate":[{"__symbolic":"method"}],"updateTechlifyUpdate":[{"__symbolic":"method"}],"deleteTechlifyUpdate":[{"__symbolic":"method"}],"getTechlifyUpdate":[{"__symbolic":"method"}],"getNewUpdateForCurrentUser":[{"__symbolic":"method"}],"createUpdateViewRecord":[{"__symbolic":"method"}],"updateCurrentUserUpdates":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":12},"member":"forChild"},"arguments":[[{"path":"","redirectTo":"all","pathMatch":"full"},{"path":"all","component":{"__symbolic":"reference","name":"ɵbk"}},{"path":"**","redirectTo":"all","pathMatch":"full"}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":12}]}]}],"members":{}},"ɵbn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbo"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","module":"ngx-editor","name":"NgxEditorModule","line":15,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵbo"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbo"}]}]}],"members":{}},"ɵbo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"app-techlify-update-form","template":"<form [formGroup]=\"techlifyUpdateForm\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <h2>\n App Update Form\n </h2>\n </div>\n <div mat-dialog-content fxLayout=\"column\" fxLayoutGap=\"1rem\">\n <mat-form-field fxFlex=\"100%\">\n <mat-label>Title</mat-label>\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required />\n <button mat-button *ngIf=\"getFieldValue('title')\" matSuffix mat-icon-button (click)=\"resetFieldValue('title')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('title')\">\n {{getErrorMessage('title')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\">\n <input matInput [matDatepicker]=\"released_on\" formControlName=\"released_on\" placeholder=\"Released on\" readonly\n (click)=\"released_on.open()\" required />\n <mat-datepicker-toggle matSuffix [for]=\"released_on\"></mat-datepicker-toggle>\n <mat-datepicker #released_on></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('released_on')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('released_on')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('released_on')\">\n {{getErrorMessage('released_on')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\">\n <mat-label>Version</mat-label>\n <input matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" required />\n <button mat-button *ngIf=\"getFieldValue('version')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('version')\">\n {{getErrorMessage('version')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\">\n <mat-label>Learn more link</mat-label>\n <input matInput formControlName=\"learn_more_link\" placeholder=\"Learn More Link\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"getFieldValue('learn_more_link')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('learn_more_link')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('learn_more_link')\">\n {{getErrorMessage('learn_more_link')}}\n </mat-error>\n </mat-form-field>\n\n <div fxFlex=\"100%\">\n <div class=\"NgxEditor__Wrapper\">\n <ngx-editor-menu [toolbar]=\"toolbar\" [editor]=\"editor\"> </ngx-editor-menu>\n <ngx-editor formControlName=\"description\" [editor]=\"editor\" placeholder=\"Description\">\n </ngx-editor>\n </div>\n <mat-error *ngIf=\"isFieldValid('description')\">\n {{getErrorMessage('description')}}\n </mat-error>\n </div>\n </div>\n <div mat-dialog-actions fxFlex=\"100%\" fxLayout fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n <button mat-button class=\"mt-2\" type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" class=\"btn-primary mt-2\">\n Save\n </button>\n </div>\n </div>\n</form>","styles":[""]}]}],"members":{"onSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":45,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":45,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵbo"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":46,"character":16},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵbl"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]}},"ɵbp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbq"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":11,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵbq"}]}]}],"members":{}},"ɵbq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-read-more","template":"<div [innerHTML]=\"currentText\"></div>\n<a href=\"javascript:;\" *ngIf=\"!hideToggle\" class=\"primary-color hoverable\" (click)=\"toggleView()\">Read\n {{ isCollapsed ? \"more\" : \"less\" }}</a>","styles":["div.collapsed{height:250px;overflow:hidden}"]}]}],"members":{"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"maxLength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"toggleView":[{"__symbolic":"method"}],"determineView":[{"__symbolic":"method"}]}},"ɵbr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":12},"member":"forChild"},"arguments":[[{"path":"","redirectTo":"update-history","pathMatch":"full"},{"path":"update-history","component":{"__symbolic":"reference","name":"ɵbs"}},{"path":"**","redirectTo":"all","pathMatch":"full"}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":12}]}]}],"members":{}},"ɵbs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":11,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-techlify-update-history","template":"<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\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 </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"openUpdateView(element)\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":36,"character":20},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":38,"character":16},{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"sortColumn":[{"__symbolic":"method"}],"assignFilter":[{"__symbolic":"method"}],"openUpdateView":[{"__symbolic":"method"}],"updateCurrentUserUpdates":[{"__symbolic":"method"}]}},"ɵbt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-update-notifier-snack","template":"<div fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\">\n <span fxLayoutAlign=\"center center\">\n <mat-icon class=\"large-icon primary-color\">\n <span class=\"material-icons-outlined\">\n grading\n </span>\n </mat-icon>\n </span>\n <div fxLayout=\"column\">\n <h5 class=\"primary-color text-truncate\" matTooltip=\"{{techlifyUpdate?.title}}\"\n matTooltipPosition=\"below\">\n App Update: {{techlifyUpdate?.title}}\n </h5>\n <small class=\"text-muted\">\n Version : {{techlifyUpdate?.version}}\n </small>\n </div>\n </div>\n <div fxLayoutAlign=\"end center\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n <div fxLayout=\"row\" class=\"text-muted\" style=\"margin-top: 1rem;\" [innerHtml]=\"descriptionText\">\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <button type=\"button\" mat-button class=\"primary-color\" (click)=\"openUpdateHistory()\">\n <mat-icon>\n history\n </mat-icon>\n Update History\n </button>\n <button type=\"button\" mat-raised-button class=\"primary-bg text-white\" (click)=\"openUpdateView()\">\n View\n </button>\n </div>\n</div>","styles":[".large-icon{transform:scale(2.3)}.primary-color{color:#009fdd!important}.primary-bg{background-color:#009fdd!important}.text-muted,.text-white{color:#d3d3d3}.text-truncate{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:400px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MAT_SNACK_BAR_DATA","line":20,"character":12}]}],null,null,null,null,null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"MatSnackBarRef","module":"@angular/material/snack-bar","arguments":[{"__symbolic":"reference","name":"EmbeddedViewRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":22,"character":20},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":23,"character":20},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"determineDescription":[{"__symbolic":"method"}],"openUpdateView":[{"__symbolic":"method"}],"openUpdateHistory":[{"__symbolic":"method"}],"createUpdateViewRecord":[{"__symbolic":"method"}]}},"ɵbu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbv"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":13,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵbv"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbv"}]}]}],"members":{}},"ɵbv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-update-view","template":"<div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n <div fxFlex=\"80%\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\">\n <span fxFlex=\"calc(10%-1rem)\" fxLayoutAlign=\"start center\">\n <mat-icon class=\"large-icon primary-color\">\n <span class=\"material-icons-outlined\">\n grading\n </span>\n </mat-icon>\n </span>\n <div fxFlex=\"calc(90%-1rem)\">\n <div fxLayout=\"column\" fxLayoutAlign=\"start\">\n <div fxLayout>\n <h5 class=\"primary-color\" style=\"margin-bottom:0;text-align: left;\">\n App Update: {{techlifyUpdate?.title}}\n </h5>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\n <small class=\"text-muted\">\n <b>Release On</b> : {{techlifyUpdate?.released_on | date: 'mediumDate'}}\n </small>\n <small class=\"text-muted\">\n <b>Version</b> : {{techlifyUpdate?.version}}\n </small>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div fxLayoutAlign=\"end center\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div mat-dialog-content style=\"height: 500px;overflow: auto;\">\n <div fxLayout=\"column\" class=\"text-muted\" style=\"margin-top: 1rem;\" [innerHtml]=\"techlifyUpdate?.description\">\n </div>\n </div>\n\n <div mat-dialog-actions fxLayout=\"row\" [fxLayoutAlign]=\"!this.data?.isFromHistory ? 'space-between' : 'end'\">\n <button type=\"button\" mat-button class=\"primary-color\" (click)=\"openUpdateHistory()\"\n *ngIf=\"!this.data?.isFromHistory\">\n <mat-icon>\n history\n </mat-icon>\n Update History\n </button>\n <a *ngIf=\"techlifyUpdate?.learn_more_link\" [href]=\"techlifyUpdate?.learn_more_link\" target=\"_blank\"\n style=\"text-decoration: none;\">\n <button type=\"button\" mat-button class=\"text-muted\">\n Learn More\n </button>\n </a>\n <button type=\"button\" mat-stroked-button class=\"primary-color\" (click)=\"close()\">\n OK\n </button>\n </div>\n</div>\n","styles":[".large-icon{transform:scale(2.3)}.primary-color{color:#009fdd!important}.primary-bg{background-color:#009fdd!important}.text-muted,.text-white{color:#d3d3d3}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":17,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵbv"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":18,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"openUpdateHistory":[{"__symbolic":"method"}]}},"ɵbw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"GET":[{"__symbolic":"method"}],"POST":[{"__symbolic":"method"}],"POSTRAW":[{"__symbolic":"method"}],"PUT":[{"__symbolic":"method"}],"PATCH":[{"__symbolic":"method"}],"DELETE":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"MaterialModule":"./lib/material.module","CoreModule":"./lib/core/core.module","ActionPopupModule":"./lib/action-popup/action-popup.module","DataTableModule":"./lib/data-table/data-table.module","DocumentViewerModule":"./lib/document-viewer/document-viewer.module","EntityFilesViewAllModule":"./lib/entity-files/entity-files-view-all.module","FileDropperModule":"./lib/file-dropper/file-dropper.module","NoteModule":"./lib/note/note.module","SearchableSelectorModule":"./lib/searchable-selector/searchable-selector.module","UtilityModule":"./lib/utility/utility.module","TimelineFilterModule":"./lib/timeline-filter/timeline-filter.module","LoaderModule":"./lib/loader/loader.module","EmailSubscriptionModule":"./lib/email-subscription/email-subscription.module","EmailSubscriptionRoutingModule":"./lib/email-subscription/email-subscription-routing.module","EmailSubscriptionUserModule":"./lib/email-subscription/email-subscription-user/email-subscription-user.module","EmailSubscriptionUserRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-routing.module","EmailSubscriptionUserFormModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module","EmailSubscriptionUserFormRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module","EmailSubscriptionUserListModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module","esulr":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module","EmailSubscriptionUserListRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module","EmailSubscriptionUserListFilterRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module","EmailSubscriptionUserListFilterModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module","EmailSubscriptionTypeRoutingModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-routing.module","EmailSubscriptionTypeModule":"./lib/email-subscription/email-subscription-type/email-subscription-type.module","EmailSubscriptionTypeFormRoutingModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module","EmailSubscriptionTypeFormModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module","estlr":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module","EmailSubscriptionTypeListRoutingModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module","EmailSubscriptionTypeListModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module","esfur":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module","EmailSubscriptionForUserRoutingModule":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module","EmailSubscriptionForUserModule":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module","TechlifyUpdateModule":"./lib/techlify-update/techlify-update.module","TechlifyUpdateHistoryModule":"./lib/techlify-update/techlify-update-history/techlify-update-history.module","UpdateNotifierModule":"./lib/techlify-update/update-notifier/update-notifier.module","UpdateNotifierComponent":"./lib/techlify-update/update-notifier/update-notifier.component","ExportExcelButtonComponent":"./lib/export-excel/export-excel-button/export-excel-button.component","ExportExcelModule":"./lib/export-excel/export-excel.module","AuditLogForModelComponent":"./lib/audit-log/audit-log-for-model/audit-log-for-model.component","AuditLogForModelModule":"./lib/audit-log/audit-log-for-model/audit-log-for-model.module","AuditLogForModelRoutingModule":"./lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module","AuditLogListComponent":"./lib/audit-log/audit-log-list/audit-log-list.component","AuditLogListModule":"./lib/audit-log/audit-log-list/audit-log-list.module","AuditLogListRoutingModule":"./lib/audit-log/audit-log-list/audit-log-list-routing.module","AuditLogListFilterComponent":"./lib/audit-log/audit-log-list-filter/audit-log-list-filter.component","AuditLogListFilterModule":"./lib/audit-log/audit-log-list-filter/audit-log-list-filter.module","AuditLogListFilterRoutingModule":"./lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module","AuditLogViewComponent":"./lib/audit-log/audit-log-view/audit-log-view.component","AuditLogViewModule":"./lib/audit-log/audit-log-view/audit-log-view.module","AuditLogViewRoutingModule":"./lib/audit-log/audit-log-view/audit-log-view-routing.module","AuditLogViewModelComponent":"./lib/audit-log/audit-log-view-model/audit-log-view-model.component","AuditLogViewModelModule":"./lib/audit-log/audit-log-view-model/audit-log-view-model.module","AuditLogViewModelRoutingModule":"./lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module","AuditLogsViewModelComponent":"./lib/audit-log/audit-logs-view-model/audit-logs-view-model.component","AuditLogsViewModelModule":"./lib/audit-log/audit-logs-view-model/audit-logs-view-model.module","AuditLogsViewModelRoutingModule":"./lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module","AuditLogModule":"./lib/audit-log/audit-log.module","AuditLogRoutingModule":"./lib/audit-log/audit-log-routing.module","DateValidator":"./lib/date-validator","ImportCsvModule":"./lib/import-csv/import-csv.module","ImportCsvRoutingModule":"./lib/import-csv/import-csv-routing.module","ImportCsvComponent":"./lib/import-csv/import-csv.component","ImportConfig":"./lib/import-csv/import-config","ImportItemsRoutingModule":"./lib/import-csv/import-items/import-items-routing.module","ImportItemsComponent":"./lib/import-csv/import-items/import-items.component","ImportItemsModule":"./lib/import-csv/import-items/import-items.module","FailedItemsRoutingModule":"./lib/import-csv/failed-items/failed-items-routing.module","FailedItemsComponent":"./lib/import-csv/failed-items/failed-items.component","FailedItemsModule":"./lib/import-csv/failed-items/failed-items.module","LoginHistoryForUserModule":"./lib/login-history-for-user/login-history-for-user.module","LoginHistoryForUserRoutingModule":"./lib/login-history-for-user/login-history-for-user-routing.module","LoginHistoryForUserComponent":"./lib/login-history-for-user/login-history-for-user.component","ɵa":"./lib/core/snack/snack.module","ɵb":"./lib/core/snack/snack.component","ɵc":"./lib/core/snack/snack.component","ɵd":"./lib/core/http.service","ɵe":"./lib/core/http.service","ɵf":"./lib/core/route-reusable-strategy","ɵg":"./lib/action-popup/action-popup.component","ɵh":"./lib/action-popup/action-popup.model","ɵi":"./lib/data-table/data-table.component","ɵj":"./lib/document-viewer/document-viewer.component","ɵk":"./lib/entity-files/entity-file-form/entity-file-form.component","ɵl":"./lib/core/form-validator.service","ɵm":"./lib/entity-files/entity-file.service","ɵn":"./lib/core/alert.service","ɵo":"./lib/entity-files/entity-files-view-all.component","ɵp":"./lib/file-dropper/file-dropper.component","ɵq":"./lib/note/note-list/note-list.component","ɵr":"./lib/note/note.service","ɵs":"./lib/note/note-form/note-form.component","ɵt":"./lib/searchable-selector/searchable-selector.component","ɵu":"./lib/searchable-selector/mat-select-infinite-scroll.directive","ɵv":"./lib/utility/num-items-selector.component","ɵw":"./lib/utility/number-selector.component","ɵx":"./lib/timeline-filter/timeline-filter.component","ɵy":"./lib/timeline-filter/timeline-filter-routing.module","ɵz":"./lib/loader/loader.component","ɵba":"./lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component","ɵbb":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component","ɵbc":"./lib/core/authentication.guard","ɵbd":"./lib/core/credentials.service","ɵbe":"./lib/core/config.service","ɵbf":"./lib/core/techlify-config.model","ɵbg":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component","ɵbh":"./lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component","ɵbi":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component","ɵbj":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component","ɵbk":"./lib/techlify-update/techlify-updates-list/techlify-updates-list.component","ɵbl":"./lib/techlify-update/techlify-update.service","ɵbm":"./lib/techlify-update/techlify-update-routing.module","ɵbn":"./lib/techlify-update/techlify-update-form/techlify-update-form.module","ɵbo":"./lib/techlify-update/techlify-update-form/techlify-update-form.component","ɵbp":"./lib/techlify-update/read-more/read-more.module","ɵbq":"./lib/techlify-update/read-more/read-more.component","ɵbr":"./lib/techlify-update/techlify-update-history/techlify-update-history-routing.module","ɵbs":"./lib/techlify-update/techlify-update-history/techlify-update-history.component","ɵbt":"./lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component","ɵbu":"./lib/techlify-update/update-view/update-view.module","ɵbv":"./lib/techlify-update/update-view/update-view.component","ɵbw":"./lib/core/dataManager.service"},"importAs":"ngx-techlify-core"}
|
|
1
|
+
{"__symbolic":"module","version":4,"exports":[{"from":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter.component"},{"from":"./lib/snack/snack.module"},{"from":"./lib/alert.service"},{"from":"./lib/api-prefix.interceptor"},{"from":"./lib/authentication.guard"},{"from":"./lib/authentication.service"},{"from":"./lib/cache.interceptor"},{"from":"./lib/config.service"},{"from":"./lib/credentials.service"},{"from":"./lib/error-handler.interceptor"},{"from":"./lib/error-handler.service"},{"from":"./lib/form-validator.service"},{"from":"./lib/http-cache.service"},{"from":"./lib/http.service"},{"from":"./lib/logger.service"},{"from":"./lib/route-reusable-strategy"},{"from":"./lib/storage.service"},{"from":"./lib/techlify-config.model"},{"from":"./lib/token.interceptor"},{"from":"./lib/dataManager.service"}],"metadata":{"MaterialModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":36,"character":1},"arguments":[{"exports":[{"__symbolic":"reference","module":"@angular/material/button","name":"MatButtonModule","line":38,"character":4},{"__symbolic":"reference","module":"@angular/material/checkbox","name":"MatCheckboxModule","line":39,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatCommonModule","line":40,"character":4},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialogModule","line":41,"character":4},{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldModule","line":42,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":43,"character":4},{"__symbolic":"reference","module":"@angular/material/input","name":"MatInputModule","line":44,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatLineModule","line":45,"character":4},{"__symbolic":"reference","module":"@angular/material/menu","name":"MatMenuModule","line":46,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatNativeDateModule","line":47,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatOptionModule","line":48,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":49,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatPseudoCheckboxModule","line":50,"character":4},{"__symbolic":"reference","module":"@angular/material/core","name":"MatRippleModule","line":51,"character":4},{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelectModule","line":52,"character":4},{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSortModule","line":53,"character":4},{"__symbolic":"reference","module":"@angular/material/table","name":"MatTableModule","line":54,"character":4},{"__symbolic":"reference","module":"@angular/material/card","name":"MatCardModule","line":55,"character":4},{"__symbolic":"reference","module":"@angular/material/divider","name":"MatDividerModule","line":56,"character":4},{"__symbolic":"reference","module":"@angular/material/chips","name":"MatChipsModule","line":57,"character":4},{"__symbolic":"reference","module":"@angular/material/datepicker","name":"MatDatepickerModule","line":58,"character":4},{"__symbolic":"reference","module":"@angular/material/list","name":"MatListModule","line":59,"character":4},{"__symbolic":"reference","module":"@angular/material/tooltip","name":"MatTooltipModule","line":60,"character":4}]}]}],"members":{}},"CoreModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":4},{"__symbolic":"reference","name":"ɵa"}],"providers":[{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":22,"character":15},"useClass":{"__symbolic":"reference","name":"ɵe"}},{"provide":{"__symbolic":"reference","module":"@angular/router","name":"RouteReuseStrategy","line":26,"character":15},"useClass":{"__symbolic":"reference","name":"ɵf"}}],"exports":[{"__symbolic":"reference","name":"ɵa"}]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":36,"character":15}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"SkipSelf","line":36,"character":27}}]],"parameters":[{"__symbolic":"reference","name":"CoreModule"}]}]}},"ActionPopupModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":8,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵg"}],"exports":[{"__symbolic":"reference","name":"ɵg"}],"entryComponents":[{"__symbolic":"reference","name":"ɵg"}]}]}],"members":{}},"DataTableModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵi"}],"exports":[{"__symbolic":"reference","name":"ɵi"}]}]}],"members":{}},"DocumentViewerModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":10,"character":4},{"__symbolic":"reference","module":"ngx-doc-viewer","name":"NgxDocViewerModule","line":11,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵj"}],"exports":[{"__symbolic":"reference","name":"ɵj"}]}]}],"members":{}},"EntityFilesViewAllModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵk"},{"__symbolic":"reference","name":"ɵo"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","name":"FileDropperModule"},{"__symbolic":"reference","name":"DocumentViewerModule"},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":22,"character":4},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"ɵo"}],"entryComponents":[{"__symbolic":"reference","name":"ɵk"}]}]}],"members":{}},"FileDropperModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":8,"character":8},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":9,"character":8},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵp"}],"exports":[{"__symbolic":"reference","name":"ɵp"}]}]}],"members":{}},"NoteModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵq"},{"__symbolic":"reference","name":"ɵs"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"ɵq"}],"entryComponents":[{"__symbolic":"reference","name":"ɵs"}]}]}],"members":{}},"SearchableSelectorModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"declarations":[{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"}],"exports":[{"__symbolic":"reference","name":"ɵt"},{"__symbolic":"reference","name":"ɵu"}]}]}],"members":{}},"UtilityModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":8},{"__symbolic":"reference","module":"@angular/forms","name":"FormsModule","line":12,"character":8}],"declarations":[{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵw"}],"exports":[{"__symbolic":"reference","name":"ɵv"},{"__symbolic":"reference","name":"ɵw"}]}]}],"members":{}},"TimelineFilterModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵx"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","name":"ɵy"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵx"}]}]}],"members":{}},"LoaderModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵz"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","module":"@angular/material/progress-spinner","name":"MatProgressSpinnerModule","line":11,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵz"}]}]}],"members":{}},"EmailSubscriptionModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionRoutingModule"}]}]}],"members":{}},"EmailSubscriptionRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionUserModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionUserRoutingModule"}]}]}],"members":{}},"EmailSubscriptionUserRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":8,"character":12}]}]}],"members":{}},"EmailSubscriptionUserFormModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵba"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","name":"SearchableSelectorModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserFormRoutingModule"},{"__symbolic":"reference","name":"LoaderModule"}],"entryComponents":[{"__symbolic":"reference","name":"ɵba"}]}]}],"members":{}},"EmailSubscriptionUserFormRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionUserListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbb"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":17,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionUserListRoutingModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserFormModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserListFilterModule"}],"exports":[{"__symbolic":"reference","name":"ɵbb"}]}]}],"members":{}},"esulr":{"title":"Email Subscription Users","permissions":{"only":["app_admin"],"redirectTo":"/"}},"EmailSubscriptionUserListRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":22,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":23,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"ɵbb"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}],"data":{"__symbolic":"reference","name":"esulr"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":24,"character":12}]}]}],"members":{}},"EmailSubscriptionUserListFilterRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionUserListFilterModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbg"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","name":"SearchableSelectorModule"},{"__symbolic":"reference","name":"EmailSubscriptionUserListFilterRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ɵbg"}]}]}],"members":{}},"EmailSubscriptionTypeRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionTypeModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionTypeRoutingModule"}]}]}],"members":{}},"EmailSubscriptionTypeFormRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"EmailSubscriptionTypeFormModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbh"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":18,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":19,"character":4},{"__symbolic":"reference","name":"SearchableSelectorModule"},{"__symbolic":"reference","name":"EmailSubscriptionTypeFormRoutingModule"},{"__symbolic":"reference","name":"LoaderModule"}],"exports":[{"__symbolic":"reference","name":"ɵbh"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbh"}]}]}],"members":{}},"estlr":{"title":"Email Subscription Type","permissions":{"only":["client_admin"],"redirectTo":"/"}},"EmailSubscriptionTypeListRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":24,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":25,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"ɵbi"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}],"data":{"__symbolic":"reference","name":"estlr"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":26,"character":12}]}]}],"members":{}},"EmailSubscriptionTypeListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbi"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":18,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":19,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionTypeFormModule"},{"__symbolic":"reference","name":"EmailSubscriptionTypeListRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ɵbi"}]}]}],"members":{}},"esfur":{"permissions":{"only":["client_admin"]}},"EmailSubscriptionForUserRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":20,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":21,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"ɵbj"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}],"data":{"__symbolic":"reference","name":"esfur"}}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":22,"character":12}]}]}],"members":{}},"EmailSubscriptionForUserModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbj"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","name":"EmailSubscriptionForUserRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ɵbj"}]}]}],"members":{}},"TechlifyUpdateModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbk"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":16,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":17,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":18,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"ɵbm"},{"__symbolic":"reference","name":"ɵbn"},{"__symbolic":"reference","name":"ɵbp"}]}]}],"members":{}},"TechlifyUpdateHistoryModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":14,"character":4},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":15,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"ActionPopupModule"},{"__symbolic":"reference","name":"ɵbp"},{"__symbolic":"reference","name":"ɵbr"}],"declarations":[{"__symbolic":"reference","name":"ɵbs"}]}]}],"members":{}},"UpdateNotifierModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"UpdateNotifierComponent"},{"__symbolic":"reference","name":"ɵbt"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"ɵbu"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","name":"ActionPopupModule"}],"exports":[{"__symbolic":"reference","name":"UpdateNotifierComponent"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbt"}]}]}],"members":{}},"UpdateNotifierComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-update-notifier","template":"","styles":["::ng-deep .white-bg{background-color:#fff}"]}]}],"members":{"rootNavUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBar","line":16,"character":22},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"getNewUpdate":[{"__symbolic":"method"}],"showUpdate":[{"__symbolic":"method"}]}},"ExportExcelButtonComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-export-excel-button","template":"<button mat-raised-button color=\"accent\" (click)=\"exportExcel()\">Export Excel</button>","styles":[""]}]}],"members":{"name":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"exportExcel":[{"__symbolic":"method"}]}},"ExportExcelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":7,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ExportExcelButtonComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":10,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"ExportExcelButtonComponent"}]}]}],"members":{}},"AuditLogForModelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-audit-log-for-model","template":"<button type=\"button\" *ngIf=\"logView==='recent'\" mat-icon-button matTooltip=\"Recent Audit Log\"\n (click)=\"$event.stopPropagation();getLogView()\">\n <mat-icon>history</mat-icon>\n</button>\n\n<button type=\"button\" *ngIf=\"logView==='all'\" mat-icon-button matTooltip=\"All Audit Logs\"\n (click)=\"$event.stopPropagation();getLogsView()\">\n <mat-icon>history</mat-icon>\n</button>","styles":[""]}]}],"members":{"modelType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"modelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"logView":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":18,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"getLogView":[{"__symbolic":"method"}],"getLogsView":[{"__symbolic":"method"}]}},"AuditLogForModelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogForModelComponent"}],"imports":[{"__symbolic":"reference","name":"AuditLogViewModelModule"},{"__symbolic":"reference","name":"AuditLogsViewModelModule"},{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","name":"AuditLogForModelRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":18,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogForModelComponent"}]}]}],"members":{}},"AuditLogForModelRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogListComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":10,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-audit-log-list","template":"<div fxLayout=\"column\" fxLayoutAlign=\"start\" class=\"mat-typography\">\n\n <div fxLayout=\"column\" fxLayoutAlign=\"start\" fxLayoutGap=\"1.5rem\" class=\"p-3\">\n <h2 class=\"font-weight-bold\">\n Audit Logs\n </h2>\n\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <app-audit-log-list-filter *ngIf=\"showFilter\" (valueChange)=\"filterChange($event)\" [objectType]=\"objectType\"\n [objectId]=\"objectId\"></app-audit-log-list-filter>\n <span fxFlex></span>\n\n <ng-container *ngIf=\"showExportButtons\">\n <div class=\"ml-4\">\n <app-export-excel-button elementId=\"audit-logs-table\" name=\"AuditLogs\" [data]=\"excelData\">\n </app-export-excel-button>\n </div>\n </ng-container>\n </div>\n </div>\n\n <section class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"auditLogList\" matSort class=\"w-100\" multiTemplateDataRows id=\"audit-logs-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let auditLog; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"id\">\n <th mat-header-cell *matHeaderCellDef> Log # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_type\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Model </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog.object_type }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"object_id\">\n <th mat-header-cell *matHeaderCellDef> Model # </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.object_id}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"action\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Action </th>\n <td mat-cell *matCellDef=\"let auditLog;\"> {{ auditLog?.action }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created At </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.created_at | date:'medium'}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"user.email\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created By </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n {{auditLog?.user?.email}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"changes\">\n <th mat-header-cell *matHeaderCellDef> Changes</th>\n <td mat-cell *matCellDef=\"let auditLog\">\n <div class=\"px-3\" [innerHtml]=\"sanitizer.bypassSecurityTrustHtml(getTransformedChanges(auditLog))\">\n\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let auditLog\">\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"\n (click)=\"logClicked(row);$event.stopPropagation();\" class=\"hoverable row-hover\"></tr>\n </table>\n </section>\n\n\n</div>","styles":["tr.row-hover:hover{background-color:#dcdcdc}.scroll-container{height:800px;overflow-y:auto}:host ::ng-deep #old-value{background-color:#f08080;margin-right:5px}:host ::ng-deep #new-value{background-color:#98fb98}"]}]}],"members":{"objectId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"objectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"showFilter":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"showExportButtons":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"userId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":29,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":29,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbw"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":33,"character":20},{"__symbolic":"reference","module":"@angular/platform-browser","name":"DomSanitizer","line":34,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"changeSort":[{"__symbolic":"method"}],"logClicked":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"filterChange":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"getTransformedChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AuditLogListModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogListComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":16,"character":4},{"__symbolic":"reference","name":"AuditLogListRoutingModule"},{"__symbolic":"reference","name":"ExportExcelModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":22,"character":4},{"__symbolic":"reference","name":"AuditLogListFilterModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogListComponent"}]}]}],"members":{}},"AuditLogListRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogListFilterComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":7,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-audit-log-list-filter","template":"<form [formGroup]=\"auditLogFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field *ngIf=\"showObjectFilter\">\n <mat-label>Model</mat-label>\n <app-searchable-selector formControlName=\"object_type\" apiUrl=\"api/audit-log-types\" titleField=\"object_type\"\n valueField=\"object_type\" [sort]=\"false\" [enableSearch]=\"false\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('object_type')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('object_type')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <mat-label>Action</mat-label>\n <mat-select formControlName=\"action\">\n <mat-option value=\"created\">Created</mat-option>\n <mat-option value=\"updated\">Updated</mat-option>\n <mat-option value=\"deleted\">Deleted</mat-option>\n </mat-select>\n <button mat-button *ngIf=\"getFieldValue('action')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('action')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"date_from\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date (MM/DD/YYYY)\" />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('date_from')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('date_from')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('date_from')\">Invalid Date</mat-error>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"date_to\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date (MM/DD/YYYY)\" />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('date_to')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('date_to')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('date_to')\">Invalid Date</mat-error>\n </mat-form-field>\n</form>","styles":[""]}]}],"members":{"objectId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"objectType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":20,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":22,"character":26},{"__symbolic":"reference","name":"ɵl"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"AuditLogListFilterModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":11,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogListFilterComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":14,"character":4},{"__symbolic":"reference","name":"AuditLogListFilterRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":16,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":17,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","name":"SearchableSelectorModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogListFilterComponent"}]}]}],"members":{}},"AuditLogListFilterRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogViewComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-audit-log-view","template":"<div fxLayout=\"column\" class=\"m-4\" fxLayoutGap=\"1.5rem\">\n <h3 class=\"text-center\">Audit Log</h3>\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" *ngIf=\"logInfo\">\n <div>Object Type: {{logInfo?.object_type}}</div>\n <div>Object Id: {{logInfo?.object_id}}</div>\n <div>Action: {{logInfo?.action}}</div>\n <div>Created At: {{logInfo?.created_at | date:'medium'}}</div>\n <div>Created By: {{logInfo?.user?.email}}</div>\n </div>\n\n\n <div fxLayout=\"column\" *ngIf=\"logInfo?.action !== 'deleted'\">\n <div>\n <button mat-raised-button color=\"primary\" (click)=\"showDeltaChanges = !showDeltaChanges\">\n {{showDeltaChanges?'Hide JSON Changes': 'Show JSON Changes'}}\n </button>\n </div>\n <div [hidden]=\"!showDeltaChanges\">\n <h4 class=\"font-weight-bold\" *ngIf=\"logInfo\">Changes in JSON</h4>\n <div id=\"jsondiff\"></div>\n </div>\n </div>\n\n <div class=\"container\" *ngIf=\"changeList.length > 0\">\n <h4 class=\"font-weight-bold\"> Changes in Attributes</h4>\n <table class=\"table table-striped table-sm border\">\n <thead>\n <tr>\n <th scope=\"col\">#</th>\n <th scope=\"col\">Attribute</th>\n <th scope=\"col\">Old Value</th>\n <th scope=\"col\">New Value</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let change of changeList; let i= index;\">\n <th scope=\"row\">{{i+1}}</th>\n <td>{{change?.displayAttribute}}</td>\n <td>{{change?.oldValue}}</td>\n <td>{{change?.newValue}}</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n</div>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbw"},{"__symbolic":"reference","module":"@angular/router","name":"ActivatedRoute","line":19,"character":19},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":20,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"getTransformedChanges":[{"__symbolic":"method"}],"fetchLogDetail":[{"__symbolic":"method"}],"patchDelta":[{"__symbolic":"method"}]}},"AuditLogViewModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogViewComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogViewRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogViewComponent"}]}]}],"members":{}},"AuditLogViewRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogViewModelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":6,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-audit-log-view","template":"<div fxLayout=\"column\" class=\"m-4\" fxLayoutGap=\"1.5rem\">\n <h3 class=\"text-center\">Audit Log</h3>\n <div fxLayout=\"column\" fxLayoutGap=\"0.5rem\" *ngIf=\"logInfo\">\n <div>Object Type: {{logInfo?.object_type}}</div>\n <div>Object Id: {{logInfo?.object_id}}</div>\n <div>Action: {{logInfo?.action}}</div>\n <div>Created At: {{logInfo?.created_at | date:'medium'}}</div>\n <div>Created By: {{logInfo?.user?.email}}</div>\n </div>\n\n\n <div class=\"container\" *ngIf=\"changeList.length > 0\">\n <h4 class=\"font-weight-bold\"> Changes in Attributes</h4>\n <table class=\"table table-striped table-sm border\">\n <thead>\n <tr>\n <th scope=\"col\">#</th>\n <th scope=\"col\">Attribute</th>\n <th scope=\"col\">Old Value</th>\n <th scope=\"col\">New Value</th>\n </tr>\n </thead>\n <tbody>\n <tr *ngFor=\"let change of changeList; let i= index;\">\n <th scope=\"row\">{{i+1}}</th>\n <td>{{change?.displayAttribute}}</td>\n <td>{{change?.oldValue}}</td>\n <td>{{change?.newValue}}</td>\n </tr>\n </tbody>\n </table>\n\n </div>\n\n <div>\n <button mat-raised-button (click)=\"close()\">Close</button>\n </div>\n</div>","styles":[".scroll-container{max-height:400px;overflow:auto}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":20,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵe"}]}],"ngOnInit":[{"__symbolic":"method"}],"getTransformedChanges":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}]}},"AuditLogViewModelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogViewModelRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}]}]}],"members":{}},"AuditLogViewModelRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogsViewModelComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":7,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-audit-logs-view-model","template":"<div fxLayout=\"column\" class=\"m-4\" fxLayoutGap=\"1.5rem\">\n <app-audit-log-list [objectId]=\"data?.modelId\" [objectType]=\"data?.modelType\" [showExportButtons]=\"false\">\n </app-audit-log-list>\n</div>","styles":["::ng-deep app-audit-log-list .scroll-container{height:350px!important;overflow-y:scroll}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":17,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"AuditLogViewModelComponent"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":18,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}]}},"AuditLogsViewModelModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"AuditLogsViewModelComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogsViewModelRoutingModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"AuditLogListModule"}],"exports":[{"__symbolic":"reference","name":"AuditLogsViewModelComponent"}]}]}],"members":{}},"AuditLogsViewModelRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"AuditLogModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"AuditLogRoutingModule"},{"__symbolic":"reference","name":"AuditLogListModule"},{"__symbolic":"reference","name":"AuditLogViewModule"}],"exports":[]}]}],"members":{}},"AuditLogRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":14,"character":12},"member":"forChild"},"arguments":[[{"path":"log-list","component":{"__symbolic":"reference","name":"AuditLogListComponent"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}]},{"path":"log-view/:id","component":{"__symbolic":"reference","name":"AuditLogViewComponent"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}]},{"path":"**","redirectTo":"log-list","pathMatch":"full"}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":15,"character":12}]}]}],"members":{}},"DateValidator":{"__symbolic":"function","parameters":[],"value":{"__symbolic":"error","message":"Lambda not supported","line":3,"character":11,"module":"./lib/date-validator"}},"ImportCsvModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImportCsvComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":17,"character":4},{"__symbolic":"reference","name":"FileDropperModule"},{"__symbolic":"reference","name":"ImportCsvRoutingModule"},{"__symbolic":"reference","name":"ImportItemsModule"},{"__symbolic":"reference","name":"FailedItemsModule"}],"exports":[{"__symbolic":"reference","name":"ImportCsvComponent"}]}]}],"members":{}},"ImportCsvRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"ImportCsvComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":10,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"app-import-csv","template":"<div fxLayout=\"column\" fx class=\"m-4\">\n <h2 class=\"text-center\">\n {{importConfig?.importType}} Import\n <span>\n <button type=\"button\" *ngIf=\"failedItems.length > 0\" mat-raised-button color=\"warn\"\n (click)=\"reset()\">Reset</button>\n </span>\n </h2>\n\n <ng-container *ngIf=\"failedItems.length === 0\">\n <app-file-dropper *ngIf=\"fileData.length === 0\" [config]=\"filesConfig\" [fileArray]=\"filesList\"\n (fileChanged)=\"fileChanged($event)\">\n </app-file-dropper>\n\n <app-import-items class=\"w-100\" *ngIf=\"fileData.length > 0\" [data]=\"fileData\" [importConfig]=\"importConfig\"\n (onSave)=\"mappingProcessed($event)\"></app-import-items>\n </ng-container>\n\n <app-failed-items class=\"w-100\" *ngIf=\"failedItems.length > 0\" [failedItems]=\"failedItems\"\n [selectedFields]=\"selectedFields\"></app-failed-items>\n\n</div>","styles":[""]}]}],"members":{"importConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":18,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":30,"character":22}]}],"ngOnInit":[{"__symbolic":"method"}],"reset":[{"__symbolic":"method"}],"fileChanged":[{"__symbolic":"method"}],"mappingProcessed":[{"__symbolic":"method"}],"save":[{"__symbolic":"method"}],"isValidDate":[{"__symbolic":"method"}]}},"ImportConfig":{"__symbolic":"class","members":{}},"ImportItemsRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"ImportItemsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-import-items","template":"<div fxLayout=\"column\" class=\"mt-2\">\n <p class=\"text-center secondary-color\">Map your column headers in your file to our properties</p>\n <form [formGroup]=\"importMappingForm\" (ngSubmit)=\"submit()\" fxLayout=\"column\">\n <table style=\"width: 100%;\" class=\"table table-sm table-striped\">\n <tr class=\"table-header-row\">\n <th>Column Headers From File</th>\n <th>Preview Information</th>\n <th>Property</th>\n </tr>\n <ng-container formArrayName=\"fields\">\n <tr *ngFor=\"let field of fieldsArray.controls; let i=index\" [formGroupName]=\"i\">\n <td>{{ field.get('label').value }}</td>\n <td>{{ field.get('value').value }}</td>\n <td>\n <mat-form-field fxFlex=\"100%\" appearance=\"outline\">\n <mat-label>Select Property</mat-label>\n <mat-select placeholder=\"Select Property\" formControlName=\"property\" required\n (selectionChange)=\"updatePropertyType($event, i)\">\n <mat-option *ngFor=\"let property of properties\" [value]=\"property.value\">\n {{property.label}}\n </mat-option>\n </mat-select>\n <mat-error *ngIf=\"isFieldValid('property', fieldsArray.controls[i])\">\n {{getErrorMessage('property', fieldsArray.controls[i])}}\n </mat-error>\n </mat-form-field>\n <button type=\"button\" mat-icon-button (click)=\"removeField(i)\" *ngIf=\"fieldsArray.length > 1\"\n matTooltip=\"Remove column\" matTooltipPosition=\"right\">\n <mat-icon class=\"text-danger\">remove_circle</mat-icon>\n </button>\n </td>\n </tr>\n </ng-container>\n </table>\n\n <div class=\"mt-1\" fxFlex=\"100%\" fxLayoutAlign=\"end\">\n <button mat-stroked-button color=\"primary\" class=\"mt-2\" type=\"submit\">\n Next\n <mat-icon>\n chevron_right\n </mat-icon>\n </button>\n </div>\n </form>\n</div>","styles":["table{width:100%}td,th{padding:1%}.table-header-row{background-color:#e6e4e4;color:#000;font-weight:bolder}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"importConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"onSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":23,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":26,"character":16},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","module":"@angular/core","name":"ChangeDetectorRef","line":28,"character":31}]}],"ngOnInit":[{"__symbolic":"method"}],"createImportMappingForm":[{"__symbolic":"method"}],"createField":[{"__symbolic":"method"}],"mapOutDataColumns":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"updatePropertyType":[{"__symbolic":"method"}],"uniqueValidator":[{"__symbolic":"method"}],"removeField":[{"__symbolic":"method"}]}},"ImportItemsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":10,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ImportItemsComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":16,"character":4},{"__symbolic":"reference","name":"ImportItemsRoutingModule"}],"exports":[{"__symbolic":"reference","name":"ImportItemsComponent"}]}]}],"members":{}},"FailedItemsRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"FailedItemsComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-failed-items","template":"<div *ngIf=\"failedItems.length\" class=\"mt-4\">\n <div fxLayout fxLayoutAlign=\"center\">\n <h4>Failed Items</h4>\n </div>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"center\">\n <table class=\"table table-bordered table-striped table-hover table-sm\" fxFlex=\"80%\">\n <thead>\n <tr>\n <th>#</th>\n <th *ngFor=\"let field of selectedFields;\">{{field?.label}}</th>\n <th class=\"text-danger\">Error</th>\n </tr>\n </thead>\n <tbody>\n <ng-container *ngFor=\"let timesheet of failedItems; let i=index\">\n <tr>\n <td>{{i + 1}}</td>\n <td *ngFor=\"let field of selectedFields;\">\n <ng-container *ngIf=\"(field.propertyType == 'date' || field.propertyType == 'dateTime')\n &&isValidDate(timesheet[field.property]);else elseProperty;\">\n {{ timesheet[field.property] | date:'mediumDate' }}\n </ng-container>\n <ng-template #elseProperty>\n {{ timesheet[field.property] }}\n </ng-template>\n </td>\n <td class=\"text-danger\">\n {{timesheet?.error}}\n </td>\n </tr>\n </ng-container>\n </tbody>\n </table>\n </div>\n</div>","styles":[""]}]}],"members":{"failedItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"selectedFields":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"isValidDate":[{"__symbolic":"method"}]}},"FailedItemsModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":9,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"FailedItemsComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","name":"FailedItemsRoutingModule"}],"exports":[{"__symbolic":"reference","name":"FailedItemsComponent"}]}]}],"members":{}},"LoginHistoryForUserModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":12,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"LoginHistoryForUserComponent"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":15,"character":4},{"__symbolic":"reference","name":"LoginHistoryForUserRoutingModule"},{"__symbolic":"reference","module":"ngx-infinite-scroll","name":"InfiniteScrollModule","line":17,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":19,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":20,"character":4},{"__symbolic":"reference","name":"TimelineFilterModule"}],"exports":[{"__symbolic":"reference","name":"LoginHistoryForUserComponent"}]}]}],"members":{}},"LoginHistoryForUserRoutingModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":13,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":14,"character":12},"member":"forChild"},"arguments":[[{"path":"","component":{"__symbolic":"reference","name":"LoginHistoryForUserComponent"},"canActivate":[{"__symbolic":"reference","name":"ɵbc"}]}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":15,"character":12}]}]}],"members":{}},"LoginHistoryForUserComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":7,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-login-history-for-user","template":"<div class=\"mat-typography m-4\">\n <form fxLayoutAlign=\" start center\">\n <app-timeline-filter [form]=\"historyFilterForm\"></app-timeline-filter>\n </form>\n\n\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"loginHistoryList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"login-history-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let loginHistory; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Last Login</th>\n <td mat-cell *matCellDef=\"let loginHistory;\">\n {{loginHistory?.created_at | date:'medium' }}\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n </section>\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"userId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":26,"character":16}]}],"ngOnInit":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"filterChange":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵa":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":12,"character":4},{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBarModule","line":13,"character":4},{"__symbolic":"reference","module":"@angular/material/icon","name":"MatIconModule","line":14,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵb"},{"__symbolic":"reference","name":"ɵc"}]}]}],"members":{}},"ɵb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"snack-bar-component-example-snack","template":"<div class=\"row-container\">\n <span class=\"icon-column\">\n <mat-icon class=\"success\"> check_circle_outline</mat-icon>\n </span>\n <span class=\"text-column\">\n {{ data }}\n </span>\n</div>","styles":[".error{color:#dc3545}.success{color:#28a745}.row-container{display:flex}.icon-column{flex:5%;padding-right:5px}.text-column{color:#fff;flex:95%;text-align:center}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":9,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MAT_SNACK_BAR_DATA","line":9,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]}},"ɵc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":11,"character":1},"arguments":[{"selector":"snack-bar-component-example-snack","template":"<div class=\"row-container\">\n <span class=\"icon-column\">\n <mat-icon class=\"error\"> cancel</mat-icon>\n </span>\n <span class=\"text-column\">\n {{ data }}\n </span>\n</div>","styles":[".error{color:#dc3545}.success{color:#28a745}.row-container{display:flex}.icon-column{flex:5%;padding-right:5px}.text-column{color:#fff;flex:95%;text-align:center}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":15},"arguments":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MAT_SNACK_BAR_DATA","line":17,"character":22}]}]],"parameters":[{"__symbolic":"reference","name":"any"}]}]}},"ɵd":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":69,"character":45},"arguments":["HTTP_DYNAMIC_INTERCEPTORS"]},"ɵe":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":77,"character":33},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":74,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":81,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":81,"character":17},"arguments":[{"__symbolic":"reference","name":"ɵd"}]}]],"parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpHandler","line":79,"character":35},{"__symbolic":"reference","module":"@angular/core","name":"Injector","line":80,"character":22},{"__symbolic":"reference","name":"Array","arguments":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpInterceptor","line":81,"character":73}]}]}],"cache":[{"__symbolic":"method"}],"skipErrorHandler":[{"__symbolic":"method"}],"skipApiPrefix":[{"__symbolic":"method"}],"skipToken":[{"__symbolic":"method"}],"skipHeader":[{"__symbolic":"method"}],"request":[{"__symbolic":"method"}],"removeInterceptor":[{"__symbolic":"method"}],"addInterceptor":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵf":{"__symbolic":"class","extends":{"__symbolic":"reference","module":"@angular/router","name":"RouteReuseStrategy","line":11,"character":43},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"shouldDetach":[{"__symbolic":"method"}],"store":[{"__symbolic":"method"}],"shouldAttach":[{"__symbolic":"method"}],"retrieve":[{"__symbolic":"method"}],"shouldReuseRoute":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-action-popup","template":"<div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>{{data.title}}</div>\n </div>\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\">\n <div fxFlex=\"100%\">{{data.message}}</div>\n\n <div fxFlex=\"100%\" fxLayout=\"row\" fxLayoutGap=\"1.5rem\" fxLayoutAlign=\"end\" class=\"my-4\">\n <button mat-raised-button (click)=\"closeDialog()\">\n Cancel\n </button>\n <button mat-raised-button color=\"primary\" (click)=\"confirm()\">\n Proceed\n </button>\n </div>\n </div>\n\n </div>\n\n</div>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":13,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":13,"character":12}]}]],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵg"}]},{"__symbolic":"reference","name":"ɵh"}]}],"ngOnInit":[{"__symbolic":"method"}],"closeDialog":[{"__symbolic":"method"}],"confirm":[{"__symbolic":"method"}]}},"ɵh":{"__symbolic":"class","members":{}},"ɵi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":19,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":20,"character":1},"arguments":[{"selector":"app-data-table","template":"<div fxLayout=\"column\" [ngClass]=\"{\n 'mat-elevation-z1': !config.disableElevation\n }\" class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\" [ngStyle]=\"config.style\">\n <table mat-table [dataSource]=\"dataSource\" matSort [id]=\"elementId\">\n <!-- Checkbox Column -->\n <ng-container matColumnDef=\"select\">\n <th mat-header-cell *matHeaderCellDef style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (change)=\"$event ? masterToggle() : null\"\n [checked]=\"selection.hasValue() && isAllSelected()\"\n [indeterminate]=\"selection.hasValue() && !isAllSelected()\">\n </mat-checkbox>\n </th>\n <td mat-cell *matCellDef=\"let row\" style=\"width:60px\">\n <mat-checkbox *ngIf=\"selection\" (click)=\"$event.stopPropagation()\"\n (change)=\"$event ? selection.toggle(row) : null\" [checked]=\"selection.isSelected(row)\">\n </mat-checkbox>\n </td>\n </ng-container>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef>#</th>\n <td mat-cell *matCellDef=\"let index = index\">\n {{ (index + 1) }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"action-width d-print-none\">\n {{ config.customActionLabel }}\n </th>\n\n <td mat-cell *matCellDef=\"let element; let index = index\" class=\"d-print-none\">\n <div>\n <button *ngIf=\"\n config.actionsConfig.download && element[config.downloadLink]\n \" type=\"button\" mat-icon-button (click)=\"downloadClicked($event, element)\">\n <mat-icon>vertical_align_bottom</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.edit\" [disabled]=\"!this.checkEdit(element)\" type=\"button\"\n mat-icon-button (click)=\"editClicked($event, element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.print\" [disabled]=\"!this.checkPrint(element)\" type=\"button\"\n mat-icon-button (click)=\"printClicked($event,element)\">\n <mat-icon>print</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.view\" [disabled]=\"!this.checkView(element)\" type=\"button\"\n mat-icon-button (click)=\"viewClicked($event, element)\">\n <mat-icon>description</mat-icon>\n </button>\n\n <button *ngIf=\"config.actionsConfig.deactivate\" type=\"button\" mat-icon-button\n (click)=\"deactivateClicked($event, element)\">\n <mat-icon>delete</mat-icon>\n </button>\n\n <button #menuTrigger=\"matMenuTrigger\" *ngIf=\"\n config.actionsConfig.actionsMenu &&\n this.checkActions(element) &&\n config.actionsConfig.actionsMenu.length > 0\n \" type=\"button\" mat-icon-button [matMenuTriggerFor]=\"actionsMenu\"\n (click)=\"actionMenuTriggerClick($event, menuTrigger)\">\n <mat-icon>more_vert</mat-icon>\n </button>\n </div>\n\n <mat-menu #actionsMenu=\"matMenu\">\n <div *ngFor=\"let item of config.actionsConfig.actionsMenu\">\n <button *ngIf=\"this.checkActionButton(element, item.value)\" mat-menu-item\n (click)=\"actionMenuClick($event, element, item.value)\">\n <span>{{ item.name }}</span>\n </button>\n </div>\n </mat-menu>\n </td>\n </ng-container>\n\n <!-- Actual Columns -->\n <ng-container matColumnDef=\"{{ column.value }}\" *ngFor=\"let column of config.columnsConfig\">\n <ng-container *ngIf=\"column?.sort; else noSort\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header>\n {{ column.title }}\n </th>\n </ng-container>\n <ng-template #noSort>\n <th mat-header-cell *matHeaderCellDef>\n {{ column.title }}\n </th>\n </ng-template>\n <ng-container *ngIf=\"column.dateField; else currencyField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | date:column.format? column.format: 'mediumDate' }}\n </div>\n </td>\n </ng-container>\n\n <ng-template #currencyField>\n <div *ngIf=\"column.currencyField; else normalField\">\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) | currency: \"$\":'symbol' : '1.0-0' }}\n </div>\n </td>\n </div>\n </ng-template>\n\n <ng-template #normalField>\n <td mat-cell *matCellDef=\"let element\">\n <div class=\"text-truncate\" appToolTip>\n {{ getValue(element, column.value) }}\n </div>\n </td>\n </ng-template>\n </ng-container>\n\n <ng-container *ngIf=\"config.stickyHeader; else normalHeader\">\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns; sticky:true\"></tr>\n </ng-container>\n <ng-template #normalHeader>\n <tr class=\"font-weight-bold\" mat-header-row *matHeaderRowDef=\"config.displayedColumns;\">\n </tr>\n </ng-template>\n\n <div *ngIf=\"!config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\"></tr>\n </div>\n\n <div *ngIf=\"config.enableRowClick\">\n <tr mat-row *matRowDef=\"let row; columns: config.displayedColumns\" (click)=\"rowClicked($event, row)\"\n class=\"hoverable row-hover\"></tr>\n </div>\n </table>\n</div>","styles":["table{width:100%}.mat-table{background:inherit}.mat-column-select{overflow:initial}td.mat-cell,td.mat-footer-cell,th.mat-header-cell{padding:0 2px}.action-width{min-width:175px;width:175px!important}.noOverFlow{overflow-x:auto;overflow-y:hidden}.scroll-container{max-height:400px;overflow:auto}.mat-header-row{background-color:inherit;position:sticky;top:0}tr.row-hover:hover{background-color:#dcdcdc}td.mat-cell:first-of-type,td.mat-footer-cell:first-of-type,th.mat-header-cell:first-of-type{padding-left:24px!important}"]}]}],"members":{"data":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"selection":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"action":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"selctionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":38,"character":3}}]}],"rowClick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"tableScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"sortChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":41,"character":3}}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":48,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":48,"character":13},{"static":true}]}]}],"elementId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":51,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"isAllSelected":[{"__symbolic":"method"}],"masterToggle":[{"__symbolic":"method"}],"clearSelection":[{"__symbolic":"method"}],"ngOnChanges":[{"__symbolic":"method"}],"initializeConfig":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"editClicked":[{"__symbolic":"method"}],"viewClicked":[{"__symbolic":"method"}],"deactivateClicked":[{"__symbolic":"method"}],"downloadClicked":[{"__symbolic":"method"}],"printClicked":[{"__symbolic":"method"}],"rowClicked":[{"__symbolic":"method"}],"actionMenuClick":[{"__symbolic":"method"}],"actionMenuTriggerClick":[{"__symbolic":"method"}],"checkEdit":[{"__symbolic":"method"}],"checkView":[{"__symbolic":"method"}],"checkPrint":[{"__symbolic":"method"}],"checkActions":[{"__symbolic":"method"}],"checkActionButton":[{"__symbolic":"method"}],"getValue":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"nextId":0}},"ɵj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":3,"character":1},"arguments":[{"selector":"app-document-viewer","template":"<mat-card *ngIf=\"viewerType === 'image'\">\n <img [ngStyle]=\"config.imageStyle\" mat-card-image [src]=\"fileUrl\" />\n <mat-card-actions>\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit && !config.hideRemove\">\n Remove\n </button>\n </mat-card-actions>\n</mat-card>\n\n<div class=\"mat-elevation-z1 p-4\" *ngIf=\"viewerType !== 'image'\">\n <a [href]=\"fileUrl\" target=\"_blank\">{{fileName}}</a>\n <ngx-doc-viewer [ngStyle]=\"config.viewerStyle\" *ngIf=\"viewerType !== null\" [url]=\"fileUrl\" [viewer]=\"viewerType\">\n </ngx-doc-viewer>\n <div class=\"mt-2\" *ngIf=\"!config.hideRemove\">\n <button type=\"button\" mat-raised-button (click)=\"removeFile()\" *ngIf=\"!disableEdit\">\n Remove\n </button>\n </div>\n</div>","styles":[".image-fit{height:100%;object-fit:cover;width:100%}"]}]}],"members":{"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"file":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"fileUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"disableEdit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"remove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"removeFile":[{"__symbolic":"method"}],"initData":[{"__symbolic":"method"}],"getFileExtension":[{"__symbolic":"method"}]}},"ɵk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":15,"character":1},"arguments":[{"selector":"entity-file-form","template":"<form [formGroup]=\"entityFileGroup\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <div>Entity File</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\" fxLayoutAlign.=\"start\">\n <ng-container *ngIf=\"!hideTitleAndDetails\">\n <mat-form-field>\n <input type=\"text\" matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\">\n </mat-form-field>\n <mat-form-field>\n <textarea matInput formControlName=\"details\" placeholder=\"Details\" autocomplete=\"off\"></textarea>\n </mat-form-field>\n </ng-container>\n\n <ng-template #fileUpload>\n <section fxFlex=\"100%\">\n <div>Entity File*</div>\n <app-file-dropper [config]=\"fileConfig\" (fileChanged)=\"fileChanged($event)\" [fileArray]=\"fileList\">\n </app-file-dropper>\n <div class=\"text-danger\" *ngIf=\"isFieldValid('url')\">\n {{getErrorMessage(\"url\")}}\n </div>\n </section>\n </ng-template>\n\n\n <div fxFlex=\"100%\" class=\"mt-2\" *ngIf=\"entityFileGroup.get('url').value;else fileUpload;\">\n <app-document-viewer [file]=\"entityFileGroup.get('file').value\"\n [fileUrl]=\"entityFileGroup.get('url').value\" [config]=\"this.viewerConfig\" (remove)=\"removeFile()\"\n [disableEdit]=\"updateMode\">\n </app-document-viewer>\n\n </div>\n\n <div class=\"mt-4 mb-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" color=\"primary\">Save</button>\n </div>\n </div>\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":32,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":32,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵk"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":34,"character":16},{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","name":"ɵn"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"fileChanged":[{"__symbolic":"method"}],"removeFile":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]}},"ɵl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getEntityFiles":[{"__symbolic":"method"}],"createEntityFile":[{"__symbolic":"method"}],"updateEntityFile":[{"__symbolic":"method"}],"deleteEntityFile":[{"__symbolic":"method"}],"uploadEntityFile":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MatSnackBar","line":15,"character":33}]}],"addAlert":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":13,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-entity-files-view-all","template":"<div fxLayout=\"column\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"!displayMode\">\n <div fxLayout=\"column\" fxLayoutGap=\"0.25rem\">\n <h3 class=\"font-weight-bold\" fxLayoutAlign=\"center center\"> Files\n <button type=\"button\" class=\"mx-1\" mat-mini-fab color=\"primary\" (click)=\"addEntityFile()\" *ngIf=\"!viewOnly\">\n <mat-icon>add</mat-icon>\n </button>\n </h3>\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start\" *ngIf=\"!removeSearch\">\n <mat-form-field class=\"mt-1\">\n <input type=\"text\" matInput [formControl]=\"search\" placeholder=\"Title\" name=\"title\"\n autocomplete=\"off\" />\n <button mat-button *ngIf=\"filters.title\" matSuffix mat-icon-button (click)=\"resetFieldValue()\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </div>\n <table mat-table [dataSource]=\"entityFiles\" class=\"w-100\" matSort multiTemplateDataRows\n infiniteScrollContainer=\"body\" infiniteScroll [infiniteScrollDistance]=\"1.5\" [infiniteScrollThrottle]=\"50\"\n [fromRoot]=\"true\" (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\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 </ng-container>\n\n <!-- Title Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.title}} </td>\n </ng-container>\n\n <!-- Details Column -->\n <ng-container matColumnDef=\"details\">\n <th mat-header-cell *matHeaderCellDef> Details </th>\n <td mat-cell *matCellDef=\"let element\"> {{element.details}} </td>\n </ng-container>\n\n <!-- File Column -->\n <ng-container matColumnDef=\"file\">\n <th mat-header-cell *matHeaderCellDef> File </th>\n <td mat-cell *matCellDef=\"let element\">\n <a href=\"{{element.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" style=\"min-width:110px\">\n <button type=\"button\" mat-icon-button (click)=\"editEntityFile(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteEntityFile(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n</div>\n\n<div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" class=\"mat-typography p-4\" *ngIf=\"displayMode\">\n\n <div *ngFor=\"let efile of entityFiles\">\n <app-document-viewer [file]=\"efile.file\" [fileUrl]=\"efile.url\" [config]=\"this.viewerConfig\"\n [disableEdit]=\"true\">\n </app-document-viewer>\n <a href=\"{{efile.url}}\" target=\"_blank\">\n <button mat-button type=\"button\">View</button>\n </a>\n </div>\n\n</div>","styles":[""]}]}],"members":{"entityId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":20,"character":3}}]}],"entityType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":21,"character":3}}]}],"viewOnly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":22,"character":3}}]}],"removeSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":23,"character":3}}]}],"hideTitleAndDetails":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":24,"character":3}}]}],"displayMode":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":25,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵm"},{"__symbolic":"reference","module":"@angular/common","name":"Location","line":39,"character":21},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":41,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"fetchEntityFilesDetails":[{"__symbolic":"method"}],"addEntityFile":[{"__symbolic":"method"}],"editEntityFile":[{"__symbolic":"method"}],"deleteEntityFile":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}]}},"ɵp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":5,"character":1},"arguments":[{"selector":"app-file-dropper","template":"<div\n id=\"{{ config.containerId }}\"\n [ngStyle]=\"config.styles\"\n class=\"file-border\"\n (dragleave)=\"dragLeave($event)\"\n (dragenter)=\"dragEnter($event)\"\n (dragover)=\"dragOver($event)\"\n (click)=\"clickEvent($event)\"\n (drop)=\"dropEvent($event)\"\n [ngClass]=\"{ 'disable-div': isSingleMode && fileArray.length > 0 }\"\n>\n <div fxFill fxLayout=\"column\" fxLayoutAlign=\"center center\">\n <div>\n <span>Drag and drop file</span>\n </div>\n\n <div class=\"mt-2\">\n <span>or</span>\n </div>\n\n <div class=\"mt-2\">\n <button mat-raised-button color=\"primary\" type=\"button\">Browse</button>\n </div>\n\n <div class=\"mt-4\">\n <span>Supported files</span>\n </div>\n\n <div *ngIf=\"config.acceptFileText\">\n <span>{{ config.acceptFileText }}</span>\n </div>\n </div>\n</div>\n<input\n type=\"file\"\n id=\"{{ config.fileId }}\"\n [accept]=\"config.acceptFile\"\n (change)=\"onFileChange($event)\"\n [multiple]=\"config.multiple === true\"\n style=\"display:none\"\n/>\n","styles":[".disable-div{cursor:not-allowed}.file-border{border:1px dashed #989898}"]}]}],"members":{"fileArray":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":3}}]}],"fileChanged":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"styles":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":19,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"dragEnter":[{"__symbolic":"method"}],"dragOver":[{"__symbolic":"method"}],"dragLeave":[{"__symbolic":"method"}],"dropEvent":[{"__symbolic":"method"}],"onFileChange":[{"__symbolic":"method"}],"addFiles":[{"__symbolic":"method"}],"sortFiles":[{"__symbolic":"method"}],"fileSizeAllowed":[{"__symbolic":"method"}],"clickEvent":[{"__symbolic":"method"}]}},"ɵq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":7,"character":1},"arguments":[{"selector":"app-note-list","template":"<div fxLayout=\"column\" fxLayoutGap=\"1.5rem\" class=\"m-4\">\n\n <div fxLayout fxLayoutAlign=\"center center\" fxLayoutGap=\"1rem\">\n <h3 class=\"m-0 font-weight-bold mr-3\">{{labelText}}s</h3>\n <button class=\"d-print-none\" *ngIf=\"!readonly\" mat-raised-button color=\"primary\" type=\"button\"\n (click)=\"addNote()\">+ Add</button>\n </div>\n\n <div class=\"w-00 scroll-container\" infiniteScroll [infiniteScrollDistance]=\"1\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"notes\" class=\"w-100\" multiTemplateDataRows>\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let note; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n\n\n <ng-container matColumnDef=\"note\">\n <th mat-header-cell *matHeaderCellDef> {{labelText}} </th>\n <td mat-cell *matCellDef=\"let note\">\n {{note?.note}}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef class=\"d-print-none\"> Actions </th>\n <td mat-cell *matCellDef=\"let note\" class=\"d-print-none\">\n <button type=\"button\" mat-icon-button (click)=\"editNote(note)\">\n <mat-icon>edit</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"deleteNote(note)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n</div>","styles":[".scroll-container{max-height:400px;overflow-y:auto}"]}]}],"members":{"relatedModelId":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":3}}]}],"modelType":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":15,"character":3}}]}],"readonly":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":3}}]}],"labelText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":17,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵr"},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":31,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"addNote":[{"__symbolic":"method"}],"editNote":[{"__symbolic":"method"}],"deleteNote":[{"__symbolic":"method"}],"resetScroll":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}]}},"ɵr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getNotes":[{"__symbolic":"method"}],"addNote":[{"__symbolic":"method"}],"editNote":[{"__symbolic":"method"}],"deleteNote":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-note-form","template":"<form [formGroup]=\"noteFormGroup\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <div>{{data?.labelText}}</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n <mat-form-field fxFlex=\"100%\">\n <textarea matInput formControlName=\"note\" placeholder=\"{{data?.labelText}}\" autocomplete=\"off\"\n required></textarea>\n <mat-error *ngIf=\"isFieldValid('note')\">{{\n getErrorMessage(\"note\")\n }}</mat-error>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" color=\"primary\">Save</button>\n </div>\n </div>\n </div>\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":26,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":26,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵs"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":27,"character":16},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵr"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]}},"ɵt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":12,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-searchable-selector","providers":[{"provide":{"__symbolic":"reference","module":"@angular/material/form-field","name":"MatFormFieldControl","line":19,"character":15},"useExisting":{"__symbolic":"reference","name":"ɵt"}}],"template":"<div [formGroup]=\"selectorForm\" class=\"searchable-selctor-container\">\n <mat-select formControlName=\"select_value\" focused=\"false\" [multiple]=\"multiple\" [required]=\"required\"\n autocomplete=\"off\" (selectionChange)=\"_handleInput()\" msInfiniteScroll (infiniteScroll)=\"onScroll()\"\n (openedChange)=\"openedChange($event)\">\n <mat-form-field *ngIf=\"enableSearch\" class=\"p-1 w-100\">\n <input matInput formControlName=\"search\" placeholder=\"Search...\" (keydown)=\"$event.stopPropagation();\"\n autocomplete=\"off\">\n </mat-form-field>\n <div>\n <!-- TODO:Implement scroll only for options and have search fixed -->\n <mat-option *ngFor=\" let item of dataItems\" [value]=\"getPropertyValue(item,valueField)\">\n {{getPropertyValue(item,titleField)}}\n </mat-option>\n </div>\n <div fxlayout=\"column\" class=\"w-100\" fxLayoutAlign=\"center center\">\n <mat-spinner class=\"my-4\" color=\"primary\" diameter=\"30\" *ngIf=\"isLoading\"></mat-spinner>\n </div>\n </mat-select>\n <mat-icon *ngIf=\"add\" class=\"relative-icon\" matSuffix (click)=\"addItem($event)\">add_circle_outline</mat-icon>\n <mat-icon *ngIf=\"edit && selectedValue\" class=\"relative-icon\" matSuffix (click)=\"editItem($event)\">edit</mat-icon>\n</div>","styles":[".searchable-selctor-container{display:flex}.relative-icon{position:relative;top:-4px}"]}]}],"members":{"valueField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"titleField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"apiUrl":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":29,"character":3},"arguments":["value"]}]}],"multiple":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"selectedValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":31,"character":3}}]}],"selectedValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"enableSearch":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"add":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":34,"character":3}}]}],"addConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":35,"character":3}}]}],"edit":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":36,"character":3}}]}],"editConfig":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":37,"character":3}}]}],"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":38,"character":3}}]}],"sortBy":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":39,"character":3}}]}],"searchField":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":40,"character":3}}]}],"itemComponent":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":41,"character":3}}]}],"selectionChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"itemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":43,"character":3}}]}],"required":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":67,"character":3}}]}],"disabled":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":76,"character":3}}]}],"value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":85,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Optional","line":103,"character":5}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Self","line":103,"character":17}}]],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":98,"character":17},{"__symbolic":"reference","module":"@angular/cdk/a11y","name":"FocusMonitor","line":99,"character":27},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","name":"ElementRef","module":"@angular/core","arguments":[{"__symbolic":"error","message":"Could not resolve type","line":101,"character":36,"context":{"typeName":"HTMLElement"},"module":"./lib/searchable-selector/searchable-selector.component"}]},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":102,"character":20},{"__symbolic":"reference","module":"@angular/forms","name":"NgControl","line":103,"character":42}]}],"openedChange":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"fetchItemList":[{"__symbolic":"method"}],"setDescribedByIds":[{"__symbolic":"method"}],"onContainerClick":[{"__symbolic":"method"}],"writeValue":[{"__symbolic":"method"}],"registerOnChange":[{"__symbolic":"method"}],"registerOnTouched":[{"__symbolic":"method"}],"setDisabledState":[{"__symbolic":"method"}],"getPropertyValue":[{"__symbolic":"method"}],"_handleInput":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"reloadData":[{"__symbolic":"method"}],"search":[{"__symbolic":"method"}],"addItem":[{"__symbolic":"method"}],"editItem":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]},"statics":{"nextId":0}},"ɵu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Directive","line":5,"character":1},"arguments":[{"selector":"[msInfiniteScroll]"}]}],"members":{"threshold":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"debounceTime":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"complete":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":12,"character":3}}]}],"infiniteScroll":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":13,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/select","name":"MatSelect","line":22,"character":33},{"__symbolic":"reference","module":"@angular/core","name":"NgZone","line":22,"character":60}]}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterViewInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"evaluateThreshold":[{"__symbolic":"method"}],"registerScrollListener":[{"__symbolic":"method"}],"handleScrollEvent":[{"__symbolic":"method"}],"getSelectItemHeightPx":[{"__symbolic":"method"}]}},"ɵv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"num-items-selector","template":"<select [(ngModel)]=\"numItems\" class=\"form-control\" id=\"numItems\" name=\"numItems\" (change)=\"numItemsChanged()\">\r\n <option value=\"25\">25</option>\r\n <option value=\"50\">50</option>\r\n <option value=\"100\">100</option>\r\n <option value=\"250\">250</option>\r\n <option value=\"500\">500</option>\r\n <option value=\"1000\">1000</option>\r\n <option value=\"2000\">2000</option>\r\n <option value=\"3000\">3000</option>\r\n <option value=\"4000\">4000</option>\r\n <option value=\"5000\">5000</option>\r\n <option value=\"5000000000\">All</option>\r\n</select> "}]}],"members":{"numItems":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"numItemsChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":14,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"numItemsChanged":[{"__symbolic":"method"}]}},"ɵw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"number-selector","template":"<div class=\"number-selector-wrapper\">\n <select name=\"selectedValue\" [(ngModel)]=\"selectedValue\" class=\"form-control\" (change)=\"numChanged()\">\n <option value=\"\">-- Student Status --</option>\n <option *ngFor=\"let start_value of items;\" value=\"{{start_value}}\">{{start_value}}</option>\n </select>\n</div>"}]}],"members":{"start_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":13,"character":5}}]}],"end_value":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":14,"character":5}}]}],"selectedValueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":5}}]}],"selectedValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":16,"character":5}}]}],"__ctor__":[{"__symbolic":"constructor"}],"numChanged":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵx":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":4,"character":1},"arguments":[{"selector":"app-timeline-filter","template":"<ng-container [formGroup]=\"form\">\n <mat-form-field>\n <mat-label>{{labelText}}</mat-label>\n <mat-select (selectionChange)=\"changeTimeline($event.value)\" [value]=\"timelineValue\">\n <mat-option *ngFor=\"let timeline of timelines\" [value]=\"timeline.value\">\n {{timeline.viewValue}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n\n <ng-container *ngIf=\"showCustomDateFields\">\n <mat-form-field>\n <input matInput formControlName=\"{{dateFrom}}\" [matDatepicker]=\"fromPicker\" (click)=\"fromPicker.open()\"\n placeholder=\"From Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"fromPicker\"></mat-datepicker-toggle>\n <mat-datepicker #fromPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateFrom)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateFrom)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field>\n <input matInput formControlName=\"{{dateTo}}\" [matDatepicker]=\"toPicker\" (click)=\"toPicker.open()\"\n placeholder=\"To Date\" readonly />\n <mat-datepicker-toggle matSuffix [for]=\"\"></mat-datepicker-toggle>\n <mat-datepicker #toPicker></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue(dateTo)\" matSuffix mat-icon-button\n (click)=\"resetFieldValue(dateTo)\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n </ng-container>\n</ng-container>","styles":[""]}]}],"members":{"timelines":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"labelText":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"dateFrom":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":27,"character":3}}]}],"dateTo":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":28,"character":3}}]}],"form":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":30,"character":3}}]}],"defaultValue":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":32,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"setFieldValue":[{"__symbolic":"method"}],"changeTimeline":[{"__symbolic":"method"}]}},"ɵy":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":5,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":6,"character":12},"member":"forChild"},"arguments":[[]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":7,"character":12}]}]}],"members":{}},"ɵz":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-loader","template":"<div [hidden]=\"!isLoading\">\n <mat-progress-spinner mode=\"indeterminate\" [strokeWidth]=\"2\" [diameter]=\"32 * size\"></mat-progress-spinner>\n <span class=\"message\">{{message}}</span>\n</div>\n","styles":[".mat-progress-spinner{display:inline-block;vertical-align:middle}.message{margin-left:.5em}"]}]}],"members":{"isLoading":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"size":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":10,"character":3}}]}],"message":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":11,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}]}},"ɵba":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":22,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"app-email-subscription-user-form","template":"<form [formGroup]=\"esUserFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription User</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\" required\n [selectedValue]=\"selectedUser\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('user_id')\">{{getErrorMessage('user_id')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"48%\" class=\"mt-1\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\"\n required [selectedValue]=\"selectedType\">\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('email_type_id')\">{{getErrorMessage('email_type_id')}}</mat-error>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":42,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":42,"character":12}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":38,"character":26},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵba"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵe"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbb":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":16,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":17,"character":1},"arguments":[{"selector":"app-email-subscription-user-list","template":"<div class=\"mat-typography m-4\">\n <div fxLayout=\"row\" fxLayoutAlign=\"start center\">\n <app-email-subscription-user-list-filter (valueChange)=\"filterChange($event)\">\n </app-email-subscription-user-list-filter>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionUser()\">+\n User Subscription</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"esUserList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-user-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let esUser; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"user.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> User </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.user?.name }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"email_type.title\">\n <th mat-header-cell *matHeaderCellDef> Email Type </th>\n <td mat-cell *matCellDef=\"let esUser;\"> {{ esUser?.email_type?.title }} </td>\n </ng-container>\n\n <ng-container matColumnDef=\"creator.name\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Creator</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.creator?.name }}\n </td>\n </ng-container>\n\n <ng-container matColumnDef=\"created_at\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Created On</th>\n <td mat-cell *matCellDef=\"let esUser;\">\n {{esUser?.created_at | date:'medium' }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let esUser\">\n <button type=\"button\" mat-icon-button (click)=\"deleteEmailSubscriptionUser($event,esUser)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button (click)=\"editEmailSubscriptionUser($event,esUser)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns;\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n\n </section>\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":31,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":31,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":44,"character":20},{"__symbolic":"reference","name":"ɵe"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":46,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"columnsChange":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"filterChange":[{"__symbolic":"method"}],"addEmailSubscriptionUser":[{"__symbolic":"method"}],"editEmailSubscriptionUser":[{"__symbolic":"method"}],"deleteEmailSubscriptionUser":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"changeSort":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbc":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/router","name":"Router","line":12,"character":30},{"__symbolic":"reference","name":"ɵbd"}]}],"canActivate":[{"__symbolic":"method"}],"canLoad":[{"__symbolic":"method"}],"isUserAuthenticated":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbd":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":13,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbe"}]}],"setCredentials":[{"__symbolic":"method"}],"getAccessToken":[{"__symbolic":"method"}],"getExpiration":[{"__symbolic":"method"}],"getRefreshToken":[{"__symbolic":"method"}],"refresh":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbe":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵbf"}]}],"getConfigsRaw":[{"__symbolic":"method"}],"getProjectKey":[{"__symbolic":"method"}],"getApiUrl":[{"__symbolic":"method"}],"getAuthClientSecret":[{"__symbolic":"method"}],"getStorage":[{"__symbolic":"method"}],"getAuthGrantType":[{"__symbolic":"method"}],"getCredentialsKey":[{"__symbolic":"method"}]},"statics":{"BASE_CREDENTIALS":"credentials","ɵprov":{}}},"ɵbf":{"__symbolic":"class","members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"any"}]}],"loadFromMap":[{"__symbolic":"method"}]}},"ɵbg":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":5,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-email-subscription-user-list-filter","template":"<form [formGroup]=\"esUserFilterForm\" fxLayout=\"row wrap\" fxLayoutGap=\"1rem\" fxLayoutAlign=\"start center\">\n <mat-form-field class=\"ml-3\">\n <mat-label>User</mat-label>\n <app-searchable-selector formControlName=\"user_id\" apiUrl=\"api/users\" titleField=\"name\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n\n <mat-form-field class=\"ml-3\">\n <mat-label>Email Type</mat-label>\n <app-searchable-selector formControlName=\"email_type_id\" apiUrl=\"api/email-subscription-types\">\n </app-searchable-selector>\n <button mat-button *ngIf=\"getFieldValue('user_id')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('user_id')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n</form>","styles":[""]}]}],"members":{"valueChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":15,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":17,"character":26}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbh":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":21,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":22,"character":1},"arguments":[{"selector":"app-email-subscription-type-form","template":"<form [formGroup]=\"emailSubscriptionTypeFormGroup\" (ngSubmit)=\"submit()\" class=\"mat-typography\">\n <div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div>Email Subscription Type</div>\n </div>\n\n <div mat-dialog-content fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between center\">\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required />\n <mat-error *ngIf=\"isFieldValid('title')\">{{getErrorMessage('title')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <input matInput formControlName=\"code\" placeholder=\"Code\" autocomplete=\"off\" required />\n <mat-hint align=\"end\">Unique Value</mat-hint>\n <mat-error *ngIf=\"isFieldValid('code')\">{{getErrorMessage('code')}}</mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <mat-label>Frequency</mat-label>\n <app-searchable-selector formControlName=\"frequency_id\" apiUrl=\"api/email-subscription-frequencies\"\n [(selectedValue)]=\"selectedFrequency\" [enableSearch]=\"false\" required>\n </app-searchable-selector>\n <mat-error *ngIf=\"isFieldValid('frequency_id')\">{{getErrorMessage('frequency_id')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\" class=\"mt-1\">\n <textarea matInput formControlName=\"description\" placeholder=\"Description\"\n autocomplete=\"off\"></textarea>\n </mat-form-field>\n\n <div class=\"my-2\" fxLayout=\"row\" fxLayoutGap=\"30px\" fxLayoutAlign=\"end\" fxFlex=\"100%\">\n <button mat-raised-button type=\"button\" (click)=\"cancel()\">Cancel</button>\n <button mat-raised-button type=\"submit\" color=\"primary\" [disabled]=\"isSubmitLoading\">\n <app-loader class=\"inline-loader\" [isLoading]=\"isSubmitLoading\"></app-loader>\n Save\n </button>\n </div>\n </div>\n </div>\n\n\n </div>\n</form>","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,null,null,null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":41,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":41,"character":12}]}],null],"parameters":[{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":37,"character":26},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵbh"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"ɵe"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"cancel":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbi":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":12,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":13,"character":1},"arguments":[{"selector":"app-email-subscription-type-list","template":"<div class=\"mat-typography m-4\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"start center\">\n <mat-form-field>\n <input matInput [formControl]=\"search\" placeholder=\"Email Type\" autocomplete=\"off\" />\n <button mat-button matSuffix mat-icon-button>\n <mat-icon>search</mat-icon>\n </button>\n <button mat-button *ngIf=\"search.value\" matSuffix mat-icon-button (click)=\"search.setValue('')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <div class=\"ml-2\">\n <button mat-raised-button color=\"primary\" type=\"button\" (click)=\"addEmailSubscriptionType()\">+ Email\n Type</button>\n </div>\n <span fxFlex></span>\n <mat-form-field appearance=\"outline\" class=\"no-padding\">\n <mat-label>Columns</mat-label>\n <mat-select [formControl]=\"displayColumns\" multiple (selectionChange)=\"columnsChange()\">\n <mat-option *ngFor=\"let column of availableDisplayColumns\" [value]=\"column.value\">{{column.name}}\n </mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n\n <section>\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <table mat-table [dataSource]=\"emailSubscriptionTypeList\" matSort class=\"w-100 mt-1\" multiTemplateDataRows\n id=\"email-subscription-type-table\">\n\n <!-- Index Column -->\n <ng-container matColumnDef=\"index\">\n <th mat-header-cell *matHeaderCellDef> # </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType; let i = dataIndex\"> {{ i+1 }} </td>\n </ng-container>\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Title </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.title }} </td>\n </ng-container>\n <ng-container matColumnDef=\"code\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.code }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"frequency.title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header> Code </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.frequency?.title }}\n </td>\n </ng-container>\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType;\"> {{ emailSubscriptionType?.description }}\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let emailSubscriptionType\">\n <button type=\"button\" mat-icon-button\n (click)=\"deleteEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>delete</mat-icon>\n </button>\n <button type=\"button\" mat-icon-button\n (click)=\"editEmailSubscriptionType($event,emailSubscriptionType)\">\n <mat-icon>edit</mat-icon>\n </button>\n </td>\n </ng-container>\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns; sticky:true\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n </div>\n </section>\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"sort":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ViewChild","line":30,"character":3},"arguments":[{"__symbolic":"reference","module":"@angular/material/sort","name":"MatSort","line":30,"character":13},{"static":true}]}]}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":44,"character":20},{"__symbolic":"reference","name":"ɵe"}]}],"ngOnInit":[{"__symbolic":"method"}],"columnsChange":[{"__symbolic":"method"}],"initializeData":[{"__symbolic":"method"}],"addEmailSubscriptionType":[{"__symbolic":"method"}],"editEmailSubscriptionType":[{"__symbolic":"method"}],"deleteEmailSubscriptionType":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"changeSort":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbj":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":5,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-email-subscription-for-user","template":"<div fxLayout=\"column\" class=\"container my-4\">\n\n <div class=\"scroll-container\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\" [scrollWindow]=\"false\">\n <mat-list>\n <div mat-subheader>Available Subscriptions</div>\n <mat-list-item *ngFor=\"let sub of subscriptions\">\n <mat-icon mat-list-icon>email</mat-icon>\n <div mat-line>{{sub?.title}} </div>\n <div mat-line class=\"text-secondary\">{{sub?.frequency?.title}}</div>\n <div mat-line> {{sub?.description}} </div>\n <div fxLayout fxLayoutAlign=\"end\">\n <button type=\"button\" *ngIf=\"!sub?.current_user_subscription\" mat-raised-button color=\"primary\"\n (click)=\"subscribe(sub)\">Subscribe</button>\n <button type=\"button\" *ngIf=\"sub?.current_user_subscription\" mat-stroked-button color=\"primary\"\n (click)=\"unsubscribe(sub)\">Unsubscribe</button>\n </div>\n <mat-divider></mat-divider>\n </mat-list-item>\n </mat-list>\n </div>\n\n</div>","styles":[".scroll-container{max-height:800px;overflow-y:auto}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"ngOnInit":[{"__symbolic":"method"}],"fetchSubscriptions":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"subscribe":[{"__symbolic":"method"}],"unsubscribe":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"ɵbk":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":13,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":14,"character":1},"arguments":[{"selector":"app-techlify-updates-list","template":"<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n <button mat-raised-button (click)=\"modifyTechlifyUpdate()\" class=\"primary-bg text-white\">\n <mat-icon>\n add\n </mat-icon>\n Create\n </button>\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\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 </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"modifyTechlifyUpdate(element)\">\n <mat-icon>edit</mat-icon>\n </button>\n\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"deleteTechlifyUpdate(element)\">\n <mat-icon>delete</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":38,"character":20},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":41,"character":16}]}],"ngOnInit":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"modifyTechlifyUpdate":[{"__symbolic":"method"}],"deleteTechlifyUpdate":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"sortColumn":[{"__symbolic":"method"}],"assignFilter":[{"__symbolic":"method"}]}},"ɵbl":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":3,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"getTechlifyUpdates":[{"__symbolic":"method"}],"createTechlifyUpdate":[{"__symbolic":"method"}],"updateTechlifyUpdate":[{"__symbolic":"method"}],"deleteTechlifyUpdate":[{"__symbolic":"method"}],"getTechlifyUpdate":[{"__symbolic":"method"}],"getNewUpdateForCurrentUser":[{"__symbolic":"method"}],"createUpdateViewRecord":[{"__symbolic":"method"}],"updateCurrentUserUpdates":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}},"ɵbm":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":12},"member":"forChild"},"arguments":[[{"path":"","redirectTo":"all","pathMatch":"full"},{"path":"all","component":{"__symbolic":"reference","name":"ɵbk"}},{"path":"**","redirectTo":"all","pathMatch":"full"}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":12}]}]}],"members":{}},"ɵbn":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbo"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","module":"@angular/forms","name":"ReactiveFormsModule","line":12,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":14,"character":4},{"__symbolic":"reference","module":"ngx-editor","name":"NgxEditorModule","line":15,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵbo"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbo"}]}]}],"members":{}},"ɵbo":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":27,"character":1},"arguments":[{"selector":"app-techlify-update-form","template":"<form [formGroup]=\"techlifyUpdateForm\" (ngSubmit)=\"submit()\">\n <div fxLayout=\"column\" class=\"mat-typography\">\n <div mat-dialog-title class=\"text-center\">\n <h2>\n App Update Form\n </h2>\n </div>\n <div mat-dialog-content fxLayout=\"column\" fxLayoutGap=\"1rem\">\n <mat-form-field fxFlex=\"100%\">\n <mat-label>Title</mat-label>\n <input matInput formControlName=\"title\" placeholder=\"Title\" autocomplete=\"off\" required />\n <button mat-button *ngIf=\"getFieldValue('title')\" matSuffix mat-icon-button (click)=\"resetFieldValue('title')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('title')\">\n {{getErrorMessage('title')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\">\n <input matInput [matDatepicker]=\"released_on\" formControlName=\"released_on\" placeholder=\"Released on\" readonly\n (click)=\"released_on.open()\" required />\n <mat-datepicker-toggle matSuffix [for]=\"released_on\"></mat-datepicker-toggle>\n <mat-datepicker #released_on></mat-datepicker>\n <button mat-button *ngIf=\"getFieldValue('released_on')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('released_on')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('released_on')\">\n {{getErrorMessage('released_on')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\">\n <mat-label>Version</mat-label>\n <input matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" required />\n <button mat-button *ngIf=\"getFieldValue('version')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('version')\">\n {{getErrorMessage('version')}}\n </mat-error>\n </mat-form-field>\n\n <mat-form-field fxFlex=\"100%\">\n <mat-label>Learn more link</mat-label>\n <input matInput formControlName=\"learn_more_link\" placeholder=\"Learn More Link\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"getFieldValue('learn_more_link')\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('learn_more_link')\">\n <mat-icon>close</mat-icon>\n </button>\n <mat-error *ngIf=\"isFieldValid('learn_more_link')\">\n {{getErrorMessage('learn_more_link')}}\n </mat-error>\n </mat-form-field>\n\n <div fxFlex=\"100%\">\n <div class=\"NgxEditor__Wrapper\">\n <ngx-editor-menu [toolbar]=\"toolbar\" [editor]=\"editor\"> </ngx-editor-menu>\n <ngx-editor formControlName=\"description\" [editor]=\"editor\" placeholder=\"Description\">\n </ngx-editor>\n </div>\n <mat-error *ngIf=\"isFieldValid('description')\">\n {{getErrorMessage('description')}}\n </mat-error>\n </div>\n </div>\n <div mat-dialog-actions fxFlex=\"100%\" fxLayout fxLayoutAlign=\"end\" fxLayoutGap=\"1rem\">\n <button mat-button class=\"mt-2\" type=\"button\" (click)=\"dialogRef.close()\">\n Cancel\n </button>\n <button mat-raised-button type=\"submit\" class=\"btn-primary mt-2\">\n Save\n </button>\n </div>\n </div>\n</form>","styles":[""]}]}],"members":{"onSave":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":45,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":45,"character":12}]}],null,null,null,null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵbo"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":46,"character":16},{"__symbolic":"reference","name":"ɵl"},{"__symbolic":"reference","name":"ɵn"},{"__symbolic":"reference","name":"ɵbl"}]}],"createForm":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"submit":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"getFieldValue":[{"__symbolic":"method"}],"isFieldValid":[{"__symbolic":"method"}],"getErrorMessage":[{"__symbolic":"method"}]}},"ɵbp":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":6,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbq"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":9,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":11,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵbq"}]}]}],"members":{}},"ɵbq":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":2,"character":1},"arguments":[{"selector":"app-read-more","template":"<div [innerHTML]=\"currentText\"></div>\n<a href=\"javascript:;\" *ngIf=\"!hideToggle\" class=\"primary-color hoverable\" (click)=\"toggleView()\">Read\n {{ isCollapsed ? \"more\" : \"less\" }}</a>","styles":["div.collapsed{height:250px;overflow:hidden}"]}]}],"members":{"text":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":8,"character":3}}]}],"maxLength":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":9,"character":3}}]}],"__ctor__":[{"__symbolic":"constructor"}],"ngOnInit":[{"__symbolic":"method"}],"toggleView":[{"__symbolic":"method"}],"determineView":[{"__symbolic":"method"}]}},"ɵbr":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":16,"character":1},"arguments":[{"imports":[{"__symbolic":"call","expression":{"__symbolic":"select","expression":{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":17,"character":12},"member":"forChild"},"arguments":[[{"path":"","redirectTo":"update-history","pathMatch":"full"},{"path":"update-history","component":{"__symbolic":"reference","name":"ɵbs"}},{"path":"**","redirectTo":"all","pathMatch":"full"}]]}],"exports":[{"__symbolic":"reference","module":"@angular/router","name":"RouterModule","line":18,"character":12}]}]}],"members":{}},"ɵbs":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@ngneat/until-destroy","name":"UntilDestroy","line":11,"character":1}},{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":12,"character":1},"arguments":[{"selector":"app-techlify-update-history","template":"<section class=\"p-4\" fxLayout=\"column\">\n <h3 class=\"primary-color text-center\">\n App Updates\n </h3>\n <form [formGroup]=\"filterFormGroup\" fxLayout=\"row wrap\" fxLayoutGap=\"0.5rem\" fxFlex=\"100%\" style=\"font-size: 12px;\">\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"search\" placeholder=\"Title\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('search').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('search')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n <mat-form-field fxFlex=\"0 1 calc(100% - 0.5rem)\" fxFlex.gt-md=\"0 1 calc(15% - 0.5rem)\" appearance=\"outline\"\n fxFlex.gt-sm=\"0 1 calc(20% - 0.5rem)\">\n <input type=\"text\" matInput formControlName=\"version\" placeholder=\"Version\" autocomplete=\"off\" />\n <button mat-button *ngIf=\"filterFormGroup.get('version').value\" matSuffix mat-icon-button\n (click)=\"resetFieldValue('version')\">\n <mat-icon>close</mat-icon>\n </button>\n </mat-form-field>\n </form>\n\n <table mat-table [dataSource]=\"techlifyUpdates\" class=\"mat-elevation-z8 w-100\" matSort multiTemplateDataRows\n (matSortChange)=\"sortColumn($event)\" infiniteScroll [infiniteScrollDistance]=\"2\" [infiniteScrollThrottle]=\"50\"\n (scrolled)=\"onScroll()\">\n\n <!-- Index Column -->\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 </ng-container>\n\n <!-- Course Column -->\n <ng-container matColumnDef=\"title\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Title </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.title}} </td>\n </ng-container>\n\n <!-- Version Column -->\n <ng-container matColumnDef=\"version\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Version </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.version}} </td>\n </ng-container>\n\n <!-- Released On Column -->\n <ng-container matColumnDef=\"released_on\">\n <th mat-header-cell *matHeaderCellDef mat-sort-header disableClear> Released On </th>\n <td mat-cell *matCellDef=\"let element\"> {{element?.released_on | date:'mediumDate'}} </td>\n </ng-container>\n\n <!-- Learn More Link Column -->\n <ng-container matColumnDef=\"learn_more_link\">\n <th mat-header-cell *matHeaderCellDef> Learn more link </th>\n <td mat-cell *matCellDef=\"let element\">\n <a [href]=\"element?.learn_more_link\" target=\"_blank\">\n {{element?.learn_more_link}}\n </a>\n </td>\n </ng-container>\n\n <!-- Description Column -->\n <ng-container matColumnDef=\"description\">\n <th mat-header-cell *matHeaderCellDef> Description </th>\n <td mat-cell *matCellDef=\"let element\">\n <app-read-more [text]=\"element?.description\" [maxLength]=\"50\"></app-read-more>\n </td>\n </ng-container>\n\n <!-- Creator Column -->\n <ng-container matColumnDef=\"creator\">\n <th mat-header-cell *matHeaderCellDef> Creator </th>\n <td mat-cell *matCellDef=\"let element\">\n {{element?.creator?.name}}\n <div fxLayout class=\"small\">\n {{element?.created_at | date : 'mediumDate'}}\n </div>\n </td>\n </ng-container>\n\n <!-- Actions Column -->\n <ng-container matColumnDef=\"actions\">\n <th mat-header-cell *matHeaderCellDef> Actions </th>\n <td mat-cell *matCellDef=\"let element\" class=\"secondary-color\">\n <button type=\"button\" class=\"secondary-color\" mat-icon-button (click)=\"openUpdateView(element)\">\n <mat-icon>remove_red_eye</mat-icon>\n </button>\n </td>\n </ng-container>\n\n <tr mat-header-row *matHeaderRowDef=\"displayedColumns\"></tr>\n <tr mat-row *matRowDef=\"let row; columns: displayedColumns;\"></tr>\n </table>\n</section>\n","styles":[""]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":36,"character":20},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","module":"@angular/forms","name":"FormBuilder","line":38,"character":16},{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"listenChanges":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}],"loadData":[{"__symbolic":"method"}],"reload":[{"__symbolic":"method"}],"onScroll":[{"__symbolic":"method"}],"resetFieldValue":[{"__symbolic":"method"}],"sortColumn":[{"__symbolic":"method"}],"assignFilter":[{"__symbolic":"method"}],"openUpdateView":[{"__symbolic":"method"}],"updateCurrentUserUpdates":[{"__symbolic":"method"}]}},"ɵbt":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":8,"character":1},"arguments":[{"selector":"app-update-notifier-snack","template":"<div fxLayout=\"column\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\">\n <span fxLayoutAlign=\"center center\">\n <mat-icon class=\"large-icon primary-color\">\n <span class=\"material-icons-outlined\">\n grading\n </span>\n </mat-icon>\n </span>\n <div fxLayout=\"column\">\n <h5 class=\"primary-color text-truncate\" matTooltip=\"{{techlifyUpdate?.title}}\"\n matTooltipPosition=\"below\">\n App Update: {{techlifyUpdate?.title}}\n </h5>\n <small class=\"text-muted\">\n Version : {{techlifyUpdate?.version}}\n </small>\n </div>\n </div>\n <div fxLayoutAlign=\"end center\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n <div fxLayout=\"row\" class=\"text-muted\" style=\"margin-top: 1rem;\" [innerHtml]=\"descriptionText\">\n </div>\n <div fxLayout=\"row\" fxLayoutAlign=\"space-between\">\n <button type=\"button\" mat-button class=\"primary-color\" (click)=\"openUpdateHistory()\">\n <mat-icon>\n history\n </mat-icon>\n Update History\n </button>\n <button type=\"button\" mat-raised-button class=\"primary-bg text-white\" (click)=\"openUpdateView()\">\n View\n </button>\n </div>\n</div>","styles":[".large-icon{transform:scale(2.3)}.primary-color{color:#009fdd!important}.primary-bg{background-color:#009fdd!important}.text-muted,.text-white{color:#d3d3d3}.text-truncate{margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;width:400px}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":20,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/snack-bar","name":"MAT_SNACK_BAR_DATA","line":20,"character":12}]}],null,null,null,null,null],"parameters":[{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","name":"MatSnackBarRef","module":"@angular/material/snack-bar","arguments":[{"__symbolic":"reference","name":"EmbeddedViewRef","module":"@angular/core","arguments":[{"__symbolic":"reference","name":"any"}]}]},{"__symbolic":"reference","module":"@angular/material/dialog","name":"MatDialog","line":22,"character":20},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":23,"character":20},{"__symbolic":"reference","name":"ɵbl"},{"__symbolic":"reference","name":"ɵn"}]}],"ngOnInit":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"determineDescription":[{"__symbolic":"method"}],"openUpdateView":[{"__symbolic":"method"}],"openUpdateHistory":[{"__symbolic":"method"}],"createUpdateViewRecord":[{"__symbolic":"method"}]}},"ɵbu":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":8,"character":1},"arguments":[{"declarations":[{"__symbolic":"reference","name":"ɵbv"}],"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":11,"character":4},{"__symbolic":"reference","name":"MaterialModule"},{"__symbolic":"reference","module":"@angular/flex-layout","name":"FlexLayoutModule","line":13,"character":4}],"exports":[{"__symbolic":"reference","name":"ɵbv"}],"entryComponents":[{"__symbolic":"reference","name":"ɵbv"}]}]}],"members":{}},"ɵbv":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":6,"character":1},"arguments":[{"selector":"app-update-view","template":"<div fxLayout=\"column\">\n <div mat-dialog-title class=\"text-center\">\n <div fxLayout=\"row wrap\" fxLayoutAlign=\"space-between\">\n <div fxFlex=\"80%\">\n <div fxLayout=\"row wrap\" fxLayoutGap=\"1rem\">\n <span fxFlex=\"calc(10%-1rem)\" fxLayoutAlign=\"start center\">\n <mat-icon class=\"large-icon primary-color\">\n <span class=\"material-icons-outlined\">\n grading\n </span>\n </mat-icon>\n </span>\n <div fxFlex=\"calc(90%-1rem)\">\n <div fxLayout=\"column\" fxLayoutAlign=\"start\">\n <div fxLayout>\n <h5 class=\"primary-color\" style=\"margin-bottom:0;text-align: left;\">\n App Update: {{techlifyUpdate?.title}}\n </h5>\n </div>\n <div fxLayout=\"row\" fxLayoutGap=\"1rem\">\n <small class=\"text-muted\">\n <b>Release On</b> : {{techlifyUpdate?.released_on | date: 'mediumDate'}}\n </small>\n <small class=\"text-muted\">\n <b>Version</b> : {{techlifyUpdate?.version}}\n </small>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div fxLayoutAlign=\"end center\" class=\"text-muted\">\n <button mat-icon-button type=\"button\" (click)=\"close()\">\n <mat-icon>clear</mat-icon>\n </button>\n </div>\n </div>\n </div>\n\n <div mat-dialog-content style=\"height: 500px;overflow: auto;\">\n <div fxLayout=\"column\" class=\"text-muted\" style=\"margin-top: 1rem;\" [innerHtml]=\"techlifyUpdate?.description\">\n </div>\n </div>\n\n <div mat-dialog-actions fxLayout=\"row\" [fxLayoutAlign]=\"!this.data?.isFromHistory ? 'space-between' : 'end'\">\n <button type=\"button\" mat-button class=\"primary-color\" (click)=\"openUpdateHistory()\"\n *ngIf=\"!this.data?.isFromHistory\">\n <mat-icon>\n history\n </mat-icon>\n Update History\n </button>\n <a *ngIf=\"techlifyUpdate?.learn_more_link\" [href]=\"techlifyUpdate?.learn_more_link\" target=\"_blank\"\n style=\"text-decoration: none;\">\n <button type=\"button\" mat-button class=\"text-muted\">\n Learn More\n </button>\n </a>\n <button type=\"button\" mat-stroked-button class=\"primary-color\" (click)=\"close()\">\n OK\n </button>\n </div>\n</div>\n","styles":[".large-icon{transform:scale(2.3)}.primary-color{color:#009fdd!important}.primary-bg{background-color:#009fdd!important}.text-muted,.text-white{color:#d3d3d3}"]}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[null,[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":17,"character":5},"arguments":[{"__symbolic":"reference","module":"@angular/material/dialog","name":"MAT_DIALOG_DATA","line":17,"character":12}]}],null],"parameters":[{"__symbolic":"reference","name":"MatDialogRef","module":"@angular/material/dialog","arguments":[{"__symbolic":"reference","name":"ɵbv"}]},{"__symbolic":"reference","name":"any"},{"__symbolic":"reference","module":"@angular/router","name":"Router","line":18,"character":20}]}],"ngOnInit":[{"__symbolic":"method"}],"close":[{"__symbolic":"method"}],"openUpdateHistory":[{"__symbolic":"method"}]}},"ɵbw":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":9,"character":1},"arguments":[{"providedIn":"root"}]}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ɵe"}]}],"GET":[{"__symbolic":"method"}],"POST":[{"__symbolic":"method"}],"POSTRAW":[{"__symbolic":"method"}],"PUT":[{"__symbolic":"method"}],"PATCH":[{"__symbolic":"method"}],"DELETE":[{"__symbolic":"method"}]},"statics":{"ɵprov":{}}}},"origins":{"MaterialModule":"./lib/material.module","CoreModule":"./lib/core/core.module","ActionPopupModule":"./lib/action-popup/action-popup.module","DataTableModule":"./lib/data-table/data-table.module","DocumentViewerModule":"./lib/document-viewer/document-viewer.module","EntityFilesViewAllModule":"./lib/entity-files/entity-files-view-all.module","FileDropperModule":"./lib/file-dropper/file-dropper.module","NoteModule":"./lib/note/note.module","SearchableSelectorModule":"./lib/searchable-selector/searchable-selector.module","UtilityModule":"./lib/utility/utility.module","TimelineFilterModule":"./lib/timeline-filter/timeline-filter.module","LoaderModule":"./lib/loader/loader.module","EmailSubscriptionModule":"./lib/email-subscription/email-subscription.module","EmailSubscriptionRoutingModule":"./lib/email-subscription/email-subscription-routing.module","EmailSubscriptionUserModule":"./lib/email-subscription/email-subscription-user/email-subscription-user.module","EmailSubscriptionUserRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-routing.module","EmailSubscriptionUserFormModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.module","EmailSubscriptionUserFormRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form-routing.module","EmailSubscriptionUserListModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.module","esulr":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module","EmailSubscriptionUserListRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list-routing.module","EmailSubscriptionUserListFilterRoutingModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter-routing.module","EmailSubscriptionUserListFilterModule":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.module","EmailSubscriptionTypeRoutingModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-routing.module","EmailSubscriptionTypeModule":"./lib/email-subscription/email-subscription-type/email-subscription-type.module","EmailSubscriptionTypeFormRoutingModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form-routing.module","EmailSubscriptionTypeFormModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.module","estlr":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module","EmailSubscriptionTypeListRoutingModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list-routing.module","EmailSubscriptionTypeListModule":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.module","esfur":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module","EmailSubscriptionForUserRoutingModule":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user-routing.module","EmailSubscriptionForUserModule":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user.module","TechlifyUpdateModule":"./lib/techlify-update/techlify-update.module","TechlifyUpdateHistoryModule":"./lib/techlify-update/techlify-update-history/techlify-update-history.module","UpdateNotifierModule":"./lib/techlify-update/update-notifier/update-notifier.module","UpdateNotifierComponent":"./lib/techlify-update/update-notifier/update-notifier.component","ExportExcelButtonComponent":"./lib/export-excel/export-excel-button/export-excel-button.component","ExportExcelModule":"./lib/export-excel/export-excel.module","AuditLogForModelComponent":"./lib/audit-log/audit-log-for-model/audit-log-for-model.component","AuditLogForModelModule":"./lib/audit-log/audit-log-for-model/audit-log-for-model.module","AuditLogForModelRoutingModule":"./lib/audit-log/audit-log-for-model/audit-log-for-model-routing.module","AuditLogListComponent":"./lib/audit-log/audit-log-list/audit-log-list.component","AuditLogListModule":"./lib/audit-log/audit-log-list/audit-log-list.module","AuditLogListRoutingModule":"./lib/audit-log/audit-log-list/audit-log-list-routing.module","AuditLogListFilterComponent":"./lib/audit-log/audit-log-list-filter/audit-log-list-filter.component","AuditLogListFilterModule":"./lib/audit-log/audit-log-list-filter/audit-log-list-filter.module","AuditLogListFilterRoutingModule":"./lib/audit-log/audit-log-list-filter/audit-log-list-filter-routing.module","AuditLogViewComponent":"./lib/audit-log/audit-log-view/audit-log-view.component","AuditLogViewModule":"./lib/audit-log/audit-log-view/audit-log-view.module","AuditLogViewRoutingModule":"./lib/audit-log/audit-log-view/audit-log-view-routing.module","AuditLogViewModelComponent":"./lib/audit-log/audit-log-view-model/audit-log-view-model.component","AuditLogViewModelModule":"./lib/audit-log/audit-log-view-model/audit-log-view-model.module","AuditLogViewModelRoutingModule":"./lib/audit-log/audit-log-view-model/audit-log-view-model-routing.module","AuditLogsViewModelComponent":"./lib/audit-log/audit-logs-view-model/audit-logs-view-model.component","AuditLogsViewModelModule":"./lib/audit-log/audit-logs-view-model/audit-logs-view-model.module","AuditLogsViewModelRoutingModule":"./lib/audit-log/audit-logs-view-model/audit-logs-view-model-routing.module","AuditLogModule":"./lib/audit-log/audit-log.module","AuditLogRoutingModule":"./lib/audit-log/audit-log-routing.module","DateValidator":"./lib/date-validator","ImportCsvModule":"./lib/import-csv/import-csv.module","ImportCsvRoutingModule":"./lib/import-csv/import-csv-routing.module","ImportCsvComponent":"./lib/import-csv/import-csv.component","ImportConfig":"./lib/import-csv/import-config","ImportItemsRoutingModule":"./lib/import-csv/import-items/import-items-routing.module","ImportItemsComponent":"./lib/import-csv/import-items/import-items.component","ImportItemsModule":"./lib/import-csv/import-items/import-items.module","FailedItemsRoutingModule":"./lib/import-csv/failed-items/failed-items-routing.module","FailedItemsComponent":"./lib/import-csv/failed-items/failed-items.component","FailedItemsModule":"./lib/import-csv/failed-items/failed-items.module","LoginHistoryForUserModule":"./lib/login-history-for-user/login-history-for-user.module","LoginHistoryForUserRoutingModule":"./lib/login-history-for-user/login-history-for-user-routing.module","LoginHistoryForUserComponent":"./lib/login-history-for-user/login-history-for-user.component","ɵa":"./lib/core/snack/snack.module","ɵb":"./lib/core/snack/snack.component","ɵc":"./lib/core/snack/snack.component","ɵd":"./lib/core/http.service","ɵe":"./lib/core/http.service","ɵf":"./lib/core/route-reusable-strategy","ɵg":"./lib/action-popup/action-popup.component","ɵh":"./lib/action-popup/action-popup.model","ɵi":"./lib/data-table/data-table.component","ɵj":"./lib/document-viewer/document-viewer.component","ɵk":"./lib/entity-files/entity-file-form/entity-file-form.component","ɵl":"./lib/core/form-validator.service","ɵm":"./lib/entity-files/entity-file.service","ɵn":"./lib/core/alert.service","ɵo":"./lib/entity-files/entity-files-view-all.component","ɵp":"./lib/file-dropper/file-dropper.component","ɵq":"./lib/note/note-list/note-list.component","ɵr":"./lib/note/note.service","ɵs":"./lib/note/note-form/note-form.component","ɵt":"./lib/searchable-selector/searchable-selector.component","ɵu":"./lib/searchable-selector/mat-select-infinite-scroll.directive","ɵv":"./lib/utility/num-items-selector.component","ɵw":"./lib/utility/number-selector.component","ɵx":"./lib/timeline-filter/timeline-filter.component","ɵy":"./lib/timeline-filter/timeline-filter-routing.module","ɵz":"./lib/loader/loader.component","ɵba":"./lib/email-subscription/email-subscription-user/email-subscription-user-form/email-subscription-user-form.component","ɵbb":"./lib/email-subscription/email-subscription-user/email-subscription-user-list/email-subscription-user-list.component","ɵbc":"./lib/core/authentication.guard","ɵbd":"./lib/core/credentials.service","ɵbe":"./lib/core/config.service","ɵbf":"./lib/core/techlify-config.model","ɵbg":"./lib/email-subscription/email-subscription-user/email-subscription-user-list-filter/email-subscription-user-list-filter.component","ɵbh":"./lib/email-subscription/email-subscription-type/email-subscription-type-form/email-subscription-type-form.component","ɵbi":"./lib/email-subscription/email-subscription-type/email-subscription-type-list/email-subscription-type-list.component","ɵbj":"./lib/email-subscription/email-subscription-for-user/email-subscription-for-user.component","ɵbk":"./lib/techlify-update/techlify-updates-list/techlify-updates-list.component","ɵbl":"./lib/techlify-update/techlify-update.service","ɵbm":"./lib/techlify-update/techlify-update-routing.module","ɵbn":"./lib/techlify-update/techlify-update-form/techlify-update-form.module","ɵbo":"./lib/techlify-update/techlify-update-form/techlify-update-form.component","ɵbp":"./lib/techlify-update/read-more/read-more.module","ɵbq":"./lib/techlify-update/read-more/read-more.component","ɵbr":"./lib/techlify-update/techlify-update-history/techlify-update-history-routing.module","ɵbs":"./lib/techlify-update/techlify-update-history/techlify-update-history.component","ɵbt":"./lib/techlify-update/update-notifier/update-notifier-snack/update-notifier-snack.component","ɵbu":"./lib/techlify-update/update-view/update-view.module","ɵbv":"./lib/techlify-update/update-view/update-view.component","ɵbw":"./lib/core/dataManager.service"},"importAs":"ngx-techlify-core"}
|