@adobe/cq-angular-editable-components
Version:
* [API](#api) * [Documentation](#documentation) * [Changelog](#changelog)
131 lines • 11.4 kB
JavaScript
/*
* 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