@wordpress/block-editor
Version:
110 lines (92 loc) • 3.15 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Appender = void 0;
var _element = require("@wordpress/element");
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _compose = require("@wordpress/compose");
var _a11y = require("@wordpress/a11y");
var _data = require("@wordpress/data");
var _i18n = require("@wordpress/i18n");
var _store = require("../../store");
var _useBlockDisplayTitle = _interopRequireDefault(require("../block-title/use-block-display-title"));
var _context = require("./context");
var _inserter = _interopRequireDefault(require("../inserter"));
var _ariaReferencedText = _interopRequireDefault(require("./aria-referenced-text"));
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
const Appender = (0, _element.forwardRef)(({
nestingLevel,
blockCount,
clientId,
...props
}, ref) => {
const {
insertedBlock,
setInsertedBlock
} = (0, _context.useListViewContext)();
const instanceId = (0, _compose.useInstanceId)(Appender);
const {
hideInserter
} = (0, _data.useSelect)(select => {
const {
getTemplateLock,
__unstableGetEditorMode
} = select(_store.store);
return {
hideInserter: !!getTemplateLock(clientId) || __unstableGetEditorMode() === 'zoom-out'
};
}, [clientId]);
const blockTitle = (0, _useBlockDisplayTitle.default)({
clientId,
context: 'list-view'
});
const insertedBlockTitle = (0, _useBlockDisplayTitle.default)({
clientId: insertedBlock?.clientId,
context: 'list-view'
});
(0, _element.useEffect)(() => {
if (!insertedBlockTitle?.length) {
return;
}
(0, _a11y.speak)((0, _i18n.sprintf)( // translators: %s: name of block being inserted (i.e. Paragraph, Image, Group etc)
(0, _i18n.__)('%s block inserted'), insertedBlockTitle), 'assertive');
}, [insertedBlockTitle]);
if (hideInserter) {
return null;
}
const descriptionId = `list-view-appender__${instanceId}`;
const description = (0, _i18n.sprintf)(
/* translators: 1: The name of the block. 2: The numerical position of the block. 3: The level of nesting for the block. */
(0, _i18n.__)('Append to %1$s block at position %2$d, Level %3$d'), blockTitle, blockCount + 1, nestingLevel);
return (0, _element.createElement)("div", {
className: "list-view-appender"
}, (0, _element.createElement)(_inserter.default, (0, _extends2.default)({
ref: ref,
rootClientId: clientId,
position: "bottom right",
isAppender: true,
selectBlockOnInsert: false,
shouldDirectInsert: false,
__experimentalIsQuick: true
}, props, {
toggleProps: {
'aria-describedby': descriptionId
},
onSelectOrClose: maybeInsertedBlock => {
if (maybeInsertedBlock?.clientId) {
setInsertedBlock(maybeInsertedBlock);
}
}
})), (0, _element.createElement)(_ariaReferencedText.default, {
id: descriptionId
}, description));
});
exports.Appender = Appender;
//# sourceMappingURL=appender.js.map