sunbird-ed-discussions-ui-v8

Sunbird discussions ui library

Usage no npm install needed!

<script type="module">
  import sunbirdEdDiscussionsUiV8 from 'https://cdn.skypack.dev/sunbird-ed-discussions-ui-v8';
</script>

README

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| [DiscussionDetailsComponent] | loads the category details |sb-discussion-details| | [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|