Step 1: Install the package
npm install
Step 2: import CsModule from project-sunbird in root component
import { CsModule } from '@project-sunbird/client-services'
Step 3: install and configure the common service library
Refer the common service library documentation https://github.com/Sunbird-Ed/sunbird-client-services
if (!CsModule.instance.isInitialised) { // Singleton initialised or not
await CsModule.instance.init({
core: {
...
global: {
...
},
api: {
host: 'https://domain.com', // default host
authentication: {
// userToken: string; // optional
// bearerToken: string; // optional
}
}
},
services: {
...
...
discussionServiceConfig: {
apiPath: '/discussion',
},
}
);
}
Step 4: import DiscussionUiModule from project-sunbird in app.module.ts
import { DiscussionUiModule } from '@project-sunbird/discussions-ui-v8'
import { ConfigService } from '/services/config.service'
@NgModule({
declarations: [],
imports: [
CommonModule,
DiscussionUiModule.forRoot(ConfigService),
],
exports: [DiscussionUiModule],
})
Step 5: Define the config service implementation which is used in above step
import { Injectable } from '@angular/core'
import { AbstractConfigService, IdiscussionConfig } from '@project-sunbird/discussions-ui-v8'
@Injectable({
providedIn: 'root'
})
export class ConfigService extends AbstractConfigService {
constructor() {
super()
}
getConfig(key: any): IdiscussionConfig {
return localStorage.getItem(key)
}
}
Step 6: Add the below route in router module for loading the library in routing mode
{
path: 'discussion-forum',
loadChildren: () => import('@project-sunbird/discussions-ui-v8').then(u => u.DiscussionUiModule),
}
Step 7: Use the route to redirect to discussion-forum after setting the config in local storage
import { IdiscussionConfig } from '@project-sunbird/discussions-ui-v8'
discussionConfig: IdiscussionConfig = {
userName: 'nptest',
categories: { result: ["2"] },
}
navigate() {
localStorage.setItem('home', JSON.stringify(this.discussionConfig))
this.router.navigate(['/discussion-forum'], { queryParams: { page: 'home' }, queryParamsHandling: "merge" })
}
Step 8: Use the selector of the widget as below to use the widgets in desired components with input
<sb-category-widget [config]="discussionConfig"></sb-category-widget>
Import the IdiscussionConfig interface from the library to know which data to pass.
import { IdiscussionConfig } from '@project-sunbird/discussions-ui-v8'
Available components
Feature | Notes | Selector |
---|
[LibEntryComponent] | entry point for the library in routing mode | sb-lib-entry |
[SidePannelComponent] | used for loading the menu items and switching between them | sb-side-pannel |
[ DiscussCategoryComponent ] | used to load the list of categories available | sb-discuss-category |
[DiscussHomeComponent] | home component for categories | sb-discuss-home |
[DiscussTagsComponent] | displays all the tags available | sb-discuss-tags |
[MyDiscussionComponent] | displays the user data | sb-my-discussion |
[DiscussStartComponent] | used to start the discussion | sb-discuss-start |