@vendasta/store
Version:
Components and data for Store
132 lines • 13.3 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,extraRequire,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Component, EventEmitter, Input, Output } from '@angular/core';
import { Product } from '../shared/product';
import { CONTACT_SALES } from '../pricing/pricing';
import { Addon } from '@vendasta/core/shared';
export class VaProductDetailsComponent {
constructor() {
this.hasVerifiedContract = false;
this.canAccessContractPricing = false;
this.showActionButton = false;
this.showPricing = false;
this.showPricingAction = false;
this.loaded = true;
this.enableClicked = new EventEmitter();
this.addonSelected = new EventEmitter();
this.pricingActionSelected = new EventEmitter();
}
/**
* @return {?}
*/
emitEnableButtonClicked() {
this.enableClicked.emit();
}
/**
* @return {?}
*/
getAddons() {
if (!this._addons) {
this._addons = this.product.addons.map((addon) => Addon.fromApi(addon));
}
return this._addons;
}
/**
* @return {?}
*/
getActionLabel() {
if (this.product.isArchived) {
return 'Enable';
}
return 'Enabled';
}
/**
* @return {?}
*/
get price() {
// NOTE: wholesalePrice = 0 means free, wholesalePrice = null || -1 means "contact sales"
/** @type {?} */
let prices = [];
if (this.product.wholesalePrice !== CONTACT_SALES && this.product.wholesalePrice != null) {
prices = [{
price: this.product.wholesalePrice,
frequency: this.product.billingFrequency
}];
}
return {
currency: this.product.currency,
prices: prices
};
}
/**
* @param {?} addonId
* @return {?}
*/
onAddonSelected(addonId) {
this.addonSelected.emit(addonId);
}
/**
* @return {?}
*/
emitPricingActionSelected() {
this.pricingActionSelected.emit();
}
}
VaProductDetailsComponent.decorators = [
{ type: Component, args: [{
selector: 'va-product-details',
template: "<div class=\"page\">\n <va-header-container [iconUrl]=\"product.iconUrl\"\n [title]=\"product.name\"\n [tagline]=\"product.tagline\"\n [chipLabels]=\"product.getLmiCategoryNames()\"\n [pricing]=\"price\"\n [pricingLabel]=\"'Wholesale Price'\"\n [pricingActionLabel]=\"pricingActionLabel\"\n [pricingActionEnabled]=\"showPricingAction\"\n [actionLabel]=\"getActionLabel()\"\n [actionEnabled]=\"product.isArchived\"\n [showAction]=\"showActionButton\"\n [showPricing]=\"showPricing\"\n [billedProduct]=\"billedProduct\"\n [hasVerifiedContract]=\"hasVerifiedContract\"\n [loaded]=\"loaded\"\n (pricingActionSelected)=\"emitPricingActionSelected()\"\n (actionSelected)=\"emitEnableButtonClicked()\">\n </va-header-container>\n <div class=\"product-details product-content\">\n <div class=\"left-column\">\n <ng-container *ngIf=\"product.description || product.keySellingPoints\">\n <va-selling-info [description]=\"product.description\"\n [keySellingPoints]=\"product.keySellingPoints\"></va-selling-info>\n </ng-container>\n <section *ngIf=\"product.addons?.length > 0\">\n <h2 class=\"va-component-title\">Add-Ons</h2>\n <va-addon-list (addonSelected)=\"onAddonSelected($event)\"\n [addons]=\"getAddons()\"\n [showPricing]=\"showPricing\"\n [hasVerifiedContract]=\"hasVerifiedContract\"\n [canAccessContractPricing]=\"canAccessContractPricing\"\n [partnerID]=\"partnerID\">\n </va-addon-list>\n </section>\n\n <section *ngIf=\"product.faqs?.length > 0\">\n <h2 class=\"va-component-title\">FAQs</h2>\n <va-faqs [faqs]=\"product.faqs\"></va-faqs>\n </section>\n </div>\n\n <div class=\"right-column\">\n <section *ngIf=\"product.restrictions?.country?.whitelist?.length > 0\">\n <supported-countries [countryCodes]=\"product.restrictions.country.whitelist\"></supported-countries>\n </section>\n\n <section *ngIf=\"product.screenshotUrls?.length > 0\">\n <h2 class=\"va-component-title\">Gallery</h2>\n <va-image-gallery [imageUrls]=\"product.screenshotUrls\"></va-image-gallery>\n </section>\n\n <section *ngIf=\"product.files?.length > 0\">\n <h2 class=\"va-component-title\">Files</h2>\n <va-files [files]=\"product.files\"></va-files>\n </section>\n </div>\n </div>\n</div>\n",
styles: [":host{display:block;font-size:14px;line-height:1.4}:host *{box-sizing:border-box}.va-component-title{font-size:24px;font-weight:300;margin-top:0}@media screen and (min-width:600px){.va-component-title{font-size:32px}}img{max-width:100%}va-icon{display:inline-block}.sales-person-details{max-height:430px;overflow:hidden}.page{position:relative;margin:0 auto 20px;background:#fff;color:#212121;box-shadow:0 3px 10px rgba(33,33,33,.3);overflow:hidden;font-size:16px}.page .item-amount{color:#9e9e9e;font-size:14px;text-align:right;margin:0 24px 8px}section{padding:24px}.left-column{width:66%}@media screen and (max-width:600px){.left-column{width:100%}}.right-column{width:34%}.product-content{display:flex}@media screen and (max-width:600px){.right-column{width:100%}.product-content{flex-direction:column}}"]
}] }
];
VaProductDetailsComponent.propDecorators = {
product: [{ type: Input }],
billedProduct: [{ type: Input }],
hasVerifiedContract: [{ type: Input }],
canAccessContractPricing: [{ type: Input }],
showActionButton: [{ type: Input }],
showPricing: [{ type: Input }],
pricingActionLabel: [{ type: Input }],
showPricingAction: [{ type: Input }],
loaded: [{ type: Input }],
partnerID: [{ type: Input }],
enableClicked: [{ type: Output }],
addonSelected: [{ type: Output }],
pricingActionSelected: [{ type: Output }]
};
if (false) {
/** @type {?} */
VaProductDetailsComponent.prototype.product;
/** @type {?} */
VaProductDetailsComponent.prototype.billedProduct;
/** @type {?} */
VaProductDetailsComponent.prototype.hasVerifiedContract;
/** @type {?} */
VaProductDetailsComponent.prototype.canAccessContractPricing;
/** @type {?} */
VaProductDetailsComponent.prototype.showActionButton;
/** @type {?} */
VaProductDetailsComponent.prototype.showPricing;
/** @type {?} */
VaProductDetailsComponent.prototype.pricingActionLabel;
/** @type {?} */
VaProductDetailsComponent.prototype.showPricingAction;
/** @type {?} */
VaProductDetailsComponent.prototype.loaded;
/** @type {?} */
VaProductDetailsComponent.prototype.partnerID;
/** @type {?} */
VaProductDetailsComponent.prototype.enableClicked;
/** @type {?} */
VaProductDetailsComponent.prototype.addonSelected;
/** @type {?} */
VaProductDetailsComponent.prototype.pricingActionSelected;
/**
* @type {?}
* @private
*/
VaProductDetailsComponent.prototype._addons;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1kZXRhaWxzLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0B2ZW5kYXN0YS9zdG9yZS8iLCJzb3VyY2VzIjpbImxpYi9wcm9kdWN0LWRldGFpbHMvcHJvZHVjdC1kZXRhaWxzLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNyRSxPQUFPLEVBQUMsT0FBTyxFQUFDLE1BQU0sbUJBQW1CLENBQUM7QUFDMUMsT0FBTyxFQUFRLGFBQWEsRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ3hELE9BQU8sRUFBQyxLQUFLLEVBQUMsTUFBTSx1QkFBdUIsQ0FBQztBQVM1QyxNQUFNLE9BQU8seUJBQXlCO0lBTnRDO1FBU1csd0JBQW1CLEdBQUcsS0FBSyxDQUFDO1FBQzVCLDZCQUF3QixHQUFHLEtBQUssQ0FBQztRQUNqQyxxQkFBZ0IsR0FBRyxLQUFLLENBQUM7UUFDekIsZ0JBQVcsR0FBRyxLQUFLLENBQUM7UUFFcEIsc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBQzFCLFdBQU0sR0FBRyxJQUFJLENBQUM7UUFHYixrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsa0JBQWEsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzNDLDBCQUFxQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7SUEyQ3ZELENBQUM7Ozs7SUF4Q0MsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7OztJQUVELFNBQVM7UUFDTCxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRTtZQUNmLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUE7U0FDMUU7UUFDRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDeEIsQ0FBQzs7OztJQUVELGNBQWM7UUFDWixJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFO1lBQzNCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO1FBQ0QsT0FBTyxTQUFTLENBQUM7SUFDbkIsQ0FBQzs7OztJQUVELElBQUksS0FBSzs7O1lBRUgsTUFBTSxHQUFZLEVBQUU7UUFDeEIsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsS0FBSyxhQUFhLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxjQUFjLElBQUksSUFBSSxFQUFFO1lBQ3hGLE1BQU0sR0FBRyxDQUFDO29CQUNSLEtBQUssRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWM7b0JBQ2xDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLGdCQUFnQjtpQkFDekMsQ0FBQyxDQUFBO1NBQ0g7UUFDRCxPQUFPO1lBQ0wsUUFBUSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUTtZQUMvQixNQUFNLEVBQUUsTUFBTTtTQUNmLENBQUE7SUFDSCxDQUFDOzs7OztJQUVELGVBQWUsQ0FBQyxPQUFlO1FBQzdCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7Ozs7SUFFRCx5QkFBeUI7UUFDdkIsSUFBSSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3BDLENBQUM7OztZQTlERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLG9CQUFvQjtnQkFDOUIsbzNGQUE2Qzs7YUFFOUM7OztzQkFHRSxLQUFLOzRCQUNMLEtBQUs7a0NBQ0wsS0FBSzt1Q0FDTCxLQUFLOytCQUNMLEtBQUs7MEJBQ0wsS0FBSztpQ0FDTCxLQUFLO2dDQUNMLEtBQUs7cUJBQ0wsS0FBSzt3QkFDTCxLQUFLOzRCQUVMLE1BQU07NEJBQ04sTUFBTTtvQ0FDTixNQUFNOzs7O0lBYlAsNENBQTBCOztJQUMxQixrREFBc0M7O0lBQ3RDLHdEQUFxQzs7SUFDckMsNkRBQTBDOztJQUMxQyxxREFBa0M7O0lBQ2xDLGdEQUE2Qjs7SUFDN0IsdURBQW9DOztJQUNwQyxzREFBbUM7O0lBQ25DLDJDQUF1Qjs7SUFDdkIsOENBQTJCOztJQUUzQixrREFBNkM7O0lBQzdDLGtEQUFxRDs7SUFDckQsMERBQXFEOzs7OztJQUNyRCw0Q0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0fSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7UHJvZHVjdH0gZnJvbSAnLi4vc2hhcmVkL3Byb2R1Y3QnO1xuaW1wb3J0IHtQcmljZSwgQ09OVEFDVF9TQUxFU30gZnJvbSAnLi4vcHJpY2luZy9wcmljaW5nJztcbmltcG9ydCB7QWRkb259IGZyb20gJ0B2ZW5kYXN0YS9jb3JlL3NoYXJlZCc7XG5pbXBvcnQge0JpbGxlZFByb2R1Y3R9IGZyb20gJ0B2ZW5kYXN0YS9jb3JlL2JpbGxpbmcnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YS1wcm9kdWN0LWRldGFpbHMnLFxuICB0ZW1wbGF0ZVVybDogJ3Byb2R1Y3QtZGV0YWlscy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3Byb2R1Y3QtZGV0YWlscy5jb21wb25lbnQuc2NzcyddXG59KVxuXG5leHBvcnQgY2xhc3MgVmFQcm9kdWN0RGV0YWlsc0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIHByb2R1Y3Q6IFByb2R1Y3Q7XG4gIEBJbnB1dCgpIGJpbGxlZFByb2R1Y3Q6IEJpbGxlZFByb2R1Y3Q7XG4gIEBJbnB1dCgpIGhhc1ZlcmlmaWVkQ29udHJhY3QgPSBmYWxzZTtcbiAgQElucHV0KCkgY2FuQWNjZXNzQ29udHJhY3RQcmljaW5nID0gZmFsc2U7XG4gIEBJbnB1dCgpIHNob3dBY3Rpb25CdXR0b24gPSBmYWxzZTtcbiAgQElucHV0KCkgc2hvd1ByaWNpbmcgPSBmYWxzZTtcbiAgQElucHV0KCkgcHJpY2luZ0FjdGlvbkxhYmVsOiBzdHJpbmc7XG4gIEBJbnB1dCgpIHNob3dQcmljaW5nQWN0aW9uID0gZmFsc2U7XG4gIEBJbnB1dCgpIGxvYWRlZCA9IHRydWU7XG4gIEBJbnB1dCgpIHBhcnRuZXJJRDogc3RyaW5nO1xuXG4gIEBPdXRwdXQoKSBlbmFibGVDbGlja2VkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBAT3V0cHV0KCkgYWRkb25TZWxlY3RlZCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICBAT3V0cHV0KCkgcHJpY2luZ0FjdGlvblNlbGVjdGVkID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICBwcml2YXRlIF9hZGRvbnM6IEFkZG9uW107XG5cbiAgZW1pdEVuYWJsZUJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5lbmFibGVDbGlja2VkLmVtaXQoKTtcbiAgfVxuXG4gIGdldEFkZG9ucygpOiBBZGRvbltdIHtcbiAgICAgIGlmICghdGhpcy5fYWRkb25zKSB7XG4gICAgICAgICAgdGhpcy5fYWRkb25zID0gdGhpcy5wcm9kdWN0LmFkZG9ucy5tYXAoKGFkZG9uKSA9PiBBZGRvbi5mcm9tQXBpKGFkZG9uKSlcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9hZGRvbnM7XG4gIH1cblxuICBnZXRBY3Rpb25MYWJlbCgpOiBzdHJpbmcge1xuICAgIGlmICh0aGlzLnByb2R1Y3QuaXNBcmNoaXZlZCkge1xuICAgICAgcmV0dXJuICdFbmFibGUnO1xuICAgIH1cbiAgICByZXR1cm4gJ0VuYWJsZWQnO1xuICB9XG5cbiAgZ2V0IHByaWNlKCkge1xuICAgIC8vIE5PVEU6IHdob2xlc2FsZVByaWNlID0gMCBtZWFucyBmcmVlLCB3aG9sZXNhbGVQcmljZSA9IG51bGwgfHwgLTEgbWVhbnMgXCJjb250YWN0IHNhbGVzXCJcbiAgICBsZXQgcHJpY2VzOiBQcmljZVtdID0gW107XG4gICAgaWYgKHRoaXMucHJvZHVjdC53aG9sZXNhbGVQcmljZSAhPT0gQ09OVEFDVF9TQUxFUyAmJiB0aGlzLnByb2R1Y3Qud2hvbGVzYWxlUHJpY2UgIT0gbnVsbCkge1xuICAgICAgcHJpY2VzID0gW3tcbiAgICAgICAgcHJpY2U6IHRoaXMucHJvZHVjdC53aG9sZXNhbGVQcmljZSxcbiAgICAgICAgZnJlcXVlbmN5OiB0aGlzLnByb2R1Y3QuYmlsbGluZ0ZyZXF1ZW5jeVxuICAgICAgfV1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGN1cnJlbmN5OiB0aGlzLnByb2R1Y3QuY3VycmVuY3ksXG4gICAgICBwcmljZXM6IHByaWNlc1xuICAgIH1cbiAgfVxuXG4gIG9uQWRkb25TZWxlY3RlZChhZGRvbklkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFkZG9uU2VsZWN0ZWQuZW1pdChhZGRvbklkKTtcbiAgfVxuXG4gIGVtaXRQcmljaW5nQWN0aW9uU2VsZWN0ZWQoKTogdm9pZCB7XG4gICAgdGhpcy5wcmljaW5nQWN0aW9uU2VsZWN0ZWQuZW1pdCgpO1xuICB9XG59XG4iXX0=