@snabcentr/client-ui 0.0.19 → 0.0.21
Sign up to get free protection for your applications and to get access to all the features.
- package/catalog/price-card/sc-price-card.component.d.ts +40 -12
- package/esm2020/catalog/price-card/sc-price-card.component.mjs +48 -11
- package/esm2020/icons/sc-client-ui-icons-name.mjs +11 -1
- package/esm2020/news/news-card/sc-news-card.component.mjs +9 -3
- package/esm2020/share-button/sc-share-button.component.mjs +26 -6
- package/esm2020/share-button/sc-share-button.module.mjs +5 -4
- package/fesm2015/snabcentr-client-ui.mjs +92 -20
- package/fesm2015/snabcentr-client-ui.mjs.map +1 -1
- package/fesm2020/snabcentr-client-ui.mjs +91 -19
- package/fesm2020/snabcentr-client-ui.mjs.map +1 -1
- package/icons/sc-client-ui-icons-name.d.ts +1 -0
- package/icons/svg-pack/scIconAddProfile.svg +1 -1
- package/icons/svg-pack/scIconApplication.svg +1 -1
- package/icons/svg-pack/scIconArrowDown.svg +1 -1
- package/icons/svg-pack/scIconArrowDownLarge.svg +1 -1
- package/icons/svg-pack/scIconArrowDownLargeEnd.svg +1 -1
- package/icons/svg-pack/scIconArrowLeft.svg +1 -1
- package/icons/svg-pack/scIconArrowReturn.svg +1 -1
- package/icons/svg-pack/scIconArrowRight.svg +1 -1
- package/icons/svg-pack/scIconArrowUp.svg +1 -1
- package/icons/svg-pack/scIconAttention.svg +1 -1
- package/icons/svg-pack/scIconBag.svg +1 -1
- package/icons/svg-pack/scIconBasket.svg +1 -1
- package/icons/svg-pack/scIconBell.svg +1 -1
- package/icons/svg-pack/scIconBook.svg +1 -1
- package/icons/svg-pack/scIconBubble.svg +1 -1
- package/icons/svg-pack/scIconCalendar.svg +1 -1
- package/icons/svg-pack/scIconCancel.svg +1 -1
- package/icons/svg-pack/scIconCart.svg +1 -1
- package/icons/svg-pack/scIconCatalog.svg +1 -1
- package/icons/svg-pack/scIconClients.svg +1 -1
- package/icons/svg-pack/scIconClip.svg +1 -1
- package/icons/svg-pack/scIconClock.svg +1 -1
- package/icons/svg-pack/scIconConfigurator.svg +1 -1
- package/icons/svg-pack/scIconContacts.svg +1 -1
- package/icons/svg-pack/scIconCross.svg +1 -1
- package/icons/svg-pack/scIconDeleteProfile.svg +1 -1
- package/icons/svg-pack/scIconDone.svg +1 -1
- package/icons/svg-pack/scIconDownloading.svg +1 -1
- package/icons/svg-pack/scIconEdit.svg +1 -1
- package/icons/svg-pack/scIconError.svg +1 -1
- package/icons/svg-pack/scIconExcelFile.svg +1 -1
- package/icons/svg-pack/scIconEye.svg +1 -1
- package/icons/svg-pack/scIconFavorite.svg +1 -1
- package/icons/svg-pack/scIconFavoriteFill.svg +1 -1
- package/icons/svg-pack/scIconFile.svg +1 -1
- package/icons/svg-pack/scIconFilter.svg +1 -1
- package/icons/svg-pack/scIconFolder.svg +1 -1
- package/icons/svg-pack/scIconFolderOpen.svg +1 -1
- package/icons/svg-pack/scIconFolderPlus.svg +1 -1
- package/icons/svg-pack/scIconGraph.svg +1 -1
- package/icons/svg-pack/scIconHamburger.svg +1 -1
- package/icons/svg-pack/scIconHeart.svg +1 -1
- package/icons/svg-pack/scIconHeartFill.svg +1 -1
- package/icons/svg-pack/scIconHistory.svg +1 -1
- package/icons/svg-pack/scIconHome.svg +1 -1
- package/icons/svg-pack/scIconImage.svg +1 -1
- package/icons/svg-pack/scIconLike.svg +1 -1
- package/icons/svg-pack/scIconList.svg +1 -1
- package/icons/svg-pack/scIconLocation.svg +1 -1
- package/icons/svg-pack/scIconLock.svg +1 -1
- package/icons/svg-pack/scIconLockOpen.svg +1 -1
- package/icons/svg-pack/scIconLogIn.svg +1 -1
- package/icons/svg-pack/scIconLogOut.svg +1 -1
- package/icons/svg-pack/scIconLogOut2.svg +1 -1
- package/icons/svg-pack/scIconMail.svg +1 -1
- package/icons/svg-pack/scIconMinus.svg +1 -1
- package/icons/svg-pack/scIconMoney.svg +1 -1
- package/icons/svg-pack/scIconMoney2.svg +1 -1
- package/icons/svg-pack/scIconNews.svg +1 -1
- package/icons/svg-pack/scIconOffer.svg +1 -1
- package/icons/svg-pack/scIconPalette.svg +1 -1
- package/icons/svg-pack/scIconPdfFile.svg +1 -1
- package/icons/svg-pack/scIconPercentage.svg +1 -1
- package/icons/svg-pack/scIconPhone.svg +1 -1
- package/icons/svg-pack/scIconPlus.svg +1 -1
- package/icons/svg-pack/scIconPrice.svg +1 -1
- package/icons/svg-pack/scIconProfile.svg +1 -1
- package/icons/svg-pack/scIconQRCodeScan.svg +1 -1
- package/icons/svg-pack/scIconQuestion.svg +1 -1
- package/icons/svg-pack/scIconReclamation.svg +1 -1
- package/icons/svg-pack/scIconRefresh.svg +1 -1
- package/icons/svg-pack/scIconRepeat.svg +1 -1
- package/icons/svg-pack/scIconRequisites.svg +1 -1
- package/icons/svg-pack/scIconRocket.svg +1 -1
- package/icons/svg-pack/scIconSave.svg +1 -1
- package/icons/svg-pack/scIconSearch.svg +1 -1
- package/icons/svg-pack/scIconSend.svg +1 -1
- package/icons/svg-pack/scIconSettings.svg +1 -1
- package/icons/svg-pack/scIconShare.svg +1 -1
- package/icons/svg-pack/scIconSocialCopy.svg +13 -0
- package/icons/svg-pack/scIconSocialEmail.svg +13 -0
- package/icons/svg-pack/scIconSocialFacebook.svg +12 -0
- package/icons/svg-pack/scIconSocialInstagram.svg +33 -0
- package/icons/svg-pack/scIconSocialQR.svg +12 -0
- package/icons/svg-pack/scIconSocialTelegram.svg +20 -0
- package/icons/svg-pack/scIconSocialViber.svg +16 -0
- package/icons/svg-pack/scIconSocialVk.svg +12 -0
- package/icons/svg-pack/scIconSocialWhatsapp.svg +12 -0
- package/icons/svg-pack/scIconStar.svg +1 -1
- package/icons/svg-pack/scIconSuitcase.svg +1 -1
- package/icons/svg-pack/scIconTasks.svg +1 -1
- package/icons/svg-pack/scIconTick.svg +1 -1
- package/icons/svg-pack/scIconTop.svg +1 -1
- package/icons/svg-pack/scIconVerticalThreeDots.svg +1 -1
- package/icons/svg-pack/scIconViewGrid.svg +1 -1
- package/icons/svg-pack/scIconViewInline.svg +1 -1
- package/icons/svg-pack/scIconViewTree.svg +1 -1
- package/icons/svg-pack/scIconWallet.svg +1 -1
- package/icons/svg-pack/scIconWarning.svg +1 -1
- package/icons/svg-pack/scIconWordFile.svg +1 -1
- package/news/news-card/sc-news-card.component.d.ts +5 -1
- package/package.json +1 -1
- package/share-button/sc-share-button.component.d.ts +15 -1
- package/share-button/sc-share-button.module.d.ts +2 -1
- package/styles/tailwind/tailwind.scss +1 -1
@@ -749,6 +749,14 @@ class ScPriceCardComponent {
|
|
749
749
|
this.warehouseService = warehouseService;
|
750
750
|
this.urls = urls;
|
751
751
|
this.pathImageNotFound = pathImageNotFound;
|
752
|
+
/**
|
753
|
+
* Признак, что необходимо отобразить лоадер для поля ввода количества товара.
|
754
|
+
*/
|
755
|
+
this.quantityShowLoader = false;
|
756
|
+
/**
|
757
|
+
* Признак, что необходимо отобразить поле ввода количества товара.
|
758
|
+
*/
|
759
|
+
this.showQuantityControl = false;
|
752
760
|
/**
|
753
761
|
* Событие нажатия на кнопку "В избранное".
|
754
762
|
*/
|
@@ -757,6 +765,10 @@ class ScPriceCardComponent {
|
|
757
765
|
* Событие нажатия на кнопку "В корзину".
|
758
766
|
*/
|
759
767
|
this.clickAddToCartEvent = new EventEmitter();
|
768
|
+
/**
|
769
|
+
* Событие нажатия на кнопку очистки количества товара.
|
770
|
+
*/
|
771
|
+
this.clickClearEvent = new EventEmitter();
|
760
772
|
/**
|
761
773
|
* Событие нажатия на карточку товара.
|
762
774
|
*/
|
@@ -765,6 +777,14 @@ class ScPriceCardComponent {
|
|
765
777
|
* {@link Observable} изменения выбранного склада.
|
766
778
|
*/
|
767
779
|
this.warehouseSelect$ = this.warehouseService.getWarehouseSelectChange$();
|
780
|
+
/**
|
781
|
+
* {@link FormControl} поля ввода количества товара в корзине.
|
782
|
+
*/
|
783
|
+
this.quantityControl = new FormControl(null);
|
784
|
+
/**
|
785
|
+
* {@link Observable} изменения количества товара в корзине.
|
786
|
+
*/
|
787
|
+
this.quantityValueChanges = this.quantityControl.valueChanges;
|
768
788
|
/**
|
769
789
|
* {@link Observable} изменения статуса авторизации.
|
770
790
|
*/
|
@@ -774,20 +794,31 @@ class ScPriceCardComponent {
|
|
774
794
|
*/
|
775
795
|
this.size = 'm';
|
776
796
|
}
|
797
|
+
/**
|
798
|
+
* Позиция товара в корзине.
|
799
|
+
*
|
800
|
+
* TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].
|
801
|
+
*/
|
802
|
+
get cartItem() {
|
803
|
+
return this._cartItem;
|
804
|
+
}
|
805
|
+
/**
|
806
|
+
* Позиция товара в корзине
|
807
|
+
*
|
808
|
+
* TODO: Сделать товар в корзине наблюдаемой переменной после реализации TASK:[#7144].
|
809
|
+
*/
|
810
|
+
set cartItem(value) {
|
811
|
+
var _a, _b;
|
812
|
+
this._cartItem = value;
|
813
|
+
this.quantityControl.patchValue((_b = (_a = this._cartItem) === null || _a === void 0 ? void 0 : _a.quantity) !== null && _b !== void 0 ? _b : null, { emitEvent: false });
|
814
|
+
this.quantityShowLoader = false;
|
815
|
+
}
|
777
816
|
/**
|
778
817
|
* Признак, что нужно показать скелетон.
|
779
818
|
*/
|
780
819
|
get skeletonVisible() {
|
781
820
|
return !this.product;
|
782
821
|
}
|
783
|
-
/** @inheritDoc */
|
784
|
-
ngOnInit() {
|
785
|
-
var _a;
|
786
|
-
if ((_a = this.product) === null || _a === void 0 ? void 0 : _a.cartItem) {
|
787
|
-
this.quantityControl = new FormControl(this.product.cartItem.quantity);
|
788
|
-
this.quantityValueChanges = this.quantityControl.valueChanges;
|
789
|
-
}
|
790
|
-
}
|
791
822
|
/**
|
792
823
|
* Возвращает ссылку на изображение карточки товара.
|
793
824
|
*/
|
@@ -797,10 +828,10 @@ class ScPriceCardComponent {
|
|
797
828
|
}
|
798
829
|
}
|
799
830
|
ScPriceCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceCardComponent, deps: [{ token: i1.ScAuthService }, { token: i1.ScWarehouseService }, { token: SC_URLS }, { token: SC_PATH_IMAGE_NOT_FOUND }], target: i0.ɵɵFactoryTarget.Component });
|
800
|
-
ScPriceCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceCardComponent, selector: "sc-price-card", inputs: { product: "product", size: "size" }, outputs: { clickFavoriteEvent: "clickFavoriteEvent", clickAddToCartEvent: "clickAddToCartEvent", clickCardEvent: "clickCardEvent", quantityValueChanges: "quantityValueChanges" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<div *ngIf=\"product; else skeleton\" class=\"card-wrapper flex flex-col w-40 h-64 bg-tui-base-03 rounded-xl shadow-sc-2 overflow-hidden text-xs\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"flex flex-col grow overflow-hidden\">\n <div class=\"flex justify-center items-center grow overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-12]=\"!product.images?.length\" class=\"cursor-pointer\" />\n <tui-svg *ngIf=\"
|
831
|
+
ScPriceCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScPriceCardComponent, selector: "sc-price-card", inputs: { showQuantityControl: "showQuantityControl", cartItem: "cartItem", product: "product", size: "size" }, outputs: { clickFavoriteEvent: "clickFavoriteEvent", clickAddToCartEvent: "clickAddToCartEvent", clickClearEvent: "clickClearEvent", clickCardEvent: "clickCardEvent", quantityValueChanges: "quantityValueChanges" }, host: { properties: { "attr.data-size": "this.size" } }, ngImport: i0, template: "<div *ngIf=\"product; else skeleton\" class=\"card-wrapper flex flex-col w-40 h-64 bg-tui-base-03 rounded-xl shadow-sc-2 overflow-hidden text-xs\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"flex flex-col grow overflow-hidden\">\n <div class=\"flex justify-center items-center grow overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-12]=\"!product.images?.length\" class=\"cursor-pointer\" />\n <tui-svg *ngIf=\"cartItem\" src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-white rounded-md absolute right-2 top-2\"></tui-svg>\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-1 left-1 absolute hidden group-hover:block\"></sc-favorite-btn>\n </div>\n </div>\n\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"bg-white relative shrink-0\">\n <div class=\"wrapper-info flex flex-col content-between flex-auto justify-between\">\n <a class=\"name !transition-all !duration-500\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"info text-tui-text-02 overflow-hidden duration-500\">\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <div class=\"sub-info\">\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product.costDate\" class=\"text-tui-link hover:text-tui-link-hover cursor-pointer\">\u0414\u0430\u0442\u0430: {{ product.costDate }}</p>\n </div>\n </div>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n <div class=\"button-wrapper overflow-hidden duration-500\">\n <button *ngIf=\"!showQuantityControl\" tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"w-full\">\n <span class=\"font-bold\"> <tui-svg src=\"scIconCart\"></tui-svg> \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443</span>\n </button>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"size === 'm' ? 'l' : 'm'\"\n [step]=\"product.minCount || 1\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n ></sc-input-quantity>\n </div>\n <div *ngIf=\"product.isPreviouslyOrdered\" matTooltip=\"\u0422\u043E\u0432\u0430\u0440 \u0438\u0437 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u043F\u043E\u043A\u0443\u043F\u043E\u043A\" class=\"rotate-45 z-10 absolute bg-tui-error-fill -bottom-4 -right-4 h-8 w-8\"></div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host[data-size=s] .card-wrapper{width:10rem;height:16rem}:host[data-size=s] .card-wrapper .wrapper-info{padding:8px}:host[data-size=s] .card-wrapper .wrapper-info .cost{font-size:.875rem;line-height:1.25rem}:host[data-size=s] .card-wrapper .button-wrapper tui-svg{font-size:.75rem;line-height:1rem;width:1rem}:host[data-size=m] .card-wrapper{width:12.5rem;height:20rem}:host[data-size=m] .card-wrapper .wrapper-info{padding-inline:16px;padding-block:8px}:host[data-size=m] .card-wrapper .name{font-size:.875rem;line-height:1.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:3rem}:host[data-size=m] .card-wrapper .info{max-height:1rem}:host[data-size=m] .card-wrapper .cost{font-size:1.125rem;line-height:1.75rem}:host[data-size=m] .card-wrapper .button-wrapper{max-height:0px;font-size:.75rem;line-height:1rem}:host[data-size=m] .card-wrapper:hover .name{-webkit-line-clamp:unset;max-height:6rem}:host[data-size=m] .card-wrapper:hover .info{max-height:3rem}:host[data-size=m] .card-wrapper:hover .button-wrapper{max-height:3rem}\n"], dependencies: [{ kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i3.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }, { kind: "component", type: i3.TuiSvgComponent, selector: "tui-svg", inputs: ["src"] }, { kind: "directive", type: i4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.TuiHintDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHint", "tuiHintContext", "tuiHintAppearance"] }, { kind: "directive", type: i3.TuiHintDriverDirective, selector: "[tuiHint]" }, { kind: "directive", type: i3.TuiHintHoverDirective, selector: "[tuiHint]:not(ng-container)", inputs: ["tuiHintShowDelay", "tuiHintHideDelay"], exportAs: ["tuiHintHover"] }, { kind: "directive", type: i3.TuiHintPositionDirective, selector: "[tuiHint]:not([tuiHintCustomPosition])", inputs: ["tuiHintDirection"] }, { kind: "component", type: i3.TuiLinkComponent, selector: "a[tuiLink], button[tuiLink]", inputs: ["pseudo", "icon", "iconAlign", "iconRotated", "mode"], exportAs: ["tuiLink"] }, { kind: "component", type: ScFavoriteBtnComponent, selector: "sc-favorite-btn", outputs: ["clickEvent"] }, { kind: "component", type: ScInputQuantityComponent, selector: "sc-input-quantity", inputs: ["step", "quantityUnit", "showLoader", "showCross", "appearance", "isDisabled", "size"], outputs: ["clickClearEvent"] }, { kind: "component", type: ScPriceWarehouseStockComponent, selector: "sc-price-warehouse-stock", inputs: ["classList", "product", "withStockHint"] }, { kind: "pipe", type: i2.AsyncPipe, name: "async" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
801
832
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScPriceCardComponent, decorators: [{
|
802
833
|
type: Component,
|
803
|
-
args: [{ selector: 'sc-price-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"product; else skeleton\" class=\"card-wrapper flex flex-col w-40 h-64 bg-tui-base-03 rounded-xl shadow-sc-2 overflow-hidden text-xs\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"flex flex-col grow overflow-hidden\">\n <div class=\"flex justify-center items-center grow overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-12]=\"!product.images?.length\" class=\"cursor-pointer\" />\n <tui-svg *ngIf=\"
|
834
|
+
args: [{ selector: 'sc-price-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div *ngIf=\"product; else skeleton\" class=\"card-wrapper flex flex-col w-40 h-64 bg-tui-base-03 rounded-xl shadow-sc-2 overflow-hidden text-xs\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"flex flex-col grow overflow-hidden\">\n <div class=\"flex justify-center items-center grow overflow-hidden relative\">\n <img (click)=\"clickCardEvent.emit()\" [src]=\"getCardImage()\" [alt]=\"product.name\" [class.p-12]=\"!product.images?.length\" class=\"cursor-pointer\" />\n <tui-svg *ngIf=\"cartItem\" src=\"tuiIconCheck\" class=\"!h-5 !w-5 bg-tui-primary text-white rounded-md absolute right-2 top-2\"></tui-svg>\n <sc-favorite-btn *ngIf=\"authStatus$ | async\" [class.!block]=\"product.isFavorite\" class=\"top-1 left-1 absolute hidden group-hover:block\"></sc-favorite-btn>\n </div>\n </div>\n\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"bg-white relative shrink-0\">\n <div class=\"wrapper-info flex flex-col content-between flex-auto justify-between\">\n <a class=\"name !transition-all !duration-500\" tuiLink iconAlign=\"left\" (click)=\"clickCardEvent.emit()\">\n <span class=\"font-bold\">{{ product.name }}</span>\n </a>\n <div class=\"info text-tui-text-02 overflow-hidden duration-500\">\n <p *ngIf=\"product.pack\">\u041D\u043E\u0440\u043C\u0430 \u0443\u043F\u0430\u043A\u043E\u0432\u043A\u0438: {{ product.pack }}</p>\n <div class=\"sub-info\">\n <p>\u0410\u0440\u0442\u0438\u043A\u0443\u043B: {{ product.code }}</p>\n <p *ngIf=\"(authStatus$ | async) && product.costDate\" class=\"text-tui-link hover:text-tui-link-hover cursor-pointer\">\u0414\u0430\u0442\u0430: {{ product.costDate }}</p>\n </div>\n </div>\n <div *ngIf=\"warehouseSelect$ | async as warehouseSelect\" class=\"flex flex-col\">\n <span *ngIf=\"product.discount\" class=\"flex items-center text-tui-text-02\">\n <span class=\"line-through\">{{ product.discountCostString }}</span> \n <span class=\"text-tui-success-fill font-bold\"> -{{ product.discount.percent }}% </span>\n <tui-svg src=\"tuiIconInfoLarge\" [tuiHint]=\"discountHint\" [tuiHintShowDelay]=\"100\" tuiHintDirection=\"top\" class=\"text-black !text-xs !h-4\"></tui-svg>\n <ng-template #discountHint>\n <div class=\"font-bold\">{{ product.discount.name }}</div>\n <div *ngIf=\"product.discount.expiredAt as expiredAt\">\u0414\u0430\u0442\u0430 \u043E\u043A\u043E\u043D\u0447\u0430\u043D\u0438\u044F: {{ expiredAt }}</div>\n </ng-template>\n </span>\n <span [class.text-tui-text-02]=\"!product.isWarehouseStockExist(warehouseSelect.id)\" class=\"cost font-bold\">{{ product.costRubString }}</span>\n <span *ngIf=\"!product.priceInRub\" class=\"text-xs font-bold text-tui-text-02 hidden group-hover:block\">{{ product.costString }}</span>\n <sc-price-warehouse-stock [product]=\"product\"></sc-price-warehouse-stock>\n </div>\n </div>\n <div class=\"button-wrapper overflow-hidden duration-500\">\n <button *ngIf=\"!showQuantityControl\" tuiButton (click)=\"clickAddToCartEvent.emit(product)\" [showLoader]=\"quantityShowLoader\" [size]=\"size\" class=\"w-full\">\n <span class=\"font-bold\"> <tui-svg src=\"scIconCart\"></tui-svg> \u0412 \u043A\u043E\u0440\u0437\u0438\u043D\u0443</span>\n </button>\n <sc-input-quantity\n *ngIf=\"showQuantityControl\"\n [formControl]=\"quantityControl\"\n [quantityUnit]=\"product.quantityUnit\"\n [size]=\"size === 'm' ? 'l' : 'm'\"\n [step]=\"product.minCount || 1\"\n [showLoader]=\"quantityShowLoader\"\n (clickClearEvent)=\"clickClearEvent.emit(cartItem)\"\n ></sc-input-quantity>\n </div>\n <div *ngIf=\"product.isPreviouslyOrdered\" matTooltip=\"\u0422\u043E\u0432\u0430\u0440 \u0438\u0437 \u0438\u0441\u0442\u043E\u0440\u0438\u0438 \u043F\u043E\u043A\u0443\u043F\u043E\u043A\" class=\"rotate-45 z-10 absolute bg-tui-error-fill -bottom-4 -right-4 h-8 w-8\"></div>\n </div>\n</div>\n\n<ng-template #skeleton>\n <div class=\"flex flex-col card-wrapper bg-white rounded-xl overflow-hidden shadow-sc-1\">\n <!-- \u0418\u0437\u043E\u0431\u0440\u0430\u0436\u0435\u043D\u0438\u0435 \u0442\u043E\u0432\u0430\u0440\u0430 -->\n <div class=\"w-full h-3/5 rounded-t bg-tui-base-02\"></div>\n <!-- \u041A\u0440\u0430\u0442\u043A\u0430\u044F \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u044F \u043E \u0442\u043E\u0432\u0430\u0440\u0435 -->\n <div class=\"flex flex-col grow gap-2.5 bg-white rounded-b p-5\">\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-3/5 h-4 rounded bg-tui-base-02\"></div>\n <div class=\"w-full h-4 rounded bg-tui-base-02\"></div>\n </div>\n </div>\n</ng-template>\n", styles: [":host[data-size=s] .card-wrapper{width:10rem;height:16rem}:host[data-size=s] .card-wrapper .wrapper-info{padding:8px}:host[data-size=s] .card-wrapper .wrapper-info .cost{font-size:.875rem;line-height:1.25rem}:host[data-size=s] .card-wrapper .button-wrapper tui-svg{font-size:.75rem;line-height:1rem;width:1rem}:host[data-size=m] .card-wrapper{width:12.5rem;height:20rem}:host[data-size=m] .card-wrapper .wrapper-info{padding-inline:16px;padding-block:8px}:host[data-size=m] .card-wrapper .name{font-size:.875rem;line-height:1.25rem;overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:3rem}:host[data-size=m] .card-wrapper .info{max-height:1rem}:host[data-size=m] .card-wrapper .cost{font-size:1.125rem;line-height:1.75rem}:host[data-size=m] .card-wrapper .button-wrapper{max-height:0px;font-size:.75rem;line-height:1rem}:host[data-size=m] .card-wrapper:hover .name{-webkit-line-clamp:unset;max-height:6rem}:host[data-size=m] .card-wrapper:hover .info{max-height:3rem}:host[data-size=m] .card-wrapper:hover .button-wrapper{max-height:3rem}\n"] }]
|
804
835
|
}], ctorParameters: function () {
|
805
836
|
return [{ type: i1.ScAuthService }, { type: i1.ScWarehouseService }, { type: undefined, decorators: [{
|
806
837
|
type: Inject,
|
@@ -809,12 +840,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
809
840
|
type: Inject,
|
810
841
|
args: [SC_PATH_IMAGE_NOT_FOUND]
|
811
842
|
}] }];
|
812
|
-
}, propDecorators: {
|
843
|
+
}, propDecorators: { showQuantityControl: [{
|
844
|
+
type: Input
|
845
|
+
}], cartItem: [{
|
846
|
+
type: Input
|
847
|
+
}], product: [{
|
813
848
|
type: Input
|
814
849
|
}], clickFavoriteEvent: [{
|
815
850
|
type: Output
|
816
851
|
}], clickAddToCartEvent: [{
|
817
852
|
type: Output
|
853
|
+
}], clickClearEvent: [{
|
854
|
+
type: Output
|
818
855
|
}], clickCardEvent: [{
|
819
856
|
type: Output
|
820
857
|
}], quantityValueChanges: [{
|
@@ -1226,6 +1263,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
1226
1263
|
|
1227
1264
|
/**
|
1228
1265
|
* Список иконок.
|
1266
|
+
* TODO: TASK[#7779] Добавить иконки отдельных значков для соц. сетей после добавления их в кит дизайна.
|
1229
1267
|
*/
|
1230
1268
|
const scClientUiIconsName = [
|
1231
1269
|
'scIconCalendar',
|
@@ -1319,20 +1357,48 @@ const scClientUiIconsName = [
|
|
1319
1357
|
'scIconArrowDown',
|
1320
1358
|
'scIconApplication',
|
1321
1359
|
'scIconAddProfile',
|
1360
|
+
'scIconSocialCopy',
|
1361
|
+
'scIconSocialEmail',
|
1362
|
+
'scIconSocialFacebook',
|
1363
|
+
'scIconSocialInstagram',
|
1364
|
+
'scIconSocialQR',
|
1365
|
+
'scIconSocialTelegram',
|
1366
|
+
'scIconSocialViber',
|
1367
|
+
'scIconSocialVk',
|
1368
|
+
'scIconSocialWhatsapp',
|
1322
1369
|
];
|
1323
1370
|
|
1324
1371
|
/**
|
1325
1372
|
* Компонент кнопки "Поделиться".
|
1326
1373
|
*/
|
1327
|
-
/* TODO: TASK[#6895] Реализовать логику компонента кнопки "Поделиться".*/
|
1328
1374
|
class ScShareButtonComponent {
|
1375
|
+
constructor() {
|
1376
|
+
/**
|
1377
|
+
* Формат внешнего вида кнопки.
|
1378
|
+
*/
|
1379
|
+
this.appearance = 'secondary';
|
1380
|
+
/**
|
1381
|
+
* Размер кнопки.
|
1382
|
+
*/
|
1383
|
+
this.size = 'm';
|
1384
|
+
/**
|
1385
|
+
* Событие клика по кнопке "Поделиться".
|
1386
|
+
*/
|
1387
|
+
this.clickShareEvent = new EventEmitter();
|
1388
|
+
}
|
1329
1389
|
}
|
1330
1390
|
ScShareButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
1331
|
-
ScShareButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScShareButtonComponent, selector: "sc-share-button",
|
1391
|
+
ScShareButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScShareButtonComponent, selector: "sc-share-button", inputs: { appearance: "appearance", size: "size" }, outputs: { clickShareEvent: "clickShareEvent" }, ngImport: i0, template: "<button tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"clickShareEvent.emit()\"></button>\n", dependencies: [{ kind: "component", type: i3.TuiButtonComponent, selector: "button[tuiButton], button[tuiIconButton], a[tuiButton], a[tuiIconButton]", inputs: ["appearance", "disabled", "icon", "iconRight", "shape", "showLoader", "size"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
1332
1392
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonComponent, decorators: [{
|
1333
1393
|
type: Component,
|
1334
|
-
args: [{ selector: 'sc-share-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "
|
1335
|
-
}]
|
1394
|
+
args: [{ selector: 'sc-share-button', changeDetection: ChangeDetectionStrategy.OnPush, template: "<button tuiIconButton icon=\"scIconShare\" [appearance]=\"appearance\" [size]=\"size\" (click)=\"clickShareEvent.emit()\"></button>\n" }]
|
1395
|
+
}], propDecorators: { appearance: [{
|
1396
|
+
type: Input
|
1397
|
+
}], size: [{
|
1398
|
+
type: Input
|
1399
|
+
}], clickShareEvent: [{
|
1400
|
+
type: Output
|
1401
|
+
}] } });
|
1336
1402
|
|
1337
1403
|
/**
|
1338
1404
|
* Компонент карточки новости.
|
@@ -1343,17 +1409,23 @@ class ScNewsCardComponent {
|
|
1343
1409
|
* Событие клика по карточке новости.
|
1344
1410
|
*/
|
1345
1411
|
this.clickCardEvent = new EventEmitter();
|
1412
|
+
/**
|
1413
|
+
* Событие клика по кнопке "Поделиться" карточки новости.
|
1414
|
+
*/
|
1415
|
+
this.clickShareEvent = new EventEmitter();
|
1346
1416
|
}
|
1347
1417
|
}
|
1348
1418
|
ScNewsCardComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScNewsCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
1349
|
-
ScNewsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScNewsCardComponent, selector: "sc-news-card", inputs: { news: "news" }, outputs: { clickCardEvent: "clickCardEvent" }, ngImport: i0, template: "<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full bg-white overflow-hidden\">\n <div class=\"w-full flex justify-between align-baseline mb-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.created_at }}</p>\n <sc-share-button></sc-share-button>\n </div>\n <p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </p>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ScShareButtonComponent, selector: "sc-share-button" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
1419
|
+
ScNewsCardComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.3.0", type: ScNewsCardComponent, selector: "sc-news-card", inputs: { news: "news" }, outputs: { clickCardEvent: "clickCardEvent", clickShareEvent: "clickShareEvent" }, ngImport: i0, template: "<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full bg-white overflow-hidden\">\n <div class=\"w-full flex justify-between align-baseline mb-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.created_at }}</p>\n <sc-share-button (clickShareEvent)=\"clickShareEvent.emit()\"></sc-share-button>\n </div>\n <p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </p>\n </div>\n</div>\n", dependencies: [{ kind: "component", type: ScShareButtonComponent, selector: "sc-share-button", inputs: ["appearance", "size"], outputs: ["clickShareEvent"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
1350
1420
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScNewsCardComponent, decorators: [{
|
1351
1421
|
type: Component,
|
1352
|
-
args: [{ selector: 'sc-news-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full bg-white overflow-hidden\">\n <div class=\"w-full flex justify-between align-baseline mb-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.created_at }}</p>\n <sc-share-button></sc-share-button>\n </div>\n <p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </p>\n </div>\n</div>\n" }]
|
1422
|
+
args: [{ selector: 'sc-news-card', changeDetection: ChangeDetectionStrategy.OnPush, template: "<div (click)=\"clickCardEvent.emit(news)\" class=\"block relative h-82 w-70 cursor-pointer shadow-sc-2 rounded-lg overflow-hidden bg-white\">\n <div [style.background-image]=\"'url(' + news.image + ')'\" class=\"bg-no-repeat bg-center bg-cover bg-tui-base-02 w-full h-50\"></div>\n <div class=\"px-6 py-4.5 h-32 w-full bg-white overflow-hidden\">\n <div class=\"w-full flex justify-between align-baseline mb-2.5\">\n <p class=\"text-sm text-tui-text-02\">{{ news.created_at }}</p>\n <sc-share-button (clickShareEvent)=\"clickShareEvent.emit()\"></sc-share-button>\n </div>\n <p>\n <a class=\"text-sm font-bold text-black line-clamp-3\">{{ news.subject }}</a>\n </p>\n </div>\n</div>\n" }]
|
1353
1423
|
}], propDecorators: { news: [{
|
1354
1424
|
type: Input
|
1355
1425
|
}], clickCardEvent: [{
|
1356
1426
|
type: Output
|
1427
|
+
}], clickShareEvent: [{
|
1428
|
+
type: Output
|
1357
1429
|
}] } });
|
1358
1430
|
|
1359
1431
|
/**
|
@@ -1382,13 +1454,13 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImpor
|
|
1382
1454
|
class ScShareButtonModule {
|
1383
1455
|
}
|
1384
1456
|
ScShareButtonModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
1385
|
-
ScShareButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonModule, declarations: [ScShareButtonComponent], imports: [CommonModule], exports: [ScShareButtonComponent] });
|
1386
|
-
ScShareButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonModule, imports: [CommonModule] });
|
1457
|
+
ScShareButtonModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonModule, declarations: [ScShareButtonComponent], imports: [CommonModule, TuiButtonModule], exports: [ScShareButtonComponent] });
|
1458
|
+
ScShareButtonModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonModule, imports: [CommonModule, TuiButtonModule] });
|
1387
1459
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.3.0", ngImport: i0, type: ScShareButtonModule, decorators: [{
|
1388
1460
|
type: NgModule,
|
1389
1461
|
args: [{
|
1390
1462
|
declarations: [ScShareButtonComponent],
|
1391
|
-
imports: [CommonModule],
|
1463
|
+
imports: [CommonModule, TuiButtonModule],
|
1392
1464
|
exports: [ScShareButtonComponent],
|
1393
1465
|
}]
|
1394
1466
|
}] });
|