Giter VIP home page Giter VIP logo

openfin-react-hooks's Introduction

Openfin React Hooks : useOpenFin()

A collection of React Hooks built on top of the Openfin API, brought to you by Scott Logic.

screenshot

Installing the Demo

In order to install the Openfin React Hooks demo application, download the installer here and run the executable. If you haven't already installed an OpenFin application, this will install the required runtime. It'll also add the shortcut to Openfin React Hooks Demo to your desktop and start menu.

The project is deployed and hosted by AWS, so with each time the application is ran the latest released version will be used. This means no further installations will be needed to keep the installed project up to date.

Getting Started

  1. npm install --save openfin-react-hooks
  2. import { useDockWindow } from "openfin-react-hooks";
  3. Enjoy!

Motive

Wrapping up the OpenFin API in a higher level hooks abstraction allows developers to share common functionality across React-based OpenFin applications.

Even the simpler hooks bridge across various versions of the OpenFin API, providing a consistent interface around OpenFin regardless of what environment the application resides within.

More complex hooks (e.g. useDockWindow) provide functionality that could save hours of development work if the same functionality was written from scratch.

Hooks

Currently, the collection of hooks consists of the following:

Name Description
useBounds Subscribe to the bounds of a window changing
useChannels Use the Channels API to send/receive messages between windows or applications
useChildWindow Create and manage a single child window
useDocked Detects if the current window is docked
useDockWindow Dock a window to the edges of a screen
useFocus Listen to and affect focus of a window
useInterApplicationBusSend Auto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublish Auto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribe Subscribe to a topic on the InterApplicationBus
useMaximized Detects if the current window is maximized
useNotification Launch notification and manage it's content
useOptions Listen to and update window options
useUserMovement Listen to and update whether user movement is enabled / disabled for a window
useZoom Listen to and update window zoom level

Example

The following example demonstrates the usage of the useInterApplicationBusSubscribe and useInterApplicationBusSend hooks in order to subscribe to the OpenFin InterApplicationBus and send a message:

import {
    useInterApplicationBusSend,
    useInterApplicationBusSubscribe
} from "openfin-react-hooks";

const IDENTITY = window.fin.Window.me;
const TOPIC = "demo-topic";

const Component = () => {
    const [name, setName] = useState("John Smith");
    const { data } = useInterApplicationBusSubscribe(IDENTITY, TOPIC);
    useInterApplicationBusSend(IDENTITY, TOPIC, name);

    return (
        <div>
            <input onChange={e => setName(e.target.value)} value={name} type="text" />
            <strong>Received Message: { data ? data.message : "None" }</strong>
        </div>
    )
}

Usage examples for all of the hooks can be found in the interactive demo, as detailed below.

Demo

If you'd like a demo of the current collection of hooks, you can do so by:

  • Cloning the repository (e.g. git clone https://github.com/ScottLogic/openfin-react-hooks.git)
  • Checkout the repository in your command line of choice (e.g. cd c:/dev/openfin-react-hooks)
  • Run npm install and npm run compile within the root of the project directory
  • Checkout the demo directory (e.g. cd demo)
  • Run npm install and npm run start within the demo directory
  • Once that's finished, execute npm run launch to see the demo application in all its glory

Contributing

Feel free to contribute to this project by opening issues or pull request:

  • Please open an issue if you experience a bug, or if you want to discuss new features and ideas. All feedback is gratefully received.
  • If you want to contribute code, please raise a pull request. If you unsure of the process, please look at the GitHub Guides.

NOTE: Commits and pull requests to FINOS repositories will only be accepted from those contributors with an active, executed Individual Contributor License Agreement (ICLA) with FINOS OR who are covered under an existing and active Corporate Contribution License Agreement (CCLA) executed with FINOS. Commits from individuals not covered under an ICLA or CCLA will be flagged and blocked by the FINOS Clabot tool. Please note that some CCLAs require individuals/employees to be explicitly named on the CCLA.

Need an ICLA? Unsure if you are covered under an existing CCLA? Email [email protected]

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

openfin-react-hooks's People

Contributors

oriondean avatar augusteba avatar colineberhardt avatar jackg188 avatar jrhenderson1988 avatar dkerr-scottlogic avatar harrymt avatar maoo avatar kangelsl avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.