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,