UNPKG

@adobe/cq-angular-editable-components

Version:

* [API](#api) * [Documentation](#documentation) * [Changelog](#changelog)

131 lines 11.4 kB
/* * ADOBE CONFIDENTIAL * * Copyright 2018 Adobe Systems Incorporated * All Rights Reserved. * * NOTICE: All information contained herein is, and remains * the property of Adobe Systems Incorporated and its suppliers, * if any. The intellectual and technical concepts contained * herein are proprietary to Adobe Systems Incorporated and its * suppliers and may be covered by U.S. and Foreign Patents, * patents in process, and are protected by trade secret or copyright law. * Dissemination of this information or reproduction of this material * is strictly forbidden unless prior written permission is obtained * from Adobe Systems Incorporated. */ import { __decorate, __metadata } from "tslib"; import { Component, Input } from '@angular/core'; import { Constants } from '../constants'; import { Utils } from '../utils'; var PLACEHOLDER_CLASS_NAMES = Constants.NEW_SECTION_CLASS_NAMES; var PLACEHOLDER_ITEM_NAME = '*'; var CONTAINER_CLASS_NAMES = 'aem-container'; var AEMContainerComponent = /** @class */ (function () { /** * The current component provides the base presentational logic common to containers such as a grid or a page. * Container have in common the notion of item holders. Items are represented in the model by the fields _:items_ and _:itemsOrder_ */ function AEMContainerComponent() { /** * Path to the model associated with the current instance of the component */ this.cqPath = ''; /** * Key of the model structure */ this.modelName = ''; } Object.defineProperty(AEMContainerComponent.prototype, "isInEditMode", { /** * Returns weather of not we are in the editor */ get: function () { return Utils.isInEditor(); }, enumerable: true, configurable: true }); /** * Returns the aggregated path of this container path and the provided path * * @param path - the provided path to aggregate with the container path */ AEMContainerComponent.prototype.getDataPath = function (path) { return this.cqPath ? this.cqPath + '/' + path : path; }; /** * Returns the item data from the cqModel * * @param itemKey - the itemKey to look for in the items. */ AEMContainerComponent.prototype.getItem = function (itemKey) { return this.cqItems && this.cqItems[itemKey]; }; /** * Returns the class names of the container based on the data from the cqModel */ AEMContainerComponent.prototype.getHostClassNames = function () { return CONTAINER_CLASS_NAMES; }; Object.defineProperty(AEMContainerComponent.prototype, "hostClasses", { get: function () { return this.getHostClassNames(); }, enumerable: true, configurable: true }); /** * Returns the placeholder classes */ AEMContainerComponent.prototype.getPlaceholderClassNames = function () { return PLACEHOLDER_CLASS_NAMES; }; Object.defineProperty(AEMContainerComponent.prototype, "placeholderPath", { /** * Returns the placeholder path */ get: function () { return this.cqPath && this.cqPath + '/' + PLACEHOLDER_ITEM_NAME; }, enumerable: true, configurable: true }); __decorate([ Input(), __metadata("design:type", Object) ], AEMContainerComponent.prototype, "cqItems", void 0); __decorate([ Input(), __metadata("design:type", Object) ], AEMContainerComponent.prototype, "cqItemsOrder", void 0); __decorate([ Input(), __metadata("design:type", String) ], AEMContainerComponent.prototype, "cqPath", void 0); __decorate([ Input(), __metadata("design:type", String) ], AEMContainerComponent.prototype, "modelName", void 0); __decorate([ Input(), __metadata("design:type", String) ], AEMContainerComponent.prototype, "classNames", void 0); AEMContainerComponent = __decorate([ Component({ selector: 'aem-container', host: { '[class]': 'hostClasses', '[attr.data-cq-data-path]': 'cqPath' }, template: "<ng-container *ngFor=\"let itemKey of cqItemsOrder\">\n <aem-model-provider [cqItem]=\"getItem(itemKey)\"\n [cqPath]=\"getDataPath(itemKey)\"\n [itemName]=\"itemKey\"></aem-model-provider>\n</ng-container>\n<div *ngIf=\"isInEditMode\"\n [attr.data-cq-data-path]=\"placeholderPath\"\n [class]=\"getPlaceholderClassNames()\"></div>\n" }) /** * The current component provides the base presentational logic common to containers such as a grid or a page. * Container have in common the notion of item holders. Items are represented in the model by the fields _:items_ and _:itemsOrder_ */ ], AEMContainerComponent); return AEMContainerComponent; }()); export { AEMContainerComponent }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWVtLWNvbnRhaW5lci5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9AYWRvYmUvY3EtYW5ndWxhci1lZGl0YWJsZS1jb21wb25lbnRzLyIsInNvdXJjZXMiOlsibGliL2xheW91dC9hZW0tY29udGFpbmVyL2FlbS1jb250YWluZXIuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7R0FlRzs7QUFFSCxPQUFPLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFakMsSUFBTSx1QkFBdUIsR0FBRyxTQUFTLENBQUMsdUJBQXVCLENBQUM7QUFDbEUsSUFBTSxxQkFBcUIsR0FBRyxHQUFHLENBQUM7QUFDbEMsSUFBTSxxQkFBcUIsR0FBRyxlQUFlLENBQUM7QUFjOUM7SUFKQTs7O09BR0c7SUFDSDtRQVNFOztXQUVHO1FBQ00sV0FBTSxHQUFXLEVBQUUsQ0FBQztRQUM3Qjs7V0FFRztRQUNNLGNBQVMsR0FBVyxFQUFFLENBQUM7SUF1RGxDLENBQUM7SUE5Q0Msc0JBQUksK0NBQVk7UUFIaEI7O1dBRUc7YUFDSDtZQUNFLE9BQU8sS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1FBQzVCLENBQUM7OztPQUFBO0lBRUQ7Ozs7T0FJRztJQUNILDJDQUFXLEdBQVgsVUFBWSxJQUFJO1FBQ2QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUN2RCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILHVDQUFPLEdBQVAsVUFBUSxPQUFPO1FBQ2IsT0FBTyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztPQUVHO0lBQ0gsaURBQWlCLEdBQWpCO1FBQ0UsT0FBTyxxQkFBcUIsQ0FBQztJQUMvQixDQUFDO0lBRUQsc0JBQUksOENBQVc7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDbEMsQ0FBQzs7O09BQUE7SUFFRDs7T0FFRztJQUNILHdEQUF3QixHQUF4QjtRQUNFLE9BQU8sdUJBQXVCLENBQUM7SUFDakMsQ0FBQztJQUtELHNCQUFJLGtEQUFlO1FBSG5COztXQUVHO2FBQ0g7WUFDRSxPQUFPLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLEdBQUcscUJBQXFCLENBQUM7UUFDbEUsQ0FBQzs7O09BQUE7SUFsRVE7UUFBUixLQUFLLEVBQUU7OzBEQUFTO0lBSVI7UUFBUixLQUFLLEVBQUU7OytEQUFjO0lBSWI7UUFBUixLQUFLLEVBQUU7O3lEQUFxQjtJQUlwQjtRQUFSLEtBQUssRUFBRTs7NERBQXdCO0lBSXZCO1FBQVIsS0FBSyxFQUFFOzs2REFBb0I7SUFwQmpCLHFCQUFxQjtRQVpqQyxTQUFTLENBQUM7WUFDVCxRQUFRLEVBQUUsZUFBZTtZQUN6QixJQUFJLEVBQUU7Z0JBQ0YsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLDBCQUEwQixFQUFDLFFBQVE7YUFDdEM7WUFDRCwwWUFBNkM7U0FDOUMsQ0FBQztRQUNGOzs7V0FHRztPQUNVLHFCQUFxQixDQXVFakM7SUFBRCw0QkFBQztDQUFBLEFBdkVELElBdUVDO1NBdkVZLHFCQUFxQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBBRE9CRSBDT05GSURFTlRJQUxcbiAqXG4gKiBDb3B5cmlnaHQgMjAxOCBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZFxuICogQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBOT1RJQ0U6ICBBbGwgaW5mb3JtYXRpb24gY29udGFpbmVkIGhlcmVpbiBpcywgYW5kIHJlbWFpbnNcbiAqIHRoZSBwcm9wZXJ0eSBvZiBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZCBhbmQgaXRzIHN1cHBsaWVycyxcbiAqIGlmIGFueS4gIFRoZSBpbnRlbGxlY3R1YWwgYW5kIHRlY2huaWNhbCBjb25jZXB0cyBjb250YWluZWRcbiAqIGhlcmVpbiBhcmUgcHJvcHJpZXRhcnkgdG8gQWRvYmUgU3lzdGVtcyBJbmNvcnBvcmF0ZWQgYW5kIGl0c1xuICogc3VwcGxpZXJzIGFuZCBtYXkgYmUgY292ZXJlZCBieSBVLlMuIGFuZCBGb3JlaWduIFBhdGVudHMsXG4gKiBwYXRlbnRzIGluIHByb2Nlc3MsIGFuZCBhcmUgcHJvdGVjdGVkIGJ5IHRyYWRlIHNlY3JldCBvciBjb3B5cmlnaHQgbGF3LlxuICogRGlzc2VtaW5hdGlvbiBvZiB0aGlzIGluZm9ybWF0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIG1hdGVyaWFsXG4gKiBpcyBzdHJpY3RseSBmb3JiaWRkZW4gdW5sZXNzIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbiBpcyBvYnRhaW5lZFxuICogZnJvbSBBZG9iZSBTeXN0ZW1zIEluY29ycG9yYXRlZC5cbiAqL1xuXG5pbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb25zdGFudHMgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgVXRpbHMgfSBmcm9tICcuLi91dGlscyc7XG5cbmNvbnN0IFBMQUNFSE9MREVSX0NMQVNTX05BTUVTID0gQ29uc3RhbnRzLk5FV19TRUNUSU9OX0NMQVNTX05BTUVTO1xuY29uc3QgUExBQ0VIT0xERVJfSVRFTV9OQU1FID0gJyonO1xuY29uc3QgQ09OVEFJTkVSX0NMQVNTX05BTUVTID0gJ2FlbS1jb250YWluZXInO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdhZW0tY29udGFpbmVyJyxcbiAgaG9zdDoge1xuICAgICAgJ1tjbGFzc10nOiAnaG9zdENsYXNzZXMnLFxuICAgICAgJ1thdHRyLmRhdGEtY3EtZGF0YS1wYXRoXSc6J2NxUGF0aCdcbiAgfSxcbiAgdGVtcGxhdGVVcmw6ICcuL2FlbS1jb250YWluZXIuY29tcG9uZW50Lmh0bWwnXG59KVxuLyoqXG4gKiBUaGUgY3VycmVudCBjb21wb25lbnQgcHJvdmlkZXMgdGhlIGJhc2UgcHJlc2VudGF0aW9uYWwgbG9naWMgY29tbW9uIHRvIGNvbnRhaW5lcnMgc3VjaCBhcyBhIGdyaWQgb3IgYSBwYWdlLlxuICogQ29udGFpbmVyIGhhdmUgaW4gY29tbW9uIHRoZSBub3Rpb24gb2YgaXRlbSBob2xkZXJzLiBJdGVtcyBhcmUgcmVwcmVzZW50ZWQgaW4gdGhlIG1vZGVsIGJ5IHRoZSBmaWVsZHMgXzppdGVtc18gYW5kIF86aXRlbXNPcmRlcl9cbiAqL1xuZXhwb3J0IGNsYXNzIEFFTUNvbnRhaW5lckNvbXBvbmVudCB7XG4gIC8qKlxuICAgKiBNYXAgb2YgbW9kZWwgaXRlbXMgaW5jbHVkZWQgaW4gdGhlIGN1cnJlbnQgY29udGFpbmVyXG4gICAqL1xuICBASW5wdXQoKSBjcUl0ZW1zO1xuICAvKipcbiAgICogQXJyYXkgb2YgbW9kZWwgaXRlbSBrZXlzXG4gICAqL1xuICBASW5wdXQoKSBjcUl0ZW1zT3JkZXI7XG4gIC8qKlxuICAgKiBQYXRoIHRvIHRoZSBtb2RlbCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQgaW5zdGFuY2Ugb2YgdGhlIGNvbXBvbmVudFxuICAgKi9cbiAgQElucHV0KCkgY3FQYXRoOiBzdHJpbmcgPSAnJztcbiAgLyoqXG4gICAqIEtleSBvZiB0aGUgbW9kZWwgc3RydWN0dXJlXG4gICAqL1xuICBASW5wdXQoKSBtb2RlbE5hbWU6IHN0cmluZyA9ICcnO1xuICAvKipcbiAgICogQ2xhc3MgbmFtZXMgb2YgdGhlIGN1cnJlbnQgY29tcG9uZW50XG4gICAqL1xuICBASW5wdXQoKSBjbGFzc05hbWVzOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJldHVybnMgd2VhdGhlciBvZiBub3Qgd2UgYXJlIGluIHRoZSBlZGl0b3JcbiAgICovXG4gIGdldCBpc0luRWRpdE1vZGUoKSB7XG4gICAgcmV0dXJuIFV0aWxzLmlzSW5FZGl0b3IoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBhZ2dyZWdhdGVkIHBhdGggb2YgdGhpcyBjb250YWluZXIgcGF0aCBhbmQgdGhlIHByb3ZpZGVkIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHBhdGggLSB0aGUgcHJvdmlkZWQgcGF0aCB0byBhZ2dyZWdhdGUgd2l0aCB0aGUgY29udGFpbmVyIHBhdGhcbiAgICovXG4gIGdldERhdGFQYXRoKHBhdGgpIHtcbiAgICByZXR1cm4gdGhpcy5jcVBhdGggPyB0aGlzLmNxUGF0aCArICcvJyArIHBhdGggOiBwYXRoO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGl0ZW0gZGF0YSBmcm9tIHRoZSBjcU1vZGVsXG4gICAqXG4gICAqIEBwYXJhbSBpdGVtS2V5IC0gdGhlIGl0ZW1LZXkgdG8gbG9vayBmb3IgaW4gdGhlIGl0ZW1zLlxuICAgKi9cbiAgZ2V0SXRlbShpdGVtS2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuY3FJdGVtcyAmJiB0aGlzLmNxSXRlbXNbaXRlbUtleV07XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgY2xhc3MgbmFtZXMgb2YgdGhlIGNvbnRhaW5lciBiYXNlZCBvbiB0aGUgZGF0YSBmcm9tIHRoZSBjcU1vZGVsXG4gICAqL1xuICBnZXRIb3N0Q2xhc3NOYW1lcygpIHtcbiAgICByZXR1cm4gQ09OVEFJTkVSX0NMQVNTX05BTUVTO1xuICB9XG5cbiAgZ2V0IGhvc3RDbGFzc2VzICgpIHtcbiAgICByZXR1cm4gdGhpcy5nZXRIb3N0Q2xhc3NOYW1lcygpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIHBsYWNlaG9sZGVyIGNsYXNzZXNcbiAgICovXG4gIGdldFBsYWNlaG9sZGVyQ2xhc3NOYW1lcygpIHtcbiAgICByZXR1cm4gUExBQ0VIT0xERVJfQ0xBU1NfTkFNRVM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgcGxhY2Vob2xkZXIgcGF0aFxuICAgKi9cbiAgZ2V0IHBsYWNlaG9sZGVyUGF0aCgpIHtcbiAgICByZXR1cm4gdGhpcy5jcVBhdGggJiYgdGhpcy5jcVBhdGggKyAnLycgKyBQTEFDRUhPTERFUl9JVEVNX05BTUU7XG4gIH1cbn1cblxuIl19