npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@webex/widget-recents

v0.212.0

Published

Webex React Recents Widget

Downloads

330

Readme

Webex Recents Widget (@webex/widget-recents)

The Webex Recents Widget allows developers to easily incorporate Cisco Webex (formerly Cisco Spark) Recents list and events into an application.

Table of Contents

Background

This widget handles coordination between your application and the Webex APIs, and provides components of the Webex recents list experience without having to build all of the front end UI yourself. Furthermore, the widget functions as a central point of contact for all other widgets by providing a robust events api that allows a developer to listen to realtime events on the Webex platform and react to those events.

Our widget is built using React, Redux, and the Webex JavaScript SDK.

This widget supports:

  • Listing all Spaces that the authenticated user is in.
  • Listening for incoming messages, calls, and membership events and provided those details to the developer.

Install

Depending on how comfortable you are with these frameworks, there are are a number of ways you can "install" our code.

Webex for Developers

If you haven't already, go to Cisco Webex for Developers and sign up for an account. Once you've created an account you can get your developer access token here.

When you want to eventually create an integration and have your own users take advantage of the widget, you'll need to create an integration with the following scopes:

spark:all

Head over to the Webex for Developers Documentation for more information about how to setup OAuth for your app: https://developer.webex.com/docs/integrations

CDN

Using our CDN requires the least amount of work to get started. Add the following into your HTML file:

<!-- Production compiled and minified CSS -->
<link rel="stylesheet" href="https://code.s4d.io/widget-recents/production/main.css">

<!-- Production compiled and minified JavaScript -->
<script src="https://code.s4d.io/widget-recents/production/bundle.js"></script>

For the latest builds that are pulled from the head of the master branch:

<!-- Latest compiled and minified CSS -->
<link rel="stylesheet" href="https://code.s4d.io/widget-recents/latest/main.css">

<!-- Latest compiled and minified JavaScript -->
<script src="https://code.s4d.io/widget-recents/latest/bundle.js"></script>

Build from Source

  1. Follow these instructions to checkout and build the react-widgets repo https://github.com/webex/react-widgets/blob/master/README.md

  2. To build the Recents Widget, run the following from the root directory:

npm run build:package widget-recents

NPM

To use the space widget within an existing React appliction, a developer can install the component directly from npm.

  1. Install the module via NPM
npm install --save @webex/widget-recents
  1. Add the following import statements
import RecentsWidget from '@webex/widget-recents';
// Sass import required for styling widgets
import '@webex/widget-recents/src/momentum.scss';
  1. Finally, render the widget
  <RecentsWidget accessToken='XXXXXXXXXXXXXX' />

All of the React configurable properties are listed in the "Configuration" section.

Usage with Webex SDK

If you are developing an application that makes use of our Webex SDK in addition to the widgets, some additional configuration is needed.

In order for the Webex Recents Widget to function in a project that is already using the Webex SDK via npm, the versions of the SDK must match specifically.

Any "@webex" packages that are added to your project manually need to match the versions in the widgets' package.json file.

Usage

Quick Start

If you would just like to get running immediately, follow these instructions to get a webpack-dev-server running with the widget.

  1. Create a .env file in the root of the React project with the following lines, replacing the Xs with the appropriate value:

    WEBEX_ACCESS_TOKEN=XXXXXXXXXXXXXXX
  2. From the root directory run: npm run serve:package widget-recents

Configuration

When loading the widgets there are some configuration options you can provide:

Authentication methods:

| Name | Data API | Description | |:--|:-------|---| | accessToken | data-access-token | Access token for the user account initiating the messaging session. For testing purposes you can use a developer access token from https://developer.webex.com. | | guestToken | data-guest-token | Guest Access token for the user account initiating the messaging session. A guest issuer application is required to generate a guest token. https://developer.webex.com/docs/guest-issuer.| | sdkInstance | N/A: global only feature | A Webex SDK instance that has already been created and authenticated.|

Optional configurations:

| Name | Data API | Description | |:--|:-------|---| | basicMode | data-basic-mode | (default: false) Loads the spaces list from webexapis.com. Note: this removes end-to-end encryption. | | logLevel | data-log-level | (default: silent) When present, widget will log debug information to console. This can be set to: error, warn, debug, info, trace, or silent | | enableAddButton | data-enable-add-button | (default: false) Enables the "Add Space" button present on other clients in the header. | | enableSpaceListFilter | data-enable-space-list-filter | (default: true) This enables a search term input box for filtering the recents widget's space list. To disable, set this to false. | | enableUserProfile | data-enable-user-profile | (default: true) Enables the current user's profile display in the header. | | enableUserProfileMenu | data-enable-user-profile-popover | (default: false) Enables the current user's profile setting menu in the header. |

HTML

The easiest way to get the Webex Recents Widget into your web site is to add the built resources and attach data attributes to your a container.

If you're using our CDN, skip to the next section.

  • Copy the resources in the dist directory to own project.
  • Add a <script /> tag to your page to include the bundle.js
  • Add a <link /> tag to include main.css

Data API

If you would like to embed with the widget without any additional behaviors into your page, use this data api. The div containing our data-toggle attribute must exist on the page before our javascript bundle loads.

Create a container where you would like to embed the widget and add the required configuration options. Be sure to include data-toggle="webex-recents".

<div
  class="webexteams-widget"
  data-toggle="webex-recents"
  data-access-token="AN_ACCESS_TOKEN"
  />

Browser Globals

If you need additional behaviors or need to do additional work before the widget loads, it may be useful for to programmatically instatiate the widget after the intial page loads.

<div id="my-webexteams-widget" />
<script>
  var widgetEl = document.getElementById('my-webexteams-widget');
  // Init a new widget
  webex.widget(widgetEl).recentsWidget({
    accessToken: 'AN_ACCESS_TOKEN'
  });
</script>

my-webexteams-widget is an arbitrary id to illustrate one way to select the DOM element. But please ensure that the widgetEl that you pass to webex.widget() is a DOM element.

You can also attach to an existing widget. Currently this gives you access to events. Other functionality will be added in future releases.

var widgetEl = document.getElementById('webexteams-widget-id');
var widgetObject = webex.widget(widgetEl);
Widget Teardown

When a widget needs to be removed from the page you will want to call the .remove() method. This will close any network connections active and remove the widget from the DOM. You can also pass a callback as a parameter to the .remove() method. The method also returns a Promise that is thenable.

The returned value, removed, is true if a matching widget has been removed, and is false no widget was found.

// Basic remove
webex.widget(widgetEl).remove();

// With callback
webex.widget(widgetEl).remove(function(removed) {
  if (removed) {
    console.log('removed!');
  }
});

// With Promise
webex.widget(widgetEl).remove().then(function(removed) {
  if (removed) {
    console.log('removed!');
  }
});
NOTE

If you are also using the Webex JS SDK on the same page, please be sure to load that before you load the widget scripts.

Events

The Recents widget exposes a few events for hooking into widget functionality. You can directly add DOM event listener like this:

<div
  class="webexteams-widget"
  data-toggle="webex-recents"
  data-access-token="AN_ACCESS_TOKEN"
  />
<script>
  document.getElementById('webexteams-widget').addEventListener('EVENT_NAME', function(event) {
    // Handle the event here
    console.log(event.detail);
  });
</script>

If you are using browser globals, you can provide a callback parameter that will fire whenever any event occurs. You can filter the actions using the name provided like this:

var widgetEl = document.getElementById('my-webexteams-widget');
// Init a new widget
webex.widget(widgetEl).recentsWidget({
  accessToken: 'AN_ACCESS_TOKEN',
  onEvent: callback
});

function callback(name, detail) {
  if (name === 'messages:created') {
    // Perform an action if a new message has been created
  }
}

Or you can use the (ampersand-events)[https://github.com/AmpersandJS/ampersand-events] API to listen to events like this:

var widgetEl = document.getElementById('webexteams-widget');
webex.widget(widgetEl).on('messages:created', function(e) {
  console.log(e.detail);
});

All available events are outlined in our events guide

Browser Support

This widget has been tested on the following browsers for messaging and meeting:

  • Current release of Chrome
  • Current release of Firefox

Contribute

Please see CONTRIBUTING.md for more details.

License

© 2016-2018 Cisco and/or its affiliates. All Rights Reserved.