Skip to content
View sahnas's full-sized avatar
🎶
Papi Papi Rumba
🎶
Papi Papi Rumba

Block or report sahnas

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Please don't include any personal information such as legal names or email addresses. Maximum 100 characters, markdown supported. This note will be visible to only you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
sahnas/README.md

SahnaS Web Widget

This is a reference project that demonstrate how to build web UI widget that can be embedded into 3rd party website.

This structure provides those advantages:

  • Small footprint and solid snippet on hosting website (see Usage)
  • Multi-instance on the same page
  • Isolation of code execution and CSS
  • Customization via configuration injection and API to Widget
  • Minimal dependencies and small size via single request (>30KB gzipped)

and a few more.

Usage

In order to embed the widget add the following snippet at any location on the hosting page:

<script>
    (function (w, d, s, o, f, js, fjs) {
        w[o] = w[o] || function () { (w[o].q = w[o].q || []).push(arguments) };
        js = d.createElement(s), fjs = d.getElementsByTagName(s)[0];
        js.id = o; js.src = f; js.async = 1; fjs.parentNode.insertBefore(js, fjs);
    }(window, document, 'script', 'sahnas', 'https://www.comexposium.com/sahnas.min.js'));
    sahnas('init');
</script>

During initialization you can pass additional configurations to widget like so:

sahnas('init', { minimized: false, disableDarkMode: false, styles: { classNameContainer: "sahnas" } });

You can find a full list of configurations in AppConfigurations interface:

{
    debug: boolean;
    serviceBaseUrl: string;
    minimized: boolean;
    disableDarkMode: boolean;
    text: {
        minimizedTitle?: string;
        formTitle?: string;
        formSubTitle?: string;
        thankYouTitle?: string;
        thankYouBody?: string;
        faqTitle?: string;
    };
    styles: {
        classNameContainer?: string;
    };
}

Develop

The widget dev setup is similar to regular client application. To get started:

npm i
npm start
npm run go

This will open browser with a demo page which hosts the widget. The npm run go command is the same command as npm start but it will run the dev server on port 9000.

License

The source and documentation in this project are released under the MIT License

Popular repositories Loading

  1. you-smile-you-lose you-smile-you-lose Public

    You smile, you lose!

    JavaScript 1

  2. sahnas sahnas Public

    Embedded widget in typescript

    TypeScript

  3. hassan-akaou-cv-doc hassan-akaou-cv-doc Public

    Documentation de mon CV CLI

  4. TDD-TS-Boilerplate TDD-TS-Boilerplate Public

    Quick TDD boilerplate

    TypeScript

  5. architecture-decision-record architecture-decision-record Public

    Forked from joelparkerhenderson/architecture-decision-record

    Architecture decision record (ADR) examples for software planning, IT leadership, and template documentation

  6. Datastar Datastar Public archive

    Tiny app to visualize data

    HTML