spurtcommerce-rfq-admin
v1.0.0
Published
RFQ (Request For Quote) Addon for Spurtcommerce Angular Admin Panel
Maintainers
Readme
spurtcommerce-rfq-admin
RFQ (Request For Quotation) Addon for the Spurtcommerce Angular Admin Panel.
Plug-and-play Angular module that adds full RFQ (Request For Quotation) functionality to your Spurtcommerce admin panel. Buyers can submit quote requests, sellers can negotiate, counter-offer, and convert quotes into orders — all from a dedicated admin workflow.
Features
- RFQ list with tabs: All, Received Quotes, Negotiated, Completed, Declined
- Full negotiation flow — view, counter-offer, accept/reject quotes
- RFQ settings page to configure addon behaviour
- Built-in auth guard for permission-based access control
- Skeleton loaders for all list and detail views
- Dynamic column visibility on the list table
- Pagination, search, and filter support
- Angular injection token for host app configuration (baseUrl, imageUrl)
Requirements
| Dependency | Version |
|---|---|
| @angular/core | >= 18.0.0 |
| @angular/common | >= 18.0.0 |
| @angular/forms | >= 18.0.0 |
| @angular/router | >= 18.0.0 |
| @ng-bootstrap/ng-bootstrap | >= 16.0.0 |
| @ng-select/ng-select | >= 18.0.0 |
| @ngx-translate/core | >= 15.0.0 |
| ngx-skeleton-loader | >= 9.0.0 |
| ngx-toastr | >= 18.0.0 |
| rxjs | >= 7.8.0 |
Installation
npm install spurtcommerce-rfq-adminSetup
1. Provide configuration in your AppModule
The package needs baseUrl and imageUrl from your environment. Pass them via the injection token:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { RFQ_CONFIG } from 'spurtcommerce-rfq-admin';
import { environment } from '../environments/environment';
import { AppComponent } from './app.component';
@NgModule({
declarations: [AppComponent],
imports: [BrowserModule],
providers: [
{
provide: RFQ_CONFIG,
useValue: {
baseUrl: environment.baseUrl,
imageUrl: environment.imageUrl
}
}
],
bootstrap: [AppComponent]
})
export class AppModule {}2. Add RFQ routes to your routing
// sales-routing.module.ts
import { rfqRoutes, rfqModule } from 'spurtcommerce-rfq-admin';
import { Routes } from '@angular/router';
const routes: Routes = [
{
path: 'rfq',
loadChildren: () => Promise.resolve(rfqModule),
children: rfqRoutes
}
];3. Add RFQ Settings route
// settings-routing.module.ts
import { rfqSettingRoutes, rfqSettingModule } from 'spurtcommerce-rfq-admin';Exported API
Module
| Export | Description |
|---|---|
| RfqAddonModule | Main NgModule — import this in your lazy-loaded route module |
Constants
| Export | Description |
|---|---|
| rfqroutePath | Route definitions for the RFQ feature |
| rfqComponentLists | Array of all RFQ components |
| rfqSettingRoutes | Route definitions for the RFQ settings page |
| rfqSettingComponent | Array of RFQ settings components |
Services
| Export | Description |
|---|---|
| RfqService | Handles all RFQ API calls (list, count, status, product list) |
| RfqSettingservice | Handles RFQ settings API calls |
Tokens
| Export | Description |
|---|---|
| RFQ_CONFIG | InjectionToken<RfqConfig> — provide baseUrl and imageUrl |
| RfqConfig | Interface for the config object |
Guards
| Export | Description |
|---|---|
| RfqAuthGuard | Permission-based route guard — checks permissionKey from route data |
Components
| Export | Description |
|---|---|
| RfqTabsComponent | Tab navigation for RFQ list views |
| RfqNegotiationFlowList | Main RFQ list page with filters, pagination, and actions |
| NegotiateViewQuotesDetail | Full detail view for a single RFQ negotiation |
| NegotiateViewQuotesDetailSkeletonComponent | Skeleton loader for the detail view |
| CounterOfferModel | Modal for submitting counter-offer quotes |
| RfqSettingListpage | Settings configuration page for the RFQ addon |
| SelectedProductsModelComponent | Modal showing selected products for an RFQ |
Versions
| Version | Angular | Notes | |---|---|---| | 1.0.0 | 18 – 20 | Initial release |
License
Commercial — spurtcommerce.com
Support
For issues and feature requests visit spurtcommerce.com or open a ticket via your Spurtcommerce account.
