@osovitny/anatoly 3.17.85 → 3.17.86
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/billing/billing.module.mjs +17 -7
- package/esm2022/lib/billing/components/braintree/braintree.component.mjs +2 -2
- package/esm2022/lib/billing/components/exports.mjs +8 -5
- package/esm2022/lib/billing/components/index.mjs +7 -4
- package/esm2022/lib/billing/components/order-summary/order-summary.component.mjs +152 -0
- package/esm2022/lib/billing/components/payment-methods/payment-methods.component.mjs +105 -0
- package/esm2022/lib/billing/components/payment-options/payment-options.component.mjs +97 -0
- package/esm2022/lib/billing/components/stripe/stripe.component.mjs +2 -2
- package/esm2022/lib/billing/services/payments.service.mjs +2 -2
- package/esm2022/lib/billing/utils.mjs +2 -2
- package/esm2022/lib/core/consts/app-settings.mjs +2 -2
- package/esm2022/lib/core/consts/formats.mjs +2 -2
- package/esm2022/lib/core/consts/ga.mjs +2 -2
- package/esm2022/lib/core/consts/storageKeys.mjs +2 -2
- package/esm2022/lib/core/enums/billing.mjs +2 -2
- package/esm2022/lib/core/enums/enums.mjs +2 -2
- package/fesm2022/osovitny-anatoly.mjs +757 -418
- package/fesm2022/osovitny-anatoly.mjs.map +1 -1
- package/lib/billing/billing.module.d.ts +12 -8
- package/lib/billing/components/exports.d.ts +7 -4
- package/lib/billing/components/index.d.ts +2 -2
- package/lib/billing/components/order-summary/order-summary.component.d.ts +22 -0
- package/lib/billing/components/payment-methods/payment-methods.component.d.ts +20 -0
- package/lib/billing/components/payment-options/payment-options.component.d.ts +18 -0
- package/package.json +1 -1
|
@@ -1,8 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, Inject, EventEmitter, Output, Pipe, APP_INITIALIZER, Injector, NgModule, Component, Input, ChangeDetectionStrategy, ViewChild, ViewEncapsulation, Directive, HostBinding, HostListener, Optional, SkipSelf } from '@angular/core';
|
|
3
|
-
import * as dropin from 'braintree-web-drop-in';
|
|
4
|
-
import * as i2$1 from '@angular/forms';
|
|
5
|
-
import { FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
6
3
|
import js_beautify from 'js-beautify';
|
|
7
4
|
import * as i1 from '@angular/router';
|
|
8
5
|
import { NavigationEnd, NavigationStart, NavigationCancel, NavigationError, RouterModule } from '@angular/router';
|
|
@@ -25,7 +22,10 @@ import * as i1$4 from 'ngx-toastr';
|
|
|
25
22
|
import { ToastrModule } from 'ngx-toastr';
|
|
26
23
|
import * as i1$5 from '@angular/platform-browser';
|
|
27
24
|
import { v4 } from 'uuid';
|
|
28
|
-
import * as i2 from '@
|
|
25
|
+
import * as i2 from '@angular/forms';
|
|
26
|
+
import { FormControl, Validators, ReactiveFormsModule, FormsModule } from '@angular/forms';
|
|
27
|
+
import * as dropin from 'braintree-web-drop-in';
|
|
28
|
+
import * as i2$1 from '@progress/kendo-angular-dialog';
|
|
29
29
|
import { DialogsModule } from '@progress/kendo-angular-dialog';
|
|
30
30
|
import { loadStripe } from '@stripe/stripe-js';
|
|
31
31
|
import * as i1$6 from '@fortawesome/angular-fontawesome';
|
|
@@ -85,7 +85,7 @@ const ClientApps = AppCoreSettings?.clientApps;
|
|
|
85
85
|
Created:
|
|
86
86
|
1 Apr 2024
|
|
87
87
|
|
|
88
|
-
Copyright (c) 2016-
|
|
88
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
89
89
|
</file>
|
|
90
90
|
*/
|
|
91
91
|
function getAppSettingsById(id) {
|
|
@@ -127,7 +127,7 @@ const AppSettings = getAppSettingsByName(AppName);
|
|
|
127
127
|
Created:
|
|
128
128
|
1 Apr 2024
|
|
129
129
|
|
|
130
|
-
Copyright (c) 2016-
|
|
130
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
131
131
|
</file>
|
|
132
132
|
*/
|
|
133
133
|
const dateTimeFormats = {
|
|
@@ -153,7 +153,7 @@ const timeFormats = {
|
|
|
153
153
|
Created:
|
|
154
154
|
11 Nov 2024
|
|
155
155
|
|
|
156
|
-
Copyright (c) 2016-
|
|
156
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
157
157
|
</file>
|
|
158
158
|
*/
|
|
159
159
|
const GAEvents = {
|
|
@@ -592,7 +592,7 @@ class XmlFormatter {
|
|
|
592
592
|
Created:
|
|
593
593
|
11 Nov 2024
|
|
594
594
|
|
|
595
|
-
Copyright (c) 2016-
|
|
595
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
596
596
|
</file>
|
|
597
597
|
*/
|
|
598
598
|
var DiscountCodeType;
|
|
@@ -643,7 +643,7 @@ var PaymentStage;
|
|
|
643
643
|
Created:
|
|
644
644
|
11 Nov 2024
|
|
645
645
|
|
|
646
|
-
Copyright (c) 2016-
|
|
646
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
647
647
|
</file>
|
|
648
648
|
*/
|
|
649
649
|
var DataViewType;
|
|
@@ -1068,7 +1068,7 @@ class Stopwatch {
|
|
|
1068
1068
|
Created:
|
|
1069
1069
|
28 Apr 2024
|
|
1070
1070
|
|
|
1071
|
-
Copyright (c) 2016-
|
|
1071
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
1072
1072
|
</file>
|
|
1073
1073
|
*/
|
|
1074
1074
|
const AppContextStorageKeys = {
|
|
@@ -3729,210 +3729,6 @@ class ComponentBase {
|
|
|
3729
3729
|
}] }); })();
|
|
3730
3730
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(ComponentBase, { className: "ComponentBase", filePath: "lib\\ui\\components\\base\\components\\component.ts", lineNumber: 26 }); })();
|
|
3731
3731
|
|
|
3732
|
-
/*
|
|
3733
|
-
<file>
|
|
3734
|
-
Project:
|
|
3735
|
-
@osovitny/anatoly
|
|
3736
|
-
|
|
3737
|
-
Authors:
|
|
3738
|
-
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
3739
|
-
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
3740
|
-
|
|
3741
|
-
Created:
|
|
3742
|
-
20 Nov 2017
|
|
3743
|
-
|
|
3744
|
-
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
3745
|
-
</file>
|
|
3746
|
-
*/
|
|
3747
|
-
//Node
|
|
3748
|
-
class EditComponentBase extends ComponentBase {
|
|
3749
|
-
constructor() {
|
|
3750
|
-
super();
|
|
3751
|
-
//Modes
|
|
3752
|
-
this.isAddMode = false;
|
|
3753
|
-
this.isEditMode = false;
|
|
3754
|
-
this.formSubmitted = false;
|
|
3755
|
-
this.controlName = null;
|
|
3756
|
-
this.isEditMode = QSUtils.idExists();
|
|
3757
|
-
this.isAddMode = !this.isEditMode;
|
|
3758
|
-
}
|
|
3759
|
-
isControlValid(name, frmGroup = null) {
|
|
3760
|
-
return !this.isControlInvalid(name, frmGroup);
|
|
3761
|
-
}
|
|
3762
|
-
isControlInvalid(name, frmGroup = null) {
|
|
3763
|
-
if (typeof name === "undefined" || name == "") {
|
|
3764
|
-
return false;
|
|
3765
|
-
}
|
|
3766
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3767
|
-
if (!fg) {
|
|
3768
|
-
return false;
|
|
3769
|
-
}
|
|
3770
|
-
let control = fg.get(name);
|
|
3771
|
-
if (control) {
|
|
3772
|
-
return ((this.formSubmitted && control.invalid) || (control.touched && control.invalid));
|
|
3773
|
-
}
|
|
3774
|
-
return false;
|
|
3775
|
-
}
|
|
3776
|
-
//FormGroup functions
|
|
3777
|
-
getFormValue(name, frmGroup = null) {
|
|
3778
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3779
|
-
return fg.controls[name].value;
|
|
3780
|
-
}
|
|
3781
|
-
setFormValue(name, value, frmGroup = null) {
|
|
3782
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3783
|
-
fg.controls[name].setValue(value);
|
|
3784
|
-
}
|
|
3785
|
-
getFormGroupValue(groupName, name, frmGroup = null) {
|
|
3786
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3787
|
-
return fg.controls[groupName].get(name).value;
|
|
3788
|
-
}
|
|
3789
|
-
setFormGroupValue(groupName, name, value, frmGroup = null) {
|
|
3790
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3791
|
-
fg.controls[groupName].get(name).setValue(value);
|
|
3792
|
-
}
|
|
3793
|
-
/**
|
|
3794
|
-
* Add control to form group
|
|
3795
|
-
* @param name
|
|
3796
|
-
* @param formControl
|
|
3797
|
-
* @param frmGroup
|
|
3798
|
-
*/
|
|
3799
|
-
addControl(name, formControl, frmGroup = null) {
|
|
3800
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3801
|
-
fg.addControl(name, formControl);
|
|
3802
|
-
}
|
|
3803
|
-
/**
|
|
3804
|
-
* Removes control from form group
|
|
3805
|
-
* @param name
|
|
3806
|
-
* @param frmGroup
|
|
3807
|
-
*/
|
|
3808
|
-
removeControl(name, frmGroup = null) {
|
|
3809
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3810
|
-
if (fg.get(name)) {
|
|
3811
|
-
fg.removeControl(name);
|
|
3812
|
-
}
|
|
3813
|
-
}
|
|
3814
|
-
/**
|
|
3815
|
-
* return new form control
|
|
3816
|
-
* @param formState
|
|
3817
|
-
* @param validatorOrOpts
|
|
3818
|
-
* @param asyncValidator
|
|
3819
|
-
*/
|
|
3820
|
-
createFormControl(formState, validatorOrOpts, asyncValidator) {
|
|
3821
|
-
return new FormControl(formState, validatorOrOpts, asyncValidator);
|
|
3822
|
-
}
|
|
3823
|
-
/**
|
|
3824
|
-
* Set error to control
|
|
3825
|
-
* @param controlName formControl name
|
|
3826
|
-
* @param err error expect {erroname: boolean} format
|
|
3827
|
-
* @param frmGroup
|
|
3828
|
-
*/
|
|
3829
|
-
setControlError(controlName, err, frmGroup = null) {
|
|
3830
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3831
|
-
fg.get(controlName)?.setErrors(err);
|
|
3832
|
-
}
|
|
3833
|
-
/**
|
|
3834
|
-
* Set {invalid: true} for the specified form
|
|
3835
|
-
* @param controlName form control name
|
|
3836
|
-
* @param frmGroup
|
|
3837
|
-
*/
|
|
3838
|
-
setInValidError(controlName, frmGroup = null) {
|
|
3839
|
-
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
3840
|
-
fg.get(controlName)?.setErrors({ invalid: true });
|
|
3841
|
-
}
|
|
3842
|
-
/**
|
|
3843
|
-
* returns formgroup controls.
|
|
3844
|
-
* main use case is used in html pages
|
|
3845
|
-
*/
|
|
3846
|
-
get fc() {
|
|
3847
|
-
return this.formGroup.controls;
|
|
3848
|
-
}
|
|
3849
|
-
get isNgModelBased() {
|
|
3850
|
-
return this.controlName == null;
|
|
3851
|
-
}
|
|
3852
|
-
static { this.ɵfac = function EditComponentBase_Factory(t) { return new (t || EditComponentBase)(); }; }
|
|
3853
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EditComponentBase, selectors: [["ng-component"]], inputs: { formGroup: "formGroup", formSubmitted: "formSubmitted", controlName: "controlName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function EditComponentBase_Template(rf, ctx) { }, encapsulation: 2 }); }
|
|
3854
|
-
}
|
|
3855
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EditComponentBase, [{
|
|
3856
|
-
type: Component,
|
|
3857
|
-
args: [{
|
|
3858
|
-
template: ''
|
|
3859
|
-
}]
|
|
3860
|
-
}], () => [], { formGroup: [{
|
|
3861
|
-
type: Input
|
|
3862
|
-
}], formSubmitted: [{
|
|
3863
|
-
type: Input
|
|
3864
|
-
}], controlName: [{
|
|
3865
|
-
type: Input
|
|
3866
|
-
}] }); })();
|
|
3867
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EditComponentBase, { className: "EditComponentBase", filePath: "lib\\ui\\components\\base\\components\\edit.component.ts", lineNumber: 28 }); })();
|
|
3868
|
-
|
|
3869
|
-
/*
|
|
3870
|
-
<file>
|
|
3871
|
-
Project:
|
|
3872
|
-
@osovitny/anatoly
|
|
3873
|
-
|
|
3874
|
-
Authors:
|
|
3875
|
-
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
3876
|
-
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
3877
|
-
|
|
3878
|
-
Created:
|
|
3879
|
-
24 Jan 2022
|
|
3880
|
-
|
|
3881
|
-
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
3882
|
-
</file>
|
|
3883
|
-
*/
|
|
3884
|
-
//Node
|
|
3885
|
-
class DialogBase extends EditComponentBase {
|
|
3886
|
-
get isOpen() {
|
|
3887
|
-
return this._isOpen;
|
|
3888
|
-
}
|
|
3889
|
-
set isOpen(value) {
|
|
3890
|
-
if (value) {
|
|
3891
|
-
if (this.osOnBeforeOpen) {
|
|
3892
|
-
this.osOnBeforeOpen();
|
|
3893
|
-
}
|
|
3894
|
-
this.opened.emit();
|
|
3895
|
-
}
|
|
3896
|
-
this._isOpen = value;
|
|
3897
|
-
}
|
|
3898
|
-
constructor() {
|
|
3899
|
-
super();
|
|
3900
|
-
//Private
|
|
3901
|
-
this._isOpen = false;
|
|
3902
|
-
//Public
|
|
3903
|
-
this.themeColor = "primary";
|
|
3904
|
-
//Events
|
|
3905
|
-
this.opened = new EventEmitter();
|
|
3906
|
-
this.closed = new EventEmitter();
|
|
3907
|
-
}
|
|
3908
|
-
open() {
|
|
3909
|
-
this.isOpen = true;
|
|
3910
|
-
}
|
|
3911
|
-
close(returnValue = "OK") {
|
|
3912
|
-
this.isOpen = false;
|
|
3913
|
-
this.closed.emit(returnValue);
|
|
3914
|
-
}
|
|
3915
|
-
cancel() {
|
|
3916
|
-
this.isOpen = false;
|
|
3917
|
-
this.closed.emit(-1);
|
|
3918
|
-
}
|
|
3919
|
-
static { this.ɵfac = function DialogBase_Factory(t) { return new (t || DialogBase)(); }; }
|
|
3920
|
-
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogBase, selectors: [["ng-component"]], inputs: { isOpen: "isOpen" }, outputs: { opened: "opened", closed: "closed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DialogBase_Template(rf, ctx) { }, encapsulation: 2 }); }
|
|
3921
|
-
}
|
|
3922
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogBase, [{
|
|
3923
|
-
type: Component,
|
|
3924
|
-
args: [{
|
|
3925
|
-
template: ''
|
|
3926
|
-
}]
|
|
3927
|
-
}], () => [], { isOpen: [{
|
|
3928
|
-
type: Input
|
|
3929
|
-
}], opened: [{
|
|
3930
|
-
type: Output
|
|
3931
|
-
}], closed: [{
|
|
3932
|
-
type: Output
|
|
3933
|
-
}] }); })();
|
|
3934
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogBase, { className: "DialogBase", filePath: "lib\\ui\\components\\base\\dialog.ts", lineNumber: 27 }); })();
|
|
3935
|
-
|
|
3936
3732
|
/*
|
|
3937
3733
|
<file>
|
|
3938
3734
|
Project:
|
|
@@ -3987,12 +3783,675 @@ class PaymentsApiService extends ApiServiceBase {
|
|
|
3987
3783
|
}
|
|
3988
3784
|
});
|
|
3989
3785
|
}
|
|
3990
|
-
static { this.ɵfac = function PaymentsApiService_Factory(t) { return new (t || PaymentsApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
|
|
3991
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaymentsApiService, factory: PaymentsApiService.ɵfac }); }
|
|
3786
|
+
static { this.ɵfac = function PaymentsApiService_Factory(t) { return new (t || PaymentsApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
|
|
3787
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaymentsApiService, factory: PaymentsApiService.ɵfac }); }
|
|
3788
|
+
}
|
|
3789
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentsApiService, [{
|
|
3790
|
+
type: Injectable
|
|
3791
|
+
}], () => [{ type: i1$1.HttpClient }], null); })();
|
|
3792
|
+
|
|
3793
|
+
/*
|
|
3794
|
+
<file>
|
|
3795
|
+
Project:
|
|
3796
|
+
@osovitny/anatoly
|
|
3797
|
+
|
|
3798
|
+
Authors:
|
|
3799
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
3800
|
+
Dhruv Agarwal dhruv.agarwal@osovitny.com
|
|
3801
|
+
|
|
3802
|
+
Created:
|
|
3803
|
+
11 Aug 2024
|
|
3804
|
+
|
|
3805
|
+
Details:
|
|
3806
|
+
https://blog.thoughtram.io/angular/2017/02/21/using-zones-in-angular-for-better-performance.html
|
|
3807
|
+
|
|
3808
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
3809
|
+
</file>
|
|
3810
|
+
*/
|
|
3811
|
+
//Node
|
|
3812
|
+
class PaymentsService {
|
|
3813
|
+
constructor(zone, api, ns, ga) {
|
|
3814
|
+
this.zone = zone;
|
|
3815
|
+
this.api = api;
|
|
3816
|
+
this.ns = ns;
|
|
3817
|
+
this.ga = ga;
|
|
3818
|
+
this.paymentInProgress = false;
|
|
3819
|
+
this.isPaymentFailed = false;
|
|
3820
|
+
this.subtotal = 0;
|
|
3821
|
+
this.discountCode = null;
|
|
3822
|
+
this.discountPercentage = null;
|
|
3823
|
+
this.discountAmount = null;
|
|
3824
|
+
this.total = 0;
|
|
3825
|
+
this.currency = 'USD';
|
|
3826
|
+
//Private Streams
|
|
3827
|
+
this._discountCodeApplied = new Subject();
|
|
3828
|
+
this._paymentAdded = new Subject();
|
|
3829
|
+
this._showStripeDialog = new Subject();
|
|
3830
|
+
this._showBraintreeDialog = new Subject();
|
|
3831
|
+
//Public Streams
|
|
3832
|
+
this.discountCodeApplied$ = this._discountCodeApplied.asObservable();
|
|
3833
|
+
this.paymentAdded$ = this._paymentAdded.asObservable();
|
|
3834
|
+
this.showStripeDialog$ = this._showStripeDialog.asObservable();
|
|
3835
|
+
this.showBraintreeDialog$ = this._showBraintreeDialog.asObservable();
|
|
3836
|
+
}
|
|
3837
|
+
setDefaults() {
|
|
3838
|
+
}
|
|
3839
|
+
setValues() {
|
|
3840
|
+
}
|
|
3841
|
+
//fires
|
|
3842
|
+
fireDiscountCodeApplied() {
|
|
3843
|
+
this._discountCodeApplied.next(this.discountCode);
|
|
3844
|
+
}
|
|
3845
|
+
firePaymentAdded(paymentId) {
|
|
3846
|
+
this._paymentAdded.next(paymentId);
|
|
3847
|
+
}
|
|
3848
|
+
//Public
|
|
3849
|
+
init() {
|
|
3850
|
+
this.setDefaults();
|
|
3851
|
+
this.setValues();
|
|
3852
|
+
}
|
|
3853
|
+
resetState() {
|
|
3854
|
+
this.subtotal = 0;
|
|
3855
|
+
this.total = 0;
|
|
3856
|
+
}
|
|
3857
|
+
getTotal() {
|
|
3858
|
+
let subtotal = this.subtotal;
|
|
3859
|
+
if (this.discountAmount != 0) {
|
|
3860
|
+
subtotal = subtotal - this.discountAmount;
|
|
3861
|
+
}
|
|
3862
|
+
else if (this.discountPercentage != 0) {
|
|
3863
|
+
subtotal = subtotal - (subtotal * (this.discountPercentage / 100));
|
|
3864
|
+
subtotal = +subtotal.toFixed(2);
|
|
3865
|
+
}
|
|
3866
|
+
return subtotal > 0 ? subtotal : 0;
|
|
3867
|
+
}
|
|
3868
|
+
//DiscountCode
|
|
3869
|
+
applyDiscountCode(discountCode, data) {
|
|
3870
|
+
if (!data) {
|
|
3871
|
+
return;
|
|
3872
|
+
}
|
|
3873
|
+
this.discountCode = discountCode;
|
|
3874
|
+
if (data.amount) {
|
|
3875
|
+
this.discountPercentage = 0;
|
|
3876
|
+
this.discountAmount = parseInt(data.amount);
|
|
3877
|
+
}
|
|
3878
|
+
else if (data.percentage) {
|
|
3879
|
+
this.discountPercentage = parseInt(data.percentage);
|
|
3880
|
+
this.discountAmount = 0;
|
|
3881
|
+
}
|
|
3882
|
+
this.fireDiscountCodeApplied();
|
|
3883
|
+
}
|
|
3884
|
+
getDiscountCodeAsString() {
|
|
3885
|
+
if (this.discountAmount > 0) {
|
|
3886
|
+
return "$" + this.discountAmount;
|
|
3887
|
+
}
|
|
3888
|
+
else if (this.discountPercentage > 0) {
|
|
3889
|
+
return this.discountPercentage + "%";
|
|
3890
|
+
}
|
|
3891
|
+
return '$0';
|
|
3892
|
+
}
|
|
3893
|
+
openStripePaymentDialog() {
|
|
3894
|
+
this._showStripeDialog.next(true);
|
|
3895
|
+
}
|
|
3896
|
+
openBraintreePaymentDialog() {
|
|
3897
|
+
this._showBraintreeDialog.next(true);
|
|
3898
|
+
}
|
|
3899
|
+
closeBraintreePaymentDialog() {
|
|
3900
|
+
this._showBraintreeDialog.next(false);
|
|
3901
|
+
}
|
|
3902
|
+
createStripeSession(title, description, image) {
|
|
3903
|
+
const amount = this.getTotal();
|
|
3904
|
+
const currency = this.currency;
|
|
3905
|
+
return this.api.createStripeSession(amount, currency, title, description, image);
|
|
3906
|
+
}
|
|
3907
|
+
createBraintreeToken() {
|
|
3908
|
+
return this.api.createBraintreeToken();
|
|
3909
|
+
}
|
|
3910
|
+
pay(paidFor, payId, payStatus, payDetails) {
|
|
3911
|
+
//GA
|
|
3912
|
+
this.ga.event(GABillingEvents.payment);
|
|
3913
|
+
let paidForAsString = JSON.stringify(paidFor);
|
|
3914
|
+
let payType = this.selectedPaymentType;
|
|
3915
|
+
let payMethod = this.selectedPaymentMethod;
|
|
3916
|
+
//Amount
|
|
3917
|
+
let subtotal = this.subtotal;
|
|
3918
|
+
let promoCode = this.discountCode;
|
|
3919
|
+
let total = this.getTotal();
|
|
3920
|
+
let currency = this.currency;
|
|
3921
|
+
if (total == 0) {
|
|
3922
|
+
payMethod = PaymentMethod.None;
|
|
3923
|
+
}
|
|
3924
|
+
this.zone.run(() => {
|
|
3925
|
+
this.api.pay(paidForAsString, payMethod,
|
|
3926
|
+
//Amount
|
|
3927
|
+
subtotal, promoCode, total, currency,
|
|
3928
|
+
//Payment method details (PayPal/Stripe/Braintree)
|
|
3929
|
+
payId, payStatus, payDetails, (data) => {
|
|
3930
|
+
if (!data || !data?.isPaymentValid) {
|
|
3931
|
+
this.paymentFailed(PaymentStage.External);
|
|
3932
|
+
return;
|
|
3933
|
+
}
|
|
3934
|
+
if (payMethod == PaymentMethod.CreditCard) {
|
|
3935
|
+
//this.closeBraintreePaymentDialog();
|
|
3936
|
+
}
|
|
3937
|
+
this.paymentInProgress = false;
|
|
3938
|
+
this.firePaymentAdded(data.paymentId);
|
|
3939
|
+
}, () => {
|
|
3940
|
+
this.paymentFailed(PaymentStage.External);
|
|
3941
|
+
});
|
|
3942
|
+
});
|
|
3943
|
+
}
|
|
3944
|
+
paymentFailed(stage) {
|
|
3945
|
+
this.paymentStage = stage;
|
|
3946
|
+
this.paymentInProgress = false;
|
|
3947
|
+
this.isPaymentFailed = true;
|
|
3948
|
+
this.ns.error("Payment Failed");
|
|
3949
|
+
}
|
|
3950
|
+
static { this.ɵfac = function PaymentsService_Factory(t) { return new (t || PaymentsService)(i0.ɵɵinject(i0.NgZone), i0.ɵɵinject(PaymentsApiService), i0.ɵɵinject(NotificationService), i0.ɵɵinject(GoogleAnalyticsService)); }; }
|
|
3951
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: PaymentsService, factory: PaymentsService.ɵfac }); }
|
|
3952
|
+
}
|
|
3953
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentsService, [{
|
|
3954
|
+
type: Injectable
|
|
3955
|
+
}], () => [{ type: i0.NgZone }, { type: PaymentsApiService }, { type: NotificationService }, { type: GoogleAnalyticsService }], null); })();
|
|
3956
|
+
|
|
3957
|
+
/*
|
|
3958
|
+
<file>
|
|
3959
|
+
Project:
|
|
3960
|
+
@osovitny/anatoly
|
|
3961
|
+
|
|
3962
|
+
Authors:
|
|
3963
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
3964
|
+
|
|
3965
|
+
Created:
|
|
3966
|
+
4 Jun 2024
|
|
3967
|
+
|
|
3968
|
+
Copyright (c) 2017-2025 Osovitny Inc. All rights reserved.
|
|
3969
|
+
</file>
|
|
3970
|
+
*/
|
|
3971
|
+
//Node
|
|
3972
|
+
class DiscountCodesApiService extends ApiServiceBase {
|
|
3973
|
+
constructor(http) {
|
|
3974
|
+
super(http);
|
|
3975
|
+
this.http = http;
|
|
3976
|
+
this.baseUrl = `${ApiUrl}/billing/discountCodes`;
|
|
3977
|
+
}
|
|
3978
|
+
getDiscountCode(code) {
|
|
3979
|
+
return this.get('getDiscountCode', { code });
|
|
3980
|
+
}
|
|
3981
|
+
static { this.ɵfac = function DiscountCodesApiService_Factory(t) { return new (t || DiscountCodesApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
|
|
3982
|
+
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DiscountCodesApiService, factory: DiscountCodesApiService.ɵfac }); }
|
|
3983
|
+
}
|
|
3984
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DiscountCodesApiService, [{
|
|
3985
|
+
type: Injectable
|
|
3986
|
+
}], () => [{ type: i1$1.HttpClient }], null); })();
|
|
3987
|
+
|
|
3988
|
+
/*
|
|
3989
|
+
<file>
|
|
3990
|
+
Project:
|
|
3991
|
+
@osovitny/anatoly
|
|
3992
|
+
|
|
3993
|
+
Authors:
|
|
3994
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
3995
|
+
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
3996
|
+
|
|
3997
|
+
Created:
|
|
3998
|
+
29 May 2024
|
|
3999
|
+
|
|
4000
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4001
|
+
</file>
|
|
4002
|
+
*/
|
|
4003
|
+
//Node
|
|
4004
|
+
const _c0$h = a0 => ({ "show": a0 });
|
|
4005
|
+
function OrderSummaryComponent_Conditional_17_Template(rf, ctx) { if (rf & 1) {
|
|
4006
|
+
const _r2 = i0.ɵɵgetCurrentView();
|
|
4007
|
+
i0.ɵɵelementStart(0, "div", 12)(1, "div", 13)(2, "input", 14);
|
|
4008
|
+
i0.ɵɵlistener("ngModelChange", function OrderSummaryComponent_Conditional_17_Template_input_ngModelChange_2_listener($event) { i0.ɵɵrestoreView(_r2); const ctx_r1 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r1.promoCode = $event); });
|
|
4009
|
+
i0.ɵɵelementEnd();
|
|
4010
|
+
i0.ɵɵelementStart(3, "button", 15);
|
|
4011
|
+
i0.ɵɵlistener("click", function OrderSummaryComponent_Conditional_17_Template_button_click_3_listener() { i0.ɵɵrestoreView(_r2); const ctx_r3 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r3.onApplyPromoCode()); });
|
|
4012
|
+
i0.ɵɵtext(4, "Apply");
|
|
4013
|
+
i0.ɵɵelementEnd()()();
|
|
4014
|
+
} if (rf & 2) {
|
|
4015
|
+
const ctx_r0 = i0.ɵɵnextContext();
|
|
4016
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(2, _c0$h, ctx_r0.showPromoCode));
|
|
4017
|
+
i0.ɵɵadvance(2);
|
|
4018
|
+
i0.ɵɵproperty("ngModel", ctx_r0.promoCode);
|
|
4019
|
+
} }
|
|
4020
|
+
const _c1$1 = ["*"];
|
|
4021
|
+
class OrderSummaryComponent extends ComponentBase {
|
|
4022
|
+
constructor(ps, api, ns) {
|
|
4023
|
+
super();
|
|
4024
|
+
this.ps = ps;
|
|
4025
|
+
this.api = api;
|
|
4026
|
+
this.ns = ns;
|
|
4027
|
+
this.showPromoCode = false;
|
|
4028
|
+
}
|
|
4029
|
+
ngOnInit() {
|
|
4030
|
+
this.setDefaults();
|
|
4031
|
+
this.setValues();
|
|
4032
|
+
}
|
|
4033
|
+
setDefaults() { }
|
|
4034
|
+
setValues() { }
|
|
4035
|
+
//Tos
|
|
4036
|
+
toTotal() {
|
|
4037
|
+
return this.ps.getTotal();
|
|
4038
|
+
}
|
|
4039
|
+
//Events
|
|
4040
|
+
onTogglePromoCode() {
|
|
4041
|
+
this.showPromoCode = !this.showPromoCode;
|
|
4042
|
+
}
|
|
4043
|
+
onApplyPromoCode() {
|
|
4044
|
+
if (!this.promoCode) {
|
|
4045
|
+
this.ns.info("Please enter a promo code");
|
|
4046
|
+
return;
|
|
4047
|
+
}
|
|
4048
|
+
this.api.getDiscountCode(this.promoCode).subscribe({
|
|
4049
|
+
next: (data) => {
|
|
4050
|
+
if (!data) {
|
|
4051
|
+
this.ns.error("Invalid Promo Code");
|
|
4052
|
+
return;
|
|
4053
|
+
}
|
|
4054
|
+
switch (data.status) {
|
|
4055
|
+
case DiscountCodeStatus.Exist:
|
|
4056
|
+
this.ps.applyDiscountCode(this.promoCode, data.code);
|
|
4057
|
+
this.discount = this.ps.getDiscountCodeAsString();
|
|
4058
|
+
this.ns.success("Discount applied successfully");
|
|
4059
|
+
break;
|
|
4060
|
+
case DiscountCodeStatus.NotFound:
|
|
4061
|
+
this.ns.error("Invalid Promo Code");
|
|
4062
|
+
break;
|
|
4063
|
+
case DiscountCodeStatus.AlreadyUsed:
|
|
4064
|
+
this.ns.error("Promo Code already applied");
|
|
4065
|
+
break;
|
|
4066
|
+
default:
|
|
4067
|
+
this.ns.error("Invalid Promo Code");
|
|
4068
|
+
break;
|
|
4069
|
+
}
|
|
4070
|
+
},
|
|
4071
|
+
error: (e) => {
|
|
4072
|
+
this.ns.error();
|
|
4073
|
+
},
|
|
4074
|
+
});
|
|
4075
|
+
}
|
|
4076
|
+
static { this.ɵfac = function OrderSummaryComponent_Factory(t) { return new (t || OrderSummaryComponent)(i0.ɵɵdirectiveInject(PaymentsService), i0.ɵɵdirectiveInject(DiscountCodesApiService), i0.ɵɵdirectiveInject(NotificationService)); }; }
|
|
4077
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: OrderSummaryComponent, selectors: [["anatoly-billing-order-summary"]], features: [i0.ɵɵInheritDefinitionFeature], ngContentSelectors: _c1$1, decls: 30, vars: 7, consts: [[1, "card"], [1, "card-header"], [1, "card-title"], [1, "card-body"], [1, "order-summary"], [1, "subtotal"], [1, "divider"], [1, "add-promo-code", 3, "ngClass", "click"], [1, "has-arrow"], ["class", "add-promo-code", 3, "ngClass"], [1, "discounts"], [1, "total"], [1, "add-promo-code", 3, "ngClass"], [1, "promo-code"], ["type", "text", "placeholder", "Promo code", 1, "input-text", 3, "ngModel", "ngModelChange"], [1, "btn", 3, "click"]], template: function OrderSummaryComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4078
|
+
i0.ɵɵprojectionDef();
|
|
4079
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h2");
|
|
4080
|
+
i0.ɵɵtext(4, "Order Summary");
|
|
4081
|
+
i0.ɵɵelementEnd()()();
|
|
4082
|
+
i0.ɵɵelementStart(5, "div", 3)(6, "div", 4);
|
|
4083
|
+
i0.ɵɵprojection(7);
|
|
4084
|
+
i0.ɵɵelementStart(8, "div", 5)(9, "span");
|
|
4085
|
+
i0.ɵɵtext(10, "Subtotal:");
|
|
4086
|
+
i0.ɵɵelementEnd();
|
|
4087
|
+
i0.ɵɵelementStart(11, "strong");
|
|
4088
|
+
i0.ɵɵtext(12);
|
|
4089
|
+
i0.ɵɵelementEnd()();
|
|
4090
|
+
i0.ɵɵelement(13, "div", 6);
|
|
4091
|
+
i0.ɵɵelementStart(14, "div", 7);
|
|
4092
|
+
i0.ɵɵlistener("click", function OrderSummaryComponent_Template_div_click_14_listener() { return ctx.onTogglePromoCode(); });
|
|
4093
|
+
i0.ɵɵelementStart(15, "span", 8);
|
|
4094
|
+
i0.ɵɵtext(16, "Add a Promo Code:");
|
|
4095
|
+
i0.ɵɵelementEnd()();
|
|
4096
|
+
i0.ɵɵtemplate(17, OrderSummaryComponent_Conditional_17_Template, 5, 4, "div", 9);
|
|
4097
|
+
i0.ɵɵelement(18, "div", 6);
|
|
4098
|
+
i0.ɵɵelementStart(19, "div", 10)(20, "span");
|
|
4099
|
+
i0.ɵɵtext(21, "Discounts & Savings:");
|
|
4100
|
+
i0.ɵɵelementEnd();
|
|
4101
|
+
i0.ɵɵelementStart(22, "strong");
|
|
4102
|
+
i0.ɵɵtext(23);
|
|
4103
|
+
i0.ɵɵelementEnd()();
|
|
4104
|
+
i0.ɵɵelement(24, "div", 6);
|
|
4105
|
+
i0.ɵɵelementStart(25, "div", 11)(26, "span");
|
|
4106
|
+
i0.ɵɵtext(27, "Total:");
|
|
4107
|
+
i0.ɵɵelementEnd();
|
|
4108
|
+
i0.ɵɵelementStart(28, "strong");
|
|
4109
|
+
i0.ɵɵtext(29);
|
|
4110
|
+
i0.ɵɵelementEnd()()()()();
|
|
4111
|
+
} if (rf & 2) {
|
|
4112
|
+
i0.ɵɵadvance(12);
|
|
4113
|
+
i0.ɵɵtextInterpolate1("$", ctx.ps.subtotal, "");
|
|
4114
|
+
i0.ɵɵadvance(2);
|
|
4115
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0$h, ctx.showPromoCode));
|
|
4116
|
+
i0.ɵɵadvance(3);
|
|
4117
|
+
i0.ɵɵconditional(17, ctx.showPromoCode ? 17 : -1);
|
|
4118
|
+
i0.ɵɵadvance(6);
|
|
4119
|
+
i0.ɵɵtextInterpolate(ctx.discount);
|
|
4120
|
+
i0.ɵɵadvance(6);
|
|
4121
|
+
i0.ɵɵtextInterpolate1("$", ctx.toTotal(), "");
|
|
4122
|
+
} }, dependencies: [i1$2.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgModel], encapsulation: 2 }); }
|
|
4123
|
+
}
|
|
4124
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(OrderSummaryComponent, [{
|
|
4125
|
+
type: Component,
|
|
4126
|
+
args: [{ selector: "anatoly-billing-order-summary", template: "<div class='card'>\r\n <div class='card-header'>\r\n <div class='card-title'>\r\n <h2>Order Summary</h2>\r\n </div>\r\n </div>\r\n <div class='card-body'>\r\n <div class='order-summary'>\r\n <ng-content></ng-content>\r\n\r\n <div class='subtotal'>\r\n <span>Subtotal:</span><strong>${{ ps.subtotal }}</strong>\r\n </div>\r\n <div class='divider'></div>\r\n <div class=\"add-promo-code\" [ngClass]=\"{ 'show': showPromoCode }\" (click)=\"onTogglePromoCode()\">\r\n <span class='has-arrow'>Add a Promo Code:</span>\r\n </div>\r\n\r\n @if (showPromoCode) {\r\n <div class=\"add-promo-code\" [ngClass]=\"{ 'show': showPromoCode }\">\r\n <div class=\"promo-code\">\r\n <input type=\"text\" [(ngModel)]=\"promoCode\" class=\"input-text\" placeholder=\"Promo code\">\r\n <button class=\"btn\" (click)=\"onApplyPromoCode()\">Apply</button>\r\n </div>\r\n </div>\r\n }\r\n\r\n <div class='divider'></div>\r\n <div class='discounts'>\r\n <span>Discounts & Savings:</span>\r\n <strong>{{ discount }}</strong>\r\n </div>\r\n <div class='divider'></div>\r\n <div class='total'>\r\n <span>Total:</span>\r\n <strong>${{ toTotal() }}</strong>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
4127
|
+
}], () => [{ type: PaymentsService }, { type: DiscountCodesApiService }, { type: NotificationService }], null); })();
|
|
4128
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(OrderSummaryComponent, { className: "OrderSummaryComponent", filePath: "lib\\billing\\components\\order-summary\\order-summary.component.ts", lineNumber: 31 }); })();
|
|
4129
|
+
|
|
4130
|
+
/*
|
|
4131
|
+
<file>
|
|
4132
|
+
Project:
|
|
4133
|
+
@osovitny/anatoly
|
|
4134
|
+
|
|
4135
|
+
Authors:
|
|
4136
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
4137
|
+
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
4138
|
+
|
|
4139
|
+
Created:
|
|
4140
|
+
29 May 2024
|
|
4141
|
+
|
|
4142
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4143
|
+
</file>
|
|
4144
|
+
*/
|
|
4145
|
+
//Node
|
|
4146
|
+
function PaymentMethodsComponent_For_9_Template(rf, ctx) { if (rf & 1) {
|
|
4147
|
+
const _r7 = i0.ɵɵgetCurrentView();
|
|
4148
|
+
i0.ɵɵelementStart(0, "li", 5);
|
|
4149
|
+
i0.ɵɵlistener("click", function PaymentMethodsComponent_For_9_Template_li_click_0_listener() { const restoredCtx = i0.ɵɵrestoreView(_r7); const item_r1 = restoredCtx.$implicit; const ctx_r6 = i0.ɵɵnextContext(); return i0.ɵɵresetView(ctx_r6.onPaymentSelect(item_r1)); });
|
|
4150
|
+
i0.ɵɵelementStart(1, "div", 6);
|
|
4151
|
+
i0.ɵɵtext(2);
|
|
4152
|
+
i0.ɵɵelementEnd();
|
|
4153
|
+
i0.ɵɵelementStart(3, "div", 7);
|
|
4154
|
+
i0.ɵɵelement(4, "img", 8);
|
|
4155
|
+
i0.ɵɵelementEnd()();
|
|
4156
|
+
} if (rf & 2) {
|
|
4157
|
+
const item_r1 = ctx.$implicit;
|
|
4158
|
+
i0.ɵɵclassProp("selected", item_r1.selected);
|
|
4159
|
+
i0.ɵɵadvance(2);
|
|
4160
|
+
i0.ɵɵtextInterpolate1("Pay with ", item_r1.title, "");
|
|
4161
|
+
i0.ɵɵadvance(2);
|
|
4162
|
+
i0.ɵɵpropertyInterpolate1("src", "./dist/@lib/images/payment-icons/", item_r1.icon, ".png", i0.ɵɵsanitizeUrl)("alt", "payment-icon ", item_r1.title, "");
|
|
4163
|
+
} }
|
|
4164
|
+
class PaymentMethodsComponent extends ComponentBase {
|
|
4165
|
+
constructor(ps) {
|
|
4166
|
+
super();
|
|
4167
|
+
this.ps = ps;
|
|
4168
|
+
this.paymentMethods = [
|
|
4169
|
+
{ id: PaymentMethod.CreditCard, title: "", icon: "cards", selected: true },
|
|
4170
|
+
{ id: PaymentMethod.PayPal, title: "", icon: "paypal", selected: false },
|
|
4171
|
+
{ id: PaymentMethod.Stripe, title: "", icon: "stripe", selected: false },
|
|
4172
|
+
{ id: PaymentMethod.Venmo, title: "", icon: "venmo", selected: false },
|
|
4173
|
+
{
|
|
4174
|
+
id: PaymentMethod.ApplePay,
|
|
4175
|
+
title: "",
|
|
4176
|
+
icon: "applepay",
|
|
4177
|
+
selected: false,
|
|
4178
|
+
},
|
|
4179
|
+
{
|
|
4180
|
+
id: PaymentMethod.GooglePay,
|
|
4181
|
+
title: "",
|
|
4182
|
+
icon: "googlepay",
|
|
4183
|
+
selected: false,
|
|
4184
|
+
},
|
|
4185
|
+
{
|
|
4186
|
+
id: PaymentMethod.DigitalWallet,
|
|
4187
|
+
title: "",
|
|
4188
|
+
icon: "wallet",
|
|
4189
|
+
selected: false,
|
|
4190
|
+
},
|
|
4191
|
+
];
|
|
4192
|
+
}
|
|
4193
|
+
ngOnInit() {
|
|
4194
|
+
this.setDefaults();
|
|
4195
|
+
this.setValues();
|
|
4196
|
+
}
|
|
4197
|
+
setDefaults() {
|
|
4198
|
+
let selectedPM = this.paymentMethods.filter((value) => value.selected == true)[0];
|
|
4199
|
+
this.ps.selectedPaymentMethod = selectedPM.id;
|
|
4200
|
+
}
|
|
4201
|
+
setValues() { }
|
|
4202
|
+
//Events
|
|
4203
|
+
onPaymentSelect(paymentMethod) {
|
|
4204
|
+
//1. Unselect items
|
|
4205
|
+
this.paymentMethods.forEach((payment) => (payment.selected = false));
|
|
4206
|
+
//2. Set selected PaymentMethod
|
|
4207
|
+
paymentMethod.selected = true;
|
|
4208
|
+
this.ps.selectedPaymentMethod = paymentMethod.id;
|
|
4209
|
+
}
|
|
4210
|
+
static { this.ɵfac = function PaymentMethodsComponent_Factory(t) { return new (t || PaymentMethodsComponent)(i0.ɵɵdirectiveInject(PaymentsService)); }; }
|
|
4211
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaymentMethodsComponent, selectors: [["anatoly-billing-payment-methods"]], features: [i0.ɵɵInheritDefinitionFeature], decls: 10, vars: 0, consts: [[1, "card", "p-0", "mb-3"], [1, "card-header"], [1, "card-title"], [1, "card-body"], [1, "payment__select-method"], [3, "click"], [1, "payment-name"], [1, "icon-img"], [3, "src", "alt"], [3, "selected"]], template: function PaymentMethodsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4212
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "div", 1)(2, "div", 2)(3, "h2");
|
|
4213
|
+
i0.ɵɵtext(4, "Select a payment method");
|
|
4214
|
+
i0.ɵɵelementEnd()()();
|
|
4215
|
+
i0.ɵɵelementStart(5, "div", 3)(6, "div", 4)(7, "ul");
|
|
4216
|
+
i0.ɵɵrepeaterCreate(8, PaymentMethodsComponent_For_9_Template, 5, 5, "li", 9, i0.ɵɵrepeaterTrackByIdentity);
|
|
4217
|
+
i0.ɵɵelementEnd()()()();
|
|
4218
|
+
} if (rf & 2) {
|
|
4219
|
+
i0.ɵɵadvance(8);
|
|
4220
|
+
i0.ɵɵrepeater(ctx.paymentMethods);
|
|
4221
|
+
} }, encapsulation: 2 }); }
|
|
4222
|
+
}
|
|
4223
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentMethodsComponent, [{
|
|
4224
|
+
type: Component,
|
|
4225
|
+
args: [{ selector: "anatoly-billing-payment-methods", template: "<div class='card p-0 mb-3'>\r\n <div class='card-header'>\r\n <div class='card-title'>\r\n <h2>Select a payment method</h2>\r\n </div>\r\n </div>\r\n <div class='card-body'>\r\n <div class='payment__select-method'>\r\n <ul>\r\n @for (item of paymentMethods; track item) {\r\n <li (click)='onPaymentSelect(item)' [class.selected]='item.selected'>\r\n <div class='payment-name'>Pay with {{ item.title }}</div>\r\n <div class='icon-img'>\r\n <img src='./dist/@lib/images/payment-icons/{{item.icon}}.png' alt='payment-icon {{item.title}}'>\r\n </div>\r\n </li>\r\n }\r\n </ul>\r\n </div>\r\n </div>\r\n</div>\r\n" }]
|
|
4226
|
+
}], () => [{ type: PaymentsService }], null); })();
|
|
4227
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaymentMethodsComponent, { className: "PaymentMethodsComponent", filePath: "lib\\billing\\components\\payment-methods\\payment-methods.component.ts", lineNumber: 29 }); })();
|
|
4228
|
+
|
|
4229
|
+
/*
|
|
4230
|
+
<file>
|
|
4231
|
+
Project:
|
|
4232
|
+
@osovitny/anatoly
|
|
4233
|
+
|
|
4234
|
+
Authors:
|
|
4235
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
4236
|
+
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
4237
|
+
|
|
4238
|
+
Created:
|
|
4239
|
+
29 May 2024
|
|
4240
|
+
|
|
4241
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4242
|
+
</file>
|
|
4243
|
+
*/
|
|
4244
|
+
//Node
|
|
4245
|
+
const _c0$g = a0 => ({ "active": a0 });
|
|
4246
|
+
class PaymentOptionsComponent extends ComponentBase {
|
|
4247
|
+
constructor(ps) {
|
|
4248
|
+
super();
|
|
4249
|
+
this.ps = ps;
|
|
4250
|
+
this.change = new EventEmitter();
|
|
4251
|
+
}
|
|
4252
|
+
ngOnInit() {
|
|
4253
|
+
this.setDefaults();
|
|
4254
|
+
this.setValues();
|
|
4255
|
+
}
|
|
4256
|
+
setDefaults() {
|
|
4257
|
+
this.ps.selectedPaymentType = PaymentType.FullPayment;
|
|
4258
|
+
}
|
|
4259
|
+
setValues() { }
|
|
4260
|
+
//Events
|
|
4261
|
+
onPaymentTypeSelect(pt) {
|
|
4262
|
+
this.ps.selectedPaymentType = pt;
|
|
4263
|
+
this.change.emit();
|
|
4264
|
+
}
|
|
4265
|
+
static { this.ɵfac = function PaymentOptionsComponent_Factory(t) { return new (t || PaymentOptionsComponent)(i0.ɵɵdirectiveInject(PaymentsService)); }; }
|
|
4266
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: PaymentOptionsComponent, selectors: [["anatoly-billing-payment-options"]], inputs: { priceWeekly: "priceWeekly", priceUpfront: "priceUpfront", numberOfWeeks: "numberOfWeeks" }, outputs: { change: "change" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 19, vars: 9, consts: [[1, "payment-options"], [1, "pay-weekly", 3, "ngClass", "click"], [1, "info"], [1, "price"], [1, "pay-upfront", 3, "ngClass", "click"]], template: function PaymentOptionsComponent_Template(rf, ctx) { if (rf & 1) {
|
|
4267
|
+
i0.ɵɵelementStart(0, "div", 0)(1, "h4");
|
|
4268
|
+
i0.ɵɵtext(2, "Payment options");
|
|
4269
|
+
i0.ɵɵelementEnd();
|
|
4270
|
+
i0.ɵɵelementStart(3, "div", 1);
|
|
4271
|
+
i0.ɵɵlistener("click", function PaymentOptionsComponent_Template_div_click_3_listener() { return ctx.onPaymentTypeSelect(2); });
|
|
4272
|
+
i0.ɵɵelementStart(4, "div", 2)(5, "h4");
|
|
4273
|
+
i0.ɵɵtext(6, "Pay weekly");
|
|
4274
|
+
i0.ɵɵelementEnd();
|
|
4275
|
+
i0.ɵɵelementStart(7, "p");
|
|
4276
|
+
i0.ɵɵtext(8, "Cancel anytime");
|
|
4277
|
+
i0.ɵɵelementEnd()();
|
|
4278
|
+
i0.ɵɵelementStart(9, "div", 3);
|
|
4279
|
+
i0.ɵɵtext(10);
|
|
4280
|
+
i0.ɵɵelementEnd()();
|
|
4281
|
+
i0.ɵɵelementStart(11, "div", 4);
|
|
4282
|
+
i0.ɵɵlistener("click", function PaymentOptionsComponent_Template_div_click_11_listener() { return ctx.onPaymentTypeSelect(1); });
|
|
4283
|
+
i0.ɵɵelementStart(12, "div", 2)(13, "h4");
|
|
4284
|
+
i0.ɵɵtext(14, "Pay upfront");
|
|
4285
|
+
i0.ɵɵelementEnd();
|
|
4286
|
+
i0.ɵɵelementStart(15, "p");
|
|
4287
|
+
i0.ɵɵtext(16);
|
|
4288
|
+
i0.ɵɵelementEnd()();
|
|
4289
|
+
i0.ɵɵelementStart(17, "div", 3);
|
|
4290
|
+
i0.ɵɵtext(18);
|
|
4291
|
+
i0.ɵɵelementEnd()()();
|
|
4292
|
+
} if (rf & 2) {
|
|
4293
|
+
i0.ɵɵadvance(3);
|
|
4294
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(5, _c0$g, ctx.ps.selectedPaymentType == 2));
|
|
4295
|
+
i0.ɵɵadvance(7);
|
|
4296
|
+
i0.ɵɵtextInterpolate1("$", ctx.priceWeekly, "");
|
|
4297
|
+
i0.ɵɵadvance();
|
|
4298
|
+
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(7, _c0$g, ctx.ps.selectedPaymentType == 1));
|
|
4299
|
+
i0.ɵɵadvance(5);
|
|
4300
|
+
i0.ɵɵtextInterpolate1("Covers the full ", ctx.numberOfWeeks, " weeks ");
|
|
4301
|
+
i0.ɵɵadvance(2);
|
|
4302
|
+
i0.ɵɵtextInterpolate1("$", ctx.priceUpfront, "");
|
|
4303
|
+
} }, dependencies: [i1$2.NgClass], encapsulation: 2 }); }
|
|
4304
|
+
}
|
|
4305
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(PaymentOptionsComponent, [{
|
|
4306
|
+
type: Component,
|
|
4307
|
+
args: [{ selector: "anatoly-billing-payment-options", template: "<div class='payment-options'>\r\n <h4>Payment options</h4>\r\n <div (click)='onPaymentTypeSelect(2)' [ngClass]='{\"active\": ps.selectedPaymentType == 2 }' class='pay-weekly'>\r\n <div class='info'>\r\n <h4>Pay weekly</h4>\r\n <p>Cancel anytime</p>\r\n </div>\r\n <div class='price'>${{ priceWeekly }}</div>\r\n </div>\r\n\r\n <div (click)='onPaymentTypeSelect(1)' [ngClass]='{\"active\": ps.selectedPaymentType == 1 }' class='pay-upfront'>\r\n <div class='info'>\r\n <h4>Pay upfront</h4>\r\n <p>Covers the full {{ numberOfWeeks }} weeks </p>\r\n </div>\r\n <div class='price'>${{ priceUpfront }}</div>\r\n </div>\r\n</div>\r\n" }]
|
|
4308
|
+
}], () => [{ type: PaymentsService }], { priceWeekly: [{
|
|
4309
|
+
type: Input
|
|
4310
|
+
}], priceUpfront: [{
|
|
4311
|
+
type: Input
|
|
4312
|
+
}], numberOfWeeks: [{
|
|
4313
|
+
type: Input
|
|
4314
|
+
}], change: [{
|
|
4315
|
+
type: Output
|
|
4316
|
+
}] }); })();
|
|
4317
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(PaymentOptionsComponent, { className: "PaymentOptionsComponent", filePath: "lib\\billing\\components\\payment-options\\payment-options.component.ts", lineNumber: 29 }); })();
|
|
4318
|
+
|
|
4319
|
+
/*
|
|
4320
|
+
<file>
|
|
4321
|
+
Project:
|
|
4322
|
+
@osovitny/anatoly
|
|
4323
|
+
|
|
4324
|
+
Authors:
|
|
4325
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
4326
|
+
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
4327
|
+
|
|
4328
|
+
Created:
|
|
4329
|
+
20 Nov 2017
|
|
4330
|
+
|
|
4331
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4332
|
+
</file>
|
|
4333
|
+
*/
|
|
4334
|
+
//Node
|
|
4335
|
+
class EditComponentBase extends ComponentBase {
|
|
4336
|
+
constructor() {
|
|
4337
|
+
super();
|
|
4338
|
+
//Modes
|
|
4339
|
+
this.isAddMode = false;
|
|
4340
|
+
this.isEditMode = false;
|
|
4341
|
+
this.formSubmitted = false;
|
|
4342
|
+
this.controlName = null;
|
|
4343
|
+
this.isEditMode = QSUtils.idExists();
|
|
4344
|
+
this.isAddMode = !this.isEditMode;
|
|
4345
|
+
}
|
|
4346
|
+
isControlValid(name, frmGroup = null) {
|
|
4347
|
+
return !this.isControlInvalid(name, frmGroup);
|
|
4348
|
+
}
|
|
4349
|
+
isControlInvalid(name, frmGroup = null) {
|
|
4350
|
+
if (typeof name === "undefined" || name == "") {
|
|
4351
|
+
return false;
|
|
4352
|
+
}
|
|
4353
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4354
|
+
if (!fg) {
|
|
4355
|
+
return false;
|
|
4356
|
+
}
|
|
4357
|
+
let control = fg.get(name);
|
|
4358
|
+
if (control) {
|
|
4359
|
+
return ((this.formSubmitted && control.invalid) || (control.touched && control.invalid));
|
|
4360
|
+
}
|
|
4361
|
+
return false;
|
|
4362
|
+
}
|
|
4363
|
+
//FormGroup functions
|
|
4364
|
+
getFormValue(name, frmGroup = null) {
|
|
4365
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4366
|
+
return fg.controls[name].value;
|
|
4367
|
+
}
|
|
4368
|
+
setFormValue(name, value, frmGroup = null) {
|
|
4369
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4370
|
+
fg.controls[name].setValue(value);
|
|
4371
|
+
}
|
|
4372
|
+
getFormGroupValue(groupName, name, frmGroup = null) {
|
|
4373
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4374
|
+
return fg.controls[groupName].get(name).value;
|
|
4375
|
+
}
|
|
4376
|
+
setFormGroupValue(groupName, name, value, frmGroup = null) {
|
|
4377
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4378
|
+
fg.controls[groupName].get(name).setValue(value);
|
|
4379
|
+
}
|
|
4380
|
+
/**
|
|
4381
|
+
* Add control to form group
|
|
4382
|
+
* @param name
|
|
4383
|
+
* @param formControl
|
|
4384
|
+
* @param frmGroup
|
|
4385
|
+
*/
|
|
4386
|
+
addControl(name, formControl, frmGroup = null) {
|
|
4387
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4388
|
+
fg.addControl(name, formControl);
|
|
4389
|
+
}
|
|
4390
|
+
/**
|
|
4391
|
+
* Removes control from form group
|
|
4392
|
+
* @param name
|
|
4393
|
+
* @param frmGroup
|
|
4394
|
+
*/
|
|
4395
|
+
removeControl(name, frmGroup = null) {
|
|
4396
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4397
|
+
if (fg.get(name)) {
|
|
4398
|
+
fg.removeControl(name);
|
|
4399
|
+
}
|
|
4400
|
+
}
|
|
4401
|
+
/**
|
|
4402
|
+
* return new form control
|
|
4403
|
+
* @param formState
|
|
4404
|
+
* @param validatorOrOpts
|
|
4405
|
+
* @param asyncValidator
|
|
4406
|
+
*/
|
|
4407
|
+
createFormControl(formState, validatorOrOpts, asyncValidator) {
|
|
4408
|
+
return new FormControl(formState, validatorOrOpts, asyncValidator);
|
|
4409
|
+
}
|
|
4410
|
+
/**
|
|
4411
|
+
* Set error to control
|
|
4412
|
+
* @param controlName formControl name
|
|
4413
|
+
* @param err error expect {erroname: boolean} format
|
|
4414
|
+
* @param frmGroup
|
|
4415
|
+
*/
|
|
4416
|
+
setControlError(controlName, err, frmGroup = null) {
|
|
4417
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4418
|
+
fg.get(controlName)?.setErrors(err);
|
|
4419
|
+
}
|
|
4420
|
+
/**
|
|
4421
|
+
* Set {invalid: true} for the specified form
|
|
4422
|
+
* @param controlName form control name
|
|
4423
|
+
* @param frmGroup
|
|
4424
|
+
*/
|
|
4425
|
+
setInValidError(controlName, frmGroup = null) {
|
|
4426
|
+
let fg = frmGroup ? frmGroup : this.formGroup;
|
|
4427
|
+
fg.get(controlName)?.setErrors({ invalid: true });
|
|
4428
|
+
}
|
|
4429
|
+
/**
|
|
4430
|
+
* returns formgroup controls.
|
|
4431
|
+
* main use case is used in html pages
|
|
4432
|
+
*/
|
|
4433
|
+
get fc() {
|
|
4434
|
+
return this.formGroup.controls;
|
|
4435
|
+
}
|
|
4436
|
+
get isNgModelBased() {
|
|
4437
|
+
return this.controlName == null;
|
|
4438
|
+
}
|
|
4439
|
+
static { this.ɵfac = function EditComponentBase_Factory(t) { return new (t || EditComponentBase)(); }; }
|
|
4440
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: EditComponentBase, selectors: [["ng-component"]], inputs: { formGroup: "formGroup", formSubmitted: "formSubmitted", controlName: "controlName" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function EditComponentBase_Template(rf, ctx) { }, encapsulation: 2 }); }
|
|
3992
4441
|
}
|
|
3993
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(
|
|
3994
|
-
type:
|
|
3995
|
-
|
|
4442
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(EditComponentBase, [{
|
|
4443
|
+
type: Component,
|
|
4444
|
+
args: [{
|
|
4445
|
+
template: ''
|
|
4446
|
+
}]
|
|
4447
|
+
}], () => [], { formGroup: [{
|
|
4448
|
+
type: Input
|
|
4449
|
+
}], formSubmitted: [{
|
|
4450
|
+
type: Input
|
|
4451
|
+
}], controlName: [{
|
|
4452
|
+
type: Input
|
|
4453
|
+
}] }); })();
|
|
4454
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(EditComponentBase, { className: "EditComponentBase", filePath: "lib\\ui\\components\\base\\components\\edit.component.ts", lineNumber: 28 }); })();
|
|
3996
4455
|
|
|
3997
4456
|
/*
|
|
3998
4457
|
<file>
|
|
@@ -4001,162 +4460,65 @@ class PaymentsApiService extends ApiServiceBase {
|
|
|
4001
4460
|
|
|
4002
4461
|
Authors:
|
|
4003
4462
|
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
4004
|
-
|
|
4463
|
+
Anatoly Osovitny anatoly.osovitny@osovitny.com
|
|
4005
4464
|
|
|
4006
4465
|
Created:
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
Details:
|
|
4010
|
-
https://blog.thoughtram.io/angular/2017/02/21/using-zones-in-angular-for-better-performance.html
|
|
4466
|
+
24 Jan 2022
|
|
4011
4467
|
|
|
4012
|
-
Copyright (c) 2016-
|
|
4468
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4013
4469
|
</file>
|
|
4014
4470
|
*/
|
|
4015
4471
|
//Node
|
|
4016
|
-
class
|
|
4017
|
-
|
|
4018
|
-
this.
|
|
4019
|
-
this.api = api;
|
|
4020
|
-
this.ns = ns;
|
|
4021
|
-
this.ga = ga;
|
|
4022
|
-
this.paymentInProgress = false;
|
|
4023
|
-
this.isPaymentFailed = false;
|
|
4024
|
-
this.subtotal = 0;
|
|
4025
|
-
this.discountCode = null;
|
|
4026
|
-
this.discountPercentage = null;
|
|
4027
|
-
this.discountAmount = null;
|
|
4028
|
-
this.total = 0;
|
|
4029
|
-
this.currency = 'USD';
|
|
4030
|
-
//Private Streams
|
|
4031
|
-
this._discountCodeApplied = new Subject();
|
|
4032
|
-
this._paymentAdded = new Subject();
|
|
4033
|
-
this._showStripeDialog = new Subject();
|
|
4034
|
-
this._showBraintreeDialog = new Subject();
|
|
4035
|
-
//Public Streams
|
|
4036
|
-
this.discountCodeApplied$ = this._discountCodeApplied.asObservable();
|
|
4037
|
-
this.paymentAdded$ = this._paymentAdded.asObservable();
|
|
4038
|
-
this.showStripeDialog$ = this._showStripeDialog.asObservable();
|
|
4039
|
-
this.showBraintreeDialog$ = this._showBraintreeDialog.asObservable();
|
|
4040
|
-
}
|
|
4041
|
-
setDefaults() {
|
|
4042
|
-
}
|
|
4043
|
-
setValues() {
|
|
4044
|
-
}
|
|
4045
|
-
//fires
|
|
4046
|
-
fireDiscountCodeApplied() {
|
|
4047
|
-
this._discountCodeApplied.next(this.discountCode);
|
|
4048
|
-
}
|
|
4049
|
-
firePaymentAdded(paymentId) {
|
|
4050
|
-
this._paymentAdded.next(paymentId);
|
|
4051
|
-
}
|
|
4052
|
-
//Public
|
|
4053
|
-
init() {
|
|
4054
|
-
this.setDefaults();
|
|
4055
|
-
this.setValues();
|
|
4056
|
-
}
|
|
4057
|
-
resetState() {
|
|
4058
|
-
this.subtotal = 0;
|
|
4059
|
-
this.total = 0;
|
|
4060
|
-
}
|
|
4061
|
-
getTotal() {
|
|
4062
|
-
let subtotal = this.subtotal;
|
|
4063
|
-
if (this.discountAmount != 0) {
|
|
4064
|
-
subtotal = subtotal - this.discountAmount;
|
|
4065
|
-
}
|
|
4066
|
-
else if (this.discountPercentage != 0) {
|
|
4067
|
-
subtotal = subtotal - (subtotal * (this.discountPercentage / 100));
|
|
4068
|
-
subtotal = +subtotal.toFixed(2);
|
|
4069
|
-
}
|
|
4070
|
-
return subtotal > 0 ? subtotal : 0;
|
|
4071
|
-
}
|
|
4072
|
-
//DiscountCode
|
|
4073
|
-
applyDiscountCode(discountCode, data) {
|
|
4074
|
-
if (!data) {
|
|
4075
|
-
return;
|
|
4076
|
-
}
|
|
4077
|
-
this.discountCode = discountCode;
|
|
4078
|
-
if (data.amount) {
|
|
4079
|
-
this.discountPercentage = 0;
|
|
4080
|
-
this.discountAmount = parseInt(data.amount);
|
|
4081
|
-
}
|
|
4082
|
-
else if (data.percentage) {
|
|
4083
|
-
this.discountPercentage = parseInt(data.percentage);
|
|
4084
|
-
this.discountAmount = 0;
|
|
4085
|
-
}
|
|
4086
|
-
this.fireDiscountCodeApplied();
|
|
4472
|
+
class DialogBase extends EditComponentBase {
|
|
4473
|
+
get isOpen() {
|
|
4474
|
+
return this._isOpen;
|
|
4087
4475
|
}
|
|
4088
|
-
|
|
4089
|
-
if (
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4476
|
+
set isOpen(value) {
|
|
4477
|
+
if (value) {
|
|
4478
|
+
if (this.osOnBeforeOpen) {
|
|
4479
|
+
this.osOnBeforeOpen();
|
|
4480
|
+
}
|
|
4481
|
+
this.opened.emit();
|
|
4094
4482
|
}
|
|
4095
|
-
|
|
4096
|
-
}
|
|
4097
|
-
openStripePaymentDialog() {
|
|
4098
|
-
this._showStripeDialog.next(true);
|
|
4099
|
-
}
|
|
4100
|
-
openBraintreePaymentDialog() {
|
|
4101
|
-
this._showBraintreeDialog.next(true);
|
|
4102
|
-
}
|
|
4103
|
-
closeBraintreePaymentDialog() {
|
|
4104
|
-
this._showBraintreeDialog.next(false);
|
|
4483
|
+
this._isOpen = value;
|
|
4105
4484
|
}
|
|
4106
|
-
|
|
4107
|
-
|
|
4108
|
-
|
|
4109
|
-
|
|
4485
|
+
constructor() {
|
|
4486
|
+
super();
|
|
4487
|
+
//Private
|
|
4488
|
+
this._isOpen = false;
|
|
4489
|
+
//Public
|
|
4490
|
+
this.themeColor = "primary";
|
|
4491
|
+
//Events
|
|
4492
|
+
this.opened = new EventEmitter();
|
|
4493
|
+
this.closed = new EventEmitter();
|
|
4110
4494
|
}
|
|
4111
|
-
|
|
4112
|
-
|
|
4495
|
+
open() {
|
|
4496
|
+
this.isOpen = true;
|
|
4113
4497
|
}
|
|
4114
|
-
|
|
4115
|
-
|
|
4116
|
-
this.
|
|
4117
|
-
let paidForAsString = JSON.stringify(paidFor);
|
|
4118
|
-
let payType = this.selectedPaymentType;
|
|
4119
|
-
let payMethod = this.selectedPaymentMethod;
|
|
4120
|
-
//Amount
|
|
4121
|
-
let subtotal = this.subtotal;
|
|
4122
|
-
let promoCode = this.discountCode;
|
|
4123
|
-
let total = this.getTotal();
|
|
4124
|
-
let currency = this.currency;
|
|
4125
|
-
if (total == 0) {
|
|
4126
|
-
payMethod = PaymentMethod.None;
|
|
4127
|
-
}
|
|
4128
|
-
this.zone.run(() => {
|
|
4129
|
-
this.api.pay(paidForAsString, payMethod,
|
|
4130
|
-
//Amount
|
|
4131
|
-
subtotal, promoCode, total, currency,
|
|
4132
|
-
//Payment method details (PayPal/Stripe/Braintree)
|
|
4133
|
-
payId, payStatus, payDetails, (data) => {
|
|
4134
|
-
if (!data || !data?.isPaymentValid) {
|
|
4135
|
-
this.paymentFailed(PaymentStage.External);
|
|
4136
|
-
return;
|
|
4137
|
-
}
|
|
4138
|
-
if (payMethod == PaymentMethod.CreditCard) {
|
|
4139
|
-
//this.closeBraintreePaymentDialog();
|
|
4140
|
-
}
|
|
4141
|
-
this.paymentInProgress = false;
|
|
4142
|
-
this.firePaymentAdded(data.paymentId);
|
|
4143
|
-
}, () => {
|
|
4144
|
-
this.paymentFailed(PaymentStage.External);
|
|
4145
|
-
});
|
|
4146
|
-
});
|
|
4498
|
+
close(returnValue = "OK") {
|
|
4499
|
+
this.isOpen = false;
|
|
4500
|
+
this.closed.emit(returnValue);
|
|
4147
4501
|
}
|
|
4148
|
-
|
|
4149
|
-
this.
|
|
4150
|
-
this.
|
|
4151
|
-
this.isPaymentFailed = true;
|
|
4152
|
-
this.ns.error("Payment Failed");
|
|
4502
|
+
cancel() {
|
|
4503
|
+
this.isOpen = false;
|
|
4504
|
+
this.closed.emit(-1);
|
|
4153
4505
|
}
|
|
4154
|
-
static { this.ɵfac = function
|
|
4155
|
-
static { this.ɵ
|
|
4506
|
+
static { this.ɵfac = function DialogBase_Factory(t) { return new (t || DialogBase)(); }; }
|
|
4507
|
+
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: DialogBase, selectors: [["ng-component"]], inputs: { isOpen: "isOpen" }, outputs: { opened: "opened", closed: "closed" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 0, vars: 0, template: function DialogBase_Template(rf, ctx) { }, encapsulation: 2 }); }
|
|
4156
4508
|
}
|
|
4157
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(
|
|
4158
|
-
type:
|
|
4159
|
-
|
|
4509
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DialogBase, [{
|
|
4510
|
+
type: Component,
|
|
4511
|
+
args: [{
|
|
4512
|
+
template: ''
|
|
4513
|
+
}]
|
|
4514
|
+
}], () => [], { isOpen: [{
|
|
4515
|
+
type: Input
|
|
4516
|
+
}], opened: [{
|
|
4517
|
+
type: Output
|
|
4518
|
+
}], closed: [{
|
|
4519
|
+
type: Output
|
|
4520
|
+
}] }); })();
|
|
4521
|
+
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(DialogBase, { className: "DialogBase", filePath: "lib\\ui\\components\\base\\dialog.ts", lineNumber: 27 }); })();
|
|
4160
4522
|
|
|
4161
4523
|
/*
|
|
4162
4524
|
<file>
|
|
@@ -4172,7 +4534,7 @@ class PaymentsService {
|
|
|
4172
4534
|
Description:
|
|
4173
4535
|
Credit Card payment form via braintree integration
|
|
4174
4536
|
|
|
4175
|
-
Copyright (c) 2016-
|
|
4537
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4176
4538
|
</file>
|
|
4177
4539
|
*/
|
|
4178
4540
|
//Node
|
|
@@ -4289,7 +4651,7 @@ class BraintreeDialog extends DialogBase {
|
|
|
4289
4651
|
i0.ɵɵtemplate(0, BraintreeDialog_Conditional_0_Template, 11, 3, "div", 0);
|
|
4290
4652
|
} if (rf & 2) {
|
|
4291
4653
|
i0.ɵɵconditional(0, ctx.visible ? 0 : -1);
|
|
4292
|
-
} }, dependencies: [i2.DialogComponent, i2.DialogTitleBarComponent, i2.DialogActionsComponent], encapsulation: 2 }); }
|
|
4654
|
+
} }, dependencies: [i2$1.DialogComponent, i2$1.DialogTitleBarComponent, i2$1.DialogActionsComponent], encapsulation: 2 }); }
|
|
4293
4655
|
}
|
|
4294
4656
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(BraintreeDialog, [{
|
|
4295
4657
|
type: Component,
|
|
@@ -4861,7 +5223,7 @@ class PaypalButtonComponent extends ComponentBase {
|
|
|
4861
5223
|
Description:
|
|
4862
5224
|
Credit Card payment form via stripe integration
|
|
4863
5225
|
|
|
4864
|
-
Copyright (c) 2016-
|
|
5226
|
+
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4865
5227
|
</file>
|
|
4866
5228
|
*/
|
|
4867
5229
|
//Node
|
|
@@ -4931,7 +5293,7 @@ class StripeDialog extends DialogBase {
|
|
|
4931
5293
|
i0.ɵɵtemplate(0, StripeDialog_Conditional_0_Template, 6, 3, "div", 0);
|
|
4932
5294
|
} if (rf & 2) {
|
|
4933
5295
|
i0.ɵɵconditional(0, ctx.visible ? 0 : -1);
|
|
4934
|
-
} }, dependencies: [i2.DialogComponent, i2.DialogTitleBarComponent], encapsulation: 2 }); }
|
|
5296
|
+
} }, dependencies: [i2$1.DialogComponent, i2$1.DialogTitleBarComponent], encapsulation: 2 }); }
|
|
4935
5297
|
}
|
|
4936
5298
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(StripeDialog, [{
|
|
4937
5299
|
type: Component,
|
|
@@ -4961,7 +5323,6 @@ class StripeDialog extends DialogBase {
|
|
|
4961
5323
|
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4962
5324
|
</file>
|
|
4963
5325
|
*/
|
|
4964
|
-
//braintree
|
|
4965
5326
|
|
|
4966
5327
|
/*
|
|
4967
5328
|
<file>
|
|
@@ -4969,7 +5330,7 @@ class StripeDialog extends DialogBase {
|
|
|
4969
5330
|
Atlas Cross
|
|
4970
5331
|
|
|
4971
5332
|
Authors:
|
|
4972
|
-
Leon Malyan leon.malyan@
|
|
5333
|
+
Leon Malyan leon.malyan@osovitny.com
|
|
4973
5334
|
|
|
4974
5335
|
Created:
|
|
4975
5336
|
25 May 2024
|
|
@@ -5257,37 +5618,6 @@ class CurrenciesStorageService {
|
|
|
5257
5618
|
type: Injectable
|
|
5258
5619
|
}], () => [{ type: AppContextService }, { type: CurrenciesApiService }], null); })();
|
|
5259
5620
|
|
|
5260
|
-
/*
|
|
5261
|
-
<file>
|
|
5262
|
-
Project:
|
|
5263
|
-
@osovitny/anatoly
|
|
5264
|
-
|
|
5265
|
-
Authors:
|
|
5266
|
-
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
5267
|
-
|
|
5268
|
-
Created:
|
|
5269
|
-
4 Jun 2024
|
|
5270
|
-
|
|
5271
|
-
Copyright (c) 2017-2025 Osovitny Inc. All rights reserved.
|
|
5272
|
-
</file>
|
|
5273
|
-
*/
|
|
5274
|
-
//Node
|
|
5275
|
-
class DiscountCodesApiService extends ApiServiceBase {
|
|
5276
|
-
constructor(http) {
|
|
5277
|
-
super(http);
|
|
5278
|
-
this.http = http;
|
|
5279
|
-
this.baseUrl = `${ApiUrl}/billing/discountCodes`;
|
|
5280
|
-
}
|
|
5281
|
-
getDiscountCode(code) {
|
|
5282
|
-
return this.get('getDiscountCode', { code });
|
|
5283
|
-
}
|
|
5284
|
-
static { this.ɵfac = function DiscountCodesApiService_Factory(t) { return new (t || DiscountCodesApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
|
|
5285
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DiscountCodesApiService, factory: DiscountCodesApiService.ɵfac }); }
|
|
5286
|
-
}
|
|
5287
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DiscountCodesApiService, [{
|
|
5288
|
-
type: Injectable
|
|
5289
|
-
}], () => [{ type: i1$1.HttpClient }], null); })();
|
|
5290
|
-
|
|
5291
5621
|
/*
|
|
5292
5622
|
<file>
|
|
5293
5623
|
Project:
|
|
@@ -6638,7 +6968,7 @@ class NativeElementDirective {
|
|
|
6638
6968
|
// sets the localization key to the control
|
|
6639
6969
|
this.control.control.nativeElement = this.el.nativeElement;
|
|
6640
6970
|
}
|
|
6641
|
-
static { this.ɵfac = function NativeElementDirective_Factory(t) { return new (t || NativeElementDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2
|
|
6971
|
+
static { this.ɵfac = function NativeElementDirective_Factory(t) { return new (t || NativeElementDirective)(i0.ɵɵdirectiveInject(i0.ElementRef), i0.ɵɵdirectiveInject(i2.NgControl)); }; }
|
|
6642
6972
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: NativeElementDirective, selectors: [["", "formControl", ""], ["", "formControlName", ""]] }); }
|
|
6643
6973
|
}
|
|
6644
6974
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NativeElementDirective, [{
|
|
@@ -6646,7 +6976,7 @@ class NativeElementDirective {
|
|
|
6646
6976
|
args: [{
|
|
6647
6977
|
selector: '[formControl], [formControlName]'
|
|
6648
6978
|
}]
|
|
6649
|
-
}], () => [{ type: i0.ElementRef }, { type: i2
|
|
6979
|
+
}], () => [{ type: i0.ElementRef }, { type: i2.NgControl }], null); })();
|
|
6650
6980
|
|
|
6651
6981
|
/*
|
|
6652
6982
|
<file>
|
|
@@ -6919,7 +7249,7 @@ class UrlSlugComponent extends EditComponentBase {
|
|
|
6919
7249
|
i0.ɵɵproperty("formControlName", ctx.controlName);
|
|
6920
7250
|
i0.ɵɵadvance();
|
|
6921
7251
|
i0.ɵɵproperty("ngIf", ctx.isGoButtonVisible);
|
|
6922
|
-
} }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2
|
|
7252
|
+
} }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
|
|
6923
7253
|
}
|
|
6924
7254
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UrlSlugComponent, [{
|
|
6925
7255
|
type: Component,
|
|
@@ -7013,7 +7343,7 @@ class CountryDropdownlist extends EditComponentBase {
|
|
|
7013
7343
|
i0.ɵɵproperty("ngIf", ctx.isNgModelBased);
|
|
7014
7344
|
i0.ɵɵadvance();
|
|
7015
7345
|
i0.ɵɵproperty("ngIf", !ctx.isNgModelBased);
|
|
7016
|
-
} }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2
|
|
7346
|
+
} }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective], encapsulation: 2 }); }
|
|
7017
7347
|
}
|
|
7018
7348
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CountryDropdownlist, [{
|
|
7019
7349
|
type: Component,
|
|
@@ -7116,7 +7446,7 @@ class TimezoneDropdownlist extends EditComponentBase {
|
|
|
7116
7446
|
i0.ɵɵproperty("ngIf", ctx.isNgModelBased);
|
|
7117
7447
|
i0.ɵɵadvance();
|
|
7118
7448
|
i0.ɵɵproperty("ngIf", !ctx.isNgModelBased);
|
|
7119
|
-
} }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2
|
|
7449
|
+
} }, dependencies: [i1$2.NgForOf, i1$2.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective], encapsulation: 2 }); }
|
|
7120
7450
|
}
|
|
7121
7451
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimezoneDropdownlist, [{
|
|
7122
7452
|
type: Component,
|
|
@@ -7491,7 +7821,7 @@ class FormsHtmlEditorComponent extends HtmlEditorComponentBase {
|
|
|
7491
7821
|
i0.ɵɵproperty("formControlName", ctx.editorFormKey)("froalaEditor", ctx.options);
|
|
7492
7822
|
i0.ɵɵadvance();
|
|
7493
7823
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted)("controlName", ctx.editorFormKey);
|
|
7494
|
-
} }, dependencies: [i1$2.NgClass, i2
|
|
7824
|
+
} }, dependencies: [i1$2.NgClass, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, i3.FroalaEditorDirective, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
|
|
7495
7825
|
}
|
|
7496
7826
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsHtmlEditorComponent, [{
|
|
7497
7827
|
type: Component,
|
|
@@ -7776,7 +8106,7 @@ class ContactUsForm extends EditComponentBase {
|
|
|
7776
8106
|
onTopicChange(event) {
|
|
7777
8107
|
this.selectedTopic = event.target.value;
|
|
7778
8108
|
}
|
|
7779
|
-
static { this.ɵfac = function ContactUsForm_Factory(t) { return new (t || ContactUsForm)(i0.ɵɵdirectiveInject(i1$8.ReCaptchaV3Service), i0.ɵɵdirectiveInject(i2
|
|
8109
|
+
static { this.ɵfac = function ContactUsForm_Factory(t) { return new (t || ContactUsForm)(i0.ɵɵdirectiveInject(i1$8.ReCaptchaV3Service), i0.ɵɵdirectiveInject(i2.FormBuilder), i0.ɵɵdirectiveInject(AppContextService), i0.ɵɵdirectiveInject(EmailsApiService), i0.ɵɵdirectiveInject(NotificationService)); }; }
|
|
7780
8110
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: ContactUsForm, selectors: [["anatoly-forms-contactus-form"]], inputs: { showActionButtons: "showActionButtons" }, outputs: { submit: "submit" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 39, vars: 31, consts: [["novalidate", "", 3, "formGroup", "ngSubmit"], [3, "formGroup", "visible"], [1, "contact-us"], [1, "row"], [1, "form-fields", "col-6"], [1, "form-topic", 3, "ngClass"], [1, "form-select-wrapper"], [1, "assistive-text"], ["formControlName", "topic", 1, "form-select", 3, "change"], [3, "value", 4, "ngFor", "ngForOf"], ["controlName", "topic", "controlTitle", "topic", 3, "formGroup", "formSubmitted"], [1, "form-name", 3, "ngClass"], ["formControlName", "name", "placeholder", "Name *", "type", "text", 1, "form-control"], ["controlName", "name", "controlTitle", "name", 3, "formGroup", "formSubmitted"], [1, "form-email", 3, "ngClass"], ["formControlName", "email", "placeholder", "E-mail *", "type", "text", 1, "form-control"], [4, "ngIf"], ["controlName", "email", "controlTitle", "email", 3, "formGroup", "formSubmitted"], [1, "form-subject", 3, "ngClass"], ["formControlName", "subject", "placeholder", "Subject *", "type", "text", 1, "form-control"], ["controlName", "subject", "controlTitle", "subject", 3, "formGroup", "formSubmitted"], [1, "col-6"], [1, "form-message", 3, "ngClass"], ["formControlName", "message", "name", "message", "placeholder", "Message *", "rows", "4", "type", "text"], ["controlName", "message", "controlTitle", "message", 3, "formGroup", "formSubmitted"], [1, "row", "form-footer"], [1, "col"], ["class", "btn btn-success", "type", "submit", 3, "btn-primary", 4, "ngIf"], [3, "value"], ["type", "submit", 1, "btn", "btn-success"]], template: function ContactUsForm_Template(rf, ctx) { if (rf & 1) {
|
|
7781
8111
|
i0.ɵɵelementStart(0, "form", 0);
|
|
7782
8112
|
i0.ɵɵlistener("ngSubmit", function ContactUsForm_Template_form_ngSubmit_0_listener() { return ctx.onSubmit(); });
|
|
@@ -7848,12 +8178,12 @@ class ContactUsForm extends EditComponentBase {
|
|
|
7848
8178
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
|
|
7849
8179
|
i0.ɵɵadvance(3);
|
|
7850
8180
|
i0.ɵɵproperty("ngIf", ctx.showActionButtons);
|
|
7851
|
-
} }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2
|
|
8181
|
+
} }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2.ɵNgNoValidate, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, NativeElementDirective, FormValidationSummaryComponent, ItemValidationSummaryComponent], encapsulation: 2 }); }
|
|
7852
8182
|
}
|
|
7853
8183
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactUsForm, [{
|
|
7854
8184
|
type: Component,
|
|
7855
8185
|
args: [{ selector: 'anatoly-forms-contactus-form', template: "<form (ngSubmit)='onSubmit()' [formGroup]='formGroup' novalidate>\r\n <anatoly-form-validation-summary [formGroup]='formGroup'\r\n [visible]='formSubmitted && formGroup.invalid'></anatoly-form-validation-summary>\r\n\r\n <div class='contact-us'>\r\n <div class=\"row\">\r\n <div class='form-fields col-6'>\r\n <p>What can we help you with?</p>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('topic') }\" class='form-topic'>\r\n <div class='form-select-wrapper'>\r\n <label class='assistive-text'>Topic *</label>\r\n <select (change)='onTopicChange($event)' class='form-select' formControlName='topic'>\r\n <option *ngFor='let topic of topicList' [value]='topic.value'>{{ topic.value }} </option>\r\n </select>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='topic'\r\n controlTitle='topic'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('name') }\" class='form-name'>\r\n <label class='assistive-text'>Name *</label>\r\n <input class='form-control' formControlName='name' placeholder='Name *' type='text'>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='name'\r\n controlTitle='name'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('email') }\" class='form-email'>\r\n <label class='assistive-text'>E-mail * </label>\r\n <input class='form-control' formControlName='email' placeholder='E-mail *' type='text' />\r\n <p *ngIf='!isUserSignedIn'>Please indicate the email used for your MailEx login if you already have an account</p>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='email'\r\n controlTitle='email'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('subject') }\" class='form-subject'>\r\n <label class='assistive-text'>Subject *</label>\r\n <input class='form-control' formControlName='subject' placeholder='Subject *' type='text' />\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='subject'\r\n controlTitle='subject'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n <div class='col-6'>\r\n <div [ngClass]=\"{'has-error': isControlInvalid('message') }\" class='form-message'>\r\n <label class='assistive-text'>Message *</label>\r\n <textarea formControlName='message' name='message' placeholder='Message *' rows='4'\r\n type='text'></textarea>\r\n <anatoly-item-validation-summary [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'\r\n controlName='message'\r\n controlTitle='message'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row form-footer\">\r\n <div class=\"col\">\r\n <button *ngIf='showActionButtons'\r\n [class.btn-primary]='!formGroup.invalid'\r\n class='btn btn-success'\r\n type='submit'>\r\n Submit\r\n </button>\r\n </div>\r\n </div>\r\n </div>\r\n</form>\r\n" }]
|
|
7856
|
-
}], () => [{ type: i1$8.ReCaptchaV3Service }, { type: i2
|
|
8186
|
+
}], () => [{ type: i1$8.ReCaptchaV3Service }, { type: i2.FormBuilder }, { type: AppContextService }, { type: EmailsApiService }, { type: NotificationService }], { showActionButtons: [{
|
|
7857
8187
|
type: Input
|
|
7858
8188
|
}], submit: [{
|
|
7859
8189
|
type: Output
|
|
@@ -7921,7 +8251,7 @@ class ContactUsDialog extends DialogBase {
|
|
|
7921
8251
|
i0.ɵɵtemplate(0, ContactUsDialog_kendo_dialog_0_Template, 10, 2, "kendo-dialog", 0);
|
|
7922
8252
|
} if (rf & 2) {
|
|
7923
8253
|
i0.ɵɵproperty("ngIf", ctx.isOpen);
|
|
7924
|
-
} }, dependencies: [i1$2.NgIf, i2.DialogComponent, i2.DialogActionsComponent, ContactUsForm], encapsulation: 2 }); }
|
|
8254
|
+
} }, dependencies: [i1$2.NgIf, i2$1.DialogComponent, i2$1.DialogActionsComponent, ContactUsForm], encapsulation: 2 }); }
|
|
7925
8255
|
}
|
|
7926
8256
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactUsDialog, [{
|
|
7927
8257
|
type: Component,
|
|
@@ -8167,7 +8497,7 @@ class AddressComponent extends EditComponentBase {
|
|
|
8167
8497
|
let usState = event.target.value;
|
|
8168
8498
|
this.change.emit(usState);
|
|
8169
8499
|
}
|
|
8170
|
-
static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i2
|
|
8500
|
+
static { this.ɵfac = function AddressComponent_Factory(t) { return new (t || AddressComponent)(i0.ɵɵdirectiveInject(i2.FormBuilder), i0.ɵɵdirectiveInject(CoreApiService)); }; }
|
|
8171
8501
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: AddressComponent, selectors: [["anatoly-forms-address"]], inputs: { address: "address" }, outputs: { change: "change" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 29, vars: 29, consts: [["classes", "card-primary card-outline"], [3, "title", 4, "ngIf"], [1, "row", 3, "formGroup"], [1, "form-group", "col-12", 3, "ngClass"], [1, "col-form-label", "required"], ["type", "text", "formControlName", "address_street", "placeholder", "Street Address", 1, "form-control"], ["controlName", "address_street", "controlTitle", "Street", 3, "formGroup", "formSubmitted"], ["type", "text", "formControlName", "address_street2", "placeholder", "Apartment, suite, unit, building, floor, etc.", 1, "form-control"], ["controlName", "address_street2", "controlTitle", "Street2", 3, "formGroup", "formSubmitted"], [1, "form-group", "col-3", 3, "ngClass"], ["type", "text", "formControlName", "address_city", "placeholder", "City", 1, "form-control"], ["controlName", "address_city", "controlTitle", "City", 3, "formGroup", "formSubmitted"], ["class", "form-group col-3", 3, "ngClass", 4, "ngIf"], ["type", "text", "formControlName", "address_zipcode", "placeholder", "zipcode", 1, "form-control"], ["controlName", "address_zipcode", "controlTitle", "zipcode", 3, "formGroup", "formSubmitted"], ["formControlName", "address_country", "data-placeholder", "Select a Country", 1, "form-control", 3, "change"], [3, "value", 4, "ngFor", "ngForOf"], ["controlName", "address_country", "controlTitle", "Country", 3, "formGroup", "formSubmitted"], [3, "title"], ["formControlName", "address_stateOrRegion", 1, "form-control", 3, "change"], ["controlName", "address_stateOrRegion", "controlTitle", "State", 3, "formGroup", "formSubmitted"], [3, "value"]], template: function AddressComponent_Template(rf, ctx) { if (rf & 1) {
|
|
8172
8502
|
i0.ɵɵelementStart(0, "anatoly-card", 0);
|
|
8173
8503
|
i0.ɵɵtemplate(1, AddressComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
|
|
@@ -8228,12 +8558,12 @@ class AddressComponent extends EditComponentBase {
|
|
|
8228
8558
|
i0.ɵɵproperty("ngForOf", ctx.countryData);
|
|
8229
8559
|
i0.ɵɵadvance();
|
|
8230
8560
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
|
|
8231
|
-
} }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2
|
|
8561
|
+
} }, dependencies: [i1$2.NgClass, i1$2.NgForOf, i1$2.NgIf, i2.NgSelectOption, i2.ɵNgSelectMultipleOption, i2.DefaultValueAccessor, i2.SelectControlValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.FormGroupDirective, i2.FormControlName, CardComponent, CardHeaderComponent, CardBodyComponent, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
|
|
8232
8562
|
}
|
|
8233
8563
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressComponent, [{
|
|
8234
8564
|
type: Component,
|
|
8235
8565
|
args: [{ selector: 'anatoly-forms-address', template: "<anatoly-card classes='card-primary card-outline'>\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div class='row' [formGroup]='formGroup'>\r\n <div class='form-group col-12' [ngClass]=\"{'has-error': isControlInvalid('address_street')}\" >\r\n <label class='col-form-label required'>Street Address</label>\r\n <input type='text' class='form-control' formControlName='address_street' placeholder='Street Address'>\r\n <anatoly-item-validation-summary controlName='address_street'\r\n controlTitle='Street'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-12' [ngClass]=\"{'has-error': isControlInvalid('address_street2')}\" >\r\n <input type='text' class='form-control' formControlName='address_street2' placeholder='Apartment, suite, unit, building, floor, etc.'>\r\n <anatoly-item-validation-summary controlName='address_street2'\r\n controlTitle='Street2'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' [ngClass]=\"{'has-error': isControlInvalid('address_city')}\">\r\n <label class='col-form-label required'>City</label>\r\n <input type='text' class='form-control' formControlName='address_city' placeholder='City'>\r\n <anatoly-item-validation-summary controlName='address_city'\r\n controlTitle='City'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' *ngIf=\"formGroup.value.address_country == 'US'\" [ngClass]=\"{'has-error': isControlInvalid('address_stateOrRegion')}\">\r\n <label class='col-form-label required'>State</label>\r\n <select class='form-control' (change)='onUSStateChange($event)' formControlName='address_stateOrRegion'>\r\n <option *ngFor='let state of usStateData' [value]='state.code'>{{state.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary controlName='address_stateOrRegion'\r\n controlTitle='State'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' [ngClass]=\"{'has-error': isControlInvalid('address_zipcode')}\" >\r\n <label class='col-form-label required'>zipcode</label>\r\n <input type='text' class='form-control' formControlName='address_zipcode' placeholder='zipcode'>\r\n <anatoly-item-validation-summary controlName='address_zipcode'\r\n controlTitle='zipcode'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n <div class='form-group col-3' [ngClass]=\"{'has-error': isControlInvalid('address_country')}\">\r\n <label class='col-form-label required'>Country</label>\r\n <select class='form-control' (change)='onCountryChange($event)' formControlName='address_country' data-placeholder='Select a Country'>\r\n <option *ngFor='let country of countryData' [value]='country.code'>{{country.name}}</option>\r\n </select>\r\n <anatoly-item-validation-summary controlName='address_country'\r\n controlTitle='Country'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
|
|
8236
|
-
}], () => [{ type: i2
|
|
8566
|
+
}], () => [{ type: i2.FormBuilder }, { type: CoreApiService }], { address: [{
|
|
8237
8567
|
type: Input
|
|
8238
8568
|
}], change: [{
|
|
8239
8569
|
type: Output
|
|
@@ -8312,7 +8642,7 @@ class CompanyComponent extends EditComponentBase {
|
|
|
8312
8642
|
};
|
|
8313
8643
|
return JSON.stringify(data);
|
|
8314
8644
|
}
|
|
8315
|
-
static { this.ɵfac = function CompanyComponent_Factory(t) { return new (t || CompanyComponent)(i0.ɵɵdirectiveInject(i2
|
|
8645
|
+
static { this.ɵfac = function CompanyComponent_Factory(t) { return new (t || CompanyComponent)(i0.ɵɵdirectiveInject(i2.FormBuilder)); }; }
|
|
8316
8646
|
static { this.ɵcmp = /*@__PURE__*/ i0.ɵɵdefineComponent({ type: CompanyComponent, selectors: [["anatoly-forms-company"]], inputs: { company: "company" }, features: [i0.ɵɵInheritDefinitionFeature], decls: 24, vars: 22, consts: [["classes", "card-primary card-outline"], [3, "title", 4, "ngIf"], [1, "row", 3, "formGroup"], [1, "form-group", "col-6", 3, "ngClass"], [1, "col-form-label"], ["type", "text", "formControlName", "company_name", "placeholder", "Company Name", 1, "form-control"], ["controlName", "company_name", "controlTitle", "Company Name", 3, "formGroup", "formSubmitted"], ["type", "tel", "formControlName", "company_phone", "placeholder", "Company Phone", 1, "form-control"], ["controlName", "company_phone", "controlTitle", "Company Phone", 3, "formGroup", "formSubmitted"], ["type", "email", "formControlName", "company_email", "placeholder", "Company Email", 1, "form-control"], ["controlName", "company_email", "controlTitle", "Company Email", 3, "formGroup", "formSubmitted"], ["type", "url", "placeholder", "https://example.com", "pattern", "https://.*", "size", "30", "formControlName", "company_websiteUrl", 1, "form-control"], ["controlName", "company_websiteUrl", "controlTitle", "Company website url", 3, "formGroup", "formSubmitted"], [3, "title"]], template: function CompanyComponent_Template(rf, ctx) { if (rf & 1) {
|
|
8317
8647
|
i0.ɵɵelementStart(0, "anatoly-card", 0);
|
|
8318
8648
|
i0.ɵɵtemplate(1, CompanyComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
|
|
@@ -8357,12 +8687,12 @@ class CompanyComponent extends EditComponentBase {
|
|
|
8357
8687
|
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c0, ctx.isControlInvalid("company_websiteUrl")));
|
|
8358
8688
|
i0.ɵɵadvance(4);
|
|
8359
8689
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
|
|
8360
|
-
} }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2
|
|
8690
|
+
} }, dependencies: [i1$2.NgClass, i1$2.NgIf, i2.DefaultValueAccessor, i2.NgControlStatus, i2.NgControlStatusGroup, i2.PatternValidator, i2.FormGroupDirective, i2.FormControlName, CardComponent, CardHeaderComponent, CardBodyComponent, NativeElementDirective, ItemValidationSummaryComponent], encapsulation: 2 }); }
|
|
8361
8691
|
}
|
|
8362
8692
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompanyComponent, [{
|
|
8363
8693
|
type: Component,
|
|
8364
8694
|
args: [{ selector: 'anatoly-forms-company', template: "<anatoly-card classes='card-primary card-outline'>\r\n <anatoly-card-header *ngIf='isTitleVisible' [title]='title'></anatoly-card-header>\r\n <anatoly-card-body>\r\n <div [formGroup]='formGroup' class='row'>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_name') }\">\r\n <label class='col-form-label'>Name</label>\r\n <input type='text' class='form-control' formControlName='company_name' placeholder='Company Name'>\r\n <anatoly-item-validation-summary controlName='company_name'\r\n controlTitle='Company Name'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_phone') }\">\r\n <label class='col-form-label'>Phone</label>\r\n <input type='tel' class='form-control' formControlName='company_phone' placeholder='Company Phone'>\r\n <anatoly-item-validation-summary controlName='company_phone'\r\n controlTitle='Company Phone'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_email') }\">\r\n <label class='col-form-label'>Email</label>\r\n <input type='email' class='form-control' formControlName='company_email' placeholder='Company Email'>\r\n <anatoly-item-validation-summary controlName='company_email'\r\n controlTitle='Company Email'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n <div class='form-group col-6' [ngClass]=\"{'has-error': isControlInvalid('company_websiteUrl') }\">\r\n <label class='col-form-label'>Website Url</label>\r\n <input type='url' placeholder='https://example.com' pattern='https://.*' size='30'\r\n class='form-control' formControlName='company_websiteUrl'>\r\n <anatoly-item-validation-summary controlName='company_websiteUrl'\r\n controlTitle='Company website url'\r\n [formGroup]='formGroup'\r\n [formSubmitted]='formSubmitted'>\r\n </anatoly-item-validation-summary>\r\n </div>\r\n\r\n </div>\r\n </anatoly-card-body>\r\n</anatoly-card>\r\n" }]
|
|
8365
|
-
}], () => [{ type: i2
|
|
8695
|
+
}], () => [{ type: i2.FormBuilder }], { company: [{
|
|
8366
8696
|
type: Input
|
|
8367
8697
|
}] }); })();
|
|
8368
8698
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompanyComponent, { className: "CompanyComponent", filePath: "lib\\ui\\forms\\components\\company\\company.component.ts", lineNumber: 28 }); })();
|
|
@@ -9183,11 +9513,14 @@ class KendoModule {
|
|
|
9183
9513
|
</file>
|
|
9184
9514
|
*/
|
|
9185
9515
|
const COMPONENTS$1 = [
|
|
9516
|
+
OrderSummaryComponent,
|
|
9517
|
+
PaymentMethodsComponent,
|
|
9518
|
+
PaymentOptionsComponent,
|
|
9186
9519
|
PaypalButtonComponent,
|
|
9187
9520
|
PayPalComponent,
|
|
9188
9521
|
//Dialogs
|
|
9189
9522
|
BraintreeDialog,
|
|
9190
|
-
StripeDialog
|
|
9523
|
+
StripeDialog,
|
|
9191
9524
|
];
|
|
9192
9525
|
|
|
9193
9526
|
/*
|
|
@@ -9214,6 +9547,8 @@ class AnatolyBillingModule {
|
|
|
9214
9547
|
PayPalScriptService,
|
|
9215
9548
|
PaymentsService
|
|
9216
9549
|
], imports: [CommonModule,
|
|
9550
|
+
ReactiveFormsModule,
|
|
9551
|
+
FormsModule,
|
|
9217
9552
|
FaModule,
|
|
9218
9553
|
KendoModule] }); }
|
|
9219
9554
|
}
|
|
@@ -9222,6 +9557,8 @@ class AnatolyBillingModule {
|
|
|
9222
9557
|
args: [{
|
|
9223
9558
|
imports: [
|
|
9224
9559
|
CommonModule,
|
|
9560
|
+
ReactiveFormsModule,
|
|
9561
|
+
FormsModule,
|
|
9225
9562
|
FaModule,
|
|
9226
9563
|
KendoModule
|
|
9227
9564
|
],
|
|
@@ -9238,9 +9575,11 @@ class AnatolyBillingModule {
|
|
|
9238
9575
|
]
|
|
9239
9576
|
}]
|
|
9240
9577
|
}], null, null); })();
|
|
9241
|
-
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyBillingModule, { declarations: [PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog], imports: [CommonModule,
|
|
9578
|
+
(function () { (typeof ngJitMode === "undefined" || ngJitMode) && i0.ɵɵsetNgModuleScope(AnatolyBillingModule, { declarations: [OrderSummaryComponent, PaymentMethodsComponent, PaymentOptionsComponent, PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog], imports: [CommonModule,
|
|
9579
|
+
ReactiveFormsModule,
|
|
9580
|
+
FormsModule,
|
|
9242
9581
|
FaModule,
|
|
9243
|
-
KendoModule], exports: [PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog] }); })();
|
|
9582
|
+
KendoModule], exports: [OrderSummaryComponent, PaymentMethodsComponent, PaymentOptionsComponent, PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog] }); })();
|
|
9244
9583
|
|
|
9245
9584
|
/*
|
|
9246
9585
|
<file>
|
|
@@ -9516,5 +9855,5 @@ class AnatolyModule {
|
|
|
9516
9855
|
* Generated bundle index. Do not edit.
|
|
9517
9856
|
*/
|
|
9518
9857
|
|
|
9519
|
-
export { AddressComponent, AdminGuard, Alerts, AnatolyBillingModule, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyIAMModule, AnatolyIAMPagesModule, AnatolyModule, AnatolyUIModule, ApiServiceBase, ApiUrl, AppContextService, AppCoreSettings, AppName, AppSettings, AppVersion, AuthService, AuthenticationGuard, BaseGoService, BillingUtils, BraintreeDialog, Browser, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CheckIconComponent, ClientApps, CompanyComponent, ComponentBase, ContactUsDialog, ContactUsForm, Convert, Copy2ClipboardComponent, CoreApiService, CountryDropdownlist, CurrenciesApiService, CurrenciesStorageService, DOM, DataPagerComponent, DataViewType, DateConvert, DefaultEditorOptions, DialogBase, DigitalMarketingService, DiscountCodeStatus, DiscountCodeType, DiscountCodesApiService, EditComponentBase, EditPageBase, EmailsApiService, EnumEditComponentBase, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, GABillingEvents, GAEvents, GlobalErrorHandler, GoogleAnalyticsService, GridEditServiceBase, GridReadServiceBase, Guid, HoveringDirective, HtmlEditorComponent, HtmlEditorComponentBase, IdleService, InjectorInstance, IsDevMode, IsProdMode, ItemValidationSummaryComponent, L10NUrl, L10nUtils, ListBase, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, MSALUtils, NativeElementDirective, NodataComponent, NotificationService, PageBase, PageSpinnerComponent, PagedPageBase, PayPalComponent, PayPalScriptService, PaymentMethod, PaymentStage, PaymentType, PaymentsApiService, PaymentsService, PaypalButtonComponent, QSUtils, ReplaceTextPipe, SafeHtmlPipe, ScriptService, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, StarterGuard, StarterService, Stopwatch, StripeDialog, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, TransactionsApiService, UrlSlugComponent, Utils, ValidationSummaryComponent, XmlFormatter, dateFormats, dateTimeFormats, getAppSettingsById, getAppSettingsByName, is, localizationInitializerFactory, throwIfAlreadyLoaded, timeFormats, translateLoaderFactory };
|
|
9858
|
+
export { AddressComponent, AdminGuard, Alerts, AnatolyBillingModule, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyIAMModule, AnatolyIAMPagesModule, AnatolyModule, AnatolyUIModule, ApiServiceBase, ApiUrl, AppContextService, AppCoreSettings, AppName, AppSettings, AppVersion, AuthService, AuthenticationGuard, BaseGoService, BillingUtils, BraintreeDialog, Browser, BuyAccessButtonComponent, CardBodyComponent, CardComponent, CardFooterComponent, CardHeaderComponent, CheckIconComponent, ClientApps, CompanyComponent, ComponentBase, ContactUsDialog, ContactUsForm, Convert, Copy2ClipboardComponent, CoreApiService, CountryDropdownlist, CurrenciesApiService, CurrenciesStorageService, DOM, DataPagerComponent, DataViewType, DateConvert, DefaultEditorOptions, DialogBase, DigitalMarketingService, DiscountCodeStatus, DiscountCodeType, DiscountCodesApiService, EditComponentBase, EditPageBase, EmailsApiService, EnumEditComponentBase, FileSizePipe, FormValidationSummaryComponent, FormsHtmlEditorComponent, GABillingEvents, GAEvents, GlobalErrorHandler, GoogleAnalyticsService, GridEditServiceBase, GridReadServiceBase, Guid, HoveringDirective, HtmlEditorComponent, HtmlEditorComponentBase, IdleService, InjectorInstance, IsDevMode, IsProdMode, ItemValidationSummaryComponent, L10NUrl, L10nUtils, ListBase, LoadingComponent, LoadingService, LocalStorageService, LocalizationInjectorInstance, LocalizationModule, LocalizationService, LocalizationSettingsModule, LocalizePipe, LoggingService, MSALUtils, NativeElementDirective, NodataComponent, NotificationService, OrderSummaryComponent, PageBase, PageSpinnerComponent, PagedPageBase, PayPalComponent, PayPalScriptService, PaymentMethod, PaymentMethodsComponent, PaymentOptionsComponent, PaymentStage, PaymentType, PaymentsApiService, PaymentsService, PaypalButtonComponent, QSUtils, ReplaceTextPipe, SafeHtmlPipe, ScriptService, SessionStorageService, SignInButtonComponent, SignOutButtonComponent, SignUpButtonComponent, StarterGuard, StarterService, Stopwatch, StripeDialog, Subs, SubscribePlanButtonComponent, TimezoneDropdownlist, TransactionsApiService, UrlSlugComponent, Utils, ValidationSummaryComponent, XmlFormatter, dateFormats, dateTimeFormats, getAppSettingsById, getAppSettingsByName, is, localizationInitializerFactory, throwIfAlreadyLoaded, timeFormats, translateLoaderFactory };
|
|
9520
9859
|
//# sourceMappingURL=osovitny-anatoly.mjs.map
|