Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | 2x 2x 2x 2x 2x 3x 3x 3x 3x 3x 1x 1x 1x 1x 1x 1x 3x | import { ChangeDetectionStrategy, ChangeDetectorRef, Component, Input, OnChanges, OnInit, SimpleChange, SimpleChanges, } from '@angular/core'; import { FormGroup } from '@angular/forms'; import { FormlyFieldConfig } from '@ngx-formly/core'; import { CheckoutFacade } from 'ish-core/facades/checkout.facade'; import { Basket } from 'ish-core/models/basket/basket.model'; /** * The Basket Merchant Message Component displays a message to merchant input. * It provides the add message to merchant functionality. * */ @Component({ selector: 'ish-basket-merchant-message', templateUrl: './basket-merchant-message.component.html', changeDetection: ChangeDetectionStrategy.OnPush, }) export class BasketMerchantMessageComponent implements OnInit, OnChanges { @Input({ required: true }) basket: Basket; form = new FormGroup({}); model: { messageToMerchant: string } = { messageToMerchant: '' }; fields: FormlyFieldConfig[]; showSuccessMessage = false; constructor(private checkoutFacade: CheckoutFacade, private cd: ChangeDetectorRef) {} ngOnInit() { this.fields = [ { key: 'messageToMerchant', type: 'ish-textarea-field', props: { label: 'checkout.basket_merchant_message.label', maxLength: 1000, rows: 2, }, }, ]; } ngOnChanges(changes: SimpleChanges) { if (this.basket) { this.successMessage(changes.basket); this.model = { ...this.model, messageToMerchant: this.basket?.messageToMerchant ? this.basket?.messageToMerchant : '', }; } } private successMessage(basketChange: SimpleChange) { if ( basketChange?.previousValue?.messageToMerchant !== basketChange?.currentValue?.messageToMerchant && !basketChange?.firstChange ) { this.showSuccessMessage = true; setTimeout(() => { this.showSuccessMessage = false; this.cd.markForCheck(); }, 5000); } } get disabled() { return !this.basket?.messageToMerchant && !this.form.get('messageToMerchant')?.value; } submitForm(): void { this.checkoutFacade.setBasketMessageToMerchant(this.form.get('messageToMerchant')?.value); } } |