@wordpress/notices
Version:
State management for notices.
80 lines (75 loc) • 3.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getNotices = getNotices;
var _constants = require("./constants");
/**
* Internal dependencies
*/
/** @typedef {import('./actions').WPNoticeAction} WPNoticeAction */
/**
* The default empty set of notices to return when there are no notices
* assigned for a given notices context. This can occur if the getNotices
* selector is called without a notice ever having been created for the
* context. A shared value is used to ensure referential equality between
* sequential selector calls, since otherwise `[] !== []`.
*
* @type {Array}
*/
const DEFAULT_NOTICES = [];
/**
* @typedef {Object} WPNotice Notice object.
*
* @property {string} id Unique identifier of notice.
* @property {string} status Status of notice, one of `success`,
* `info`, `error`, or `warning`. Defaults
* to `info`.
* @property {string} content Notice message.
* @property {string} spokenMessage Audibly announced message text used by
* assistive technologies.
* @property {string} __unstableHTML Notice message as raw HTML. Intended to
* serve primarily for compatibility of
* server-rendered notices, and SHOULD NOT
* be used for notices. It is subject to
* removal without notice.
* @property {boolean} isDismissible Whether the notice can be dismissed by
* user. Defaults to `true`.
* @property {string} type Type of notice, one of `default`,
* or `snackbar`. Defaults to `default`.
* @property {boolean} speak Whether the notice content should be
* announced to screen readers. Defaults to
* `true`.
* @property {WPNoticeAction[]} actions User actions to present with notice.
*/
/**
* Returns all notices as an array, optionally for a given context. Defaults to
* the global context.
*
* @param {Object} state Notices state.
* @param {?string} context Optional grouping context.
*
* @example
*
*```js
* import { useSelect } from '@wordpress/data';
* import { store as noticesStore } from '@wordpress/notices';
*
* const ExampleComponent = () => {
* const notices = useSelect( ( select ) => select( noticesStore ).getNotices() );
* return (
* <ul>
* { notices.map( ( notice ) => (
* <li key={ notice.ID }>{ notice.content }</li>
* ) ) }
* </ul>
* )
* };
*```
*
* @return {WPNotice[]} Array of notices.
*/
function getNotices(state, context = _constants.DEFAULT_CONTEXT) {
return state[context] || DEFAULT_NOTICES;
}
//# sourceMappingURL=selectors.js.map