This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content
This repository was archived by the owner on Oct 9, 2023. It is now read-only.

Repository files navigation

FINOS - Archived

This project is archived, which means that it's in read-only state; you can download and use this code, but please be aware that it may be buggy and may also contain security vulnerabilities. If you're interested to restore development activities on this project, please email help@finos.org.

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:

NameDescription
useBoundsSubscribe to the bounds of a window changing
useChannelsUse the Channels API to send/receive messages between windows or applications
useChildWindowCreate and manage a single child window
useDockedDetects if the current window is docked
useDockWindowDock a window to the edges of a screen
useFocusListen to and affect focus of a window
useInterApplicationBusSendAuto-magically send properties on the InterApplicationBus whenever they change
useInterApplicationBusPublishAuto-magically publish properties on the InterApplicationBus whenever they change
useInterApplicationBusSubscribeSubscribe to a topic on the InterApplicationBus
useMaximizedDetects if the current window is maximized
useNotificationLaunch notification and manage it's content
useOptionsListen to and update window options
useUserMovementListen to and update whether user movement is enabled / disabled for a window
useZoomListen to and update window zoom level
useCallbackWhenAllChildWindowsClosedInvoke callback when all child windows have been closed
useCallbackWhenAnyChildWindowClosedInvoke callback when any child window has been closed

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";constIDENTITY=window.fin.Window.me;constTOPIC="demo-topic";constComponent=()=>{const[receivedName,setReceivedName]=useState("John Smith");constonReceiveMessage=(message: string)=>setReceivedName(message);useInterApplicationBusSubscribe(IDENTITY,TOPIC,onReceiveMessage);constsendMessage=useInterApplicationBusSend(IDENTITY,TOPIC);return(<div><inputonChange={e=>sendMessage(e.target.value)}value={receivedName}type="text"/><strong>Received Message: {receivedName}</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 in a new console window to see the demo application in all its glory

Testing Local Changes

If you are adding or editing any hooks, then they should be tested manually by exposing them through the demo app. The demo app references a local version of the openfin-react-hooks library through the package.json file like this:

"dependencies": {// other dependencies"openfin-react-hooks": "file:../",}

NPM automatically creates a link between the two when npm install is run against the demo app. To update the version of openfin-react-hooks referenced by the demo app, simply run npm run compile from the openfin-react-hooks directory.

Logging

To see console logs, go to http://localhost:9090/ in a browser, click on the demo, and go to the console.

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 help@finos.org

License

Copyright 2019 Scott Logic

Distributed under the Apache License, Version 2.0.

SPDX-License-Identifier: Apache-2.0

About

A collection of React Hooks built on top of the Openfin API - from Scott Logic

Topics

Resources

Contributing

Stars

47 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages