@aurigma/design-atoms
Version:
Design Atoms is a part of Customer's Canvas SDK which allows for manipulating individual design elements through your code.
54 lines • 2.42 kB
JavaScript
import { BaseCommand } from "../BaseCommand";
import { BaseTextItemHandler, NewBaseTextItemHandler } from "../../ItemHandlers";
import { MultiSelectMode } from "@aurigma/design-atoms-interfaces";
export { MultiSelectMode } from "@aurigma/design-atoms-interfaces";
export class SelectItemsCommand extends BaseCommand {
constructor(_productHandler, args, _canvas = null) {
super(args);
this._productHandler = _productHandler;
this._canvas = _canvas;
}
async execute() {
if (this._canvas == null)
return;
const itemHandlers = [];
const items = this._getTargetItems(this._args.items, this._args.query, this._args.queryOptions);
const multiselection = this._args.multiSelectMode != null ? this._args.multiSelectMode : MultiSelectMode.None;
items.forEach(item => {
const itemHandler = this._productHandler.getHandler(item);
let canSelectInvisible = false;
if ((itemHandler instanceof BaseTextItemHandler || itemHandler instanceof NewBaseTextItemHandler)
&& itemHandler.isEmpty()) {
canSelectInvisible = true;
}
if (itemHandler == null || itemHandler.isLocked() || (!itemHandler.isVisible() && !canSelectInvisible))
return;
if (this._canvas.isItemHandlerSelected(itemHandler) && multiselection === MultiSelectMode.Invert) {
this._canvas.removeSelectedItemHandler(itemHandler);
}
else if (multiselection !== MultiSelectMode.None) {
if (!this._canvas.getSelectedItemHandlers().contains(itemHandler))
this._canvas.addSelectedItemHandler(itemHandler);
}
else {
itemHandlers.push(itemHandler);
}
this.lastSelectedItem = item;
});
if (multiselection === MultiSelectMode.None)
this._canvas.setSelectedItemHandlers(itemHandlers);
this._canvas.redraw();
}
_getTargetItems(items, query, queryOptions) {
if (items != null) {
return items;
}
else if (query != null) {
return this._productHandler.queryItems(query, queryOptions);
}
else {
return [];
}
}
}
//# sourceMappingURL=SelectItemsCommand.js.map