* fix: eslint operator-linebreak issue * fix: eslint quotes issue * fix: react jsx indent and props issues * fix: eslint trailing spaces issues * fix: eslint line around directives issue * fix: eslint semi rule * fix: eslint newline per chain rule * fix: eslint space infix ops rule * fix: eslint space-in-parens issue * fix: eslint space before function paren issue * fix: eslint space before blocks issue * fix: eslint arrow body style issue * fix: eslint dot-location issue * fix: eslint quotes issue * fix: eslint quote props issue * fix: eslint operator assignment issue * fix: eslint new line after import issue * fix: indent issues * fix: operator assignment issue * fix: all autofixable eslint issues * fix: all react related fixable issues * fix: autofixable eslint issues * chore: remove all template literals * fix: remaining autofixable issues * fix: failing js test
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
/*
|
|
Wrapper for React/Paragon accessible status bar
|
|
*/
|
|
|
|
import React from 'react';
|
|
import ReactDOM from 'react-dom';
|
|
import {StatusAlert} from '@edx/paragon/static';
|
|
|
|
export class StatusAlertRenderer {
|
|
constructor(message, selector, afterselector) {
|
|
this.shiftFocus = this.shiftFocus.bind(this);
|
|
const element = document.querySelector(selector);
|
|
|
|
if (element) {
|
|
/*
|
|
These props match the defaults mostly in the paragon lib:
|
|
https://github.com/openedx/paragon/tree/master/src/StatusAlert
|
|
but are made explicit in the case of a upstream change to defaults
|
|
*/
|
|
ReactDOM.render(
|
|
<StatusAlert
|
|
alertType="warning"
|
|
dismissible
|
|
open
|
|
dialog={message}
|
|
dismissable
|
|
onClose={() => this.shiftFocus(afterselector)}
|
|
/>,
|
|
document.querySelector(selector)
|
|
);
|
|
}
|
|
}
|
|
|
|
shiftFocus(afterselector) {
|
|
const afterelement = document.querySelector(afterselector);
|
|
/*
|
|
Optional generic function to shift 'next' focusable element for keyboard users
|
|
*/
|
|
if (afterelement) {
|
|
afterelement.focus();
|
|
}
|
|
}
|
|
}
|