diff --git a/.changeset/common-brooms-search.md b/.changeset/common-brooms-search.md new file mode 100644 index 000000000..aca9070e4 --- /dev/null +++ b/.changeset/common-brooms-search.md @@ -0,0 +1,11 @@ +--- +'@o2s/blocks.notification-list': minor +'@o2s/integrations.strapi-cms': minor +'@o2s/blocks.invoice-list': minor +'@o2s/integrations.mocked': minor +'@o2s/blocks.ticket-list': minor +'@o2s/blocks.order-list': minor +'@o2s/framework': minor +--- + +adding initial filters support to list blocks diff --git a/packages/blocks/invoice-list/src/api-harmonization/invoice-list.mapper.ts b/packages/blocks/invoice-list/src/api-harmonization/invoice-list.mapper.ts index 6ca974d03..9020c3ef5 100644 --- a/packages/blocks/invoice-list/src/api-harmonization/invoice-list.mapper.ts +++ b/packages/blocks/invoice-list/src/api-harmonization/invoice-list.mapper.ts @@ -27,6 +27,7 @@ export const mapInvoiceList = ( }, downloadFileName: cms.downloadFileName, downloadButtonAriaDescription: cms.downloadButtonAriaDescription, + initialFilters: cms.initialFilters, }; }; diff --git a/packages/blocks/invoice-list/src/api-harmonization/invoice-list.model.ts b/packages/blocks/invoice-list/src/api-harmonization/invoice-list.model.ts index 939f0d869..7d0deb393 100644 --- a/packages/blocks/invoice-list/src/api-harmonization/invoice-list.model.ts +++ b/packages/blocks/invoice-list/src/api-harmonization/invoice-list.model.ts @@ -23,6 +23,7 @@ export class InvoiceListBlock extends ApiModels.Block.Block { }; downloadFileName?: string; downloadButtonAriaDescription?: string; + initialFilters?: Partial; } export class Invoice { diff --git a/packages/blocks/invoice-list/src/api-harmonization/invoice-list.service.ts b/packages/blocks/invoice-list/src/api-harmonization/invoice-list.service.ts index 82c8f3dc9..919ac7659 100644 --- a/packages/blocks/invoice-list/src/api-harmonization/invoice-list.service.ts +++ b/packages/blocks/invoice-list/src/api-harmonization/invoice-list.service.ts @@ -25,8 +25,11 @@ export class InvoiceListService { concatMap(([cms]) => { return this.invoiceService .getInvoiceList({ + ...(cms.initialFilters || {}), ...query, - limit: cms.pagination?.limit || query.limit, + limit: query.limit || cms.pagination?.limit || 1, + offset: query.offset || 0, + locale: headers['x-locale'], }) .pipe( map((invoices) => diff --git a/packages/blocks/notification-list/src/api-harmonization/notification-list.mapper.ts b/packages/blocks/notification-list/src/api-harmonization/notification-list.mapper.ts index 16e3bf515..0217628f6 100644 --- a/packages/blocks/notification-list/src/api-harmonization/notification-list.mapper.ts +++ b/packages/blocks/notification-list/src/api-harmonization/notification-list.mapper.ts @@ -24,6 +24,7 @@ export const mapNotificationList = ( total: notifications.total, data: notifications.data.map((notification) => mapNotification(notification, cms, locale, timezone)), }, + initialFilters: cms.initialFilters, }; }; diff --git a/packages/blocks/notification-list/src/api-harmonization/notification-list.model.ts b/packages/blocks/notification-list/src/api-harmonization/notification-list.model.ts index b7b5f1d4c..3fd21d2a3 100644 --- a/packages/blocks/notification-list/src/api-harmonization/notification-list.model.ts +++ b/packages/blocks/notification-list/src/api-harmonization/notification-list.model.ts @@ -19,6 +19,7 @@ export class NotificationListBlock extends ApiModels.Block.Block { data: Notification[]; total: Notifications.Model.Notifications['total']; }; + initialFilters?: Partial; } export class Notification { diff --git a/packages/blocks/notification-list/src/api-harmonization/notification-list.service.ts b/packages/blocks/notification-list/src/api-harmonization/notification-list.service.ts index f1dbf60f5..f586b6a1f 100644 --- a/packages/blocks/notification-list/src/api-harmonization/notification-list.service.ts +++ b/packages/blocks/notification-list/src/api-harmonization/notification-list.service.ts @@ -25,6 +25,7 @@ export class NotificationListService { concatMap(([cms]) => { return this.notificationService .getNotificationList({ + ...(cms.initialFilters || {}), ...query, limit: query.limit || cms.pagination?.limit || 1, offset: query.offset || 0, diff --git a/packages/blocks/order-list/src/api-harmonization/order-list.mapper.ts b/packages/blocks/order-list/src/api-harmonization/order-list.mapper.ts index 2b6b08eae..dd81504f0 100644 --- a/packages/blocks/order-list/src/api-harmonization/order-list.mapper.ts +++ b/packages/blocks/order-list/src/api-harmonization/order-list.mapper.ts @@ -26,6 +26,7 @@ export const mapOrderList = ( pagination: cms.pagination, labels: cms.labels, reorderLabel: cms.reorderLabel, + initialFilters: cms.initialFilters, }; }; diff --git a/packages/blocks/order-list/src/api-harmonization/order-list.model.ts b/packages/blocks/order-list/src/api-harmonization/order-list.model.ts index ac14cb45e..1742f7625 100644 --- a/packages/blocks/order-list/src/api-harmonization/order-list.model.ts +++ b/packages/blocks/order-list/src/api-harmonization/order-list.model.ts @@ -24,6 +24,7 @@ export class OrderListBlock extends ApiModels.Block.Block { clickToSelect: string; }; reorderLabel?: string; + initialFilters?: Partial; } export class Order { diff --git a/packages/blocks/order-list/src/api-harmonization/order-list.service.ts b/packages/blocks/order-list/src/api-harmonization/order-list.service.ts index bc38d9da8..61a06e5f9 100644 --- a/packages/blocks/order-list/src/api-harmonization/order-list.service.ts +++ b/packages/blocks/order-list/src/api-harmonization/order-list.service.ts @@ -26,6 +26,7 @@ export class OrderListService { return this.orderService .getOrderList( { + ...(cms.initialFilters || {}), ...query, limit: query.limit || cms.pagination?.limit || 1, offset: query.offset || 0, diff --git a/packages/blocks/ticket-list/src/api-harmonization/ticket-list.mapper.ts b/packages/blocks/ticket-list/src/api-harmonization/ticket-list.mapper.ts index 066ef72c7..e510f1694 100644 --- a/packages/blocks/ticket-list/src/api-harmonization/ticket-list.mapper.ts +++ b/packages/blocks/ticket-list/src/api-harmonization/ticket-list.mapper.ts @@ -26,6 +26,7 @@ export const mapTicketList = ( }, forms: cms.forms, labels: cms.labels, + initialFilters: cms.initialFilters, }; }; diff --git a/packages/blocks/ticket-list/src/api-harmonization/ticket-list.model.ts b/packages/blocks/ticket-list/src/api-harmonization/ticket-list.model.ts index a73fc03bb..48b348be7 100644 --- a/packages/blocks/ticket-list/src/api-harmonization/ticket-list.model.ts +++ b/packages/blocks/ticket-list/src/api-harmonization/ticket-list.model.ts @@ -24,6 +24,7 @@ export class TicketListBlock extends ApiModels.Block.Block { showMore: string; clickToSelect: string; }; + initialFilters?: Partial; } export class Ticket { diff --git a/packages/blocks/ticket-list/src/api-harmonization/ticket-list.service.ts b/packages/blocks/ticket-list/src/api-harmonization/ticket-list.service.ts index 53d7c36ca..df291cae1 100644 --- a/packages/blocks/ticket-list/src/api-harmonization/ticket-list.service.ts +++ b/packages/blocks/ticket-list/src/api-harmonization/ticket-list.service.ts @@ -25,6 +25,7 @@ export class TicketListService { concatMap(([cms]) => { return this.ticketService .getTicketList({ + ...(cms.initialFilters || {}), ...query, limit: query.limit || cms.pagination?.limit || 1, offset: query.offset || 0, diff --git a/packages/framework/src/modules/cms/models/blocks/invoice-list.model.ts b/packages/framework/src/modules/cms/models/blocks/invoice-list.model.ts index c118f3207..5f79c78ef 100644 --- a/packages/framework/src/modules/cms/models/blocks/invoice-list.model.ts +++ b/packages/framework/src/modules/cms/models/blocks/invoice-list.model.ts @@ -20,4 +20,5 @@ export class InvoiceListBlock extends Block.Block { clickToSelect: string; }; downloadButtonAriaDescription?: string; + initialFilters?: Partial; } diff --git a/packages/framework/src/modules/cms/models/blocks/notification-list.model.ts b/packages/framework/src/modules/cms/models/blocks/notification-list.model.ts index e11846a46..b45878246 100644 --- a/packages/framework/src/modules/cms/models/blocks/notification-list.model.ts +++ b/packages/framework/src/modules/cms/models/blocks/notification-list.model.ts @@ -19,4 +19,5 @@ export class NotificationListBlock extends Block.Block { clickToSelect: string; }; detailsUrl!: string; + initialFilters?: Partial; } diff --git a/packages/framework/src/modules/cms/models/blocks/order-list.model.ts b/packages/framework/src/modules/cms/models/blocks/order-list.model.ts index b9c84a742..05a2440b0 100644 --- a/packages/framework/src/modules/cms/models/blocks/order-list.model.ts +++ b/packages/framework/src/modules/cms/models/blocks/order-list.model.ts @@ -21,4 +21,5 @@ export class OrderListBlock extends Block.Block { }; reorderLabel?: string; detailsUrl!: string; + initialFilters?: Partial; } diff --git a/packages/framework/src/modules/cms/models/blocks/ticket-list.model.ts b/packages/framework/src/modules/cms/models/blocks/ticket-list.model.ts index 35029385f..35a97e560 100644 --- a/packages/framework/src/modules/cms/models/blocks/ticket-list.model.ts +++ b/packages/framework/src/modules/cms/models/blocks/ticket-list.model.ts @@ -22,4 +22,5 @@ export class TicketListBlock extends Block.Block { }; detailsUrl!: string; forms?: Link[]; + initialFilters?: Partial; } diff --git a/packages/framework/src/modules/invoices/invoices.request.ts b/packages/framework/src/modules/invoices/invoices.request.ts index 87c42d82a..d0431cae3 100644 --- a/packages/framework/src/modules/invoices/invoices.request.ts +++ b/packages/framework/src/modules/invoices/invoices.request.ts @@ -12,4 +12,5 @@ export class GetInvoiceListQuery extends PaginationQuery { dateTo?: Date; sort?: string; search?: string; + locale?: string; } diff --git a/packages/integrations/mocked/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts b/packages/integrations/mocked/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts index 44706f68d..962e29928 100644 --- a/packages/integrations/mocked/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts +++ b/packages/integrations/mocked/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts @@ -98,10 +98,10 @@ const MOCK_NOTIFICATION_LIST_BLOCK_EN: CMS.Model.NotificationListBlock.Notificat label: 'Priority', allowMultiple: true, options: [ - { label: 'Low Priority', value: 'low' }, - { label: 'Medium Priority', value: 'medium' }, - { label: 'High Priority', value: 'high' }, - { label: 'Critical Priority', value: 'critical' }, + { label: 'Low Priority', value: 'LOW' }, + { label: 'Medium Priority', value: 'MEDIUM' }, + { label: 'High Priority', value: 'HIGH' }, + { label: 'Critical Priority', value: 'CRITICAL' }, ], }, { diff --git a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.invoice-list.mapper.ts b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.invoice-list.mapper.ts index c89c115a7..44b9fc4c6 100644 --- a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.invoice-list.mapper.ts +++ b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.invoice-list.mapper.ts @@ -38,6 +38,7 @@ export const mapInvoiceListBlock = (data: GetComponentQuery): CMS.Model.InvoiceL table: mapTable(component.table), downloadFileName: component.downloadFileName, downloadButtonAriaDescription: component.downloadButtonAriaDescription, + initialFilters: undefined, // TODO: add initial filters field in CMS }; } diff --git a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts index 1fc8f9436..b15102e51 100644 --- a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts +++ b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.notification-list.mapper.ts @@ -39,6 +39,7 @@ export const mapNotificationListBlock = ( clickToSelect: configurableTexts.actions.clickToSelect, }, detailsUrl: component.detailsURL as string, + initialFilters: undefined, // TODO: add initial filters field in CMS }; } diff --git a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.order-list.mapper.ts b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.order-list.mapper.ts index 015d6f176..b960e782c 100644 --- a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.order-list.mapper.ts +++ b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.order-list.mapper.ts @@ -39,6 +39,7 @@ export const mapOrderListBlock = (data: GetComponentQuery): CMS.Model.OrderListB }, reorderLabel: component.reorderLabel, detailsUrl: component.detailsURL as string, + initialFilters: undefined, // TODO: add initial filters field in CMS }; } diff --git a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.ticket-list.mapper.ts b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.ticket-list.mapper.ts index f03c8416d..7528bc4d6 100644 --- a/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.ticket-list.mapper.ts +++ b/packages/integrations/strapi-cms/src/modules/cms/mappers/blocks/cms.ticket-list.mapper.ts @@ -40,6 +40,7 @@ export const mapTicketListBlock = (data: GetComponentQuery): CMS.Model.TicketLis clickToSelect: configurableTexts.actions.clickToSelect, }, detailsUrl: component.detailsURL as string, + initialFilters: undefined, // TODO: add initial filters field in CMS }; }