Skip to content
1 change: 1 addition & 0 deletions src/app/app.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export const appConfig: ApplicationConfig = {
theme: {
preset: Aura,
options: {
darkModeSelector: false,
cssLayer: {
name: 'primeng',
order: 'base, primeng, reset',
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<section class="header">
<i class="osf-icon-settings"></i>
<h1>Developer apps</h1>
<p-button>Create Developer App</p-button>
</section>
<section class="content">
<p>
Third-party web applications can connect to the OSF on behalf of users via
the OAuth 2.0 web application flow.
</p>

<section class="applications-container">
@for (developerApp of developerApplications; track $index) {
<p-card>
<section class="card-body">
<h2>{{ developerApp }}</h2>
<p-button
severity="danger"
(onClick)="onDeleteDeveloperApp(developerApp)"
>Delete</p-button
>
</section>
</p-card>
}
</section>
</section>
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
@use "assets/styles/mixins" as mix;
@use "assets/styles/variables" as var;

:host {
@include mix.flex-column;
flex: 1;

.header {
@include mix.flex-center-between;
width: 100%;
padding: 7.14rem 1.71rem 3.43rem 1.71rem;
background: var.$gradient-1;

h1 {
margin-left: 0.85rem;
}

p-button {
margin-left: auto;
}

i {
color: var.$dark-blue-1;
font-size: 2.6rem;
}
}

.content {
margin: 1.7rem;
color: var.$dark-blue-1;

p {
margin-bottom: 1.7rem;
}

.applications-container {
@include mix.flex-column;
gap: 0.85rem;

.card-body {
@include mix.flex-center-between;
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { ComponentFixture, TestBed } from '@angular/core/testing';

import { DeveloperAppsComponent } from './developer-apps.component';

describe('DeveloperAppsComponent', () => {
let component: DeveloperAppsComponent;
let fixture: ComponentFixture<DeveloperAppsComponent>;

beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [DeveloperAppsComponent],
}).compileComponents();

fixture = TestBed.createComponent(DeveloperAppsComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});

it('should create', () => {
expect(component).toBeTruthy();
});
});
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { Button } from 'primeng/button';
import { Card } from 'primeng/card';

@Component({
selector: 'osf-developer-apps',
imports: [Button, Card],
templateUrl: './developer-apps.component.html',
styleUrl: './developer-apps.component.scss',
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class DeveloperAppsComponent {
developerApplications: string[] = [
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
'Developer app name example',
];

onDeleteDeveloperApp(developerApp: string): void {
console.log('delete', developerApp);
//TODO implement api integration
}
}
7 changes: 7 additions & 0 deletions src/app/features/settings/settings.routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,13 @@ export const settingsRoutes: Routes = [
(c) => c.AccountSettingsComponent,
),
},
{
path: 'developer-apps',
loadComponent: () =>
import('./developer-apps/developer-apps.component').then(
(mod) => mod.DeveloperAppsComponent,
),
},
],
},
];
13 changes: 13 additions & 0 deletions src/assets/styles/overrides/card.scss
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
@use "assets/styles/mixins" as mix;
@use "assets/styles/variables" as var;

.p-card {
color: var.$dark-blue-1;
box-shadow: none;
border-radius: 8px;
border: 1px solid var.$grey-2;

.p-card-body {
padding: 1.7rem;
}
}
1 change: 1 addition & 0 deletions src/assets/styles/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
@use "./overrides/table";
@use "./overrides/message";
@use "./overrides/drawer";
@use "./overrides/card";

@layer base, primeng, reset;

Expand Down