diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..93a2be92f --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,13 @@ +{ + "editor.formatOnSave": false, + "eslint.format.enable": true, + "editor.codeActionsOnSave": { + "source.fixAll.stylelint": "explicit", + "source.fixAll.eslint": "explicit" + }, + "[html]": { + "editor.defaultFormatter": "esbenp.prettier-vscode" + }, + "scss.lint.unknownAtRules": "ignore", + "eslint.validate": ["json"], +} diff --git a/angular.json b/angular.json index d3f8f471d..f68268696 100644 --- a/angular.json +++ b/angular.json @@ -57,8 +57,7 @@ "maximumError": "16kB" } ], - "outputHashing": "all", - "serviceWorker": "ngsw-config.json" + "outputHashing": "all" }, "development": { "optimization": false, diff --git a/bun.lock b/bun.lock index 7f2d54764..878274769 100644 --- a/bun.lock +++ b/bun.lock @@ -102,7 +102,7 @@ "@angular/router": ["@angular/router@19.2.7", "", { "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/common": "19.2.7", "@angular/core": "19.2.7", "@angular/platform-browser": "19.2.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "sha512-tbvDz/gkifgdeQ9CazoLLfSRqHE4FQcwMOglzEE9gNCIFohpcUwRnxqZMRhZ3RE4BVLqUmzk2LmJ3VYDf6RbqA=="], - "@angular/service-worker": ["@angular/service-worker@19.2.7", "", { "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "19.2.7", "rxjs": "^6.5.3 || ^7.4.0" }, "bin": { "ngsw-config": "ngsw-config.js" } }, "sha512-zSgq7Vg65VMbPYUZDohNbmrMohulfAbH1CjJU9QdaGg7FbPSJfrN8noi6XnfHl2HqI4QMqvk+jqNNjalhMj0Gw=="], + "@angular/service-worker": ["@angular/service-worker@19.2.7", "", { "dependencies": { "tslib": "^2.3.0" }, "peerDependencies": { "@angular/core": "19.2.7", "rxjs": "^6.5.3 || ^7.4.0" } }, "sha512-zSgq7Vg65VMbPYUZDohNbmrMohulfAbH1CjJU9QdaGg7FbPSJfrN8noi6XnfHl2HqI4QMqvk+jqNNjalhMj0Gw=="], "@babel/code-frame": ["@babel/code-frame@7.26.2", "", { "dependencies": { "@babel/helper-validator-identifier": "^7.25.9", "js-tokens": "^4.0.0", "picocolors": "^1.0.0" } }, "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ=="], diff --git a/eslint.config.js b/eslint.config.js index d0884514b..7c32eb328 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -2,6 +2,9 @@ const eslint = require("@eslint/js"); const tseslint = require("typescript-eslint"); const angular = require("angular-eslint"); +const pluginImport = require("eslint-plugin-import"); +const pluginSimpleImportSort = require("eslint-plugin-simple-import-sort"); +const pluginUnusedImports = require("eslint-plugin-unused-imports"); module.exports = tseslint.config( { @@ -13,6 +16,11 @@ module.exports = tseslint.config( ...angular.configs.tsRecommended, ], processor: angular.processInlineTemplates, + plugins: { + import: pluginImport, + "simple-import-sort": pluginSimpleImportSort, + "unused-imports": pluginUnusedImports, + }, rules: { "@typescript-eslint/no-unused-vars": "warn", "@angular-eslint/directive-selector": [ @@ -31,6 +39,44 @@ module.exports = tseslint.config( style: "kebab-case", }, ], + "import/first": "error", + "import/no-duplicates": "warn", + "import/newline-after-import": "warn", + "simple-import-sort/imports": [ + "warn", + { + groups: [ + // NGXS packages + ["^@ngxs"], + + // NGX packages (ngx-... or @ngx/...) + ["^ngx-", "^@ngx"], + + // Third-party packages (primeng) + ["^primeng"], + + // RxJS packages (rxjs or @rxjs/...) + ["^rxjs", "^rxjs/operators"], + + // Angular packages + ["^@angular"], + + // Internal aliases (customize as needed) + ["^@core/", "^@osf/", "^@shared/"], + + // Side effect imports + ["^\\u0000"], + + // Parent imports + ["^\\.\\.(?!/?$)", "^\\.\\./?$"], + + // Sibling and current directory imports + ["^\\./(?=.*/)(?!/?$)", "^\\.(?!/?$)", "^\\./?$"], + ], + }, + ], + "simple-import-sort/exports": "warn", + "unused-imports/no-unused-imports": "warn", }, }, { @@ -40,5 +86,5 @@ module.exports = tseslint.config( ...angular.configs.templateAccessibility, ], rules: {}, - } + }, ); diff --git a/ngsw-config.json b/ngsw-config.json deleted file mode 100644 index 69edd2878..000000000 --- a/ngsw-config.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "./node_modules/@angular/service-worker/config/schema.json", - "index": "/index.html", - "assetGroups": [ - { - "name": "app", - "installMode": "prefetch", - "resources": { - "files": [ - "/favicon.ico", - "/index.csr.html", - "/index.html", - "/manifest.webmanifest", - "/*.css", - "/*.js" - ] - } - }, - { - "name": "assets", - "installMode": "lazy", - "updateMode": "prefetch", - "resources": { - "files": [ - "/**/*.(svg|cur|jpg|jpeg|png|apng|webp|avif|gif|otf|ttf|woff|woff2)" - ] - } - } - ] -} diff --git a/package.json b/package.json index 33e2e94ca..816005c3c 100644 --- a/package.json +++ b/package.json @@ -51,6 +51,9 @@ "@types/jasmine": "~5.1.0", "angular-eslint": "19.1.0", "eslint": "^9.20.0", + "eslint-plugin-import": "^2.31.0", + "eslint-plugin-simple-import-sort": "^12.1.1", + "eslint-plugin-unused-imports": "^4.1.4", "fantasticon": "^3.0.0", "husky": "^9.1.7", "jasmine-core": "~5.6.0", diff --git a/public/favicon.ico b/public/favicon.ico index 57614f9c9..a3bc362bb 100644 Binary files a/public/favicon.ico and b/public/favicon.ico differ diff --git a/public/icons/icon-128x128.png b/public/icons/icon-128x128.png deleted file mode 100644 index 5a9a2ccdb..000000000 Binary files a/public/icons/icon-128x128.png and /dev/null differ diff --git a/public/icons/icon-144x144.png b/public/icons/icon-144x144.png deleted file mode 100644 index 11702cd7b..000000000 Binary files a/public/icons/icon-144x144.png and /dev/null differ diff --git a/public/icons/icon-152x152.png b/public/icons/icon-152x152.png deleted file mode 100644 index ff4e06b85..000000000 Binary files a/public/icons/icon-152x152.png and /dev/null differ diff --git a/public/icons/icon-192x192.png b/public/icons/icon-192x192.png deleted file mode 100644 index afd36a48c..000000000 Binary files a/public/icons/icon-192x192.png and /dev/null differ diff --git a/public/icons/icon-384x384.png b/public/icons/icon-384x384.png deleted file mode 100644 index 613ac793e..000000000 Binary files a/public/icons/icon-384x384.png and /dev/null differ diff --git a/public/icons/icon-512x512.png b/public/icons/icon-512x512.png deleted file mode 100644 index 7574990f2..000000000 Binary files a/public/icons/icon-512x512.png and /dev/null differ diff --git a/public/icons/icon-72x72.png b/public/icons/icon-72x72.png deleted file mode 100644 index 033724e15..000000000 Binary files a/public/icons/icon-72x72.png and /dev/null differ diff --git a/public/icons/icon-96x96.png b/public/icons/icon-96x96.png deleted file mode 100644 index 3090dc2d8..000000000 Binary files a/public/icons/icon-96x96.png and /dev/null differ diff --git a/public/manifest.webmanifest b/public/manifest.webmanifest deleted file mode 100644 index f3bc06abc..000000000 --- a/public/manifest.webmanifest +++ /dev/null @@ -1,59 +0,0 @@ -{ - "name": "osf", - "short_name": "osf", - "theme_color": "#1976d2", - "background_color": "#fafafa", - "display": "standalone", - "scope": "./", - "start_url": "./", - "icons": [ - { - "src": "icons/icon-72x72.png", - "sizes": "72x72", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-96x96.png", - "sizes": "96x96", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-128x128.png", - "sizes": "128x128", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-144x144.png", - "sizes": "144x144", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-152x152.png", - "sizes": "152x152", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-192x192.png", - "sizes": "192x192", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-384x384.png", - "sizes": "384x384", - "type": "image/png", - "purpose": "maskable any" - }, - { - "src": "icons/icon-512x512.png", - "sizes": "512x512", - "type": "image/png", - "purpose": "maskable any" - } - ] -} diff --git a/src/app/app.component.spec.ts b/src/app/app.component.spec.ts index 50b319f17..fd078209f 100644 --- a/src/app/app.component.spec.ts +++ b/src/app/app.component.spec.ts @@ -1,4 +1,5 @@ import { TestBed } from '@angular/core/testing'; + import { AppComponent } from './app.component'; describe('AppComponent', () => { diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 30594c352..1f413c5e5 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,3 +1,5 @@ +import { Store } from '@ngxs/store'; + import { ChangeDetectionStrategy, Component, @@ -5,7 +7,7 @@ import { OnInit, } from '@angular/core'; import { RouterOutlet } from '@angular/router'; -import { Store } from '@ngxs/store'; + import { GetCurrentUser } from '@core/store/user'; @Component({ @@ -18,7 +20,6 @@ import { GetCurrentUser } from '@core/store/user'; }) export class AppComponent implements OnInit { #store = inject(Store); - title = 'osf'; ngOnInit(): void { this.#store.dispatch(GetCurrentUser); diff --git a/src/app/app.config.ts b/src/app/app.config.ts index 138c2eae3..dd7d26346 100644 --- a/src/app/app.config.ts +++ b/src/app/app.config.ts @@ -1,21 +1,27 @@ +import { withNgxsReduxDevtoolsPlugin } from '@ngxs/devtools-plugin'; +import { provideStore } from '@ngxs/store'; + +import { TranslateModule } from '@ngx-translate/core'; + +import { ConfirmationService } from 'primeng/api'; +import { providePrimeNG } from 'primeng/config'; + +import { provideHttpClient } from '@angular/common/http'; import { ApplicationConfig, importProvidersFrom, provideZoneChangeDetection, } from '@angular/core'; -import { provideRouter } from '@angular/router'; -import { routes } from './app.routes'; -import { provideStore } from '@ngxs/store'; -import { withNgxsReduxDevtoolsPlugin } from '@ngxs/devtools-plugin'; -import { providePrimeNG } from 'primeng/config'; -import Aura from '@primeng/themes/aura'; import { provideAnimations } from '@angular/platform-browser/animations'; -import { provideHttpClient } from '@angular/common/http'; -import { ConfirmationService } from 'primeng/api'; -import { STATES } from '@core/constants/ngxs-states.constant'; +import { provideRouter } from '@angular/router'; import { provideServiceWorker } from '@angular/service-worker'; + +import { STATES } from '@core/constants/ngxs-states.constant'; import { provideTranslation } from '@core/helpers/i18n.helper'; -import { TranslateModule } from '@ngx-translate/core'; + +import { routes } from './app.routes'; + +import Aura from '@primeng/themes/aura'; export const appConfig: ApplicationConfig = { providers: [ diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 50b1f7c5e..fc1d6c8a1 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -1,7 +1,9 @@ -import { Routes } from '@angular/router'; import { provideStates } from '@ngxs/store'; -import { ResourceFiltersState } from '@shared/components/resources/resource-filters/store/resource-filters.state'; + +import { Routes } from '@angular/router'; + import { ResourceFiltersOptionsState } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.state'; +import { ResourceFiltersState } from '@shared/components/resources/resource-filters/store/resource-filters.state'; export const routes: Routes = [ { diff --git a/src/app/core/components/breadcrumb/breadcrumb.component.ts b/src/app/core/components/breadcrumb/breadcrumb.component.ts index af57bd073..98e01b387 100644 --- a/src/app/core/components/breadcrumb/breadcrumb.component.ts +++ b/src/app/core/components/breadcrumb/breadcrumb.component.ts @@ -1,6 +1,6 @@ import { Component, computed, DestroyRef, inject, signal } from '@angular/core'; -import { NavigationEnd, Router } from '@angular/router'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { NavigationEnd, Router } from '@angular/router'; @Component({ selector: 'osf-breadcrumb', diff --git a/src/app/core/components/footer/footer.component.ts b/src/app/core/components/footer/footer.component.ts index d6c20d2e9..918399b3c 100644 --- a/src/app/core/components/footer/footer.component.ts +++ b/src/app/core/components/footer/footer.component.ts @@ -1,10 +1,12 @@ +import { TranslateModule } from '@ngx-translate/core'; + +import { NgOptimizedImage } from '@angular/common'; import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; -import { SocialIcon } from '@osf/shared/entities/social-icon.interface'; +import { toSignal } from '@angular/core/rxjs-interop'; import { RouterLink } from '@angular/router'; + +import { SocialIcon } from '@osf/shared/entities/social-icon.interface'; import { IS_PORTRAIT, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { NgOptimizedImage } from '@angular/common'; -import { TranslateModule } from '@ngx-translate/core'; @Component({ standalone: true, diff --git a/src/app/core/components/header/header.component.ts b/src/app/core/components/header/header.component.ts index e813e6448..cb72e33ce 100644 --- a/src/app/core/components/header/header.component.ts +++ b/src/app/core/components/header/header.component.ts @@ -1,18 +1,23 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { ButtonModule } from 'primeng/button'; +import { MenuModule } from 'primeng/menu'; + +import { map } from 'rxjs'; + import { ChangeDetectionStrategy, Component, computed, inject, } from '@angular/core'; -import { Router } from '@angular/router'; import { toSignal } from '@angular/core/rxjs-interop'; -import { map } from 'rxjs'; +import { Router } from '@angular/router'; + import { BreadcrumbComponent } from '@core/components/breadcrumb/breadcrumb.component'; -import { MenuModule } from 'primeng/menu'; -import { ButtonModule } from 'primeng/button'; -import { Store } from '@ngxs/store'; import { UserSelectors } from '@core/store/user/user.selectors'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ standalone: true, diff --git a/src/app/core/components/nav-menu/nav-menu.component.html b/src/app/core/components/nav-menu/nav-menu.component.html index 7c2677c32..2b6f0c83f 100644 --- a/src/app/core/components/nav-menu/nav-menu.component.html +++ b/src/app/core/components/nav-menu/nav-menu.component.html @@ -13,6 +13,7 @@ item.label === 'navigation.settings' || item.label === 'navigation.myProjects' " + (click)="goToLink()" > @if (item.icon) { diff --git a/src/app/core/components/nav-menu/nav-menu.component.ts b/src/app/core/components/nav-menu/nav-menu.component.ts index 892b267b2..721cefdcd 100644 --- a/src/app/core/components/nav-menu/nav-menu.component.ts +++ b/src/app/core/components/nav-menu/nav-menu.component.ts @@ -1,21 +1,25 @@ +import { TranslatePipe } from '@ngx-translate/core'; + +import { MenuItem } from 'primeng/api'; +import { PanelMenuModule } from 'primeng/panelmenu'; + +import { filter, map } from 'rxjs'; + import { Component, computed, inject, output } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; import { + ActivatedRoute, + NavigationEnd, + Router, RouterLink, RouterLinkActive, - Router, - NavigationEnd, - ActivatedRoute, } from '@angular/router'; + import { NAV_ITEMS, PROJECT_MENU_ITEMS, } from '@core/constants/nav-items.constant'; -import { PanelMenuModule } from 'primeng/panelmenu'; -import { MenuItem } from 'primeng/api'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { filter, map } from 'rxjs'; import { NavItem } from '@shared/entities/nav-item.interface'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ selector: 'osf-nav-menu', diff --git a/src/app/core/components/root/root.component.spec.ts b/src/app/core/components/root/root.component.spec.ts index d625e1b0f..ab6a02c68 100644 --- a/src/app/core/components/root/root.component.spec.ts +++ b/src/app/core/components/root/root.component.spec.ts @@ -1,4 +1,5 @@ import { ComponentFixture, TestBed } from '@angular/core/testing'; + import { RootComponent } from './root.component'; describe('RootComponent', () => { diff --git a/src/app/core/components/root/root.component.ts b/src/app/core/components/root/root.component.ts index eb4e806d1..c5b79fb67 100644 --- a/src/app/core/components/root/root.component.ts +++ b/src/app/core/components/root/root.component.ts @@ -1,14 +1,16 @@ -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { ConfirmDialog } from 'primeng/confirmdialog'; + import { CommonModule } from '@angular/common'; -import { SidenavComponent } from '@core/components/sidenav/sidenav.component'; +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; + +import { BreadcrumbComponent } from '@core/components/breadcrumb/breadcrumb.component'; +import { FooterComponent } from '@core/components/footer/footer.component'; import { HeaderComponent } from '@core/components/header/header.component'; import { MainContentComponent } from '@core/components/main-content/main-content.component'; -import { FooterComponent } from '@core/components/footer/footer.component'; +import { SidenavComponent } from '@core/components/sidenav/sidenav.component'; import { TopnavComponent } from '@core/components/topnav/topnav.component'; import { IS_WEB, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { ConfirmDialog } from 'primeng/confirmdialog'; -import { BreadcrumbComponent } from '@core/components/breadcrumb/breadcrumb.component'; @Component({ selector: 'osf-root', diff --git a/src/app/core/components/sidenav/sidenav.component.ts b/src/app/core/components/sidenav/sidenav.component.ts index 971f08f0b..c1270012c 100644 --- a/src/app/core/components/sidenav/sidenav.component.ts +++ b/src/app/core/components/sidenav/sidenav.component.ts @@ -1,5 +1,6 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; import { NgOptimizedImage } from '@angular/common'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + import { NavMenuComponent } from '@core/components/nav-menu/nav-menu.component'; @Component({ diff --git a/src/app/core/components/topnav/topnav.component.ts b/src/app/core/components/topnav/topnav.component.ts index 2d1fa7aff..ef31bf07e 100644 --- a/src/app/core/components/topnav/topnav.component.ts +++ b/src/app/core/components/topnav/topnav.component.ts @@ -1,7 +1,9 @@ -import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; import { Button } from 'primeng/button'; import { Drawer } from 'primeng/drawer'; + import { NgOptimizedImage } from '@angular/common'; +import { ChangeDetectionStrategy, Component, signal } from '@angular/core'; + import { NavMenuComponent } from '@core/components/nav-menu/nav-menu.component'; @Component({ diff --git a/src/app/core/constants/nav-items.constant.ts b/src/app/core/constants/nav-items.constant.ts index ad0e90a17..661a1e514 100644 --- a/src/app/core/constants/nav-items.constant.ts +++ b/src/app/core/constants/nav-items.constant.ts @@ -1,6 +1,7 @@ -import { NavItem } from '@shared/entities/nav-item.interface'; import { MenuItem } from 'primeng/api'; +import { NavItem } from '@shared/entities/nav-item.interface'; + export const NAV_ITEMS: NavItem[] = [ { path: '/home', diff --git a/src/app/core/constants/ngxs-states.constant.ts b/src/app/core/constants/ngxs-states.constant.ts index bbadbac4f..279b085b9 100644 --- a/src/app/core/constants/ngxs-states.constant.ts +++ b/src/app/core/constants/ngxs-states.constant.ts @@ -1,12 +1,12 @@ import { AuthState } from '@core/store/auth'; import { UserState } from '@core/store/user'; +import { InstitutionsState } from '@osf/features/institutions/store'; +import { MyProjectsState } from '@osf/features/my-projects/store'; import { SearchState } from '@osf/features/search/store'; -import { ProfileSettingsState } from '@osf/features/settings/profile-settings/profile-settings.state'; +import { AddonsState } from '@osf/features/settings/addons/store'; import { DeveloperAppsState } from '@osf/features/settings/developer-apps/store'; +import { ProfileSettingsState } from '@osf/features/settings/profile-settings/profile-settings.state'; import { TokensState } from '@osf/features/settings/tokens/store'; -import { AddonsState } from '@osf/features/settings/addons/store'; -import { MyProjectsState } from '@osf/features/my-projects/store'; -import { InstitutionsState } from '@osf/features/institutions/store'; export const STATES = [ AuthState, diff --git a/src/app/core/helpers/http.helper.ts b/src/app/core/helpers/http.helper.ts index fbd689092..cc672cfff 100644 --- a/src/app/core/helpers/http.helper.ts +++ b/src/app/core/helpers/http.helper.ts @@ -1,4 +1,5 @@ import { Params } from '@angular/router'; + import { SortOrder } from '@shared/utils/sort-order.enum'; export const parseQueryFilterParams = ( diff --git a/src/app/core/helpers/i18n.helper.ts b/src/app/core/helpers/i18n.helper.ts index 0d25bede6..ce39ee708 100644 --- a/src/app/core/helpers/i18n.helper.ts +++ b/src/app/core/helpers/i18n.helper.ts @@ -1,7 +1,8 @@ import { TranslateLoader, TranslateModuleConfig } from '@ngx-translate/core'; -import { HttpClient } from '@angular/common/http'; import { TranslateHttpLoader } from '@ngx-translate/http-loader'; +import { HttpClient } from '@angular/common/http'; + function httpLoaderFactory(http: HttpClient): TranslateHttpLoader { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } diff --git a/src/app/core/services/json-api/json-api.service.ts b/src/app/core/services/json-api/json-api.service.ts index 82728331f..4709a0b41 100644 --- a/src/app/core/services/json-api/json-api.service.ts +++ b/src/app/core/services/json-api/json-api.service.ts @@ -1,6 +1,8 @@ -import { inject, Injectable } from '@angular/core'; -import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; import { map, Observable } from 'rxjs'; + +import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http'; +import { inject, Injectable } from '@angular/core'; + import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; @Injectable({ diff --git a/src/app/core/services/json-api/underscore-entites/user/user-us.entity.ts b/src/app/core/services/json-api/underscore-entites/user/user-us.entity.ts index 628f0ed44..efb16cd2b 100644 --- a/src/app/core/services/json-api/underscore-entites/user/user-us.entity.ts +++ b/src/app/core/services/json-api/underscore-entites/user/user-us.entity.ts @@ -1,5 +1,5 @@ -import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; import { Education } from '@osf/features/settings/profile-settings/education/educations.entities'; +import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; import { Social } from '@osf/features/settings/profile-settings/social/social.entities'; export interface UserUS { diff --git a/src/app/core/services/mappers/users/users.mapper.ts b/src/app/core/services/mappers/users/users.mapper.ts index 2fab33d11..0cde5c429 100644 --- a/src/app/core/services/mappers/users/users.mapper.ts +++ b/src/app/core/services/mappers/users/users.mapper.ts @@ -1,5 +1,5 @@ -import { User } from '@core/services/user/user.entity'; import { UserUS } from '@core/services/json-api/underscore-entites/user/user-us.entity'; +import { User } from '@core/services/user/user.entity'; export function mapUserUStoUser(user: UserUS): User { return { diff --git a/src/app/core/services/service-worker/check-update.service.ts b/src/app/core/services/service-worker/check-update.service.ts index 0b83a4bd9..160b79964 100644 --- a/src/app/core/services/service-worker/check-update.service.ts +++ b/src/app/core/services/service-worker/check-update.service.ts @@ -1,7 +1,8 @@ +import { BehaviorSubject, concat, first, interval } from 'rxjs'; + import { ApplicationRef, inject, Injectable } from '@angular/core'; -import { SwUpdate, VersionEvent } from '@angular/service-worker'; -import { interval, BehaviorSubject, first, concat } from 'rxjs'; import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { SwUpdate, VersionEvent } from '@angular/service-worker'; @Injectable({ providedIn: 'root' }) export class NewVersionCheckerService { diff --git a/src/app/core/services/user/user.service.ts b/src/app/core/services/user/user.service.ts index 44bfda377..e8c1ff1a9 100644 --- a/src/app/core/services/user/user.service.ts +++ b/src/app/core/services/user/user.service.ts @@ -1,10 +1,12 @@ -import { inject, Injectable } from '@angular/core'; import { map, Observable } from 'rxjs'; + +import { inject, Injectable } from '@angular/core'; + +import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { User } from '@core/services/user/user.entity'; import { UserUS } from '@core/services/json-api/underscore-entites/user/user-us.entity'; import { mapUserUStoUser } from '@core/services/mappers/users/users.mapper'; -import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; +import { User } from '@core/services/user/user.entity'; @Injectable({ providedIn: 'root', diff --git a/src/app/core/store/auth/auth.selectors.ts b/src/app/core/store/auth/auth.selectors.ts index f50c3b525..51698a086 100644 --- a/src/app/core/store/auth/auth.selectors.ts +++ b/src/app/core/store/auth/auth.selectors.ts @@ -1,6 +1,7 @@ import { Selector } from '@ngxs/store'; -import { AuthState } from './auth.state'; + import { AuthStateModel } from './auth.model'; +import { AuthState } from './auth.state'; export class AuthSelectors { @Selector([AuthState]) diff --git a/src/app/core/store/auth/auth.state.ts b/src/app/core/store/auth/auth.state.ts index 9d14b0b4b..3dc968c7b 100644 --- a/src/app/core/store/auth/auth.state.ts +++ b/src/app/core/store/auth/auth.state.ts @@ -1,7 +1,9 @@ +import { Action, State, StateContext } from '@ngxs/store'; + import { Injectable } from '@angular/core'; -import { State, Action, StateContext } from '@ngxs/store'; + +import { ClearAuth, SetAuthToken } from './auth.actions'; import { AuthStateModel } from './auth.model'; -import { SetAuthToken, ClearAuth } from './auth.actions'; @State({ name: 'auth', diff --git a/src/app/core/store/user/index.ts b/src/app/core/store/user/index.ts index e8c90712a..ee67c0c04 100644 --- a/src/app/core/store/user/index.ts +++ b/src/app/core/store/user/index.ts @@ -1,3 +1,3 @@ -export * from './user.models'; export * from './user.actions'; +export * from './user.models'; export * from './user.state'; diff --git a/src/app/core/store/user/user.selectors.ts b/src/app/core/store/user/user.selectors.ts index 586f27935..03acab6af 100644 --- a/src/app/core/store/user/user.selectors.ts +++ b/src/app/core/store/user/user.selectors.ts @@ -1,6 +1,7 @@ import { Selector } from '@ngxs/store'; -import { UserStateModel } from '@core/store/user/user.models'; + import { User } from '@core/services/user/user.entity'; +import { UserStateModel } from '@core/store/user/user.models'; import { UserState } from '@core/store/user/user.state'; import { ProfileSettingsStateModel } from '@osf/features/settings/profile-settings/profile-settings.entities'; import { Social } from '@osf/features/settings/profile-settings/social/social.entities'; diff --git a/src/app/core/store/user/user.state.ts b/src/app/core/store/user/user.state.ts index b1fe72c53..4ee54a4f4 100644 --- a/src/app/core/store/user/user.state.ts +++ b/src/app/core/store/user/user.state.ts @@ -1,11 +1,15 @@ -import { Injectable, inject } from '@angular/core'; -import { State, Action, StateContext } from '@ngxs/store'; -import { UserStateModel } from './user.models'; -import { GetCurrentUser, SetCurrentUser } from './user.actions'; -import { UserService } from '@core/services/user/user.service'; +import { Action, State, StateContext } from '@ngxs/store'; + import { tap } from 'rxjs'; + +import { inject, Injectable } from '@angular/core'; + +import { UserService } from '@core/services/user/user.service'; import { SetupProfileSettings } from '@osf/features/settings/profile-settings/profile-settings.actions'; +import { GetCurrentUser, SetCurrentUser } from './user.actions'; +import { UserStateModel } from './user.models'; + @State({ name: 'user', defaults: { diff --git a/src/app/features/auth/auth.service.ts b/src/app/features/auth/auth.service.ts index a730effa5..b4cd6e127 100644 --- a/src/app/features/auth/auth.service.ts +++ b/src/app/features/auth/auth.service.ts @@ -1,9 +1,13 @@ -import { Injectable, inject } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; import { Store } from '@ngxs/store'; + import { firstValueFrom } from 'rxjs'; -import { LoginCredentials, AuthResponse } from './auth.entity'; -import { SetAuthToken, ClearAuth } from '@core/store/auth'; + +import { HttpClient } from '@angular/common/http'; +import { inject, Injectable } from '@angular/core'; + +import { ClearAuth, SetAuthToken } from '@core/store/auth'; + +import { AuthResponse, LoginCredentials } from './auth.entity'; @Injectable({ providedIn: 'root', diff --git a/src/app/features/auth/forgot-password/forgot-password.component.ts b/src/app/features/auth/forgot-password/forgot-password.component.ts index 848e49df6..da8cb73b3 100644 --- a/src/app/features/auth/forgot-password/forgot-password.component.ts +++ b/src/app/features/auth/forgot-password/forgot-password.component.ts @@ -1,13 +1,17 @@ -import { Component, inject, signal } from '@angular/core'; -import { InputText } from 'primeng/inputtext'; -import { ReactiveFormsModule, FormBuilder, Validators } from '@angular/forms'; +import { TranslatePipe } from '@ngx-translate/core'; + import { Button } from 'primeng/button'; -import { MessageInfo } from './message-info.model'; +import { InputText } from 'primeng/inputtext'; import { Message } from 'primeng/message'; + +import { Component, inject, signal } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms'; + import { ForgotPasswordFormGroupType } from '@osf/features/auth/forgot-password/forgot-password-form-group.type'; import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { TranslatePipe } from '@ngx-translate/core'; + +import { MessageInfo } from './message-info.model'; @Component({ selector: 'osf-forgot-password', diff --git a/src/app/features/auth/reset-password/reset-password.component.ts b/src/app/features/auth/reset-password/reset-password.component.ts index 6be1d077b..349aa5a45 100644 --- a/src/app/features/auth/reset-password/reset-password.component.ts +++ b/src/app/features/auth/reset-password/reset-password.component.ts @@ -1,17 +1,22 @@ -import { Component, inject, signal } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; + import { Button } from 'primeng/button'; -import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms'; import { Password } from 'primeng/password'; + +import { Component, inject, signal } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms'; import { RouterLink } from '@angular/router'; + +import { PasswordInputHintComponent } from '@shared/components/password-input-hint/password-input-hint.component'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; + import { PASSWORD_REGEX, passwordMatchValidator, } from '../sign-up/sign-up.helper'; -import { PasswordInputHintComponent } from '@shared/components/password-input-hint/password-input-hint.component'; + import { ResetPasswordFormGroupType } from './reset-password-form-group.type'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { TranslateModule } from '@ngx-translate/core'; @Component({ selector: 'osf-reset-password', diff --git a/src/app/features/auth/sign-up/sign-up.component.ts b/src/app/features/auth/sign-up/sign-up.component.ts index bee910f84..35f9ba991 100644 --- a/src/app/features/auth/sign-up/sign-up.component.ts +++ b/src/app/features/auth/sign-up/sign-up.component.ts @@ -1,22 +1,26 @@ +import { TranslateModule } from '@ngx-translate/core'; + +import { ButtonModule } from 'primeng/button'; +import { CheckboxModule } from 'primeng/checkbox'; +import { DividerModule } from 'primeng/divider'; +import { InputTextModule } from 'primeng/inputtext'; +import { PasswordModule } from 'primeng/password'; + +import { CommonModule, NgOptimizedImage } from '@angular/common'; import { Component, inject, OnInit, signal } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; import { FormBuilder, FormGroup, - Validators, ReactiveFormsModule, + Validators, } from '@angular/forms'; -import { ButtonModule } from 'primeng/button'; -import { InputTextModule } from 'primeng/inputtext'; -import { PasswordModule } from 'primeng/password'; -import { CheckboxModule } from 'primeng/checkbox'; -import { DividerModule } from 'primeng/divider'; -import { CommonModule, NgOptimizedImage } from '@angular/common'; -import { PASSWORD_REGEX, passwordMatchValidator } from './sign-up.helper'; import { Router, RouterLink } from '@angular/router'; + import { PasswordInputHintComponent } from '@shared/components/password-input-hint/password-input-hint.component'; import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { TranslateModule } from '@ngx-translate/core'; + +import { PASSWORD_REGEX, passwordMatchValidator } from './sign-up.helper'; @Component({ selector: 'osf-sign-up', diff --git a/src/app/features/home/home.component.ts b/src/app/features/home/home.component.ts index 6f7692d4a..3564428aa 100644 --- a/src/app/features/home/home.component.ts +++ b/src/app/features/home/home.component.ts @@ -1,36 +1,41 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; + +import { SortEvent } from 'primeng/api'; +import { Button } from 'primeng/button'; +import { DialogService } from 'primeng/dynamicdialog'; +import { TablePageEvent } from 'primeng/table'; + +import { debounceTime, distinctUntilChanged, Subject } from 'rxjs'; + import { Component, + computed, DestroyRef, + effect, inject, OnInit, signal, - computed, - effect, } from '@angular/core'; -import { RouterLink, ActivatedRoute, Router } from '@angular/router'; -import { Button } from 'primeng/button'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { IS_MEDIUM, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { Store } from '@ngxs/store'; -import { MyProjectsTableComponent } from '@shared/components/my-projects-table/my-projects-table.component'; -import { TableParameters } from '@shared/entities/table-parameters.interface'; +import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; + import { MY_PROJECTS_TABLE_PARAMS } from '@core/constants/my-projects-table.constants'; -import { SortOrder } from '@shared/utils/sort-order.enum'; -import { TablePageEvent } from 'primeng/table'; -import { SortEvent } from 'primeng/api'; +import { GetUserInstitutions } from '@osf/features/institutions/store'; +import { MyProjectsItem } from '@osf/features/my-projects/entities/my-projects.entities'; +import { MyProjectsSearchFilters } from '@osf/features/my-projects/entities/my-projects-search-filters.models'; import { - MyProjectsSelectors, - GetMyProjects, ClearMyProjects, + GetMyProjects, + MyProjectsSelectors, } from '@osf/features/my-projects/store'; -import { debounceTime, distinctUntilChanged, Subject } from 'rxjs'; -import { MyProjectsSearchFilters } from '@osf/features/my-projects/entities/my-projects-search-filters.models'; -import { MyProjectsItem } from '@osf/features/my-projects/entities/my-projects.entities'; -import { GetUserInstitutions } from '@osf/features/institutions/store'; -import { DialogService } from 'primeng/dynamicdialog'; import { AddProjectFormComponent } from '@shared/components/add-project-form/add-project-form.component'; -import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { MyProjectsTableComponent } from '@shared/components/my-projects-table/my-projects-table.component'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { TableParameters } from '@shared/entities/table-parameters.interface'; +import { IS_MEDIUM, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; +import { SortOrder } from '@shared/utils/sort-order.enum'; @Component({ selector: 'osf-home', diff --git a/src/app/features/home/logged-out/home-logged-out.component.ts b/src/app/features/home/logged-out/home-logged-out.component.ts index c327faa9d..2d41f326a 100644 --- a/src/app/features/home/logged-out/home-logged-out.component.ts +++ b/src/app/features/home/logged-out/home-logged-out.component.ts @@ -1,18 +1,22 @@ -import { Component, inject, signal } from '@angular/core'; -import { CarouselModule } from 'primeng/carousel'; -import { FormsModule } from '@angular/forms'; +import { TranslatePipe } from '@ngx-translate/core'; + import { Button } from 'primeng/button'; +import { CarouselModule } from 'primeng/carousel'; import { InputText } from 'primeng/inputtext'; + import { NgOptimizedImage } from '@angular/common'; -import { slides, integrationIcons } from './data'; +import { Component, inject, signal } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { FormsModule } from '@angular/forms'; + import { IS_MEDIUM, IS_SMALL, IS_WEB, IS_XSMALL, } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { TranslatePipe } from '@ngx-translate/core'; + +import { integrationIcons, slides } from './data'; @Component({ selector: 'osf-home-logged-out', diff --git a/src/app/features/institutions/institutions.service.ts b/src/app/features/institutions/institutions.service.ts index 634612290..f80cd0482 100644 --- a/src/app/features/institutions/institutions.service.ts +++ b/src/app/features/institutions/institutions.service.ts @@ -1,12 +1,15 @@ +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + import { inject, Injectable } from '@angular/core'; + +import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { Observable } from 'rxjs'; + import { Institution, UserInstitutionGetResponse, } from './entities/institutions.models'; -import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; -import { map } from 'rxjs/operators'; import { InstitutionsMapper } from './mappers/institutions.mapper'; @Injectable({ diff --git a/src/app/features/institutions/store/index.ts b/src/app/features/institutions/store/index.ts index 63e4169a1..d568dc999 100644 --- a/src/app/features/institutions/store/index.ts +++ b/src/app/features/institutions/store/index.ts @@ -1,4 +1,4 @@ -export * from './institutions.state'; -export * from './institutions.selectors'; -export * from './institutions.model'; export * from './institutions.actions'; +export * from './institutions.model'; +export * from './institutions.selectors'; +export * from './institutions.state'; diff --git a/src/app/features/institutions/store/institutions.selectors.ts b/src/app/features/institutions/store/institutions.selectors.ts index cb6ab2b0b..278497136 100644 --- a/src/app/features/institutions/store/institutions.selectors.ts +++ b/src/app/features/institutions/store/institutions.selectors.ts @@ -1,4 +1,5 @@ import { Selector } from '@ngxs/store'; + import { InstitutionsStateModel } from './institutions.model'; import { InstitutionsState } from './institutions.state'; diff --git a/src/app/features/institutions/store/institutions.state.ts b/src/app/features/institutions/store/institutions.state.ts index 0ef67fe23..8bcc6d84a 100644 --- a/src/app/features/institutions/store/institutions.state.ts +++ b/src/app/features/institutions/store/institutions.state.ts @@ -1,9 +1,13 @@ +import { Action, State, StateContext } from '@ngxs/store'; + +import { tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; -import { State, Action, StateContext } from '@ngxs/store'; -import { InstitutionsStateModel } from './institutions.model'; -import { GetUserInstitutions } from './institutions.actions'; + import { InstitutionsService } from '@osf/features/institutions/institutions.service'; -import { tap } from 'rxjs'; + +import { GetUserInstitutions } from './institutions.actions'; +import { InstitutionsStateModel } from './institutions.model'; @State({ name: 'institutions', diff --git a/src/app/features/my-profile/my-profile.component.ts b/src/app/features/my-profile/my-profile.component.ts index 9754451fa..fe16a4e67 100644 --- a/src/app/features/my-profile/my-profile.component.ts +++ b/src/app/features/my-profile/my-profile.component.ts @@ -1,28 +1,31 @@ +import { Store } from '@ngxs/store'; + +import { AccordionModule } from 'primeng/accordion'; +import { Button } from 'primeng/button'; + +import { DatePipe, NgOptimizedImage } from '@angular/common'; import { ChangeDetectionStrategy, Component, - computed, effect, inject, OnDestroy, signal, } from '@angular/core'; -import { Store } from '@ngxs/store'; -import { UserSelectors } from '@osf/core/store/user/user.selectors'; -import { Button } from 'primeng/button'; -import { DatePipe, NgOptimizedImage } from '@angular/common'; -import { AccordionModule } from 'primeng/accordion'; import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@osf/shared/utils/breakpoints.tokens'; -import { Router } from '@angular/router'; -import { ResourceTab } from '../search/models/resource-tab.enum'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { SearchComponent } from '../search/search.component'; +import { Router } from '@angular/router'; + +import { UserSelectors } from '@osf/core/store/user/user.selectors'; +import { ResetSearchState, SetIsMyProfile } from '@osf/features/search/store'; import { ResetFiltersState, SetCreator, } from '@osf/shared/components/resources/resource-filters/store/resource-filters.actions'; -import { ResetSearchState, SetIsMyProfile } from '@osf/features/search/store'; +import { IS_XSMALL } from '@osf/shared/utils/breakpoints.tokens'; + +import { ResourceTab } from '../search/models/resource-tab.enum'; +import { SearchComponent } from '../search/search.component'; @Component({ selector: 'osf-my-profile', diff --git a/src/app/features/my-projects/my-projects.component.ts b/src/app/features/my-projects/my-projects.component.ts index caeef8e83..c475f935c 100644 --- a/src/app/features/my-projects/my-projects.component.ts +++ b/src/app/features/my-projects/my-projects.component.ts @@ -1,3 +1,16 @@ +import { Store } from '@ngxs/store'; + +import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import type { SortEvent } from 'primeng/api'; +import { DropdownModule } from 'primeng/dropdown'; +import { DialogService } from 'primeng/dynamicdialog'; +import { Select } from 'primeng/select'; +import { TablePageEvent } from 'primeng/table'; +import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; + +import { debounceTime, distinctUntilChanged, Subject } from 'rxjs'; + import { ChangeDetectionStrategy, Component, @@ -8,40 +21,32 @@ import { signal, untracked, } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { toSignal, takeUntilDestroyed } from '@angular/core/rxjs-interop'; -import { IS_MEDIUM, IS_WEB, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { DropdownModule } from 'primeng/dropdown'; +import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop'; import { FormsModule } from '@angular/forms'; -import { Select } from 'primeng/select'; -import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; -import { TabOption } from '@shared/entities/tab-option.interface'; -import { TablePageEvent } from 'primeng/table'; -import type { SortEvent } from 'primeng/api'; -import { DialogService } from 'primeng/dynamicdialog'; -import { AddProjectFormComponent } from '@shared/components/add-project-form/add-project-form.component'; -import { Store } from '@ngxs/store'; import { ActivatedRoute, Router } from '@angular/router'; -import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import { MY_PROJECTS_TABLE_PARAMS } from '@core/constants/my-projects-table.constants'; +import { parseQueryFilterParams } from '@core/helpers/http.helper'; +import { GetUserInstitutions } from '@osf/features/institutions/store'; +import { MyProjectsItem } from '@osf/features/my-projects/entities/my-projects.entities'; +import { MyProjectsSearchFilters } from '@osf/features/my-projects/entities/my-projects-search-filters.models'; import { - GetMyProjects, - MyProjectsSelectors, ClearMyProjects, - GetMyRegistrations, - GetMyPreprints, GetBookmarksCollectionId, GetMyBookmarks, + GetMyPreprints, + GetMyProjects, + GetMyRegistrations, + MyProjectsSelectors, } from '@osf/features/my-projects/store'; -import { debounceTime, distinctUntilChanged, Subject } from 'rxjs'; -import { MyProjectsSearchFilters } from '@osf/features/my-projects/entities/my-projects-search-filters.models'; -import { TableParameters } from '@shared/entities/table-parameters.interface'; -import { MY_PROJECTS_TABLE_PARAMS } from '@core/constants/my-projects-table.constants'; -import { parseQueryFilterParams } from '@core/helpers/http.helper'; -import { SortOrder } from '@shared/utils/sort-order.enum'; -import { MyProjectsItem } from '@osf/features/my-projects/entities/my-projects.entities'; import { QueryParams } from '@osf/shared/entities/query-params.interface'; +import { AddProjectFormComponent } from '@shared/components/add-project-form/add-project-form.component'; import { MyProjectsTableComponent } from '@shared/components/my-projects-table/my-projects-table.component'; -import { GetUserInstitutions } from '@osf/features/institutions/store'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { TabOption } from '@shared/entities/tab-option.interface'; +import { TableParameters } from '@shared/entities/table-parameters.interface'; +import { IS_MEDIUM, IS_WEB, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; +import { SortOrder } from '@shared/utils/sort-order.enum'; @Component({ selector: 'osf-my-projects', diff --git a/src/app/features/my-projects/my-projects.service.ts b/src/app/features/my-projects/my-projects.service.ts index 04844b8c5..94e9de06b 100644 --- a/src/app/features/my-projects/my-projects.service.ts +++ b/src/app/features/my-projects/my-projects.service.ts @@ -1,21 +1,25 @@ +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + import { inject, Injectable } from '@angular/core'; + import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { Observable } from 'rxjs'; -import { MyProjectsSearchFilters } from '@osf/features/my-projects/entities/my-projects-search-filters.models'; -import { MyProjectsMapper } from '@osf/features/my-projects/mappers/my-projects.mapper'; import { - MyProjectsItemResponse, + MyProjectsItem, MyProjectsItemGetResponse, + MyProjectsItemResponse, MyProjectsJsonApiResponse, SparseCollectionsResponse, - MyProjectsItem, } from '@osf/features/my-projects/entities/my-projects.entities'; -import { map } from 'rxjs/operators'; -import { SortOrder } from '@shared/utils/sort-order.enum'; import { EndpointType } from '@osf/features/my-projects/entities/my-projects.types'; -import { CreateProjectPayload } from './entities/create-project.entities'; +import { MyProjectsSearchFilters } from '@osf/features/my-projects/entities/my-projects-search-filters.models'; +import { MyProjectsMapper } from '@osf/features/my-projects/mappers/my-projects.mapper'; +import { SortOrder } from '@shared/utils/sort-order.enum'; + import { environment } from '../../../environments/environment'; +import { CreateProjectPayload } from './entities/create-project.entities'; + @Injectable({ providedIn: 'root', }) diff --git a/src/app/features/my-projects/store/index.ts b/src/app/features/my-projects/store/index.ts index 48506c4af..26c7035b3 100644 --- a/src/app/features/my-projects/store/index.ts +++ b/src/app/features/my-projects/store/index.ts @@ -1,4 +1,4 @@ -export * from './my-projects.state'; export * from './my-projects.actions'; -export * from './my-projects.selectors'; export * from './my-projects.model'; +export * from './my-projects.selectors'; +export * from './my-projects.state'; diff --git a/src/app/features/my-projects/store/my-projects.selectors.ts b/src/app/features/my-projects/store/my-projects.selectors.ts index 97100f182..3c46dfd2d 100644 --- a/src/app/features/my-projects/store/my-projects.selectors.ts +++ b/src/app/features/my-projects/store/my-projects.selectors.ts @@ -1,7 +1,9 @@ import { Selector } from '@ngxs/store'; -import { MyProjectsStateModel } from './my-projects.model'; + import { MyProjectsState } from '@osf/features/my-projects/store/my-projects.state'; +import { MyProjectsStateModel } from './my-projects.model'; + export class MyProjectsSelectors { @Selector([MyProjectsState]) static getProjects(state: MyProjectsStateModel) { diff --git a/src/app/features/my-projects/store/my-projects.state.ts b/src/app/features/my-projects/store/my-projects.state.ts index afdca89b8..dc218e3a5 100644 --- a/src/app/features/my-projects/store/my-projects.state.ts +++ b/src/app/features/my-projects/store/my-projects.state.ts @@ -1,17 +1,21 @@ +import { Action, State, StateContext } from '@ngxs/store'; + +import { tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; -import { State, Action, StateContext } from '@ngxs/store'; -import { MyProjectsStateModel } from './my-projects.model'; + +import { MyProjectsService } from '@osf/features/my-projects/my-projects.service'; + import { - GetMyProjects, - GetMyRegistrations, - GetMyPreprints, - GetMyBookmarks, - GetBookmarksCollectionId, ClearMyProjects, CreateProject, + GetBookmarksCollectionId, + GetMyBookmarks, + GetMyPreprints, + GetMyProjects, + GetMyRegistrations, } from './my-projects.actions'; -import { MyProjectsService } from '@osf/features/my-projects/my-projects.service'; -import { tap } from 'rxjs'; +import { MyProjectsStateModel } from './my-projects.model'; @State({ name: 'myProjects', diff --git a/src/app/features/project/files/file-detail/file-detail.component.ts b/src/app/features/project/files/file-detail/file-detail.component.ts index 9f167c124..f8fe6c7c3 100644 --- a/src/app/features/project/files/file-detail/file-detail.component.ts +++ b/src/app/features/project/files/file-detail/file-detail.component.ts @@ -1,7 +1,9 @@ +import { Button } from 'primeng/button'; + import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; import { RouterLink } from '@angular/router'; -import { Button } from 'primeng/button'; + +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @Component({ selector: 'osf-file-detail', diff --git a/src/app/features/project/files/project-files.component.ts b/src/app/features/project/files/project-files.component.ts index abc78f6d0..6ec17d2c9 100644 --- a/src/app/features/project/files/project-files.component.ts +++ b/src/app/features/project/files/project-files.component.ts @@ -1,3 +1,10 @@ +import { Button } from 'primeng/button'; +import { DropdownModule } from 'primeng/dropdown'; +import { FloatLabel } from 'primeng/floatlabel'; +import { Select } from 'primeng/select'; +import { TableModule } from 'primeng/table'; + +import { DatePipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -5,19 +12,14 @@ import { inject, signal, } from '@angular/core'; -import { TableModule } from 'primeng/table'; +import { Router } from '@angular/router'; + import { FileItem, FILES, } from '@osf/features/project/files/project-files.entities'; -import { Router } from '@angular/router'; -import { DropdownModule } from 'primeng/dropdown'; -import { DatePipe } from '@angular/common'; -import { Button } from 'primeng/button'; -import { Select } from 'primeng/select'; -import { FloatLabel } from 'primeng/floatlabel'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @Component({ selector: 'osf-project-files', diff --git a/src/app/features/project/metadata/project-metadata.component.ts b/src/app/features/project/metadata/project-metadata.component.ts index 2ef219f59..d553d5459 100644 --- a/src/app/features/project/metadata/project-metadata.component.ts +++ b/src/app/features/project/metadata/project-metadata.component.ts @@ -1,7 +1,9 @@ +import { Button } from 'primeng/button'; + import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; + import { metadataTemplates } from '@osf/features/project/metadata/metadata'; -import { Button } from 'primeng/button'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @Component({ selector: 'osf-project-metadata', diff --git a/src/app/features/project/overview/project-overview.component.ts b/src/app/features/project/overview/project-overview.component.ts index 5725fdaf5..bf562e2e5 100644 --- a/src/app/features/project/overview/project-overview.component.ts +++ b/src/app/features/project/overview/project-overview.component.ts @@ -1,7 +1,9 @@ -import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; import { Button } from 'primeng/button'; + import { NgOptimizedImage } from '@angular/common'; +import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core'; + +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @Component({ selector: 'osf-project-overview', diff --git a/src/app/features/project/project.component.ts b/src/app/features/project/project.component.ts index db9762c65..371f7a85a 100644 --- a/src/app/features/project/project.component.ts +++ b/src/app/features/project/project.component.ts @@ -1,12 +1,13 @@ +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, HostBinding, inject, } from '@angular/core'; -import { RouterOutlet } from '@angular/router'; -import { CommonModule } from '@angular/common'; import { toSignal } from '@angular/core/rxjs-interop'; +import { RouterOutlet } from '@angular/router'; + import { IS_WEB } from '@shared/utils/breakpoints.tokens'; @Component({ diff --git a/src/app/features/project/registrations/registration-card/registration-card.component.ts b/src/app/features/project/registrations/registration-card/registration-card.component.ts index 512080b9f..9cdc97def 100644 --- a/src/app/features/project/registrations/registration-card/registration-card.component.ts +++ b/src/app/features/project/registrations/registration-card/registration-card.component.ts @@ -1,16 +1,19 @@ +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; +import { Tag } from 'primeng/tag'; + import { ChangeDetectionStrategy, Component, inject, input, } from '@angular/core'; -import { Card } from 'primeng/card'; -import { RegistrationCard } from './registration-card.interface'; -import { Button } from 'primeng/button'; -import { Tag } from 'primeng/tag'; import { toSignal } from '@angular/core/rxjs-interop'; + import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; +import { RegistrationCard } from './registration-card.interface'; + @Component({ selector: 'osf-registration-card', imports: [Card, Button, Tag], diff --git a/src/app/features/project/registrations/registrations.component.ts b/src/app/features/project/registrations/registrations.component.ts index 3b93be9a4..db7f05216 100644 --- a/src/app/features/project/registrations/registrations.component.ts +++ b/src/app/features/project/registrations/registrations.component.ts @@ -1,19 +1,21 @@ +import { DialogService } from 'primeng/dynamicdialog'; +import { Select } from 'primeng/select'; +import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; + import { ChangeDetectionStrategy, Component, inject, signal, } from '@angular/core'; -import { DialogService } from 'primeng/dynamicdialog'; import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_MEDIUM, IS_WEB, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { TabOption } from '@shared/entities/tab-option.interface'; -import { RegistrationCardComponent } from '@osf/features/project/registrations/registration-card/registration-card.component'; -import { Select } from 'primeng/select'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; import { FormsModule } from '@angular/forms'; + +import { RegistrationCardComponent } from '@osf/features/project/registrations/registration-card/registration-card.component'; import { RegistrationCard } from '@osf/features/project/registrations/registration-card/registration-card.interface'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { TabOption } from '@shared/entities/tab-option.interface'; +import { IS_MEDIUM, IS_WEB, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-registrations', diff --git a/src/app/features/search/mappers/search.mapper.ts b/src/app/features/search/mappers/search.mapper.ts index 7af9bb17b..32bdbe033 100644 --- a/src/app/features/search/mappers/search.mapper.ts +++ b/src/app/features/search/mappers/search.mapper.ts @@ -1,7 +1,7 @@ +import { LinkItem } from '@osf/features/search/models/link-item.entity'; import { ResourceItem } from '@osf/features/search/models/raw-models/resource-response.model'; import { Resource } from '@osf/features/search/models/resource.entity'; import { ResourceType } from '@osf/features/search/models/resource-type.enum'; -import { LinkItem } from '@osf/features/search/models/link-item.entity'; export function MapResources(rawItem: ResourceItem): Resource { return { diff --git a/src/app/features/search/models/resource.entity.ts b/src/app/features/search/models/resource.entity.ts index b193d3c1e..7329bd52d 100644 --- a/src/app/features/search/models/resource.entity.ts +++ b/src/app/features/search/models/resource.entity.ts @@ -1,5 +1,5 @@ -import { ResourceType } from '@osf/features/search/models/resource-type.enum'; import { LinkItem } from '@osf/features/search/models/link-item.entity'; +import { ResourceType } from '@osf/features/search/models/resource-type.enum'; export interface Resource { id: string; diff --git a/src/app/features/search/search.component.ts b/src/app/features/search/search.component.ts index 8f5b3cd9b..92f541fb2 100644 --- a/src/app/features/search/search.component.ts +++ b/src/app/features/search/search.component.ts @@ -1,3 +1,16 @@ +import { Store } from '@ngxs/store'; + +import { AccordionModule } from 'primeng/accordion'; +import { AutoCompleteModule } from 'primeng/autocomplete'; +import { Button } from 'primeng/button'; +import { DataViewModule } from 'primeng/dataview'; +import { DropdownModule } from 'primeng/dropdown'; +import { TableModule } from 'primeng/table'; +import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; + +import { debounceTime } from 'rxjs'; + +import { NgOptimizedImage } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -7,19 +20,10 @@ import { signal, untracked, } from '@angular/core'; -import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; -import { DropdownModule } from 'primeng/dropdown'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; -import { NgOptimizedImage } from '@angular/common'; import { toObservable, toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { AutoCompleteModule } from 'primeng/autocomplete'; -import { AccordionModule } from 'primeng/accordion'; -import { TableModule } from 'primeng/table'; -import { DataViewModule } from 'primeng/dataview'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + import { ResourceTab } from '@osf/features/search/models/resource-tab.enum'; -import { Store } from '@ngxs/store'; import { GetResources, ResetSearchState, @@ -27,14 +31,14 @@ import { SetResourceTab, SetSearchText, } from '@osf/features/search/store'; +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; import { ResetFiltersState, ResourceFiltersSelectors, } from '@shared/components/resources/resource-filters/store'; -import { debounceTime } from 'rxjs'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { Button } from 'primeng/button'; import { ResourcesWrapperComponent } from '@shared/components/resources/resources-wrapper/resources-wrapper.component'; +import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-search', diff --git a/src/app/features/search/search.service.ts b/src/app/features/search/search.service.ts index c7e8bb462..2104ff424 100644 --- a/src/app/features/search/search.service.ts +++ b/src/app/features/search/search.service.ts @@ -1,11 +1,14 @@ +import { map, Observable } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; + import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { map, Observable } from 'rxjs'; -import { environment } from '../../../environments/environment'; import { MapResources } from '@osf/features/search/mappers/search.mapper'; import { IndexCardSearch } from '@osf/features/search/models/raw-models/index-card-search.model'; import { ResourcesData } from '@osf/features/search/models/resources-data.entity'; +import { environment } from '../../../environments/environment'; + @Injectable({ providedIn: 'root', }) diff --git a/src/app/features/search/store/search.selectors.ts b/src/app/features/search/store/search.selectors.ts index 8d7f9390f..f87cfa12f 100644 --- a/src/app/features/search/store/search.selectors.ts +++ b/src/app/features/search/store/search.selectors.ts @@ -1,8 +1,9 @@ -import { SearchState } from '@osf/features/search/store/search.state'; import { Selector } from '@ngxs/store'; -import { SearchStateModel } from '@osf/features/search/store/search.model'; + import { Resource } from '@osf/features/search/models/resource.entity'; import { ResourceTab } from '@osf/features/search/models/resource-tab.enum'; +import { SearchStateModel } from '@osf/features/search/store/search.model'; +import { SearchState } from '@osf/features/search/store/search.state'; export class SearchSelectors { @Selector([SearchState]) diff --git a/src/app/features/search/store/search.state.ts b/src/app/features/search/store/search.state.ts index 690fd5358..08086f79a 100644 --- a/src/app/features/search/store/search.state.ts +++ b/src/app/features/search/store/search.state.ts @@ -1,7 +1,10 @@ +import { Action, State, StateContext, Store } from '@ngxs/store'; + +import { tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; + import { SearchService } from '@osf/features/search/search.service'; -import { SearchStateModel } from '@osf/features/search/store/search.model'; -import { Action, State, StateContext, Store } from '@ngxs/store'; import { GetResources, GetResourcesByLink, @@ -11,12 +14,12 @@ import { SetSearchText, SetSortBy, } from '@osf/features/search/store/search.actions'; -import { tap } from 'rxjs'; -import { ResourceFiltersSelectors } from '@shared/components/resources/resource-filters/store'; -import { addFiltersParams } from '@shared/components/resources/resource-filters/utils/add-filters-params.helper'; +import { SearchStateModel } from '@osf/features/search/store/search.model'; import { SearchSelectors } from '@osf/features/search/store/search.selectors'; -import { getResourceTypes } from '@osf/features/search/utils/helpers/get-resource-types.helper'; import { searchStateDefaults } from '@osf/features/search/utils/data'; +import { getResourceTypes } from '@osf/features/search/utils/helpers/get-resource-types.helper'; +import { ResourceFiltersSelectors } from '@shared/components/resources/resource-filters/store'; +import { addFiltersParams } from '@shared/components/resources/resource-filters/utils/add-filters-params.helper'; @Injectable() @State({ diff --git a/src/app/features/settings/account-settings/account-settings.component.ts b/src/app/features/settings/account-settings/account-settings.component.ts index 292161146..5b53a2b00 100644 --- a/src/app/features/settings/account-settings/account-settings.component.ts +++ b/src/app/features/settings/account-settings/account-settings.component.ts @@ -1,20 +1,22 @@ -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { Button } from 'primeng/button'; -import { Select } from 'primeng/select'; -import { MOCK_COUNTRIES } from '@osf/features/settings/account-settings/account-settings.const'; +import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; +import { InputText } from 'primeng/inputtext'; +import { Message } from 'primeng/message'; import { RadioButton } from 'primeng/radiobutton'; +import { Select } from 'primeng/select'; + +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormGroup, ReactiveFormsModule } from '@angular/forms'; + import { AccountSettingsPasswordForm, AccountSettingsPasswordFormControls, } from '@osf/features/settings/account-settings/account.settings.entities'; -import { InputText } from 'primeng/inputtext'; -import { Message } from 'primeng/message'; -import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; +import { MOCK_COUNTRIES } from '@osf/features/settings/account-settings/account-settings.const'; import { AddEmailComponent } from '@osf/features/settings/account-settings/add-email/add-email.component'; import { DeactivateAccountComponent } from '@osf/features/settings/account-settings/deactivate-account/deactivate-account/deactivate-account.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { toSignal } from '@angular/core/rxjs-interop'; import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ diff --git a/src/app/features/settings/account-settings/add-email/add-email.component.ts b/src/app/features/settings/account-settings/add-email/add-email.component.ts index 1ad25252e..061492f3f 100644 --- a/src/app/features/settings/account-settings/add-email/add-email.component.ts +++ b/src/app/features/settings/account-settings/add-email/add-email.component.ts @@ -1,8 +1,9 @@ -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { Button } from 'primeng/button'; import { DynamicDialogRef } from 'primeng/dynamicdialog'; -import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms'; import { InputText } from 'primeng/inputtext'; -import { Button } from 'primeng/button'; + +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms'; @Component({ selector: 'osf-add-email', diff --git a/src/app/features/settings/account-settings/deactivate-account/deactivate-account/deactivate-account.component.ts b/src/app/features/settings/account-settings/deactivate-account/deactivate-account/deactivate-account.component.ts index 63461a312..84880cbc1 100644 --- a/src/app/features/settings/account-settings/deactivate-account/deactivate-account/deactivate-account.component.ts +++ b/src/app/features/settings/account-settings/deactivate-account/deactivate-account/deactivate-account.component.ts @@ -1,6 +1,7 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; import { Button } from 'primeng/button'; +import { ChangeDetectionStrategy, Component } from '@angular/core'; + @Component({ selector: 'osf-deactivate-account', imports: [Button], diff --git a/src/app/features/settings/addons/addon-card-list/addon-card-list.component.ts b/src/app/features/settings/addons/addon-card-list/addon-card-list.component.ts index 802504dfd..710cd8786 100644 --- a/src/app/features/settings/addons/addon-card-list/addon-card-list.component.ts +++ b/src/app/features/settings/addons/addon-card-list/addon-card-list.component.ts @@ -1,4 +1,5 @@ import { Component, input } from '@angular/core'; + import { AddonCardComponent } from '@osf/features/settings/addons/addon-card/addon-card.component'; import { Addon, diff --git a/src/app/features/settings/addons/addon-card/addon-card.component.ts b/src/app/features/settings/addons/addon-card/addon-card.component.ts index 99ecead87..f50bd54ba 100644 --- a/src/app/features/settings/addons/addon-card/addon-card.component.ts +++ b/src/app/features/settings/addons/addon-card/addon-card.component.ts @@ -1,17 +1,21 @@ -import { Component, computed, inject, input, signal } from '@angular/core'; +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + import { Button } from 'primeng/button'; -import { Router } from '@angular/router'; +import { DialogModule } from 'primeng/dialog'; + +import { NgClass } from '@angular/common'; +import { Component, computed, inject, input, signal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { TranslatePipe } from '@ngx-translate/core'; +import { Router } from '@angular/router'; + import { Addon, AuthorizedAddon, } from '@osf/features/settings/addons/entities/addons.entities'; -import { NgClass } from '@angular/common'; -import { Store } from '@ngxs/store'; import { DeleteAuthorizedAddon } from '@osf/features/settings/addons/store'; -import { DialogModule } from 'primeng/dialog'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-addon-card', diff --git a/src/app/features/settings/addons/addons.component.ts b/src/app/features/settings/addons/addons.component.ts index fec592769..aa17680a7 100644 --- a/src/app/features/settings/addons/addons.component.ts +++ b/src/app/features/settings/addons/addons.component.ts @@ -1,32 +1,36 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { AutoCompleteModule } from 'primeng/autocomplete'; +import { SelectModule } from 'primeng/select'; +import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; + import { ChangeDetectionStrategy, Component, computed, - signal, - inject, effect, + inject, + signal, } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; -import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; -import { AutoCompleteModule } from 'primeng/autocomplete'; -import { AddonCardListComponent } from '@osf/features/settings/addons/addon-card-list/addon-card-list.component'; import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { SelectModule } from 'primeng/select'; import { FormsModule } from '@angular/forms'; -import { Store } from '@ngxs/store'; -import { TranslatePipe } from '@ngx-translate/core'; + +import { UserSelectors } from '@core/store/user/user.selectors'; +import { AddonCardListComponent } from '@osf/features/settings/addons/addon-card-list/addon-card-list.component'; import { - GetStorageAddons, - GetCitationAddons, AddonsSelectors, - GetAuthorizedStorageAddons, - GetAuthorizedCitationAddons, GetAddonsUserReference, + GetAuthorizedCitationAddons, + GetAuthorizedStorageAddons, + GetCitationAddons, + GetStorageAddons, } from '@osf/features/settings/addons/store'; +import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; import { SelectOption } from '@shared/entities/select-option.interface'; -import { UserSelectors } from '@core/store/user/user.selectors'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-addons', diff --git a/src/app/features/settings/addons/addons.service.ts b/src/app/features/settings/addons/addons.service.ts index fd27a95de..ffc6b895b 100644 --- a/src/app/features/settings/addons/addons.service.ts +++ b/src/app/features/settings/addons/addons.service.ts @@ -1,20 +1,24 @@ +import { Store } from '@ngxs/store'; + +import { map, Observable } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; + +import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { map, Observable } from 'rxjs'; +import { UserSelectors } from '@core/store/user/user.selectors'; +import { AddonMapper } from '@osf/features/settings/addons/addon.mapper'; import { Addon, AddonGetResponse, + AddonRequest, + AddonResponse, AuthorizedAddon, AuthorizedAddonGetResponse, IncludedAddonData, - AddonRequest, UserReference, - AddonResponse, } from '@osf/features/settings/addons/entities/addons.entities'; -import { AddonMapper } from '@osf/features/settings/addons/addon.mapper'; -import { Store } from '@ngxs/store'; -import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; -import { UserSelectors } from '@core/store/user/user.selectors'; + import { environment } from '../../../../environments/environment'; @Injectable({ diff --git a/src/app/features/settings/addons/connect-addon/connect-addon.component.ts b/src/app/features/settings/addons/connect-addon/connect-addon.component.ts index 502301dc4..bced3de4a 100644 --- a/src/app/features/settings/addons/connect-addon/connect-addon.component.ts +++ b/src/app/features/settings/addons/connect-addon/connect-addon.component.ts @@ -1,3 +1,15 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; +import { InputText } from 'primeng/inputtext'; +import { Password } from 'primeng/password'; +import { StepPanel, StepPanels, Stepper } from 'primeng/stepper'; +import { TableModule } from 'primeng/table'; + +import { NgClass } from '@angular/common'; import { Component, computed, @@ -6,41 +18,34 @@ import { signal, viewChild, } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { StepPanel, StepPanels, Stepper } from 'primeng/stepper'; -import { Button } from 'primeng/button'; -import { TableModule } from 'primeng/table'; -import { RouterLink, Router } from '@angular/router'; -import { NgClass } from '@angular/common'; -import { Card } from 'primeng/card'; -import { TranslatePipe } from '@ngx-translate/core'; import { - FormsModule, FormBuilder, FormGroup, + FormsModule, ReactiveFormsModule, Validators, } from '@angular/forms'; -import { ADDON_TERMS as addonTerms } from '../utils/addon-terms.const'; +import { Router, RouterLink } from '@angular/router'; + +import { + AddonForm, + AddonFormControls, +} from '@osf/features/settings/addons/entities/addon-form.entities'; +import { AddonTerm } from '@osf/features/settings/addons/entities/addon-terms.interface'; import { Addon, - AuthorizedAddon, AddonRequest, + AuthorizedAddon, } from '@osf/features/settings/addons/entities/addons.entities'; import { CredentialsFormat } from '@osf/features/settings/addons/entities/credentials-format.enum'; -import { InputText } from 'primeng/inputtext'; -import { Password } from 'primeng/password'; -import { Store } from '@ngxs/store'; import { AddonsSelectors, CreateAuthorizedAddon, UpdateAuthorizedAddon, } from '@osf/features/settings/addons/store'; -import { - AddonForm, - AddonFormControls, -} from '@osf/features/settings/addons/entities/addon-form.entities'; -import { AddonTerm } from '@osf/features/settings/addons/entities/addon-terms.interface'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; + +import { ADDON_TERMS as addonTerms } from '../utils/addon-terms.const'; @Component({ selector: 'osf-connect-addon', diff --git a/src/app/features/settings/addons/store/addons.models.ts b/src/app/features/settings/addons/store/addons.models.ts index e2095fdb3..8e4815657 100644 --- a/src/app/features/settings/addons/store/addons.models.ts +++ b/src/app/features/settings/addons/store/addons.models.ts @@ -1,7 +1,7 @@ import { Addon, - AuthorizedAddon, AddonResponse, + AuthorizedAddon, UserReference, } from '@osf/features/settings/addons/entities/addons.entities'; diff --git a/src/app/features/settings/addons/store/addons.selectors.ts b/src/app/features/settings/addons/store/addons.selectors.ts index 644832588..27bca5595 100644 --- a/src/app/features/settings/addons/store/addons.selectors.ts +++ b/src/app/features/settings/addons/store/addons.selectors.ts @@ -1,8 +1,10 @@ import { Selector } from '@ngxs/store'; -import { AddonsStateModel } from './addons.models'; + import { Addon } from '@osf/features/settings/addons/entities/addons.entities'; import { AddonsState } from '@osf/features/settings/addons/store/addons.state'; +import { AddonsStateModel } from './addons.models'; + export class AddonsSelectors { @Selector([AddonsState]) static getStorageAddons(state: AddonsStateModel): Addon[] { diff --git a/src/app/features/settings/addons/store/addons.state.ts b/src/app/features/settings/addons/store/addons.state.ts index 3eaba4860..4424ba867 100644 --- a/src/app/features/settings/addons/store/addons.state.ts +++ b/src/app/features/settings/addons/store/addons.state.ts @@ -1,19 +1,23 @@ +import { Action, State, StateContext } from '@ngxs/store'; + +import { Observable, switchMap, tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; -import { State, Action, StateContext } from '@ngxs/store'; + import { AddonsService } from '@osf/features/settings/addons/addons.service'; +import { AddonResponse } from '@osf/features/settings/addons/entities/addons.entities'; + import { + CreateAuthorizedAddon, + DeleteAuthorizedAddon, + GetAddonsUserReference, + GetAuthorizedCitationAddons, + GetAuthorizedStorageAddons, GetCitationAddons, GetStorageAddons, - GetAuthorizedStorageAddons, - GetAuthorizedCitationAddons, - GetAddonsUserReference, - DeleteAuthorizedAddon, - CreateAuthorizedAddon, UpdateAuthorizedAddon, } from './addons.actions'; -import { Observable, switchMap, tap } from 'rxjs'; import { AddonsStateModel } from './addons.models'; -import { AddonResponse } from '@osf/features/settings/addons/entities/addons.entities'; @State({ name: 'addons', diff --git a/src/app/features/settings/addons/store/index.ts b/src/app/features/settings/addons/store/index.ts index 056a13928..513110f05 100644 --- a/src/app/features/settings/addons/store/index.ts +++ b/src/app/features/settings/addons/store/index.ts @@ -1,4 +1,4 @@ -export * from './addons.state'; export * from './addons.actions'; export * from './addons.models'; export * from './addons.selectors'; +export * from './addons.state'; diff --git a/src/app/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component.ts b/src/app/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component.ts index 52c2eea7b..b3cd3afb3 100644 --- a/src/app/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component.ts +++ b/src/app/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component.ts @@ -1,3 +1,12 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { DynamicDialogRef } from 'primeng/dynamicdialog'; +import { InputText } from 'primeng/inputtext'; + +import { NgClass } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -5,34 +14,29 @@ import { input, OnInit, } from '@angular/core'; -import { DynamicDialogRef } from 'primeng/dynamicdialog'; -import { Button } from 'primeng/button'; -import { InputText } from 'primeng/inputtext'; +import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms'; +import { Router } from '@angular/router'; + +import { linkValidator } from '@core/helpers/link-validator.helper'; import { DeveloperAppForm, DeveloperAppFormFormControls, } from '@osf/features/settings/developer-apps/entities/developer-app-form.entities'; -import { linkValidator } from '@core/helpers/link-validator.helper'; -import { Store } from '@ngxs/store'; -import { Router } from '@angular/router'; import { DeveloperApp, DeveloperAppCreateUpdate, } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { NgClass } from '@angular/common'; import { CreateDeveloperApp, UpdateDeveloperApp, } from '@osf/features/settings/developer-apps/store'; -import { TranslatePipe } from '@ngx-translate/core'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-developer-app-add-edit-form', diff --git a/src/app/features/settings/developer-apps/developer-app-details/developer-app-details.component.ts b/src/app/features/settings/developer-apps/developer-app-details/developer-app-details.component.ts index ce78d4b95..a9c0fea9c 100644 --- a/src/app/features/settings/developer-apps/developer-app-details/developer-app-details.component.ts +++ b/src/app/features/settings/developer-apps/developer-app-details/developer-app-details.component.ts @@ -1,3 +1,18 @@ +import { Store } from '@ngxs/store'; + +import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import { ConfirmationService } from 'primeng/api'; +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; +import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; +import { IconField } from 'primeng/iconfield'; +import { InputIcon } from 'primeng/inputicon'; +import { InputText } from 'primeng/inputtext'; + +import { map, of, switchMap, timer } from 'rxjs'; + +import { CdkCopyToClipboard } from '@angular/cdk/clipboard'; import { ChangeDetectionStrategy, Component, @@ -6,29 +21,19 @@ import { inject, signal, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { Card } from 'primeng/card'; -import { ActivatedRoute, Router, RouterLink } from '@angular/router'; -import { InputText } from 'primeng/inputtext'; -import { IconField } from 'primeng/iconfield'; -import { InputIcon } from 'primeng/inputicon'; -import { CdkCopyToClipboard } from '@angular/cdk/clipboard'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; import { takeUntilDestroyed, toSignal } from '@angular/core/rxjs-interop'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { ConfirmationService } from 'primeng/api'; -import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; -import { map, of, switchMap, timer } from 'rxjs'; -import { Store } from '@ngxs/store'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; + +import { DeveloperAppAddEditFormComponent } from '@osf/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component'; import { DeleteDeveloperApp, DeveloperAppsSelectors, GetDeveloperAppDetails, ResetClientSecret, } from '@osf/features/settings/developer-apps/store'; -import { DeveloperAppAddEditFormComponent } from '@osf/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component'; -import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; -import { TranslateModule, TranslateService } from '@ngx-translate/core'; +import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-developer-application-details', diff --git a/src/app/features/settings/developer-apps/developer-app.mapper.ts b/src/app/features/settings/developer-apps/developer-app.mapper.ts index f1f546730..bdd607772 100644 --- a/src/app/features/settings/developer-apps/developer-app.mapper.ts +++ b/src/app/features/settings/developer-apps/developer-app.mapper.ts @@ -1,8 +1,8 @@ import { DeveloperApp, DeveloperAppCreateRequest, - DeveloperAppGetResponse, DeveloperAppCreateUpdate, + DeveloperAppGetResponse, DeveloperAppUpdateRequest, } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; diff --git a/src/app/features/settings/developer-apps/developer-apps-container.component.ts b/src/app/features/settings/developer-apps/developer-apps-container.component.ts index d4d6d5968..018b053c5 100644 --- a/src/app/features/settings/developer-apps/developer-apps-container.component.ts +++ b/src/app/features/settings/developer-apps/developer-apps-container.component.ts @@ -1,12 +1,16 @@ +import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import { DialogService } from 'primeng/dynamicdialog'; + +import { map } from 'rxjs'; + import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; import { Router, RouterOutlet } from '@angular/router'; + +import { DeveloperAppAddEditFormComponent } from '@osf/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { DialogService } from 'primeng/dynamicdialog'; import { IS_MEDIUM, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { map } from 'rxjs'; -import { DeveloperAppAddEditFormComponent } from '@osf/features/settings/developer-apps/developer-app-add-edit-form/developer-app-add-edit-form.component'; -import { TranslateModule, TranslateService } from '@ngx-translate/core'; @Component({ selector: 'osf-developer-apps', diff --git a/src/app/features/settings/developer-apps/developer-apps-list/developer-apps-list.component.ts b/src/app/features/settings/developer-apps/developer-apps-list/developer-apps-list.component.ts index 29997c6ed..bc76e9aef 100644 --- a/src/app/features/settings/developer-apps/developer-apps-list/developer-apps-list.component.ts +++ b/src/app/features/settings/developer-apps/developer-apps-list/developer-apps-list.component.ts @@ -1,3 +1,12 @@ +import { Store } from '@ngxs/store'; + +import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import { ConfirmationService } from 'primeng/api'; +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; +import { Skeleton } from 'primeng/skeleton'; + import { ChangeDetectionStrategy, Component, @@ -5,22 +14,17 @@ import { OnInit, signal, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { Card } from 'primeng/card'; -import { RouterLink } from '@angular/router'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; import { toSignal } from '@angular/core/rxjs-interop'; -import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; -import { ConfirmationService } from 'primeng/api'; -import { Store } from '@ngxs/store'; +import { RouterLink } from '@angular/router'; + +import { DeveloperApp } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; import { DeleteDeveloperApp, DeveloperAppsSelectors, GetDeveloperApps, } from '@osf/features/settings/developer-apps/store'; -import { DeveloperApp } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; -import { Skeleton } from 'primeng/skeleton'; -import { TranslateModule, TranslateService } from '@ngx-translate/core'; +import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-developer-applications-list', diff --git a/src/app/features/settings/developer-apps/developer-apps.route.ts b/src/app/features/settings/developer-apps/developer-apps.route.ts index 0e3c87d52..b3e8f176f 100644 --- a/src/app/features/settings/developer-apps/developer-apps.route.ts +++ b/src/app/features/settings/developer-apps/developer-apps.route.ts @@ -1,4 +1,5 @@ import { Route } from '@angular/router'; + import { DeveloperAppsContainerComponent } from '@osf/features/settings/developer-apps/developer-apps-container.component'; export const developerAppsRoute: Route = { diff --git a/src/app/features/settings/developer-apps/developer-apps.service.ts b/src/app/features/settings/developer-apps/developer-apps.service.ts index 8097b61f9..fc51c4589 100644 --- a/src/app/features/settings/developer-apps/developer-apps.service.ts +++ b/src/app/features/settings/developer-apps/developer-apps.service.ts @@ -1,13 +1,15 @@ -import { inject, Injectable } from '@angular/core'; -import { JsonApiService } from '@core/services/json-api/json-api.service'; import { map, Observable } from 'rxjs'; + +import { inject, Injectable } from '@angular/core'; + import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; +import { JsonApiService } from '@core/services/json-api/json-api.service'; +import { DeveloperAppMapper } from '@osf/features/settings/developer-apps/developer-app.mapper'; import { DeveloperApp, - DeveloperAppGetResponse, DeveloperAppCreateUpdate, + DeveloperAppGetResponse, } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; -import { DeveloperAppMapper } from '@osf/features/settings/developer-apps/developer-app.mapper'; @Injectable({ providedIn: 'root', diff --git a/src/app/features/settings/developer-apps/entities/developer-app-form.entities.ts b/src/app/features/settings/developer-apps/entities/developer-app-form.entities.ts index 967725a85..f0d2f2d22 100644 --- a/src/app/features/settings/developer-apps/entities/developer-app-form.entities.ts +++ b/src/app/features/settings/developer-apps/entities/developer-app-form.entities.ts @@ -1,4 +1,5 @@ import { FormControl, FormGroup } from '@angular/forms'; + import { StringOrNull } from '@core/helpers/types.helper'; export enum DeveloperAppFormFormControls { diff --git a/src/app/features/settings/developer-apps/store/developer-apps.selectors.ts b/src/app/features/settings/developer-apps/store/developer-apps.selectors.ts index d06b5fe17..e458a4bba 100644 --- a/src/app/features/settings/developer-apps/store/developer-apps.selectors.ts +++ b/src/app/features/settings/developer-apps/store/developer-apps.selectors.ts @@ -1,7 +1,8 @@ import { Selector } from '@ngxs/store'; -import { DeveloperAppsStateModel } from '@osf/features/settings/developer-apps/store/developer-apps.state-model'; -import { DeveloperAppsState } from '@osf/features/settings/developer-apps/store/developer-apps.state'; + import { DeveloperApp } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; +import { DeveloperAppsState } from '@osf/features/settings/developer-apps/store/developer-apps.state'; +import { DeveloperAppsStateModel } from '@osf/features/settings/developer-apps/store/developer-apps.state-model'; export class DeveloperAppsSelectors { @Selector([DeveloperAppsState]) diff --git a/src/app/features/settings/developer-apps/store/developer-apps.state.ts b/src/app/features/settings/developer-apps/store/developer-apps.state.ts index 7c226ab43..33c8b6763 100644 --- a/src/app/features/settings/developer-apps/store/developer-apps.state.ts +++ b/src/app/features/settings/developer-apps/store/developer-apps.state.ts @@ -1,7 +1,19 @@ +import { Action, State, StateContext } from '@ngxs/store'; +import { + insertItem, + patch, + removeItem, + updateItem, +} from '@ngxs/store/operators'; + +import { of, tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; -import { State, Action, StateContext } from '@ngxs/store'; -import { tap, of } from 'rxjs'; + +import { DeveloperApplicationsService } from '@osf/features/settings/developer-apps/developer-apps.service'; +import { DeveloperApp } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; import { DeveloperAppsStateModel } from '@osf/features/settings/developer-apps/store/developer-apps.state-model'; + import { CreateDeveloperApp, DeleteDeveloperApp, @@ -10,14 +22,6 @@ import { ResetClientSecret, UpdateDeveloperApp, } from './developer-apps.actions'; -import { DeveloperApplicationsService } from '@osf/features/settings/developer-apps/developer-apps.service'; -import { DeveloperApp } from '@osf/features/settings/developer-apps/entities/developer-apps.models'; -import { - insertItem, - patch, - removeItem, - updateItem, -} from '@ngxs/store/operators'; @State({ name: 'developerApps', diff --git a/src/app/features/settings/developer-apps/store/index.ts b/src/app/features/settings/developer-apps/store/index.ts index 291fcbfa9..786ddb23f 100644 --- a/src/app/features/settings/developer-apps/store/index.ts +++ b/src/app/features/settings/developer-apps/store/index.ts @@ -1,4 +1,4 @@ -export * from './developer-apps.state'; export * from './developer-apps.actions'; -export * from './developer-apps.state-model'; export * from './developer-apps.selectors'; +export * from './developer-apps.state'; +export * from './developer-apps.state-model'; diff --git a/src/app/features/settings/index.ts b/src/app/features/settings/index.ts index 76665df0c..3cd1783d9 100644 --- a/src/app/features/settings/index.ts +++ b/src/app/features/settings/index.ts @@ -1,4 +1,3 @@ -export * from './account-settings/account-settings.route'; export * from './account-settings/account-settings.component'; - +export * from './account-settings/account-settings.route'; export * from './profile-settings/profile-settings.component'; diff --git a/src/app/features/settings/notifications/notifications.component.ts b/src/app/features/settings/notifications/notifications.component.ts index 8cb36f16b..558558aea 100644 --- a/src/app/features/settings/notifications/notifications.component.ts +++ b/src/app/features/settings/notifications/notifications.component.ts @@ -1,9 +1,12 @@ -import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { Checkbox } from 'primeng/checkbox'; +import { TranslatePipe } from '@ngx-translate/core'; + import { Button } from 'primeng/button'; +import { Checkbox } from 'primeng/checkbox'; import { DropdownModule } from 'primeng/dropdown'; -import { TranslatePipe } from '@ngx-translate/core'; + +import { ChangeDetectionStrategy, Component, HostBinding } from '@angular/core'; + +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @Component({ selector: 'osf-notifications', diff --git a/src/app/features/settings/profile-settings/education/education.component.ts b/src/app/features/settings/profile-settings/education/education.component.ts index 16ef24056..c818a4df8 100644 --- a/src/app/features/settings/profile-settings/education/education.component.ts +++ b/src/app/features/settings/profile-settings/education/education.component.ts @@ -1,3 +1,12 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { Checkbox } from 'primeng/checkbox'; +import { DatePicker } from 'primeng/datepicker'; +import { InputText } from 'primeng/inputtext'; + import { ChangeDetectionStrategy, Component, @@ -6,18 +15,13 @@ import { inject, } from '@angular/core'; import { FormArray, FormBuilder, ReactiveFormsModule } from '@angular/forms'; -import { Button } from 'primeng/button'; -import { InputText } from 'primeng/inputtext'; -import { DatePicker } from 'primeng/datepicker'; -import { Checkbox } from 'primeng/checkbox'; + import { Education, EducationForm, } from '@osf/features/settings/profile-settings/education/educations.entities'; -import { Store } from '@ngxs/store'; import { UpdateProfileSettingsEducation } from '@osf/features/settings/profile-settings/profile-settings.actions'; import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ selector: 'osf-education', diff --git a/src/app/features/settings/profile-settings/employment/employment.component.ts b/src/app/features/settings/profile-settings/employment/employment.component.ts index 84a3cbe86..380410776 100644 --- a/src/app/features/settings/profile-settings/employment/employment.component.ts +++ b/src/app/features/settings/profile-settings/employment/employment.component.ts @@ -1,3 +1,12 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { Checkbox } from 'primeng/checkbox'; +import { DatePicker } from 'primeng/datepicker'; +import { InputText } from 'primeng/inputtext'; + import { ChangeDetectionStrategy, Component, @@ -5,24 +14,19 @@ import { HostBinding, inject, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { Checkbox } from 'primeng/checkbox'; -import { DatePicker } from 'primeng/datepicker'; -import { InputText } from 'primeng/inputtext'; import { FormArray, FormBuilder, ReactiveFormsModule, Validators, } from '@angular/forms'; -import { Store } from '@ngxs/store'; -import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; + import { Employment, EmploymentForm, } from '@osf/features/settings/profile-settings/employment/employment.entities'; import { UpdateProfileSettingsEmployment } from '@osf/features/settings/profile-settings/profile-settings.actions'; -import { TranslatePipe } from '@ngx-translate/core'; +import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; @Component({ selector: 'osf-employment', diff --git a/src/app/features/settings/profile-settings/name/name.component.ts b/src/app/features/settings/profile-settings/name/name.component.ts index 03d973de7..1723ac6a6 100644 --- a/src/app/features/settings/profile-settings/name/name.component.ts +++ b/src/app/features/settings/profile-settings/name/name.component.ts @@ -1,3 +1,10 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { InputText } from 'primeng/inputtext'; + import { ChangeDetectionStrategy, Component, @@ -5,14 +12,11 @@ import { HostBinding, inject, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { InputText } from 'primeng/inputtext'; import { FormBuilder, ReactiveFormsModule } from '@angular/forms'; -import { Store } from '@ngxs/store'; -import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; + import { NameForm } from '@osf/features/settings/profile-settings/name/name.entities'; import { UpdateProfileSettingsUser } from '@osf/features/settings/profile-settings/profile-settings.actions'; -import { TranslatePipe } from '@ngx-translate/core'; +import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; @Component({ selector: 'osf-name', diff --git a/src/app/features/settings/profile-settings/name/name.entities.ts b/src/app/features/settings/profile-settings/name/name.entities.ts index 723c1da40..7a84ff44e 100644 --- a/src/app/features/settings/profile-settings/name/name.entities.ts +++ b/src/app/features/settings/profile-settings/name/name.entities.ts @@ -1,4 +1,5 @@ import { FormControl } from '@angular/forms'; + import { User } from '@core/services/user/user.entity'; export interface Name { diff --git a/src/app/features/settings/profile-settings/profile-settings.actions.ts b/src/app/features/settings/profile-settings/profile-settings.actions.ts index 778bca44d..9d53799be 100644 --- a/src/app/features/settings/profile-settings/profile-settings.actions.ts +++ b/src/app/features/settings/profile-settings/profile-settings.actions.ts @@ -1,6 +1,6 @@ -import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; -import { Education } from '@osf/features/settings/profile-settings/education/educations.entities'; import { User } from '@core/services/user/user.entity'; +import { Education } from '@osf/features/settings/profile-settings/education/educations.entities'; +import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; import { Social } from '@osf/features/settings/profile-settings/social/social.entities'; export class SetupProfileSettings { diff --git a/src/app/features/settings/profile-settings/profile-settings.api.service.ts b/src/app/features/settings/profile-settings/profile-settings.api.service.ts index 1d5f4301e..57947e7ba 100644 --- a/src/app/features/settings/profile-settings/profile-settings.api.service.ts +++ b/src/app/features/settings/profile-settings/profile-settings.api.service.ts @@ -1,7 +1,8 @@ import { inject, Injectable } from '@angular/core'; + import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { JsonApiResponse } from '@osf/core/services/json-api/json-api.entity'; import { UserUS } from '@core/services/json-api/underscore-entites/user/user-us.entity'; +import { JsonApiResponse } from '@osf/core/services/json-api/json-api.entity'; import { ProfileSettingsStateModel, ProfileSettingsUpdate, diff --git a/src/app/features/settings/profile-settings/profile-settings.component.ts b/src/app/features/settings/profile-settings/profile-settings.component.ts index 7df259491..5c70c4ea7 100644 --- a/src/app/features/settings/profile-settings/profile-settings.component.ts +++ b/src/app/features/settings/profile-settings/profile-settings.component.ts @@ -1,17 +1,20 @@ -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; +import { TranslatePipe } from '@ngx-translate/core'; + import { DropdownModule } from 'primeng/dropdown'; -import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@osf/shared/utils/breakpoints.tokens'; -import { TabOption } from '@osf/shared/entities/tab-option.interface'; import { Select } from 'primeng/select'; +import { Tab, TabList, TabPanel, TabPanels, Tabs } from 'primeng/tabs'; + +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; + import { EducationComponent } from '@osf/features/settings/profile-settings/education/education.component'; import { EmploymentComponent } from '@osf/features/settings/profile-settings/employment/employment.component'; import { NameComponent } from '@osf/features/settings/profile-settings/name/name.component'; import { SocialComponent } from '@osf/features/settings/profile-settings/social/social.component'; -import { TranslatePipe } from '@ngx-translate/core'; +import { TabOption } from '@osf/shared/entities/tab-option.interface'; +import { IS_XSMALL } from '@osf/shared/utils/breakpoints.tokens'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @Component({ selector: 'osf-profile-settings', diff --git a/src/app/features/settings/profile-settings/profile-settings.entities.ts b/src/app/features/settings/profile-settings/profile-settings.entities.ts index 3999db85e..f20b16ff3 100644 --- a/src/app/features/settings/profile-settings/profile-settings.entities.ts +++ b/src/app/features/settings/profile-settings/profile-settings.entities.ts @@ -1,6 +1,6 @@ -import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; -import { Education } from '@osf/features/settings/profile-settings/education/educations.entities'; import { User } from '@core/services/user/user.entity'; +import { Education } from '@osf/features/settings/profile-settings/education/educations.entities'; +import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; import { Social } from '@osf/features/settings/profile-settings/social/social.entities'; export const PROFILE_SETTINGS_STATE_NAME = 'profileSettings'; diff --git a/src/app/features/settings/profile-settings/profile-settings.selectors.ts b/src/app/features/settings/profile-settings/profile-settings.selectors.ts index f9e0acef7..9093754ff 100644 --- a/src/app/features/settings/profile-settings/profile-settings.selectors.ts +++ b/src/app/features/settings/profile-settings/profile-settings.selectors.ts @@ -1,9 +1,10 @@ import { Selector } from '@ngxs/store'; -import { ProfileSettingsState } from '@osf/features/settings/profile-settings/profile-settings.state'; + +import { User } from '@core/services/user/user.entity'; import { Education } from '@osf/features/settings/profile-settings/education/educations.entities'; -import { ProfileSettingsStateModel } from '@osf/features/settings/profile-settings/profile-settings.entities'; import { Employment } from '@osf/features/settings/profile-settings/employment/employment.entities'; -import { User } from '@core/services/user/user.entity'; +import { ProfileSettingsStateModel } from '@osf/features/settings/profile-settings/profile-settings.entities'; +import { ProfileSettingsState } from '@osf/features/settings/profile-settings/profile-settings.state'; import { Social } from '@osf/features/settings/profile-settings/social/social.entities'; export class ProfileSettingsSelectors { diff --git a/src/app/features/settings/profile-settings/profile-settings.state.ts b/src/app/features/settings/profile-settings/profile-settings.state.ts index d8ada74eb..f68e70ef9 100644 --- a/src/app/features/settings/profile-settings/profile-settings.state.ts +++ b/src/app/features/settings/profile-settings/profile-settings.state.ts @@ -1,10 +1,11 @@ import { Action, State, StateContext, Store } from '@ngxs/store'; -import { - PROFILE_SETTINGS_INITIAL_STATE, - PROFILE_SETTINGS_STATE_NAME, - ProfileSettingsStateModel, -} from '@osf/features/settings/profile-settings/profile-settings.entities'; + +import { tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; + +import { UserSelectors } from '@core/store/user/user.selectors'; +import { mapNameToDto } from '@osf/features/settings/profile-settings/name/name.entities'; import { SetupProfileSettings, UpdateProfileSettingsEducation, @@ -12,12 +13,14 @@ import { UpdateProfileSettingsSocialLinks, UpdateProfileSettingsUser, } from '@osf/features/settings/profile-settings/profile-settings.actions'; -import { UserSelectors } from '@core/store/user/user.selectors'; import { ProfileSettingsApiService } from '@osf/features/settings/profile-settings/profile-settings.api.service'; -import { tap } from 'rxjs'; -import { removeNullable } from '@shared/utils/remove-nullable.const'; -import { mapNameToDto } from '@osf/features/settings/profile-settings/name/name.entities'; +import { + PROFILE_SETTINGS_INITIAL_STATE, + PROFILE_SETTINGS_STATE_NAME, + ProfileSettingsStateModel, +} from '@osf/features/settings/profile-settings/profile-settings.entities'; import { Social } from '@osf/features/settings/profile-settings/social/social.entities'; +import { removeNullable } from '@shared/utils/remove-nullable.const'; @State({ name: PROFILE_SETTINGS_STATE_NAME, diff --git a/src/app/features/settings/profile-settings/social/social.component.ts b/src/app/features/settings/profile-settings/social/social.component.ts index c407daffe..04c9889df 100644 --- a/src/app/features/settings/profile-settings/social/social.component.ts +++ b/src/app/features/settings/profile-settings/social/social.component.ts @@ -1,3 +1,13 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { DropdownModule } from 'primeng/dropdown'; +import { InputGroup } from 'primeng/inputgroup'; +import { InputGroupAddon } from 'primeng/inputgroupaddon'; +import { InputText } from 'primeng/inputtext'; + import { ChangeDetectionStrategy, Component, @@ -5,29 +15,23 @@ import { HostBinding, inject, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { DropdownModule } from 'primeng/dropdown'; -import { InputGroup } from 'primeng/inputgroup'; -import { InputGroupAddon } from 'primeng/inputgroupaddon'; -import { InputText } from 'primeng/inputtext'; import { FormArray, FormBuilder, ReactiveFormsModule, Validators, } from '@angular/forms'; + import { socials } from '@osf/features/settings/profile-settings/data'; import { UserSocialLink } from '@osf/features/settings/profile-settings/entities/user-social-link.entity'; +import { UpdateProfileSettingsSocialLinks } from '@osf/features/settings/profile-settings/profile-settings.actions'; +import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; import { Social, SOCIAL_KEYS, SocialLinksForm, SocialLinksKeys, } from '@osf/features/settings/profile-settings/social/social.entities'; -import { Store } from '@ngxs/store'; -import { UpdateProfileSettingsSocialLinks } from '@osf/features/settings/profile-settings/profile-settings.actions'; -import { ProfileSettingsSelectors } from '@osf/features/settings/profile-settings/profile-settings.selectors'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ selector: 'osf-social', diff --git a/src/app/features/settings/settings-container.component.ts b/src/app/features/settings/settings-container.component.ts index e5245d081..3a0af000d 100644 --- a/src/app/features/settings/settings-container.component.ts +++ b/src/app/features/settings/settings-container.component.ts @@ -1,6 +1,7 @@ import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; -import { RouterOutlet } from '@angular/router'; import { toSignal } from '@angular/core/rxjs-interop'; +import { RouterOutlet } from '@angular/router'; + import { IS_WEB } from '@shared/utils/breakpoints.tokens'; @Component({ diff --git a/src/app/features/settings/settings.routes.ts b/src/app/features/settings/settings.routes.ts index e0dc92474..cc01e4ac0 100644 --- a/src/app/features/settings/settings.routes.ts +++ b/src/app/features/settings/settings.routes.ts @@ -1,6 +1,7 @@ import { Routes } from '@angular/router'; -import { SettingsContainerComponent } from '@osf/features/settings/settings-container.component'; + import { developerAppsRoute } from '@osf/features/settings/developer-apps/developer-apps.route'; +import { SettingsContainerComponent } from '@osf/features/settings/settings-container.component'; import { tokensAppsRoute } from '@osf/features/settings/tokens/tokens.route'; export const settingsRoutes: Routes = [ diff --git a/src/app/features/settings/tokens/store/index.ts b/src/app/features/settings/tokens/store/index.ts index cecb04f7b..e32cc64ff 100644 --- a/src/app/features/settings/tokens/store/index.ts +++ b/src/app/features/settings/tokens/store/index.ts @@ -1,4 +1,4 @@ -export * from './tokens.state'; export * from './tokens.actions'; export * from './tokens.models'; export * from './tokens.selectors'; +export * from './tokens.state'; diff --git a/src/app/features/settings/tokens/store/tokens.selectors.ts b/src/app/features/settings/tokens/store/tokens.selectors.ts index d7e490e1e..1f4c08167 100644 --- a/src/app/features/settings/tokens/store/tokens.selectors.ts +++ b/src/app/features/settings/tokens/store/tokens.selectors.ts @@ -1,9 +1,11 @@ import { Selector } from '@ngxs/store'; -import { TokensStateModel } from './tokens.models'; + import { Scope } from '@osf/features/settings/tokens/entities/scope.interface'; import { Token } from '@osf/features/settings/tokens/entities/tokens.models'; import { TokensState } from '@osf/features/settings/tokens/store/tokens.state'; +import { TokensStateModel } from './tokens.models'; + export class TokensSelectors { @Selector([TokensState]) static getScopes(state: TokensStateModel): Scope[] { diff --git a/src/app/features/settings/tokens/store/tokens.state.ts b/src/app/features/settings/tokens/store/tokens.state.ts index 4c873a320..140ce00ac 100644 --- a/src/app/features/settings/tokens/store/tokens.state.ts +++ b/src/app/features/settings/tokens/store/tokens.state.ts @@ -1,17 +1,21 @@ +import { Action, State, StateContext, Store } from '@ngxs/store'; + +import { of, tap } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; -import { State, Action, StateContext, Store } from '@ngxs/store'; -import { TokensStateModel } from './tokens.models'; + +import { Token } from '@osf/features/settings/tokens/entities/tokens.models'; import { TokensService } from '@osf/features/settings/tokens/tokens.service'; + import { + CreateToken, + DeleteToken, GetScopes, - GetTokens, GetTokenById, + GetTokens, UpdateToken, - DeleteToken, - CreateToken, } from './tokens.actions'; -import { tap, of } from 'rxjs'; -import { Token } from '@osf/features/settings/tokens/entities/tokens.models'; +import { TokensStateModel } from './tokens.models'; @State({ name: 'tokens', diff --git a/src/app/features/settings/tokens/token-add-edit-form/token-add-edit-form.component.ts b/src/app/features/settings/tokens/token-add-edit-form/token-add-edit-form.component.ts index 82e865d56..ebf05555c 100644 --- a/src/app/features/settings/tokens/token-add-edit-form/token-add-edit-form.component.ts +++ b/src/app/features/settings/tokens/token-add-edit-form/token-add-edit-form.component.ts @@ -1,3 +1,15 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { Checkbox } from 'primeng/checkbox'; +import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; +import { InputText } from 'primeng/inputtext'; + +import { map } from 'rxjs'; + +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -5,35 +17,28 @@ import { input, OnInit, } from '@angular/core'; -import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; -import { Button } from 'primeng/button'; -import { InputText } from 'primeng/inputtext'; -import { Checkbox } from 'primeng/checkbox'; +import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms'; +import { ActivatedRoute, Router } from '@angular/router'; + import { TokenForm, TokenFormControls, } from '@osf/features/settings/tokens/entities/token-form.entities'; -import { CommonModule } from '@angular/common'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { Store } from '@ngxs/store'; import { Token } from '@osf/features/settings/tokens/entities/tokens.models'; -import { map } from 'rxjs'; -import { ActivatedRoute, Router } from '@angular/router'; -import { TokenCreatedDialogComponent } from '@osf/features/settings/tokens/token-created-dialog/token-created-dialog.component'; import { CreateToken, GetTokens, TokensSelectors, UpdateToken, } from '@osf/features/settings/tokens/store'; -import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { TokenCreatedDialogComponent } from '@osf/features/settings/tokens/token-created-dialog/token-created-dialog.component'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-token-add-edit-form', diff --git a/src/app/features/settings/tokens/token-created-dialog/token-created-dialog.component.ts b/src/app/features/settings/tokens/token-created-dialog/token-created-dialog.component.ts index 54a2fa00d..dcc7a1972 100644 --- a/src/app/features/settings/tokens/token-created-dialog/token-created-dialog.component.ts +++ b/src/app/features/settings/tokens/token-created-dialog/token-created-dialog.component.ts @@ -1,20 +1,22 @@ +import { TranslatePipe } from '@ngx-translate/core'; + +import { Button } from 'primeng/button'; +import { DynamicDialogConfig, DynamicDialogRef } from 'primeng/dynamicdialog'; +import { IconField } from 'primeng/iconfield'; +import { InputIcon } from 'primeng/inputicon'; +import { InputText } from 'primeng/inputtext'; + +import { ClipboardModule } from '@angular/cdk/clipboard'; import { + afterNextRender, ChangeDetectionStrategy, Component, + ElementRef, inject, input, signal, viewChild, - afterNextRender, - ElementRef, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { DynamicDialogRef, DynamicDialogConfig } from 'primeng/dynamicdialog'; -import { InputText } from 'primeng/inputtext'; -import { IconField } from 'primeng/iconfield'; -import { InputIcon } from 'primeng/inputicon'; -import { ClipboardModule } from '@angular/cdk/clipboard'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ selector: 'osf-token-created-dialog', diff --git a/src/app/features/settings/tokens/token-details/token-details.component.ts b/src/app/features/settings/tokens/token-details/token-details.component.ts index c534e17fb..ad187ee4a 100644 --- a/src/app/features/settings/tokens/token-details/token-details.component.ts +++ b/src/app/features/settings/tokens/token-details/token-details.component.ts @@ -1,27 +1,32 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; + +import { ConfirmationService } from 'primeng/api'; +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; +import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; + +import { map, of, switchMap } from 'rxjs'; + import { ChangeDetectionStrategy, Component, - inject, computed, + inject, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { Card } from 'primeng/card'; -import { FormsModule } from '@angular/forms'; -import { RouterLink, ActivatedRoute, Router } from '@angular/router'; -import { ConfirmationService } from 'primeng/api'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; import { toSignal } from '@angular/core/rxjs-interop'; -import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; -import { TokenAddEditFormComponent } from '@osf/features/settings/tokens/token-add-edit-form/token-add-edit-form.component'; -import { DialogService, DynamicDialogRef } from 'primeng/dynamicdialog'; -import { map, switchMap, of } from 'rxjs'; -import { Store } from '@ngxs/store'; -import { TokensSelectors } from '@osf/features/settings/tokens/store/tokens.selectors'; +import { FormsModule } from '@angular/forms'; +import { ActivatedRoute, Router, RouterLink } from '@angular/router'; + import { DeleteToken, GetTokenById, } from '@osf/features/settings/tokens/store/tokens.actions'; -import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { TokensSelectors } from '@osf/features/settings/tokens/store/tokens.selectors'; +import { TokenAddEditFormComponent } from '@osf/features/settings/tokens/token-add-edit-form/token-add-edit-form.component'; +import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-token-details', diff --git a/src/app/features/settings/tokens/tokens-list/tokens-list.component.ts b/src/app/features/settings/tokens/tokens-list/tokens-list.component.ts index 954b51808..46f169c88 100644 --- a/src/app/features/settings/tokens/tokens-list/tokens-list.component.ts +++ b/src/app/features/settings/tokens/tokens-list/tokens-list.component.ts @@ -1,3 +1,12 @@ +import { Store } from '@ngxs/store'; + +import { TranslateModule, TranslateService } from '@ngx-translate/core'; + +import { ConfirmationService } from 'primeng/api'; +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; +import { Skeleton } from 'primeng/skeleton'; + import { ChangeDetectionStrategy, Component, @@ -5,22 +14,17 @@ import { OnInit, signal, } from '@angular/core'; -import { ConfirmationService } from 'primeng/api'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; import { toSignal } from '@angular/core/rxjs-interop'; -import { Button } from 'primeng/button'; -import { Card } from 'primeng/card'; import { RouterLink } from '@angular/router'; + import { Token } from '@osf/features/settings/tokens/entities/tokens.models'; -import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; -import { Store } from '@ngxs/store'; import { DeleteToken, GetTokens, TokensSelectors, } from '@osf/features/settings/tokens/store'; -import { Skeleton } from 'primeng/skeleton'; -import { TranslateModule, TranslateService } from '@ngx-translate/core'; +import { defaultConfirmationConfig } from '@shared/helpers/default-confirmation-config.helper'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-tokens-list', diff --git a/src/app/features/settings/tokens/tokens.component.ts b/src/app/features/settings/tokens/tokens.component.ts index 0593ada88..8e16163c5 100644 --- a/src/app/features/settings/tokens/tokens.component.ts +++ b/src/app/features/settings/tokens/tokens.component.ts @@ -1,19 +1,24 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe, TranslateService } from '@ngx-translate/core'; + +import { DialogService } from 'primeng/dynamicdialog'; + +import { map } from 'rxjs'; + import { ChangeDetectionStrategy, Component, inject, OnInit, } from '@angular/core'; -import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; -import { DialogService } from 'primeng/dynamicdialog'; -import { IS_MEDIUM, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; import { toSignal } from '@angular/core/rxjs-interop'; -import { TokenAddEditFormComponent } from '@osf/features/settings/tokens/token-add-edit-form/token-add-edit-form.component'; -import { RouterOutlet, Router } from '@angular/router'; -import { Store } from '@ngxs/store'; +import { Router, RouterOutlet } from '@angular/router'; + import { GetScopes } from '@osf/features/settings/tokens/store'; -import { map } from 'rxjs'; -import { TranslatePipe, TranslateService } from '@ngx-translate/core'; +import { TokenAddEditFormComponent } from '@osf/features/settings/tokens/token-add-edit-form/token-add-edit-form.component'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { IS_MEDIUM, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-tokens', diff --git a/src/app/features/settings/tokens/tokens.route.ts b/src/app/features/settings/tokens/tokens.route.ts index 76b317cb9..b029cb642 100644 --- a/src/app/features/settings/tokens/tokens.route.ts +++ b/src/app/features/settings/tokens/tokens.route.ts @@ -1,4 +1,5 @@ import { Route } from '@angular/router'; + import { TokensComponent } from '@osf/features/settings/tokens/tokens.component'; export const tokensAppsRoute: Route = { diff --git a/src/app/features/settings/tokens/tokens.service.ts b/src/app/features/settings/tokens/tokens.service.ts index 9f659a74b..5f5d1ef80 100644 --- a/src/app/features/settings/tokens/tokens.service.ts +++ b/src/app/features/settings/tokens/tokens.service.ts @@ -1,16 +1,20 @@ +import { Observable } from 'rxjs'; +import { map } from 'rxjs/operators'; + import { inject, Injectable } from '@angular/core'; + +import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { Observable } from 'rxjs'; +import { Scope } from '@osf/features/settings/tokens/entities/scope.interface'; +import { TokenMapper } from '@osf/features/settings/tokens/token.mapper'; + +import { environment } from '../../../../environments/environment'; + import { Token, TokenCreateResponse, TokenGetResponse, } from './entities/tokens.models'; -import { map } from 'rxjs/operators'; -import { TokenMapper } from '@osf/features/settings/tokens/token.mapper'; -import { Scope } from '@osf/features/settings/tokens/entities/scope.interface'; -import { JsonApiResponse } from '@core/services/json-api/json-api.entity'; -import { environment } from '../../../../environments/environment'; @Injectable({ providedIn: 'root', diff --git a/src/app/shared/components/add-project-form/add-project-form.component.ts b/src/app/shared/components/add-project-form/add-project-form.component.ts index 2432ee712..cd7df4f97 100644 --- a/src/app/shared/components/add-project-form/add-project-form.component.ts +++ b/src/app/shared/components/add-project-form/add-project-form.component.ts @@ -1,39 +1,43 @@ +import { Store } from '@ngxs/store'; + +import { TranslatePipe } from '@ngx-translate/core'; + +import { ButtonModule } from 'primeng/button'; +import { CheckboxModule } from 'primeng/checkbox'; +import { DropdownModule } from 'primeng/dropdown'; +import { DynamicDialogRef } from 'primeng/dynamicdialog'; +import { InputTextModule } from 'primeng/inputtext'; +import { Select } from 'primeng/select'; +import { Textarea } from 'primeng/textarea'; + +import { CommonModule, NgOptimizedImage } from '@angular/common'; import { ChangeDetectionStrategy, Component, computed, inject, - signal, OnInit, + signal, } from '@angular/core'; -import { CommonModule, NgOptimizedImage } from '@angular/common'; +import { toSignal } from '@angular/core/rxjs-interop'; import { FormControl, FormGroup, ReactiveFormsModule, Validators, } from '@angular/forms'; -import { ButtonModule } from 'primeng/button'; -import { InputTextModule } from 'primeng/inputtext'; -import { DropdownModule } from 'primeng/dropdown'; -import { CheckboxModule } from 'primeng/checkbox'; -import { Select } from 'primeng/select'; -import { Textarea } from 'primeng/textarea'; -import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; -import { DynamicDialogRef } from 'primeng/dynamicdialog'; -import { Store } from '@ngxs/store'; + +import { MY_PROJECTS_TABLE_PARAMS } from '@core/constants/my-projects-table.constants'; import { STORAGE_LOCATIONS } from '@core/constants/storage-locations.constant'; +import { InstitutionsSelectors } from '@osf/features/institutions/store'; import { CreateProject, GetMyProjects, MyProjectsSelectors, } from '@osf/features/my-projects/store'; -import { InstitutionsSelectors } from '@osf/features/institutions/store'; -import { MY_PROJECTS_TABLE_PARAMS } from '@core/constants/my-projects-table.constants'; -import { ProjectForm } from '@shared/entities/create-project-form.interface'; import { ProjectFormControls } from '@osf/shared/entities/create-project-form-controls.enum'; -import { TranslatePipe } from '@ngx-translate/core'; +import { ProjectForm } from '@shared/entities/create-project-form.interface'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-add-project-form', diff --git a/src/app/shared/components/my-projects-table/my-projects-table.component.ts b/src/app/shared/components/my-projects-table/my-projects-table.component.ts index edc28e7f2..1970db99d 100644 --- a/src/app/shared/components/my-projects-table/my-projects-table.component.ts +++ b/src/app/shared/components/my-projects-table/my-projects-table.component.ts @@ -1,18 +1,21 @@ +import { TranslatePipe } from '@ngx-translate/core'; + +import { SortEvent } from 'primeng/api'; +import { Skeleton } from 'primeng/skeleton'; +import { TableModule, TablePageEvent } from 'primeng/table'; + +import { CommonModule } from '@angular/common'; import { ChangeDetectionStrategy, Component, input, output, } from '@angular/core'; -import { CommonModule } from '@angular/common'; -import { TableModule, TablePageEvent } from 'primeng/table'; -import { SortEvent } from 'primeng/api'; -import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; + import { MyProjectsItem } from '@osf/features/my-projects/entities/my-projects.entities'; +import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { TableParameters } from '@shared/entities/table-parameters.interface'; import { SortOrder } from '@shared/utils/sort-order.enum'; -import { Skeleton } from 'primeng/skeleton'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ selector: 'osf-my-projects-table', diff --git a/src/app/shared/components/password-input-hint/password-input-hint.component.ts b/src/app/shared/components/password-input-hint/password-input-hint.component.ts index 46d04b67f..d1af6f982 100644 --- a/src/app/shared/components/password-input-hint/password-input-hint.component.ts +++ b/src/app/shared/components/password-input-hint/password-input-hint.component.ts @@ -1,6 +1,8 @@ +import { TranslatePipe } from '@ngx-translate/core'; + import { ChangeDetectionStrategy, Component, input } from '@angular/core'; + import { BooleanOrNullOrUndefined } from '@core/helpers/types.helper'; -import { TranslatePipe } from '@ngx-translate/core'; @Component({ selector: 'osf-password-input-hint', diff --git a/src/app/shared/components/resources/filter-chips/filter-chips.component.ts b/src/app/shared/components/resources/filter-chips/filter-chips.component.ts index 68573b549..167eff92c 100644 --- a/src/app/shared/components/resources/filter-chips/filter-chips.component.ts +++ b/src/app/shared/components/resources/filter-chips/filter-chips.component.ts @@ -1,5 +1,13 @@ -import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; import { Store } from '@ngxs/store'; + +import { PrimeTemplate } from 'primeng/api'; +import { Chip } from 'primeng/chip'; + +import { ChangeDetectionStrategy, Component, inject } from '@angular/core'; + +import { SearchSelectors } from '@osf/features/search/store'; +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { FilterType } from '@shared/components/resources/resource-filters/models/filter-type.enum'; import { ResourceFiltersSelectors, SetCreator, @@ -12,11 +20,6 @@ import { SetResourceType, SetSubject, } from '@shared/components/resources/resource-filters/store'; -import { Chip } from 'primeng/chip'; -import { PrimeTemplate } from 'primeng/api'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { FilterType } from '@shared/components/resources/resource-filters/models/filter-type.enum'; -import { SearchSelectors } from '@osf/features/search/store'; @Component({ selector: 'osf-filter-chips', diff --git a/src/app/shared/components/resources/resource-card/resource-card.component.ts b/src/app/shared/components/resources/resource-card/resource-card.component.ts index e021e6275..04a63b20a 100644 --- a/src/app/shared/components/resources/resource-card/resource-card.component.ts +++ b/src/app/shared/components/resources/resource-card/resource-card.component.ts @@ -1,23 +1,26 @@ -import { - ChangeDetectionStrategy, - Component, - inject, - model, -} from '@angular/core'; import { Accordion, AccordionContent, AccordionHeader, AccordionPanel, } from 'primeng/accordion'; -import { DatePipe, NgOptimizedImage } from '@angular/common'; -import { ResourceType } from '@osf/features/search/models/resource-type.enum'; -import { Resource } from '@osf/features/search/models/resource.entity'; -import { ResourceCardService } from '@shared/components/resources/resource-card/resource-card.service'; -import { finalize } from 'rxjs'; import { Skeleton } from 'primeng/skeleton'; + +import { finalize } from 'rxjs'; + +import { DatePipe, NgOptimizedImage } from '@angular/common'; +import { + ChangeDetectionStrategy, + Component, + inject, + model, +} from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; + +import { Resource } from '@osf/features/search/models/resource.entity'; +import { ResourceType } from '@osf/features/search/models/resource-type.enum'; import { IS_XSMALL } from '@osf/shared/utils/breakpoints.tokens'; +import { ResourceCardService } from '@shared/components/resources/resource-card/resource-card.service'; @Component({ selector: 'osf-resource-card', diff --git a/src/app/shared/components/resources/resource-card/resource-card.service.ts b/src/app/shared/components/resources/resource-card/resource-card.service.ts index cf6a74583..02c5ca5d0 100644 --- a/src/app/shared/components/resources/resource-card/resource-card.service.ts +++ b/src/app/shared/components/resources/resource-card/resource-card.service.ts @@ -1,11 +1,14 @@ +import { map, Observable } from 'rxjs'; + import { inject, Injectable } from '@angular/core'; + import { JsonApiService } from '@core/services/json-api/json-api.service'; -import { map, Observable } from 'rxjs'; -import { environment } from '../../../../../environments/environment'; -import { UserCountsResponse } from '@shared/components/resources/resource-card/models/user-counts-response.entity'; import { MapUserCounts } from '@shared/components/resources/resource-card/mappers/user-counts.mapper'; +import { UserCountsResponse } from '@shared/components/resources/resource-card/models/user-counts-response.entity'; import { UserRelatedDataCounts } from '@shared/components/resources/resource-card/models/user-related-data-counts.entity'; +import { environment } from '../../../../../environments/environment'; + @Injectable({ providedIn: 'root', }) diff --git a/src/app/shared/components/resources/resource-filters/filters/creators/creators-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/creators/creators-filter.component.ts index 98279b7bc..427411116 100644 --- a/src/app/shared/components/resources/resource-filters/filters/creators/creators-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/creators/creators-filter.component.ts @@ -1,3 +1,9 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + +import { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs'; + import { ChangeDetectionStrategy, Component, @@ -8,20 +14,18 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { debounceTime, distinctUntilChanged, Subject, takeUntil } from 'rxjs'; +import { toObservable } from '@angular/core/rxjs-interop'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { Store } from '@ngxs/store'; -import { - ResourceFiltersSelectors, - SetCreator, -} from '@shared/components/resources/resource-filters/store'; + import { GetAllOptions, GetCreatorsOptions, } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; -import { toObservable } from '@angular/core/rxjs-interop'; +import { + ResourceFiltersSelectors, + SetCreator, +} from '@shared/components/resources/resource-filters/store'; @Component({ selector: 'osf-creators-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/date-created/date-created-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/date-created/date-created-filter.component.ts index 01f933441..5bd2ee659 100644 --- a/src/app/shared/components/resources/resource-filters/filters/date-created/date-created-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/date-created/date-created-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -8,14 +12,13 @@ import { untracked, } from '@angular/core'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetDateCreated, } from '@shared/components/resources/resource-filters/store'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-date-created-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/funder/funder-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/funder/funder-filter.component.ts index 4c8e077c1..237f0e651 100644 --- a/src/app/shared/components/resources/resource-filters/filters/funder/funder-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/funder/funder-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -7,15 +11,14 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; +import { FormsModule } from '@angular/forms'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetFunder, } from '@shared/components/resources/resource-filters/store'; -import { FormsModule } from '@angular/forms'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-funder-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/institution-filter/institution-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/institution-filter/institution-filter.component.ts index fdd5fe7e4..7127e752b 100644 --- a/src/app/shared/components/resources/resource-filters/filters/institution-filter/institution-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/institution-filter/institution-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -7,15 +11,14 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; +import { FormsModule } from '@angular/forms'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetInstitution, } from '@shared/components/resources/resource-filters/store'; -import { FormsModule } from '@angular/forms'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-institution-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/license-filter/license-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/license-filter/license-filter.component.ts index 7f191ecea..cd1f0a00f 100644 --- a/src/app/shared/components/resources/resource-filters/filters/license-filter/license-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/license-filter/license-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -7,15 +11,14 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; import { FormsModule } from '@angular/forms'; -import { Store } from '@ngxs/store'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetLicense, } from '@shared/components/resources/resource-filters/store'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-license-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/part-of-collection-filter/part-of-collection-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/part-of-collection-filter/part-of-collection-filter.component.ts index b969ca804..4d164befc 100644 --- a/src/app/shared/components/resources/resource-filters/filters/part-of-collection-filter/part-of-collection-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/part-of-collection-filter/part-of-collection-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -7,15 +11,14 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; +import { FormsModule } from '@angular/forms'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetPartOfCollection, } from '@shared/components/resources/resource-filters/store'; -import { FormsModule } from '@angular/forms'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-part-of-collection-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/provider-filter/provider-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/provider-filter/provider-filter.component.ts index 80cc220a9..9c2f1cba1 100644 --- a/src/app/shared/components/resources/resource-filters/filters/provider-filter/provider-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/provider-filter/provider-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -7,15 +11,14 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; +import { FormsModule } from '@angular/forms'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetProvider, } from '@shared/components/resources/resource-filters/store'; -import { FormsModule } from '@angular/forms'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-provider-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/resource-type-filter/resource-type-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/resource-type-filter/resource-type-filter.component.ts index be0039266..b2b0a4ddf 100644 --- a/src/app/shared/components/resources/resource-filters/filters/resource-type-filter/resource-type-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/resource-type-filter/resource-type-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -7,15 +11,14 @@ import { signal, untracked, } from '@angular/core'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; +import { FormsModule } from '@angular/forms'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetResourceType, } from '@shared/components/resources/resource-filters/store'; -import { FormsModule } from '@angular/forms'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-resource-type-filter', diff --git a/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.model.ts b/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.model.ts index 10fdea660..428e66b94 100644 --- a/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.model.ts +++ b/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.model.ts @@ -1,12 +1,12 @@ import { Creator } from '@shared/components/resources/resource-filters/models/creator/creator.entity'; import { DateCreated } from '@shared/components/resources/resource-filters/models/dateCreated/date-created.entity'; import { FunderFilter } from '@shared/components/resources/resource-filters/models/funder/funder-filter.entity'; -import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; +import { InstitutionFilter } from '@shared/components/resources/resource-filters/models/institution/institution-filter.entity'; import { LicenseFilter } from '@shared/components/resources/resource-filters/models/license/license-filter.entity'; -import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; -import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; import { PartOfCollectionFilter } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-filter.entity'; -import { InstitutionFilter } from '@shared/components/resources/resource-filters/models/institution/institution-filter.entity'; +import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; +import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; +import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; export interface ResourceFiltersOptionsStateModel { creators: Creator[]; diff --git a/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors.ts b/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors.ts index 73fe93363..4b7a834d9 100644 --- a/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors.ts +++ b/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors.ts @@ -1,15 +1,16 @@ import { Selector } from '@ngxs/store'; + import { ResourceFiltersOptionsStateModel } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.model'; import { ResourceFiltersOptionsState } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.state'; import { Creator } from '@shared/components/resources/resource-filters/models/creator/creator.entity'; import { DateCreated } from '@shared/components/resources/resource-filters/models/dateCreated/date-created.entity'; import { FunderFilter } from '@shared/components/resources/resource-filters/models/funder/funder-filter.entity'; -import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; +import { InstitutionFilter } from '@shared/components/resources/resource-filters/models/institution/institution-filter.entity'; import { LicenseFilter } from '@shared/components/resources/resource-filters/models/license/license-filter.entity'; -import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; -import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; import { PartOfCollectionFilter } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-filter.entity'; -import { InstitutionFilter } from '@shared/components/resources/resource-filters/models/institution/institution-filter.entity'; +import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; +import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; +import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; export class ResourceFiltersOptionsSelectors { @Selector([ResourceFiltersOptionsState]) diff --git a/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.state.ts b/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.state.ts index 47ab85921..bae422cfb 100644 --- a/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.state.ts +++ b/src/app/shared/components/resources/resource-filters/filters/store/resource-filters-options.state.ts @@ -1,8 +1,9 @@ import { Action, State, StateContext, Store } from '@ngxs/store'; -import { inject, Injectable } from '@angular/core'; + import { tap } from 'rxjs'; -import { ResourceFiltersOptionsStateModel } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.model'; -import { ResourceFiltersService } from '@shared/components/resources/resource-filters/resource-filters.service'; + +import { inject, Injectable } from '@angular/core'; + import { GetAllOptions, GetCreatorsOptions, @@ -15,6 +16,8 @@ import { GetResourceTypesOptions, GetSubjectsOptions, } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsStateModel } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.model'; +import { ResourceFiltersService } from '@shared/components/resources/resource-filters/resource-filters.service'; @State({ name: 'resourceFiltersOptions', diff --git a/src/app/shared/components/resources/resource-filters/filters/subject/subject-filter.component.ts b/src/app/shared/components/resources/resource-filters/filters/subject/subject-filter.component.ts index 388825cd0..d693dd03a 100644 --- a/src/app/shared/components/resources/resource-filters/filters/subject/subject-filter.component.ts +++ b/src/app/shared/components/resources/resource-filters/filters/subject/subject-filter.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { Select, SelectChangeEvent } from 'primeng/select'; + import { ChangeDetectionStrategy, Component, @@ -8,14 +12,13 @@ import { untracked, } from '@angular/core'; import { FormsModule } from '@angular/forms'; -import { Select, SelectChangeEvent } from 'primeng/select'; -import { Store } from '@ngxs/store'; + +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; import { ResourceFiltersSelectors, SetSubject, } from '@shared/components/resources/resource-filters/store'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; @Component({ selector: 'osf-subject-filter', diff --git a/src/app/shared/components/resources/resource-filters/mappers/creators/creators.mappers.ts b/src/app/shared/components/resources/resource-filters/mappers/creators/creators.mappers.ts index c8bed480d..2615cc553 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/creators/creators.mappers.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/creators/creators.mappers.ts @@ -1,5 +1,5 @@ -import { CreatorItem } from '@shared/components/resources/resource-filters/models/creator/creator-item.entity'; import { Creator } from '@shared/components/resources/resource-filters/models/creator/creator.entity'; +import { CreatorItem } from '@shared/components/resources/resource-filters/models/creator/creator-item.entity'; export function MapCreators(rawItem: CreatorItem): Creator { return { diff --git a/src/app/shared/components/resources/resource-filters/mappers/dateCreated/date-created.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/dateCreated/date-created.mapper.ts index 426ca8270..8c390d008 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/dateCreated/date-created.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/dateCreated/date-created.mapper.ts @@ -1,6 +1,6 @@ import { DateCreated } from '@shared/components/resources/resource-filters/models/dateCreated/date-created.entity'; -import { IndexValueSearch } from '@shared/components/resources/resource-filters/models/index-value-search.entity'; import { IndexCardFilter } from '@shared/components/resources/resource-filters/models/index-card-filter.entity'; +import { IndexValueSearch } from '@shared/components/resources/resource-filters/models/index-value-search.entity'; export function MapDateCreated(items: IndexValueSearch[]): DateCreated[] { const datesCreated: DateCreated[] = []; diff --git a/src/app/shared/components/resources/resource-filters/mappers/funder/funder.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/funder/funder.mapper.ts index ffb277305..518ffe7ae 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/funder/funder.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/funder/funder.mapper.ts @@ -1,6 +1,6 @@ -import { FunderIndexValueSearch } from '@shared/components/resources/resource-filters/models/funder/funder-index-value-search.entity'; import { FunderFilter } from '@shared/components/resources/resource-filters/models/funder/funder-filter.entity'; import { FunderIndexCardFilter } from '@shared/components/resources/resource-filters/models/funder/funder-index-card-filter.entity'; +import { FunderIndexValueSearch } from '@shared/components/resources/resource-filters/models/funder/funder-index-value-search.entity'; export function MapFunders(items: FunderIndexValueSearch[]): FunderFilter[] { const funders: FunderFilter[] = []; diff --git a/src/app/shared/components/resources/resource-filters/mappers/institution/institution.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/institution/institution.mapper.ts index cfa6dd739..36bf95c5d 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/institution/institution.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/institution/institution.mapper.ts @@ -1,6 +1,6 @@ -import { InstitutionIndexValueSearch } from '@shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity'; -import { InstitutionIndexCardFilter } from '@shared/components/resources/resource-filters/models/institution/institution-index-card-filter.entity'; import { InstitutionFilter } from '@shared/components/resources/resource-filters/models/institution/institution-filter.entity'; +import { InstitutionIndexCardFilter } from '@shared/components/resources/resource-filters/models/institution/institution-index-card-filter.entity'; +import { InstitutionIndexValueSearch } from '@shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity'; export function MapInstitutions( items: InstitutionIndexValueSearch[], diff --git a/src/app/shared/components/resources/resource-filters/mappers/license/license.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/license/license.mapper.ts index e5f8b1ec6..998fc85a6 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/license/license.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/license/license.mapper.ts @@ -1,6 +1,6 @@ -import { LicenseIndexValueSearch } from '@shared/components/resources/resource-filters/models/license/license-index-value-search.entity'; -import { LicenseIndexCardFilter } from '@shared/components/resources/resource-filters/models/license/license-index-card-filter.entity'; import { LicenseFilter } from '@shared/components/resources/resource-filters/models/license/license-filter.entity'; +import { LicenseIndexCardFilter } from '@shared/components/resources/resource-filters/models/license/license-index-card-filter.entity'; +import { LicenseIndexValueSearch } from '@shared/components/resources/resource-filters/models/license/license-index-value-search.entity'; export function MapLicenses(items: LicenseIndexValueSearch[]): LicenseFilter[] { const licenses: LicenseFilter[] = []; diff --git a/src/app/shared/components/resources/resource-filters/mappers/part-of-collection/part-of-collection.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/part-of-collection/part-of-collection.mapper.ts index e3d967844..8db0e5301 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/part-of-collection/part-of-collection.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/part-of-collection/part-of-collection.mapper.ts @@ -1,6 +1,6 @@ -import { PartOfCollectionIndexValueSearch } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity'; import { PartOfCollectionFilter } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-filter.entity'; import { PartOfCollectionIndexCardFilter } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-card-filter.entity'; +import { PartOfCollectionIndexValueSearch } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity'; export function MapPartOfCollections( items: PartOfCollectionIndexValueSearch[], diff --git a/src/app/shared/components/resources/resource-filters/mappers/provider/provider.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/provider/provider.mapper.ts index 981f21e56..eceab0354 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/provider/provider.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/provider/provider.mapper.ts @@ -1,6 +1,6 @@ -import { ProviderIndexValueSearch } from '@shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity'; import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; import { ProviderIndexCardFilter } from '@shared/components/resources/resource-filters/models/provider/provider-index-card-filter.entity'; +import { ProviderIndexValueSearch } from '@shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity'; export function MapProviders( items: ProviderIndexValueSearch[], diff --git a/src/app/shared/components/resources/resource-filters/mappers/resource-type/resource-type.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/resource-type/resource-type.mapper.ts index bd76a7cd5..46236022c 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/resource-type/resource-type.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/resource-type/resource-type.mapper.ts @@ -1,6 +1,6 @@ -import { ResourceTypeIndexValueSearch } from '@shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity'; import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; import { ResourceTypeIndexCardFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type-index-card-filter.entity'; +import { ResourceTypeIndexValueSearch } from '@shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity'; export function MapResourceType( items: ResourceTypeIndexValueSearch[], diff --git a/src/app/shared/components/resources/resource-filters/mappers/subject/subject.mapper.ts b/src/app/shared/components/resources/resource-filters/mappers/subject/subject.mapper.ts index e3e4e6730..66ed126ac 100644 --- a/src/app/shared/components/resources/resource-filters/mappers/subject/subject.mapper.ts +++ b/src/app/shared/components/resources/resource-filters/mappers/subject/subject.mapper.ts @@ -1,6 +1,6 @@ +import { IndexCardFilter } from '@shared/components/resources/resource-filters/models/index-card-filter.entity'; import { IndexValueSearch } from '@shared/components/resources/resource-filters/models/index-value-search.entity'; import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; -import { IndexCardFilter } from '@shared/components/resources/resource-filters/models/index-card-filter.entity'; export function MapSubject(items: IndexValueSearch[]): SubjectFilter[] { const subjects: SubjectFilter[] = []; diff --git a/src/app/shared/components/resources/resource-filters/models/index-value-search.entity.ts b/src/app/shared/components/resources/resource-filters/models/index-value-search.entity.ts index 2c4f62f0d..c09f5bbd3 100644 --- a/src/app/shared/components/resources/resource-filters/models/index-value-search.entity.ts +++ b/src/app/shared/components/resources/resource-filters/models/index-value-search.entity.ts @@ -1,4 +1,4 @@ -import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; import { IndexCardFilter } from '@shared/components/resources/resource-filters/models/index-card-filter.entity'; +import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; export type IndexValueSearch = SearchResultCount | IndexCardFilter; diff --git a/src/app/shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity.ts b/src/app/shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity.ts index bacd74265..32088406b 100644 --- a/src/app/shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity.ts +++ b/src/app/shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity.ts @@ -1,5 +1,5 @@ -import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; import { InstitutionIndexCardFilter } from '@shared/components/resources/resource-filters/models/institution/institution-index-card-filter.entity'; +import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; export type InstitutionIndexValueSearch = | SearchResultCount diff --git a/src/app/shared/components/resources/resource-filters/models/license/license-index-value-search.entity.ts b/src/app/shared/components/resources/resource-filters/models/license/license-index-value-search.entity.ts index d972ddcac..55f812d45 100644 --- a/src/app/shared/components/resources/resource-filters/models/license/license-index-value-search.entity.ts +++ b/src/app/shared/components/resources/resource-filters/models/license/license-index-value-search.entity.ts @@ -1,5 +1,5 @@ -import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; import { LicenseIndexCardFilter } from '@shared/components/resources/resource-filters/models/license/license-index-card-filter.entity'; +import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; export type LicenseIndexValueSearch = | SearchResultCount diff --git a/src/app/shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity.ts b/src/app/shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity.ts index cbe227b48..7babbf73b 100644 --- a/src/app/shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity.ts +++ b/src/app/shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity.ts @@ -1,5 +1,5 @@ -import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; import { PartOfCollectionIndexCardFilter } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-card-filter.entity'; +import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; export type PartOfCollectionIndexValueSearch = | SearchResultCount diff --git a/src/app/shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity.ts b/src/app/shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity.ts index 7e4cfb7a6..c4222a50e 100644 --- a/src/app/shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity.ts +++ b/src/app/shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity.ts @@ -1,5 +1,5 @@ -import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; import { ProviderIndexCardFilter } from '@shared/components/resources/resource-filters/models/provider/provider-index-card-filter.entity'; +import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; export type ProviderIndexValueSearch = | SearchResultCount diff --git a/src/app/shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity.ts b/src/app/shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity.ts index 126e81cfd..a5a0b19ea 100644 --- a/src/app/shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity.ts +++ b/src/app/shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity.ts @@ -1,5 +1,5 @@ -import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; import { ResourceTypeIndexCardFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type-index-card-filter.entity'; +import { SearchResultCount } from '@shared/components/resources/resource-filters/models/search-result-count.entity'; export type ResourceTypeIndexValueSearch = | SearchResultCount diff --git a/src/app/shared/components/resources/resource-filters/resource-filters.component.ts b/src/app/shared/components/resources/resource-filters/resource-filters.component.ts index a281c5995..581a2fc43 100644 --- a/src/app/shared/components/resources/resource-filters/resource-filters.component.ts +++ b/src/app/shared/components/resources/resource-filters/resource-filters.component.ts @@ -1,9 +1,5 @@ -import { - ChangeDetectionStrategy, - Component, - computed, - inject, -} from '@angular/core'; +import { Store } from '@ngxs/store'; + import { Accordion, AccordionContent, @@ -11,19 +7,26 @@ import { AccordionPanel, } from 'primeng/accordion'; import { AutoCompleteModule } from 'primeng/autocomplete'; + +import { + ChangeDetectionStrategy, + Component, + computed, + inject, +} from '@angular/core'; import { ReactiveFormsModule } from '@angular/forms'; + +import { SearchSelectors } from '@osf/features/search/store'; import { CreatorsFilterComponent } from '@shared/components/resources/resource-filters/filters/creators/creators-filter.component'; import { DateCreatedFilterComponent } from '@shared/components/resources/resource-filters/filters/date-created/date-created-filter.component'; -import { SubjectFilterComponent } from '@shared/components/resources/resource-filters/filters/subject/subject-filter.component'; import { FunderFilterComponent } from '@shared/components/resources/resource-filters/filters/funder/funder-filter.component'; +import { InstitutionFilterComponent } from '@shared/components/resources/resource-filters/filters/institution-filter/institution-filter.component'; import { LicenseFilterComponent } from '@shared/components/resources/resource-filters/filters/license-filter/license-filter.component'; -import { ResourceTypeFilterComponent } from '@shared/components/resources/resource-filters/filters/resource-type-filter/resource-type-filter.component'; -import { ProviderFilterComponent } from '@shared/components/resources/resource-filters/filters/provider-filter/provider-filter.component'; import { PartOfCollectionFilterComponent } from '@shared/components/resources/resource-filters/filters/part-of-collection-filter/part-of-collection-filter.component'; -import { Store } from '@ngxs/store'; +import { ProviderFilterComponent } from '@shared/components/resources/resource-filters/filters/provider-filter/provider-filter.component'; +import { ResourceTypeFilterComponent } from '@shared/components/resources/resource-filters/filters/resource-type-filter/resource-type-filter.component'; import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; -import { InstitutionFilterComponent } from '@shared/components/resources/resource-filters/filters/institution-filter/institution-filter.component'; -import { SearchSelectors } from '@osf/features/search/store'; +import { SubjectFilterComponent } from '@shared/components/resources/resource-filters/filters/subject/subject-filter.component'; @Component({ selector: 'osf-resource-filters', diff --git a/src/app/shared/components/resources/resource-filters/resource-filters.service.ts b/src/app/shared/components/resources/resource-filters/resource-filters.service.ts index 6c1c2ea30..c6b6a4b61 100644 --- a/src/app/shared/components/resources/resource-filters/resource-filters.service.ts +++ b/src/app/shared/components/resources/resource-filters/resource-filters.service.ts @@ -1,41 +1,45 @@ -import { inject, Injectable } from '@angular/core'; +import { Store } from '@ngxs/store'; + import { map, Observable } from 'rxjs'; + +import { inject, Injectable } from '@angular/core'; + import { ApiData, JsonApiResponse, } from '@core/services/json-api/json-api.entity'; -import { environment } from '../../../../../environments/environment'; -import { CreatorItem } from '@shared/components/resources/resource-filters/models/creator/creator-item.entity'; import { JsonApiService } from '@core/services/json-api/json-api.service'; +import { SearchSelectors } from '@osf/features/search/store'; +import { getResourceTypes } from '@osf/features/search/utils/helpers/get-resource-types.helper'; import { MapCreators } from '@shared/components/resources/resource-filters/mappers/creators/creators.mappers'; -import { Creator } from '@shared/components/resources/resource-filters/models/creator/creator.entity'; -import { IndexValueSearch } from '@shared/components/resources/resource-filters/models/index-value-search.entity'; import { MapDateCreated } from '@shared/components/resources/resource-filters/mappers/dateCreated/date-created.mapper'; -import { DateCreated } from '@shared/components/resources/resource-filters/models/dateCreated/date-created.entity'; -import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; +import { MapFunders } from '@shared/components/resources/resource-filters/mappers/funder/funder.mapper'; +import { MapInstitutions } from '@shared/components/resources/resource-filters/mappers/institution/institution.mapper'; +import { MapLicenses } from '@shared/components/resources/resource-filters/mappers/license/license.mapper'; +import { MapPartOfCollections } from '@shared/components/resources/resource-filters/mappers/part-of-collection/part-of-collection.mapper'; +import { MapProviders } from '@shared/components/resources/resource-filters/mappers/provider/provider.mapper'; +import { MapResourceType } from '@shared/components/resources/resource-filters/mappers/resource-type/resource-type.mapper'; import { MapSubject } from '@shared/components/resources/resource-filters/mappers/subject/subject.mapper'; -import { FunderIndexValueSearch } from '@shared/components/resources/resource-filters/models/funder/funder-index-value-search.entity'; +import { Creator } from '@shared/components/resources/resource-filters/models/creator/creator.entity'; +import { CreatorItem } from '@shared/components/resources/resource-filters/models/creator/creator-item.entity'; +import { DateCreated } from '@shared/components/resources/resource-filters/models/dateCreated/date-created.entity'; import { FunderFilter } from '@shared/components/resources/resource-filters/models/funder/funder-filter.entity'; -import { MapFunders } from '@shared/components/resources/resource-filters/mappers/funder/funder.mapper'; +import { FunderIndexValueSearch } from '@shared/components/resources/resource-filters/models/funder/funder-index-value-search.entity'; +import { IndexValueSearch } from '@shared/components/resources/resource-filters/models/index-value-search.entity'; +import { InstitutionIndexValueSearch } from '@shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity'; import { LicenseFilter } from '@shared/components/resources/resource-filters/models/license/license-filter.entity'; import { LicenseIndexValueSearch } from '@shared/components/resources/resource-filters/models/license/license-index-value-search.entity'; -import { MapLicenses } from '@shared/components/resources/resource-filters/mappers/license/license.mapper'; -import { ResourceTypeIndexValueSearch } from '@shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity'; -import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; -import { MapResourceType } from '@shared/components/resources/resource-filters/mappers/resource-type/resource-type.mapper'; -import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; -import { MapProviders } from '@shared/components/resources/resource-filters/mappers/provider/provider.mapper'; -import { ProviderIndexValueSearch } from '@shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity'; import { PartOfCollectionFilter } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-filter.entity'; -import { MapPartOfCollections } from '@shared/components/resources/resource-filters/mappers/part-of-collection/part-of-collection.mapper'; import { PartOfCollectionIndexValueSearch } from '@shared/components/resources/resource-filters/models/part-of-collection/part-of-collection-index-value-search.entity'; -import { Store } from '@ngxs/store'; -import { addFiltersParams } from '@shared/components/resources/resource-filters/utils/add-filters-params.helper'; +import { ProviderFilter } from '@shared/components/resources/resource-filters/models/provider/provider-filter.entity'; +import { ProviderIndexValueSearch } from '@shared/components/resources/resource-filters/models/provider/provider-index-value-search.entity'; +import { ResourceTypeFilter } from '@shared/components/resources/resource-filters/models/resource-type/resource-type.entity'; +import { ResourceTypeIndexValueSearch } from '@shared/components/resources/resource-filters/models/resource-type/resource-type-index-value-search.entity'; +import { SubjectFilter } from '@shared/components/resources/resource-filters/models/subject/subject-filter.entity'; import { ResourceFiltersSelectors } from '@shared/components/resources/resource-filters/store'; -import { SearchSelectors } from '@osf/features/search/store'; -import { getResourceTypes } from '@osf/features/search/utils/helpers/get-resource-types.helper'; -import { InstitutionIndexValueSearch } from '@shared/components/resources/resource-filters/models/institution/institution-index-value-search.entity'; -import { MapInstitutions } from '@shared/components/resources/resource-filters/mappers/institution/institution.mapper'; +import { addFiltersParams } from '@shared/components/resources/resource-filters/utils/add-filters-params.helper'; + +import { environment } from '../../../../../environments/environment'; @Injectable({ providedIn: 'root', diff --git a/src/app/shared/components/resources/resource-filters/store/index.ts b/src/app/shared/components/resources/resource-filters/store/index.ts index 6c3ba20b4..0bbc2ed4b 100644 --- a/src/app/shared/components/resources/resource-filters/store/index.ts +++ b/src/app/shared/components/resources/resource-filters/store/index.ts @@ -1,4 +1,4 @@ -export * from './resource-filters.model'; export * from './resource-filters.actions'; +export * from './resource-filters.model'; export * from './resource-filters.selectors'; export * from './resource-filters.state'; diff --git a/src/app/shared/components/resources/resource-filters/store/resource-filters.selectors.ts b/src/app/shared/components/resources/resource-filters/store/resource-filters.selectors.ts index 8ea486ec3..c710c3e91 100644 --- a/src/app/shared/components/resources/resource-filters/store/resource-filters.selectors.ts +++ b/src/app/shared/components/resources/resource-filters/store/resource-filters.selectors.ts @@ -1,9 +1,10 @@ -import { ResourceFiltersState } from '@shared/components/resources/resource-filters/store/resource-filters.state'; import { Selector } from '@ngxs/store'; + import { ResourceFilterLabel, ResourceFiltersStateModel, } from '@shared/components/resources/resource-filters/store/resource-filters.model'; +import { ResourceFiltersState } from '@shared/components/resources/resource-filters/store/resource-filters.state'; export class ResourceFiltersSelectors { @Selector([ResourceFiltersState]) diff --git a/src/app/shared/components/resources/resource-filters/store/resource-filters.state.ts b/src/app/shared/components/resources/resource-filters/store/resource-filters.state.ts index a64e0a090..b49440b2c 100644 --- a/src/app/shared/components/resources/resource-filters/store/resource-filters.state.ts +++ b/src/app/shared/components/resources/resource-filters/store/resource-filters.state.ts @@ -1,7 +1,8 @@ -import { ResourceFiltersStateModel } from '@shared/components/resources/resource-filters/store/resource-filters.model'; import { Action, State, StateContext } from '@ngxs/store'; import { Injectable } from '@angular/core'; + +import { FilterLabels } from '@shared/components/resources/resource-filters/models/filter-labels'; import { ResetFiltersState, SetCreator, @@ -14,7 +15,7 @@ import { SetResourceType, SetSubject, } from '@shared/components/resources/resource-filters/store/resource-filters.actions'; -import { FilterLabels } from '@shared/components/resources/resource-filters/models/filter-labels'; +import { ResourceFiltersStateModel } from '@shared/components/resources/resource-filters/store/resource-filters.model'; import { resourceFiltersDefaults } from '@shared/components/resources/resource-filters/utils/data'; // Store for user selected filters values diff --git a/src/app/shared/components/resources/resources-wrapper/resources-wrapper.component.ts b/src/app/shared/components/resources/resources-wrapper/resources-wrapper.component.ts index 536d70cf2..7788f1a8c 100644 --- a/src/app/shared/components/resources/resources-wrapper/resources-wrapper.component.ts +++ b/src/app/shared/components/resources/resources-wrapper/resources-wrapper.component.ts @@ -1,3 +1,7 @@ +import { Store } from '@ngxs/store'; + +import { take } from 'rxjs'; + import { ChangeDetectionStrategy, Component, @@ -6,6 +10,16 @@ import { OnInit, } from '@angular/core'; import { ActivatedRoute, Router } from '@angular/router'; + +import { ResourceTab } from '@osf/features/search/models/resource-tab.enum'; +import { + SearchSelectors, + SetResourceTab, + SetSearchText, + SetSortBy, +} from '@osf/features/search/store'; +import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; +import { FilterLabels } from '@shared/components/resources/resource-filters/models/filter-labels'; import { ResourceFilterLabel, ResourceFiltersSelectors, @@ -19,17 +33,6 @@ import { SetResourceType, SetSubject, } from '@shared/components/resources/resource-filters/store'; -import { - SearchSelectors, - SetResourceTab, - SetSearchText, - SetSortBy, -} from '@osf/features/search/store'; -import { Store } from '@ngxs/store'; -import { take } from 'rxjs'; -import { FilterLabels } from '@shared/components/resources/resource-filters/models/filter-labels'; -import { GetAllOptions } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.actions'; -import { ResourceTab } from '@osf/features/search/models/resource-tab.enum'; import { ResourcesComponent } from '@shared/components/resources/resources.component'; @Component({ diff --git a/src/app/shared/components/resources/resources.component.ts b/src/app/shared/components/resources/resources.component.ts index e5d2eb756..14a8d7d51 100644 --- a/src/app/shared/components/resources/resources.component.ts +++ b/src/app/shared/components/resources/resources.component.ts @@ -1,3 +1,13 @@ +import { Store } from '@ngxs/store'; + +import { AccordionModule } from 'primeng/accordion'; +import { AutoCompleteModule } from 'primeng/autocomplete'; +import { DataViewModule } from 'primeng/dataview'; +import { DropdownModule } from 'primeng/dropdown'; +import { Select } from 'primeng/select'; +import { TableModule } from 'primeng/table'; + +import { NgOptimizedImage } from '@angular/common'; import { ChangeDetectionStrategy, Component, @@ -8,16 +18,8 @@ import { untracked, } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; -import { IS_XSMALL, IS_WEB } from '@shared/utils/breakpoints.tokens'; -import { DropdownModule } from 'primeng/dropdown'; import { FormsModule, ReactiveFormsModule } from '@angular/forms'; -import { ResourceFiltersComponent } from '@shared/components/resources/resource-filters/resource-filters.component'; -import { AutoCompleteModule } from 'primeng/autocomplete'; -import { AccordionModule } from 'primeng/accordion'; -import { TableModule } from 'primeng/table'; -import { DataViewModule } from 'primeng/dataview'; -import { ResourceCardComponent } from '@shared/components/resources/resource-card/resource-card.component'; -import { Store } from '@ngxs/store'; + import { ResourceTab } from '@osf/features/search/models/resource-tab.enum'; import { GetResourcesByLink, @@ -26,10 +28,11 @@ import { SetSortBy, } from '@osf/features/search/store'; import { FilterChipsComponent } from '@shared/components/resources/filter-chips/filter-chips.component'; -import { ResourceFiltersSelectors } from '@shared/components/resources/resource-filters/store'; -import { Select } from 'primeng/select'; -import { NgOptimizedImage } from '@angular/common'; +import { ResourceCardComponent } from '@shared/components/resources/resource-card/resource-card.component'; import { ResourceFiltersOptionsSelectors } from '@shared/components/resources/resource-filters/filters/store/resource-filters-options.selectors'; +import { ResourceFiltersComponent } from '@shared/components/resources/resource-filters/resource-filters.component'; +import { ResourceFiltersSelectors } from '@shared/components/resources/resource-filters/store'; +import { IS_WEB, IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-resources', diff --git a/src/app/shared/components/search-input/search-input.component.ts b/src/app/shared/components/search-input/search-input.component.ts index 2b21af88c..cc741d777 100644 --- a/src/app/shared/components/search-input/search-input.component.ts +++ b/src/app/shared/components/search-input/search-input.component.ts @@ -1,10 +1,11 @@ +import { InputText } from 'primeng/inputtext'; + import { ChangeDetectionStrategy, Component, input, model, } from '@angular/core'; -import { InputText } from 'primeng/inputtext'; import { FormsModule } from '@angular/forms'; @Component({ diff --git a/src/app/shared/components/sub-header/sub-header.component.ts b/src/app/shared/components/sub-header/sub-header.component.ts index edf768bd9..9bb3a75a0 100644 --- a/src/app/shared/components/sub-header/sub-header.component.ts +++ b/src/app/shared/components/sub-header/sub-header.component.ts @@ -1,14 +1,16 @@ +import { Button } from 'primeng/button'; + import { ChangeDetectionStrategy, Component, - input, inject, + input, output, } from '@angular/core'; -import { Button } from 'primeng/button'; -import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; import { toSignal } from '@angular/core/rxjs-interop'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; + @Component({ selector: 'osf-sub-header', imports: [Button], diff --git a/src/app/shared/entities/create-project-form.interface.ts b/src/app/shared/entities/create-project-form.interface.ts index 3b948d81e..a62242578 100644 --- a/src/app/shared/entities/create-project-form.interface.ts +++ b/src/app/shared/entities/create-project-form.interface.ts @@ -1,4 +1,5 @@ import { FormControl } from '@angular/forms'; + import { ProjectFormControls } from '@shared/entities/create-project-form-controls.enum'; export interface ProjectForm { diff --git a/src/app/shared/utils/breakpoints.tokens.ts b/src/app/shared/utils/breakpoints.tokens.ts index b2403f774..14ab29fc7 100644 --- a/src/app/shared/utils/breakpoints.tokens.ts +++ b/src/app/shared/utils/breakpoints.tokens.ts @@ -1,6 +1,8 @@ -import { inject, InjectionToken } from '@angular/core'; +import { map, Observable } from 'rxjs'; + import { BreakpointObserver, Breakpoints } from '@angular/cdk/layout'; -import { Observable, map } from 'rxjs'; +import { inject, InjectionToken } from '@angular/core'; + import { BreakpointQueries } from '@shared/utils/breakpoint-queries.enum'; function createBreakpointToken( diff --git a/src/app/shared/utils/remove-nullable.const.ts b/src/app/shared/utils/remove-nullable.const.ts index dde31ab4b..275cc9d2f 100644 --- a/src/app/shared/utils/remove-nullable.const.ts +++ b/src/app/shared/utils/remove-nullable.const.ts @@ -1,6 +1,5 @@ export function removeNullable(obj: T): Partial { return Object.fromEntries( - Object.entries(obj).filter( ([_, value]) => value !== null && value !== undefined, ), diff --git a/src/index.html b/src/index.html index a80bf7222..0628ad111 100644 --- a/src/index.html +++ b/src/index.html @@ -2,11 +2,10 @@ - Osf + OSF - - + diff --git a/src/main.ts b/src/main.ts index 2c6030824..6ad6b3a1c 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,9 +1,10 @@ -import { bootstrapApplication } from '@angular/platform-browser'; -import { appConfig } from '@osf/app.config'; -import { AppComponent } from '@osf/app.component'; import { isDevMode } from '@angular/core'; +import { bootstrapApplication } from '@angular/platform-browser'; import { provideServiceWorker } from '@angular/service-worker'; +import { AppComponent } from '@osf/app.component'; +import { appConfig } from '@osf/app.config'; + bootstrapApplication(AppComponent, { providers: [ ...appConfig.providers,