preact-material-components
Version:
preact wrapper for "Material Components for the web"
73 lines (55 loc) • 2.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _preact = require("preact");
var _MaterialComponent = _interopRequireDefault(require("../MaterialComponent"));
var _snackbar = require("@material/snackbar/");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
function shallowDiffers(a, b) {
for (let i in a) if (!(i in b)) return true;
for (let i in b) if (a[i] !== b[i]) return true;
return false;
}
/**
* dismissesOnAction = true
*/
class Snackbar extends _MaterialComponent.default {
constructor() {
super();
this.componentName = 'snackbar';
this.isPureReactComponent = true;
}
componentDidMount() {
this.MDComponent = _snackbar.MDCSnackbar.attachTo(this.control);
if (this.props.dismissesOnAction === undefined || this.props.dismissesOnAction === null) {
this.MDComponent.dismissesOnAction = true;
} else {
this.MDComponent.dismissesOnAction = this.props.dismissesOnAction;
}
}
componentWillUnmount() {
this.MDComponent.destroy && this.MDComponent.destroy();
}
shouldComponentUpdate(props, state) {
return shallowDiffers(this.props, props) || shallowDiffers(this.state, state);
}
materialDom(props) {
return (0, _preact.h)("div", _extends({
"aria-live": "assertive",
"aria-atomic": "true",
"aria-hidden": "true",
ref: this.setControlRef
}, props), (0, _preact.h)("div", {
className: "mdc-snackbar__text"
}), (0, _preact.h)("div", {
className: "mdc-snackbar__action-wrapper"
}, (0, _preact.h)("button", {
type: "button",
className: "mdc-snackbar__action-button"
})));
}
}
exports.default = Snackbar;