UNPKG

@mui/x-tree-view

Version:

The community edition of the MUI X Tree View components.

61 lines (58 loc) 2.19 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default; Object.defineProperty(exports, "__esModule", { value: true }); exports.TreeViewLabelEditingPlugin = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage")); var _selectors = require("./selectors"); var _itemPlugin = require("./itemPlugin"); class TreeViewLabelEditingPlugin { constructor(store) { this.store = store; store.itemPluginManager.register(_itemPlugin.useLabelEditingItemPlugin, null); } buildPublicAPI = () => { return { setEditedItem: this.setEditedItem, updateItemLabel: this.updateItemLabel }; }; /** * Set which item is currently being edited. * You can pass `null` to exit editing mode. * @param {TreeViewItemId | null} itemId The id of the item to edit, or `null` to exit editing mode. */ setEditedItem = itemId => { if (itemId !== null && !_selectors.labelSelectors.isItemEditable(this.store.state, itemId)) { return; } this.store.set('editedItemId', itemId); }; /** * Used to update the label of an item. * @param {TreeViewItemId} itemId The id of the item to update the label of. * @param {string} label The new label of the item. */ updateItemLabel = (itemId, label) => { if (!label) { throw new Error(process.env.NODE_ENV !== "production" ? `MUI X: The Tree View component requires all items to have a \`label\` property. The label of an item cannot be empty. Item ID: ${itemId}` : (0, _formatErrorMessage2.default)(197, itemId)); } const item = this.store.state.itemMetaLookup[itemId]; if (item.label === label) { return; } this.store.set('itemMetaLookup', (0, _extends2.default)({}, this.store.state.itemMetaLookup, { [itemId]: (0, _extends2.default)({}, item, { label }) })); if (this.store.parameters.onItemLabelChange) { this.store.parameters.onItemLabelChange(itemId, label); } }; } exports.TreeViewLabelEditingPlugin = TreeViewLabelEditingPlugin;