UNPKG

@vendasta/store

Version:

Components and data for Store

132 lines 13.3 kB
/** * @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=