Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file added apps/blog/src/assets/al-ebook.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
16 changes: 16 additions & 0 deletions apps/blog/src/assets/i18n/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"seeAll": "See all the articles",
"latest": "Latest Articles",
"recommended": "Recommended Articles",
"talks": "Angular talks",
"videoPlayer": "YouTube video player",
"angularNews": "Angular News",
"guides": "Guides",
"angularInDepth": "Angular In Depth",
Expand Down Expand Up @@ -312,5 +314,19 @@
"section1": "We’ll transfer your article to the CMS and schedule its publication.",
"section2": "We’ll also promote it on social media to maximize its reach."
}
},
"presentations": {
"listTitle": "Meetup presentations",
"watchRecording": "WATCH RECORDING",
"authoredBy": "by {{author}}",
"workshopsTitle": "Angular Workshops",
"workshopsDescription": "Whether you want to level up your individual skills or train your entire team, our workshops are 100% hands-on practice with an expert, directly translating into the quality of your code and work speed with Mateusz Stefańczyk (Google Developer Expert).",
"workshopsButton": "CHECK OPEN WORKSHOPS"
},
"ebook": {
"title": "FREE EBOOK",
"subTitle": "The Angular Evolution Guide: ng20+ Summary for CTOs",
"description": "Download to discover how the latest Angular version improves performance, DX, UX and overall app efficiency, and how it affects your business.",
"downloadButton": "DOWNLOAD NOW"
}
}
16 changes: 16 additions & 0 deletions apps/blog/src/assets/i18n/pl.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"seeAll": "Zobacz wszystkie",
"latest": "Najnowsze Artykuły",
"recommended": "Polecane Artykuły",
"talks": "Prezentacje",
"videoPlayer": "Odtwarzacz wideo YouTube",
"angularNews": "Wiadomości ze świata Angulara",
"guides": "Poradniki",
"angularInDepth": "Angular In Depth",
Expand Down Expand Up @@ -315,5 +317,19 @@
"section1": "Teraz my zajmiemy się przeniesieniem twojego artykułu do CMS’a i zaplanujemy jego opublikowanie",
"section2": "Zajmiemy się również jego promowaniem w mediach społecznościowych, aby jak najwięcej osób mogło skorzystać z wiedzy, którą w nim zawarłeś!"
}
},
"presentations": {
"listTitle": "Prezentacje Meetup",
"watchRecording": "OBEJRZYJ NAGRANIE",
"authoredBy": "autor: {{author}}",
"workshopsTitle": "Warsztaty Angular",
"workshopsDescription": "Niezależnie od tego, czy chcesz podnieść swoje umiejętności, czy przeszkolić cały zespół, nasze warsztaty to 100% praktyki z ekspertem, co bezpośrednio przekłada się na jakość twojego kodu i szybkość pracy z Mateuszem Stefańczykiem (Google Developer Expert).",
"workshopsButton": "SPRAWDŹ OTWARTE WARSZTATY"
},
"ebook": {
"title": "BEZPŁATNY EBOOK",
"subTitle": "Przewodnik po ewolucji Angulara: Podsumowanie ng20+ dla CTO",
"description": "Pobierz, aby odkryć, jak najnowsza wersja Angulara poprawia wydajność, DX, UX i ogólną efektywność aplikacji oraz jak wpływa na Twoją firmę.",
"downloadButton": "POBIERZ TERAZ"
}
}
1 change: 1 addition & 0 deletions apps/blog/src/assets/icons/video.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions libs/blog-contracts/presentations/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
{
"extends": ["../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
},
{
"files": ["*.ts", "*.tsx"],
"rules": {}
},
{
"files": ["*.js", "*.jsx"],
"rules": {}
}
]
}
7 changes: 7 additions & 0 deletions libs/blog-contracts/presentations/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# presentations

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `nx test presentations` to execute the unit tests via [Jest](https://jestjs.io).
11 changes: 11 additions & 0 deletions libs/blog-contracts/presentations/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/* eslint-disable */
export default {
displayName: 'presentations',
preset: '../../../jest.preset.js',
testEnvironment: 'node',
transform: {
'^.+\\.[tj]s$': ['ts-jest', { tsconfig: '<rootDir>/tsconfig.spec.json' }],
},
moduleFileExtensions: ['ts', 'js', 'html'],
coverageDirectory: '../../../coverage/libs/blog-contracts/presentations',
};
19 changes: 19 additions & 0 deletions libs/blog-contracts/presentations/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "presentations",
"$schema": "../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/blog-contracts/presentations/src",
"projectType": "library",
"tags": ["scope:shared", "type:contract"],
"targets": {
"lint": {
"executor": "@nx/eslint:lint"
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "libs/blog-contracts/presentations/jest.config.ts"
}
}
}
}
1 change: 1 addition & 0 deletions libs/blog-contracts/presentations/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './lib/presentations';
9 changes: 9 additions & 0 deletions libs/blog-contracts/presentations/src/lib/presentations.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { ArticlePreview } from '@angular-love/contracts/articles';

export type PresentationPreview = Omit<
ArticlePreview,
'readingTime' | 'difficulty'
> & {
eventName: string;
presentationUrl: string;
};
16 changes: 16 additions & 0 deletions libs/blog-contracts/presentations/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"extends": "../../../tsconfig.base.json",
"compilerOptions": {
"module": "commonjs"
},
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}
11 changes: 11 additions & 0 deletions libs/blog-contracts/presentations/tsconfig.lib.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"module": "commonjs",
"outDir": "../../../dist/out-tsc",
"declaration": true,
"types": ["node"]
},
"exclude": ["jest.config.ts", "src/**/*.spec.ts", "src/**/*.test.ts"],
"include": ["src/**/*.ts"]
}
14 changes: 14 additions & 0 deletions libs/blog-contracts/presentations/tsconfig.spec.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"include": [
"jest.config.ts",
"src/**/*.test.ts",
"src/**/*.spec.ts",
"src/**/*.d.ts"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
hasCategoryPage()
? {
displayName: t('homePage.seeAll'),
href: category()
href: category(),
}
: null
"
Expand All @@ -22,7 +22,7 @@
<al-article-card [article]="article" [cardType]="cardType()" />
}
} @else {
@for (skeleton of skeleonLoaders(); track $index) {
@for (skeleton of skeletonLoaders(); track $index) {
@if (cardType() === 'regular') {
<al-article-regular-card-skeleton />
} @else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ export class CategorySectionContainerComponent {
readonly cardType = input<CardType>('regular');
readonly take = input(6);
readonly hasCategoryPage = input(true);
readonly skeleonLoaders = computed(() => [...Array(this.take()).keys()]);
readonly skeletonLoaders = computed(() => [...Array(this.take()).keys()]);

protected displayName = computed(() => displayNameDict[this.category()]);

Expand Down
15 changes: 15 additions & 0 deletions libs/blog/articles/feature-shell/src/lib/routes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,21 @@ export const articleRoutes: Routes = [
id: 'angular-news',
},
},
{
path: 'presentations',
loadComponent: async () =>
(await import('@angular-love/blog/presentations/presentations-page'))
.PresentationsPageComponent,
},
{
path: 'presentation/:presentationSlug',
loadComponent: async () =>
(
await import(
'@angular-love/blog/presentations/presentation-details-page'
)
).PresentationDetailsPageComponent,
},
{
path: 'guides',
loadComponent: async () =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

<al-latest-articles />

<al-articles-list class="mb-4 block" />
<al-articles-list />
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<main
class="mx-auto h-full w-full px-2 py-4 md:px-4 xl:px-0"
class="relative mx-auto h-full w-full px-2 py-4 md:px-4 xl:px-0"
[class]="{
'max-w-screen-xl': !layoutConfig()?.roadmap,
'overflow-hidden': layoutConfig()?.roadmap,
Expand Down
36 changes: 36 additions & 0 deletions libs/blog/presentations/data-access/.eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"extends": ["../../../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": [
"plugin:@nx/angular",
"plugin:@angular-eslint/template/process-inline-templates"
],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "al",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "al",
"style": "kebab-case"
}
]
}
},
{
"files": ["*.html"],
"extends": ["plugin:@nx/angular-template"],
"rules": {}
}
]
}
7 changes: 7 additions & 0 deletions libs/blog/presentations/data-access/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# blog-presentations-data-access

This library was generated with [Nx](https://nx.dev).

## Running unit tests

Run `nx test blog-presentations-data-access` to execute the unit tests.
21 changes: 21 additions & 0 deletions libs/blog/presentations/data-access/jest.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
export default {
displayName: 'blog-presentations-data-access',
preset: '../../../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
coverageDirectory: '../../../../coverage/libs/blog/presentations/data-access',
transform: {
'^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular',
{
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
],
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
};
20 changes: 20 additions & 0 deletions libs/blog/presentations/data-access/project.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"name": "blog-presentations-data-access",
"$schema": "../../../../node_modules/nx/schemas/project-schema.json",
"sourceRoot": "libs/blog/presentations/data-access/src",
"prefix": "al",
"projectType": "library",
"tags": ["scope:client", "type:data-access"],
"targets": {
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "libs/blog/presentations/data-access/jest.config.ts"
}
},
"lint": {
"executor": "@nx/eslint:lint"
}
}
}
2 changes: 2 additions & 0 deletions libs/blog/presentations/data-access/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './lib/state/presentations-list.store';
export * from './lib/state/presentation-detail.store';
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export type PresentationsQuery = {
take?: number;
} | null;
Loading