@osovitny/anatoly 3.17.84 → 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/exports.mjs +2 -1
- package/esm2022/lib/billing/services/payments.service.mjs +2 -2
- package/esm2022/lib/billing/utils.mjs +28 -0
- 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 +779 -412
- 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/lib/billing/exports.d.ts +1 -0
- package/lib/billing/utils.d.ts +3 -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:
|
|
@@ -4001,162 +3797,728 @@ class PaymentsApiService extends ApiServiceBase {
|
|
|
4001
3797
|
|
|
4002
3798
|
Authors:
|
|
4003
3799
|
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
4004
|
-
Dhruv Agarwal dhruv.agarwal@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 }); }
|
|
4441
|
+
}
|
|
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 }); })();
|
|
4455
|
+
|
|
4456
|
+
/*
|
|
4457
|
+
<file>
|
|
4458
|
+
Project:
|
|
4459
|
+
@osovitny/anatoly
|
|
4460
|
+
|
|
4461
|
+
Authors:
|
|
4462
|
+
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
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,34 @@ class StripeDialog extends DialogBase {
|
|
|
4961
5323
|
Copyright (c) 2016-2025 Osovitny Inc. All rights reserved.
|
|
4962
5324
|
</file>
|
|
4963
5325
|
*/
|
|
4964
|
-
|
|
5326
|
+
|
|
5327
|
+
/*
|
|
5328
|
+
<file>
|
|
5329
|
+
Project:
|
|
5330
|
+
Atlas Cross
|
|
5331
|
+
|
|
5332
|
+
Authors:
|
|
5333
|
+
Leon Malyan leon.malyan@osovitny.com
|
|
5334
|
+
|
|
5335
|
+
Created:
|
|
5336
|
+
25 May 2024
|
|
5337
|
+
|
|
5338
|
+
Copyright (c) 2023-2024 Atlas Cross Inc. All rights reserved.
|
|
5339
|
+
</file>
|
|
5340
|
+
*/
|
|
5341
|
+
class BillingUtils {
|
|
5342
|
+
static convert2AmountWithCurrency(amount, currency) {
|
|
5343
|
+
switch (currency) {
|
|
5344
|
+
case 'GBP':
|
|
5345
|
+
return '£' + amount;
|
|
5346
|
+
case 'EUR':
|
|
5347
|
+
return '€' + amount;
|
|
5348
|
+
case 'USD':
|
|
5349
|
+
return '$' + amount;
|
|
5350
|
+
}
|
|
5351
|
+
return amount;
|
|
5352
|
+
}
|
|
5353
|
+
}
|
|
4965
5354
|
|
|
4966
5355
|
/*
|
|
4967
5356
|
<file>
|
|
@@ -5229,37 +5618,6 @@ class CurrenciesStorageService {
|
|
|
5229
5618
|
type: Injectable
|
|
5230
5619
|
}], () => [{ type: AppContextService }, { type: CurrenciesApiService }], null); })();
|
|
5231
5620
|
|
|
5232
|
-
/*
|
|
5233
|
-
<file>
|
|
5234
|
-
Project:
|
|
5235
|
-
@osovitny/anatoly
|
|
5236
|
-
|
|
5237
|
-
Authors:
|
|
5238
|
-
Vadim Osovitny vadim.osovitny@osovitny.com
|
|
5239
|
-
|
|
5240
|
-
Created:
|
|
5241
|
-
4 Jun 2024
|
|
5242
|
-
|
|
5243
|
-
Copyright (c) 2017-2025 Osovitny Inc. All rights reserved.
|
|
5244
|
-
</file>
|
|
5245
|
-
*/
|
|
5246
|
-
//Node
|
|
5247
|
-
class DiscountCodesApiService extends ApiServiceBase {
|
|
5248
|
-
constructor(http) {
|
|
5249
|
-
super(http);
|
|
5250
|
-
this.http = http;
|
|
5251
|
-
this.baseUrl = `${ApiUrl}/billing/discountCodes`;
|
|
5252
|
-
}
|
|
5253
|
-
getDiscountCode(code) {
|
|
5254
|
-
return this.get('getDiscountCode', { code });
|
|
5255
|
-
}
|
|
5256
|
-
static { this.ɵfac = function DiscountCodesApiService_Factory(t) { return new (t || DiscountCodesApiService)(i0.ɵɵinject(i1$1.HttpClient)); }; }
|
|
5257
|
-
static { this.ɵprov = /*@__PURE__*/ i0.ɵɵdefineInjectable({ token: DiscountCodesApiService, factory: DiscountCodesApiService.ɵfac }); }
|
|
5258
|
-
}
|
|
5259
|
-
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(DiscountCodesApiService, [{
|
|
5260
|
-
type: Injectable
|
|
5261
|
-
}], () => [{ type: i1$1.HttpClient }], null); })();
|
|
5262
|
-
|
|
5263
5621
|
/*
|
|
5264
5622
|
<file>
|
|
5265
5623
|
Project:
|
|
@@ -6610,7 +6968,7 @@ class NativeElementDirective {
|
|
|
6610
6968
|
// sets the localization key to the control
|
|
6611
6969
|
this.control.control.nativeElement = this.el.nativeElement;
|
|
6612
6970
|
}
|
|
6613
|
-
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)); }; }
|
|
6614
6972
|
static { this.ɵdir = /*@__PURE__*/ i0.ɵɵdefineDirective({ type: NativeElementDirective, selectors: [["", "formControl", ""], ["", "formControlName", ""]] }); }
|
|
6615
6973
|
}
|
|
6616
6974
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(NativeElementDirective, [{
|
|
@@ -6618,7 +6976,7 @@ class NativeElementDirective {
|
|
|
6618
6976
|
args: [{
|
|
6619
6977
|
selector: '[formControl], [formControlName]'
|
|
6620
6978
|
}]
|
|
6621
|
-
}], () => [{ type: i0.ElementRef }, { type: i2
|
|
6979
|
+
}], () => [{ type: i0.ElementRef }, { type: i2.NgControl }], null); })();
|
|
6622
6980
|
|
|
6623
6981
|
/*
|
|
6624
6982
|
<file>
|
|
@@ -6891,7 +7249,7 @@ class UrlSlugComponent extends EditComponentBase {
|
|
|
6891
7249
|
i0.ɵɵproperty("formControlName", ctx.controlName);
|
|
6892
7250
|
i0.ɵɵadvance();
|
|
6893
7251
|
i0.ɵɵproperty("ngIf", ctx.isGoButtonVisible);
|
|
6894
|
-
} }, 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 }); }
|
|
6895
7253
|
}
|
|
6896
7254
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(UrlSlugComponent, [{
|
|
6897
7255
|
type: Component,
|
|
@@ -6985,7 +7343,7 @@ class CountryDropdownlist extends EditComponentBase {
|
|
|
6985
7343
|
i0.ɵɵproperty("ngIf", ctx.isNgModelBased);
|
|
6986
7344
|
i0.ɵɵadvance();
|
|
6987
7345
|
i0.ɵɵproperty("ngIf", !ctx.isNgModelBased);
|
|
6988
|
-
} }, 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 }); }
|
|
6989
7347
|
}
|
|
6990
7348
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CountryDropdownlist, [{
|
|
6991
7349
|
type: Component,
|
|
@@ -7088,7 +7446,7 @@ class TimezoneDropdownlist extends EditComponentBase {
|
|
|
7088
7446
|
i0.ɵɵproperty("ngIf", ctx.isNgModelBased);
|
|
7089
7447
|
i0.ɵɵadvance();
|
|
7090
7448
|
i0.ɵɵproperty("ngIf", !ctx.isNgModelBased);
|
|
7091
|
-
} }, 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 }); }
|
|
7092
7450
|
}
|
|
7093
7451
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(TimezoneDropdownlist, [{
|
|
7094
7452
|
type: Component,
|
|
@@ -7463,7 +7821,7 @@ class FormsHtmlEditorComponent extends HtmlEditorComponentBase {
|
|
|
7463
7821
|
i0.ɵɵproperty("formControlName", ctx.editorFormKey)("froalaEditor", ctx.options);
|
|
7464
7822
|
i0.ɵɵadvance();
|
|
7465
7823
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted)("controlName", ctx.editorFormKey);
|
|
7466
|
-
} }, 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 }); }
|
|
7467
7825
|
}
|
|
7468
7826
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(FormsHtmlEditorComponent, [{
|
|
7469
7827
|
type: Component,
|
|
@@ -7748,7 +8106,7 @@ class ContactUsForm extends EditComponentBase {
|
|
|
7748
8106
|
onTopicChange(event) {
|
|
7749
8107
|
this.selectedTopic = event.target.value;
|
|
7750
8108
|
}
|
|
7751
|
-
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)); }; }
|
|
7752
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) {
|
|
7753
8111
|
i0.ɵɵelementStart(0, "form", 0);
|
|
7754
8112
|
i0.ɵɵlistener("ngSubmit", function ContactUsForm_Template_form_ngSubmit_0_listener() { return ctx.onSubmit(); });
|
|
@@ -7820,12 +8178,12 @@ class ContactUsForm extends EditComponentBase {
|
|
|
7820
8178
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
|
|
7821
8179
|
i0.ɵɵadvance(3);
|
|
7822
8180
|
i0.ɵɵproperty("ngIf", ctx.showActionButtons);
|
|
7823
|
-
} }, 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 }); }
|
|
7824
8182
|
}
|
|
7825
8183
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactUsForm, [{
|
|
7826
8184
|
type: Component,
|
|
7827
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" }]
|
|
7828
|
-
}], () => [{ type: i1$8.ReCaptchaV3Service }, { type: i2
|
|
8186
|
+
}], () => [{ type: i1$8.ReCaptchaV3Service }, { type: i2.FormBuilder }, { type: AppContextService }, { type: EmailsApiService }, { type: NotificationService }], { showActionButtons: [{
|
|
7829
8187
|
type: Input
|
|
7830
8188
|
}], submit: [{
|
|
7831
8189
|
type: Output
|
|
@@ -7893,7 +8251,7 @@ class ContactUsDialog extends DialogBase {
|
|
|
7893
8251
|
i0.ɵɵtemplate(0, ContactUsDialog_kendo_dialog_0_Template, 10, 2, "kendo-dialog", 0);
|
|
7894
8252
|
} if (rf & 2) {
|
|
7895
8253
|
i0.ɵɵproperty("ngIf", ctx.isOpen);
|
|
7896
|
-
} }, 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 }); }
|
|
7897
8255
|
}
|
|
7898
8256
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(ContactUsDialog, [{
|
|
7899
8257
|
type: Component,
|
|
@@ -8139,7 +8497,7 @@ class AddressComponent extends EditComponentBase {
|
|
|
8139
8497
|
let usState = event.target.value;
|
|
8140
8498
|
this.change.emit(usState);
|
|
8141
8499
|
}
|
|
8142
|
-
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)); }; }
|
|
8143
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) {
|
|
8144
8502
|
i0.ɵɵelementStart(0, "anatoly-card", 0);
|
|
8145
8503
|
i0.ɵɵtemplate(1, AddressComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
|
|
@@ -8200,12 +8558,12 @@ class AddressComponent extends EditComponentBase {
|
|
|
8200
8558
|
i0.ɵɵproperty("ngForOf", ctx.countryData);
|
|
8201
8559
|
i0.ɵɵadvance();
|
|
8202
8560
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
|
|
8203
|
-
} }, 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 }); }
|
|
8204
8562
|
}
|
|
8205
8563
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(AddressComponent, [{
|
|
8206
8564
|
type: Component,
|
|
8207
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" }]
|
|
8208
|
-
}], () => [{ type: i2
|
|
8566
|
+
}], () => [{ type: i2.FormBuilder }, { type: CoreApiService }], { address: [{
|
|
8209
8567
|
type: Input
|
|
8210
8568
|
}], change: [{
|
|
8211
8569
|
type: Output
|
|
@@ -8284,7 +8642,7 @@ class CompanyComponent extends EditComponentBase {
|
|
|
8284
8642
|
};
|
|
8285
8643
|
return JSON.stringify(data);
|
|
8286
8644
|
}
|
|
8287
|
-
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)); }; }
|
|
8288
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) {
|
|
8289
8647
|
i0.ɵɵelementStart(0, "anatoly-card", 0);
|
|
8290
8648
|
i0.ɵɵtemplate(1, CompanyComponent_anatoly_card_header_1_Template, 1, 1, "anatoly-card-header", 1);
|
|
@@ -8329,12 +8687,12 @@ class CompanyComponent extends EditComponentBase {
|
|
|
8329
8687
|
i0.ɵɵproperty("ngClass", i0.ɵɵpureFunction1(20, _c0, ctx.isControlInvalid("company_websiteUrl")));
|
|
8330
8688
|
i0.ɵɵadvance(4);
|
|
8331
8689
|
i0.ɵɵproperty("formGroup", ctx.formGroup)("formSubmitted", ctx.formSubmitted);
|
|
8332
|
-
} }, 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 }); }
|
|
8333
8691
|
}
|
|
8334
8692
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassMetadata(CompanyComponent, [{
|
|
8335
8693
|
type: Component,
|
|
8336
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" }]
|
|
8337
|
-
}], () => [{ type: i2
|
|
8695
|
+
}], () => [{ type: i2.FormBuilder }], { company: [{
|
|
8338
8696
|
type: Input
|
|
8339
8697
|
}] }); })();
|
|
8340
8698
|
(() => { (typeof ngDevMode === "undefined" || ngDevMode) && i0.ɵsetClassDebugInfo(CompanyComponent, { className: "CompanyComponent", filePath: "lib\\ui\\forms\\components\\company\\company.component.ts", lineNumber: 28 }); })();
|
|
@@ -9155,11 +9513,14 @@ class KendoModule {
|
|
|
9155
9513
|
</file>
|
|
9156
9514
|
*/
|
|
9157
9515
|
const COMPONENTS$1 = [
|
|
9516
|
+
OrderSummaryComponent,
|
|
9517
|
+
PaymentMethodsComponent,
|
|
9518
|
+
PaymentOptionsComponent,
|
|
9158
9519
|
PaypalButtonComponent,
|
|
9159
9520
|
PayPalComponent,
|
|
9160
9521
|
//Dialogs
|
|
9161
9522
|
BraintreeDialog,
|
|
9162
|
-
StripeDialog
|
|
9523
|
+
StripeDialog,
|
|
9163
9524
|
];
|
|
9164
9525
|
|
|
9165
9526
|
/*
|
|
@@ -9186,6 +9547,8 @@ class AnatolyBillingModule {
|
|
|
9186
9547
|
PayPalScriptService,
|
|
9187
9548
|
PaymentsService
|
|
9188
9549
|
], imports: [CommonModule,
|
|
9550
|
+
ReactiveFormsModule,
|
|
9551
|
+
FormsModule,
|
|
9189
9552
|
FaModule,
|
|
9190
9553
|
KendoModule] }); }
|
|
9191
9554
|
}
|
|
@@ -9194,6 +9557,8 @@ class AnatolyBillingModule {
|
|
|
9194
9557
|
args: [{
|
|
9195
9558
|
imports: [
|
|
9196
9559
|
CommonModule,
|
|
9560
|
+
ReactiveFormsModule,
|
|
9561
|
+
FormsModule,
|
|
9197
9562
|
FaModule,
|
|
9198
9563
|
KendoModule
|
|
9199
9564
|
],
|
|
@@ -9210,9 +9575,11 @@ class AnatolyBillingModule {
|
|
|
9210
9575
|
]
|
|
9211
9576
|
}]
|
|
9212
9577
|
}], null, null); })();
|
|
9213
|
-
(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,
|
|
9214
9581
|
FaModule,
|
|
9215
|
-
KendoModule], exports: [PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog] }); })();
|
|
9582
|
+
KendoModule], exports: [OrderSummaryComponent, PaymentMethodsComponent, PaymentOptionsComponent, PaypalButtonComponent, PayPalComponent, BraintreeDialog, StripeDialog] }); })();
|
|
9216
9583
|
|
|
9217
9584
|
/*
|
|
9218
9585
|
<file>
|
|
@@ -9488,5 +9855,5 @@ class AnatolyModule {
|
|
|
9488
9855
|
* Generated bundle index. Do not edit.
|
|
9489
9856
|
*/
|
|
9490
9857
|
|
|
9491
|
-
export { AddressComponent, AdminGuard, Alerts, AnatolyBillingModule, AnatolyCoreModule, AnatolyDataModule, AnatolyHttpInterceptor, AnatolyIAMModule, AnatolyIAMPagesModule, AnatolyModule, AnatolyUIModule, ApiServiceBase, ApiUrl, AppContextService, AppCoreSettings, AppName, AppSettings, AppVersion, AuthService, AuthenticationGuard, BaseGoService, 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 };
|
|
9492
9859
|
//# sourceMappingURL=osovitny-anatoly.mjs.map
|