Skip to content
Open
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
2 changes: 2 additions & 0 deletions apps/api-harmonization/src/app.module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ import * as OrderList from '@o2s/blocks.order-list/api-harmonization';
import * as OrdersSummary from '@o2s/blocks.orders-summary/api-harmonization';
import * as PaymentsHistory from '@o2s/blocks.payments-history/api-harmonization';
import * as PaymentsSummary from '@o2s/blocks.payments-summary/api-harmonization';
import * as ProductList from '@o2s/blocks.product-list/api-harmonization';
import * as QuickLinks from '@o2s/blocks.quick-links/api-harmonization';
import * as ServiceDetails from '@o2s/blocks.service-details/api-harmonization';
import * as ServiceList from '@o2s/blocks.service-list/api-harmonization';
Expand Down Expand Up @@ -133,6 +134,7 @@ export const AuthModuleBaseModule = AuthModule.Module.register(AppConfig);
ArticleSearch.Module.register(AppConfig),
FeaturedServiceList.Module.register(AppConfig),
ArticleList.Module.register(AppConfig),
ProductList.Module.register(AppConfig),
// BLOCK REGISTER
],
providers: [
Expand Down
2 changes: 2 additions & 0 deletions apps/api-harmonization/src/modules/page/page.model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import * as OrderList from '@o2s/blocks.order-list/api-harmonization';
import * as OrdersSummary from '@o2s/blocks.orders-summary/api-harmonization';
import * as PaymentsHistory from '@o2s/blocks.payments-history/api-harmonization';
import * as PaymentsSummary from '@o2s/blocks.payments-summary/api-harmonization';
import * as ProductList from '@o2s/blocks.product-list/api-harmonization';
import * as QuickLinks from '@o2s/blocks.quick-links/api-harmonization';
import * as ServiceDetails from '@o2s/blocks.service-details/api-harmonization';
import * as ServiceList from '@o2s/blocks.service-list/api-harmonization';
Expand Down Expand Up @@ -73,6 +74,7 @@ export class PageData {

export type Blocks =
// BLOCK REGISTER
| ProductList.Model.ProductListBlock['__typename']
| ArticleList.Model.ArticleListBlock['__typename']
| Category.Model.CategoryBlock['__typename']
| Article.Model.ArticleBlock['__typename']
Expand Down
3 changes: 2 additions & 1 deletion apps/frontend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"dev": "next dev --turbopack",
"dev:https": "next dev --turbopack --experimental-https",
"build": "next build",
"postbuild": "cp -r public .next/standalone/apps/frontend && cp -r .next/static .next/standalone/apps/frontend/.next/",
"postbuild": "shx cp -r public .next/standalone/apps/frontend && shx cp -r .next/static .next/standalone/apps/frontend/.next/",
"start": "node .next/standalone/apps/frontend/server.js",
"lint": "tsc --noEmit && next lint",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,scss,json}\"",
Expand Down Expand Up @@ -78,6 +78,7 @@
"postcss": "^8.5.6",
"prettier": "^3.6.2",
"sass": "^1.94.2",
"shx": "^0.3.4",
"tailwindcss": "^4.1.17",
"tsx": "^4.20.6",
"typescript": "^5.9.3"
Expand Down
3 changes: 3 additions & 0 deletions apps/frontend/src/blocks/renderBlocks.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import * as OrderList from '@o2s/blocks.order-list/frontend';
import * as OrdersSummary from '@o2s/blocks.orders-summary/frontend';
import * as PaymentsHistory from '@o2s/blocks.payments-history/frontend';
import * as PaymentsSummary from '@o2s/blocks.payments-summary/frontend';
import * as ProductList from '@o2s/blocks.product-list/frontend';
import * as QuickLinks from '@o2s/blocks.quick-links/frontend';
import * as ServiceDetails from '@o2s/blocks.service-details/frontend';
import * as ServiceList from '@o2s/blocks.service-list/frontend';
Expand Down Expand Up @@ -129,6 +130,8 @@ const renderBlock = (typename: string, blockProps: BlockProps) => {
return <ArticleSearch.Renderer {...blockProps} />;
case 'FeaturedServiceListBlock':
return <FeaturedServiceList.Renderer {...blockProps} />;
case 'ProductListBlock':
return <ProductList.Renderer {...blockProps} />;
// BLOCK REGISTER
default:
return null;
Expand Down
81 changes: 81 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

57 changes: 57 additions & 0 deletions packages/blocks/product-list/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# compiled output
/dist
/node_modules
/build

# Logs
logs
*.log
npm-debug.log*
pnpm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*

# OS
.DS_Store

# Tests
/coverage
/.nyc_output

# IDEs and editors
/.idea
.project
.classpath
.c9/
*.launch
.settings/
*.sublime-workspace

# IDE - VSCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json

# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local

# temp directory
.temp
.tmp

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

/tsconfig.tsbuildinfo
25 changes: 25 additions & 0 deletions packages/blocks/product-list/.prettierrc.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
import apiConfig from "@o2s/prettier-config/api.mjs";
import frontendConfig from "@o2s/prettier-config/frontend.mjs";

/**
* @see https://prettier.io/docs/en/configuration.html
* @type {import("prettier").Config}
*/
const config = {
overrides: [
{
files: "./src/api-harmonization/**/*",
options: apiConfig,
},
{
files: "./src/frontend/**/*",
options: frontendConfig,
},
{
files: "./src/sdk/**/*",
options: frontendConfig,
},
],
};

export default config;
18 changes: 18 additions & 0 deletions packages/blocks/product-list/eslint.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
import { config as apiConfig } from '@o2s/eslint-config/api';
import { config as frontendConfig } from '@o2s/eslint-config/frontend-block';
import { defineConfig } from 'eslint/config';

export default defineConfig([
{
files: ['src/api-harmonization/**/*'],
extends: [apiConfig],
},
{
files: ['src/frontend/**/*'],
extends: [frontendConfig],
},
{
files: ['src/sdk/**/*'],
extends: [frontendConfig],
},
]);
4 changes: 4 additions & 0 deletions packages/blocks/product-list/lint-staged.config.mjs
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export default {
'*.{js,jsx,ts,tsx,css,scss}': ['prettier --write'],
'*.{js,jsx,ts,tsx}': () => 'tsc --noEmit',
};
55 changes: 55 additions & 0 deletions packages/blocks/product-list/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
{
"name": "@o2s/blocks.product-list",
"version": "0.0.1",
"private": false,
"license": "MIT",
"description": "A block for displaying and filtering a list of products with grid and table views.",
"exports": {
"./api-harmonization": "./dist/api-harmonization/api-harmonization/index.js",
"./frontend": "./dist/frontend/frontend/index.js",
"./sdk": "./dist/sdk/sdk/index.js",
"./client": "./dist/api-harmonization/api-harmonization/product-list.client.js"
},
"files": [
"dist"
],
"scripts": {
"dev": "tsc --build tsconfig.json && (concurrently \"tsc --build tsconfig.json -w\" \"tsc-alias -w\")",
"build": "tsc --build tsconfig.json && tsc-alias",
"lint": "tsc --noEmit && eslint \"{src,apps,libs,test}/**/*.ts\" --fix",
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,css,scss,json}\""
},
"dependencies": {
"@o2s/framework": "*",
"@o2s/utils.logger": "*",
"@o2s/ui": "*",
"@o2s/utils.api-harmonization": "*",
"@o2s/utils.frontend": "*",
"@o2s/configs.integrations": "*"
},
"devDependencies": {
"dotenv-cli": "^8.0.0",
"@o2s/eslint-config": "*",
"@o2s/prettier-config": "*",
"@o2s/typescript-config": "*",
"concurrently": "^9.1.2",
"eslint": "^9.27.0",
"prettier": "^3.5.3",
"tsc-alias": "^1.8.16",
"typescript": "^5.8.3"
},
"peerDependencies": {
"@types/react": "^19",
"@types/react-dom": "^19",
"react": "^19",
"react-dom": "^19",
"tailwindcss": "^4",
"@nestjs/axios": "^4",
"@nestjs/common": "^11",
"@nestjs/config": "^4.0.2",
"@nestjs/core": "^11",
"rxjs": "^7",
"next": "^15.3.2",
"next-intl": "^4.1.0"
}
}
8 changes: 8 additions & 0 deletions packages/blocks/product-list/src/api-harmonization/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
export const URL = '/blocks/product-list';

export { ProductListBlockModule as Module } from './product-list.module';
export { ProductListService as Service } from './product-list.service';
export { ProductListController as Controller } from './product-list.controller';

export * as Model from './product-list.model';
export * as Request from './product-list.request';
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export const URL = '/blocks/product-list';

export * as Model from './product-list.model';
export * as Request from './product-list.request';
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Controller, Get, Headers, Query, UseInterceptors } from '@nestjs/common';

import { Models } from '@o2s/utils.api-harmonization';
import { LoggerService } from '@o2s/utils.logger';

import { Auth } from '@o2s/framework/modules';

import { URL } from './';
import { GetProductListBlockQuery } from './product-list.request';
import { ProductListService } from './product-list.service';

@Controller(URL)
@UseInterceptors(LoggerService)
export class ProductListController {
constructor(protected readonly service: ProductListService) {}

@Get()
@Auth.Decorators.Roles({ roles: [] })
getProductListBlock(@Headers() headers: Models.Headers.AppHeaders, @Query() query: GetProductListBlockQuery) {
return this.service.getProductListBlock(query, headers);
}
}
Loading
Loading