@posiwise/shared-components 0.0.10 → 0.0.11
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/assets/scss/_bootstrap_modules.scss +40 -0
- package/assets/scss/_custom-bootstrap.scss +13 -0
- package/assets/scss/_dashboard.scss +31 -0
- package/assets/scss/_dynamic-styles.scss +534 -0
- package/assets/scss/_plugins.scss +3 -0
- package/assets/scss/_public-pages.scss +7 -0
- package/assets/scss/_shared.scss +3 -0
- package/assets/scss/_variables.scss +5 -0
- package/assets/scss/common/landing-page-a/landing-page-style-1.scss +670 -0
- package/assets/scss/common/landing-page-b/banner.scss +141 -0
- package/assets/scss/common/landing-page-b/contact-us.scss +167 -0
- package/assets/scss/common/landing-page-b/explainer.scss +75 -0
- package/assets/scss/common/landing-page-b/explainer2.scss +35 -0
- package/assets/scss/common/landing-page-b/header.scss +56 -0
- package/assets/scss/common/landing-page-b/landing-page-style-2.scss +20 -0
- package/assets/scss/custom-bootstrap/_badge.scss +468 -0
- package/assets/scss/custom-bootstrap/_bootstrap_variables.scss +30 -0
- package/assets/scss/custom-bootstrap/_buttons.scss +84 -0
- package/assets/scss/custom-bootstrap/_card.scss +319 -0
- package/assets/scss/custom-bootstrap/_carousel.scss +6 -0
- package/assets/scss/custom-bootstrap/_form_select.scss +7 -0
- package/assets/scss/custom-bootstrap/_forms.scss +337 -0
- package/assets/scss/custom-bootstrap/_links.scss +7 -0
- package/assets/scss/custom-bootstrap/_modal.scss +16 -0
- package/assets/scss/custom-bootstrap/_navbar.scss +42 -0
- package/assets/scss/custom-bootstrap/_popover.scss +10 -0
- package/assets/scss/custom-bootstrap/_progress.scss +12 -0
- package/assets/scss/custom-bootstrap/_reboot.scss +93 -0
- package/assets/scss/custom-bootstrap/_type.scss +202 -0
- package/assets/scss/dashboard/_admin.scss +15 -0
- package/assets/scss/dashboard/_animations.scss +20 -0
- package/assets/scss/dashboard/_bootstrap-social.scss +641 -0
- package/assets/scss/dashboard/_chat.scss +250 -0
- package/assets/scss/dashboard/_coming-soon.scss +34 -0
- package/assets/scss/dashboard/_components.scss +229 -0
- package/assets/scss/dashboard/_email.scss +184 -0
- package/assets/scss/dashboard/_fixed-navbar.scss +18 -0
- package/assets/scss/dashboard/_gallery.scss +1201 -0
- package/assets/scss/dashboard/_helper.scss +736 -0
- package/assets/scss/dashboard/_horizontal-timeline.scss +314 -0
- package/assets/scss/dashboard/_icons.scss +107 -0
- package/assets/scss/dashboard/_layout.scss +23 -0
- package/assets/scss/dashboard/_misc.scss +220 -0
- package/assets/scss/dashboard/_notifications.scss +27 -0
- package/assets/scss/dashboard/_palette.scss +308 -0
- package/assets/scss/dashboard/_profile.scss +36 -0
- package/assets/scss/dashboard/_responsive.scss +209 -0
- package/assets/scss/dashboard/_search.scss +33 -0
- package/assets/scss/dashboard/_select.scss +16 -0
- package/assets/scss/dashboard/_sidebar-content.scss +632 -0
- package/assets/scss/dashboard/_tables.scss +17 -0
- package/assets/scss/dashboard/_tabs.scss +151 -0
- package/assets/scss/dashboard/_ui-switch.scss +6 -0
- package/assets/scss/dashboard/_upload.scss +249 -0
- package/assets/scss/dashboard/_utilities.scss +105 -0
- package/assets/scss/dashboard/_vertical-timeline.scss +1261 -0
- package/assets/scss/dashboard/mixins/_buttons.scss +78 -0
- package/assets/scss/dashboard/mixins/_colors.scss +29 -0
- package/assets/scss/dashboard/mixins/_custom.scss +34 -0
- package/assets/scss/dashboard/mixins/_shadows.scss +62 -0
- package/assets/scss/dashboard/mixins/_type.scss +16 -0
- package/assets/scss/dashboard/mixins/_typography.scss +29 -0
- package/assets/scss/dashboard/mixins/_utilities.scss +129 -0
- package/assets/scss/dashboard/mixins/_vendor-prefixes.scss +71 -0
- package/assets/scss/plugins/_plugin-nouislider.scss +199 -0
- package/assets/scss/plugins/_toastr.scss +71 -0
- package/assets/scss/plugins/perfect-scrollbar/_main.scss +3 -0
- package/assets/scss/plugins/perfect-scrollbar/_mixins.scss +135 -0
- package/assets/scss/plugins/perfect-scrollbar/_ps-custom.scss +134 -0
- package/assets/scss/plugins/perfect-scrollbar/_themes.scss +23 -0
- package/assets/scss/plugins/perfect-scrollbar/_variables.scss +19 -0
- package/assets/scss/public-pages/_buttons.scss +136 -0
- package/assets/scss/public-pages/_input-fields.scss +29 -0
- package/assets/scss/public-pages/_layout.scss +108 -0
- package/assets/scss/public-pages/mixins/_buttons.scss +28 -0
- package/assets/scss/shared/_modal.scss +28 -0
- package/assets/scss/shared/_prime-ng-tables.scss +107 -0
- package/assets/scss/shared/_prime-ng.scss +5100 -0
- package/assets/scss/variables/_app-colors-variables.scss +760 -0
- package/assets/scss/variables/_branding-variables.scss +93 -0
- package/assets/scss/variables/_dashboard-variables.scss +96 -0
- package/assets/scss/variables/_generic-variables.scss +33 -0
- package/assets/scss/variables/_landing-page-new-variables.scss +11 -0
- package/assets/scss/variables/_primeng-variables.scss +190 -0
- package/esm2020/index.mjs +3 -1
- package/esm2020/lib/custom-uploader/custom-uploader.component.mjs +103 -0
- package/esm2020/lib/image-cropper/image-cropper.component.mjs +82 -0
- package/esm2020/lib/shared-components.module.mjs +25 -9
- package/fesm2015/shared-components.mjs +192 -9
- package/fesm2015/shared-components.mjs.map +1 -1
- package/fesm2020/shared-components.mjs +198 -9
- package/fesm2020/shared-components.mjs.map +1 -1
- package/index.d.ts +2 -0
- package/lib/custom-uploader/custom-uploader.component.d.ts +32 -0
- package/lib/image-cropper/image-cropper.component.d.ts +29 -0
- package/lib/shared-components.module.d.ts +7 -4
- package/package.json +4 -2
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { Component, Input, EventEmitter, ViewChild, Output, NgModule } from '@angular/core';
|
|
2
|
+
import { Component, Input, EventEmitter, ViewChild, Output, Inject, NgModule } from '@angular/core';
|
|
3
3
|
import { AB_TEST_ACTIONS } from '@posiwise/common-utilities';
|
|
4
4
|
import * as i1 from '@posiwise/common-services';
|
|
5
5
|
import * as i1$1 from '@ng-bootstrap/ng-bootstrap';
|
|
@@ -11,6 +11,10 @@ import * as i3 from '@posiwise/directives';
|
|
|
11
11
|
import { DirectivesModule } from '@posiwise/directives';
|
|
12
12
|
import * as i4 from '@ngneat/transloco';
|
|
13
13
|
import { CoreTranslocoModule } from '@posiwise/core-transloco';
|
|
14
|
+
import { DOCUMENT } from '@angular/common';
|
|
15
|
+
import { HelperService } from '@posiwise/helper-service';
|
|
16
|
+
import * as i2$1 from 'ngx-image-cropper';
|
|
17
|
+
import { ImageCropperModule } from 'ngx-image-cropper';
|
|
14
18
|
|
|
15
19
|
class AbTestContainerComponent {
|
|
16
20
|
constructor(service) {
|
|
@@ -118,36 +122,221 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
118
122
|
type: Output
|
|
119
123
|
}] } });
|
|
120
124
|
|
|
125
|
+
class ProfileImageCropperComponent {
|
|
126
|
+
constructor(cdr) {
|
|
127
|
+
this.cdr = cdr;
|
|
128
|
+
this.imageChangedEvent = '';
|
|
129
|
+
this.croppedImage = '';
|
|
130
|
+
this.imageSelectionEvent = new EventEmitter();
|
|
131
|
+
this.closeEvent = new EventEmitter();
|
|
132
|
+
this.fileChangeEvent = new EventEmitter();
|
|
133
|
+
this.aspectRatio = 'auto';
|
|
134
|
+
this.transform = {};
|
|
135
|
+
this.canvasRotation = 0;
|
|
136
|
+
this.showCropper = false;
|
|
137
|
+
}
|
|
138
|
+
onFileChange(event) {
|
|
139
|
+
this.imageChangedEvent = event;
|
|
140
|
+
this.fileChangeEvent.emit(event.target.files[0]?.name);
|
|
141
|
+
}
|
|
142
|
+
imageCropped(event) {
|
|
143
|
+
this.croppedImage = event.base64;
|
|
144
|
+
this.cdr.detectChanges();
|
|
145
|
+
}
|
|
146
|
+
imageLoaded() {
|
|
147
|
+
this.showCropper = true;
|
|
148
|
+
}
|
|
149
|
+
rotateLeft() {
|
|
150
|
+
this.canvasRotation--;
|
|
151
|
+
this.flipAfterRotate();
|
|
152
|
+
}
|
|
153
|
+
rotateRight() {
|
|
154
|
+
this.canvasRotation++;
|
|
155
|
+
this.flipAfterRotate();
|
|
156
|
+
}
|
|
157
|
+
flipAfterRotate() {
|
|
158
|
+
const flippedH = this.transform.flipH;
|
|
159
|
+
const flippedV = this.transform.flipV;
|
|
160
|
+
this.transform = {
|
|
161
|
+
...this.transform,
|
|
162
|
+
flipH: flippedV,
|
|
163
|
+
flipV: flippedH
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
flipHorizontal() {
|
|
167
|
+
this.transform = {
|
|
168
|
+
...this.transform,
|
|
169
|
+
flipH: !this.transform.flipH
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
flipVertical() {
|
|
173
|
+
this.transform = {
|
|
174
|
+
...this.transform,
|
|
175
|
+
flipV: !this.transform.flipV
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
saveProfilePicture() {
|
|
179
|
+
if (this.croppedImage) {
|
|
180
|
+
this.imageSelectionEvent.emit(this.croppedImage);
|
|
181
|
+
this.busy = true;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
onCloseModal() {
|
|
185
|
+
this.closeEvent.emit();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
ProfileImageCropperComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ProfileImageCropperComponent, deps: [{ token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component });
|
|
189
|
+
ProfileImageCropperComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: { aspectRatio: "aspectRatio" }, outputs: { imageSelectionEvent: "imageSelectionEvent", closeEvent: "closeEvent", fileChangeEvent: "fileChangeEvent" }, ngImport: i0, template: "<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label>\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div class=\"col-4\">\n <img [src]=\"croppedImage\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.image-cropper label{background:var(--first);border-radius:5px;color:#fff;display:table;font-size:13px;font-weight:500;padding:7px}.image-cropper input[type=file]{display:none}.card-footer{background-color:transparent;left:0}\n"], dependencies: [{ kind: "directive", type: i3.ButtonBusyDirective, selector: "[buttonBusy]", inputs: ["buttonBusy", "busyText"] }, { kind: "component", type: i2$1.ImageCropperComponent, selector: "image-cropper", inputs: ["imageChangedEvent", "imageURL", "imageBase64", "imageFile", "imageAltText", "format", "transform", "maintainAspectRatio", "aspectRatio", "resetCropOnAspectRatioChange", "resizeToWidth", "resizeToHeight", "cropperMinWidth", "cropperMinHeight", "cropperMaxHeight", "cropperMaxWidth", "cropperStaticWidth", "cropperStaticHeight", "canvasRotation", "initialStepSize", "roundCropper", "onlyScaleDown", "imageQuality", "autoCrop", "backgroundColor", "containWithinAspectRatio", "hideResizeSquares", "allowMoveImage", "cropper", "alignImage", "disabled", "hidden"], outputs: ["imageCropped", "startCropImage", "imageLoaded", "cropperReady", "loadImageFailed", "transformChange"] }] });
|
|
190
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: ProfileImageCropperComponent, decorators: [{
|
|
191
|
+
type: Component,
|
|
192
|
+
args: [{ selector: 'pw-image-cropper', template: "<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label>\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div class=\"col-4\">\n <img [src]=\"croppedImage\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.image-cropper label{background:var(--first);border-radius:5px;color:#fff;display:table;font-size:13px;font-weight:500;padding:7px}.image-cropper input[type=file]{display:none}.card-footer{background-color:transparent;left:0}\n"] }]
|
|
193
|
+
}], ctorParameters: function () { return [{ type: i0.ChangeDetectorRef }]; }, propDecorators: { imageSelectionEvent: [{
|
|
194
|
+
type: Output
|
|
195
|
+
}], closeEvent: [{
|
|
196
|
+
type: Output
|
|
197
|
+
}], fileChangeEvent: [{
|
|
198
|
+
type: Output
|
|
199
|
+
}], aspectRatio: [{
|
|
200
|
+
type: Input
|
|
201
|
+
}] } });
|
|
202
|
+
|
|
203
|
+
class CustomUploaderComponent extends AppBaseComponent {
|
|
204
|
+
constructor(injector, modalService, document) {
|
|
205
|
+
super(injector);
|
|
206
|
+
this.modalService = modalService;
|
|
207
|
+
this.document = document;
|
|
208
|
+
this.saveEvent = new EventEmitter();
|
|
209
|
+
this.aspectRatio = 'auto';
|
|
210
|
+
this.uploadedFile = null;
|
|
211
|
+
}
|
|
212
|
+
deleteExistingFile() {
|
|
213
|
+
HelperService.raiseDeletePopup().then(rep => {
|
|
214
|
+
if (rep.value) {
|
|
215
|
+
this.previewData = null;
|
|
216
|
+
this.onSaveFile();
|
|
217
|
+
}
|
|
218
|
+
});
|
|
219
|
+
}
|
|
220
|
+
onSaveFile() {
|
|
221
|
+
this.buttonBusy = true;
|
|
222
|
+
this.saveEvent.emit({
|
|
223
|
+
file: this.previewData?.url ? this.previewData : this.uploadedFile,
|
|
224
|
+
name: this.controlName
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
// modal image cropper
|
|
228
|
+
onFileChange(value) {
|
|
229
|
+
this.selectedFileName = value;
|
|
230
|
+
}
|
|
231
|
+
dataURLtoBlob(dataurl) {
|
|
232
|
+
const arr = dataurl?.split(',');
|
|
233
|
+
// eslint-disable-next-line @typescript-eslint/prefer-regexp-exec
|
|
234
|
+
const mime = arr[0].match(/^[A-Z]*[a-z]*:(.*?);[A-Z]*/)[1];
|
|
235
|
+
const bstr = atob(arr[1]);
|
|
236
|
+
let n = bstr.length;
|
|
237
|
+
const u8arr = new Uint8Array(n);
|
|
238
|
+
// eslint-disable-next-line no-plusplus
|
|
239
|
+
while (n--) {
|
|
240
|
+
u8arr[n] = bstr.charCodeAt(n);
|
|
241
|
+
}
|
|
242
|
+
return new Blob([u8arr], { type: mime });
|
|
243
|
+
}
|
|
244
|
+
onImageSelection(event) {
|
|
245
|
+
const blob = this.dataURLtoBlob(event);
|
|
246
|
+
const file = new File([blob], this.selectedFileName);
|
|
247
|
+
this.uploadedFile = file;
|
|
248
|
+
this.onSaveFile();
|
|
249
|
+
}
|
|
250
|
+
openModal(content) {
|
|
251
|
+
this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });
|
|
252
|
+
}
|
|
253
|
+
clearValues() {
|
|
254
|
+
this.uploadedFile = null;
|
|
255
|
+
this.selectedFileName = null;
|
|
256
|
+
this.updateHeight();
|
|
257
|
+
}
|
|
258
|
+
onClose() {
|
|
259
|
+
this.modalService.dismissAll();
|
|
260
|
+
}
|
|
261
|
+
updateHeight() {
|
|
262
|
+
// wait for update card height
|
|
263
|
+
setTimeout(() => {
|
|
264
|
+
this.onImgChange();
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
onImgChange(event) {
|
|
268
|
+
if (event) {
|
|
269
|
+
event.target.src = 'assets/img/icons/imagenotavailable.png';
|
|
270
|
+
}
|
|
271
|
+
const el = this.document.querySelectorAll('pw-domain-config-interface,pw-domain-config-build div[matchheight="card"]');
|
|
272
|
+
el.forEach((item) => {
|
|
273
|
+
HelperService.matchHeights(item, 'card');
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
CustomUploaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CustomUploaderComponent, deps: [{ token: i0.Injector }, { token: i1$1.NgbModal }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Component });
|
|
278
|
+
CustomUploaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: CustomUploaderComponent, selector: "pw-custom-uploader", inputs: { controlName: "controlName", previewData: "previewData", aspectRatio: "aspectRatio", title: "title" }, outputs: { saveEvent: "saveEvent" }, usesInheritance: true, ngImport: i0, template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:170px}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"], dependencies: [{ kind: "component", type: ProfileImageCropperComponent, selector: "pw-image-cropper", inputs: ["aspectRatio"], outputs: ["imageSelectionEvent", "closeEvent", "fileChangeEvent"] }, { kind: "pipe", type: i4.TranslocoPipe, name: "transloco" }] });
|
|
279
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: CustomUploaderComponent, decorators: [{
|
|
280
|
+
type: Component,
|
|
281
|
+
args: [{ selector: 'pw-custom-uploader', template: "<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n", styles: [":root{--first: rgb(23 105 225);--second: rgb(54 194 131);--third: rgb(255 171 0);--text: rgb(34 34 34);--tabs_bg: rgb(23 105 225);--tabs_text: rgb(255 255 255);--titles: rgb(34 34 34);--sidebar_bg: rgb(0, 48, 63);--sidebar_text: rgb(255 255 255)}.upload-button-bar{background:#efefef;padding:1rem 1.25rem}.card{min-height:170px}.preview-wrapper{align-items:center;text-align:center}.preview-wrapper div{padding:1rem;flex:1 1 auto;width:25%;word-break:break-all}button[label=Choose],button[label=Choose]:hover,button[label=Choose]:enabled:active{background-color:#616161;border-color:#616161}\n"] }]
|
|
282
|
+
}], ctorParameters: function () { return [{ type: i0.Injector }, { type: i1$1.NgbModal }, { type: Document, decorators: [{
|
|
283
|
+
type: Inject,
|
|
284
|
+
args: [DOCUMENT]
|
|
285
|
+
}] }]; }, propDecorators: { saveEvent: [{
|
|
286
|
+
type: Output
|
|
287
|
+
}], controlName: [{
|
|
288
|
+
type: Input
|
|
289
|
+
}], previewData: [{
|
|
290
|
+
type: Input
|
|
291
|
+
}], aspectRatio: [{
|
|
292
|
+
type: Input
|
|
293
|
+
}], title: [{
|
|
294
|
+
type: Input
|
|
295
|
+
}] } });
|
|
296
|
+
|
|
121
297
|
class SharedComponentsModule {
|
|
122
298
|
}
|
|
123
299
|
SharedComponentsModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
124
300
|
SharedComponentsModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, declarations: [AbTestContainerComponent,
|
|
125
301
|
AbAlternativeComponent,
|
|
126
|
-
PasswordValidationComponent
|
|
302
|
+
PasswordValidationComponent,
|
|
303
|
+
CustomUploaderComponent,
|
|
304
|
+
ProfileImageCropperComponent], imports: [FormsModule,
|
|
127
305
|
DirectivesModule,
|
|
128
|
-
CoreTranslocoModule
|
|
306
|
+
CoreTranslocoModule,
|
|
307
|
+
ImageCropperModule], exports: [AbTestContainerComponent,
|
|
129
308
|
AbAlternativeComponent,
|
|
130
|
-
PasswordValidationComponent
|
|
309
|
+
PasswordValidationComponent,
|
|
310
|
+
CustomUploaderComponent,
|
|
311
|
+
ProfileImageCropperComponent,
|
|
312
|
+
ImageCropperModule] });
|
|
131
313
|
SharedComponentsModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, imports: [FormsModule,
|
|
132
314
|
DirectivesModule,
|
|
133
|
-
CoreTranslocoModule
|
|
315
|
+
CoreTranslocoModule,
|
|
316
|
+
ImageCropperModule, ImageCropperModule] });
|
|
134
317
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: SharedComponentsModule, decorators: [{
|
|
135
318
|
type: NgModule,
|
|
136
319
|
args: [{
|
|
137
320
|
declarations: [
|
|
138
321
|
AbTestContainerComponent,
|
|
139
322
|
AbAlternativeComponent,
|
|
140
|
-
PasswordValidationComponent
|
|
323
|
+
PasswordValidationComponent,
|
|
324
|
+
CustomUploaderComponent,
|
|
325
|
+
ProfileImageCropperComponent
|
|
141
326
|
],
|
|
142
327
|
imports: [
|
|
143
328
|
FormsModule,
|
|
144
329
|
DirectivesModule,
|
|
145
|
-
CoreTranslocoModule
|
|
330
|
+
CoreTranslocoModule,
|
|
331
|
+
ImageCropperModule
|
|
146
332
|
],
|
|
147
333
|
exports: [
|
|
148
334
|
AbTestContainerComponent,
|
|
149
335
|
AbAlternativeComponent,
|
|
150
|
-
PasswordValidationComponent
|
|
336
|
+
PasswordValidationComponent,
|
|
337
|
+
CustomUploaderComponent,
|
|
338
|
+
ProfileImageCropperComponent,
|
|
339
|
+
ImageCropperModule
|
|
151
340
|
]
|
|
152
341
|
}]
|
|
153
342
|
}] });
|
|
@@ -156,5 +345,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
|
|
|
156
345
|
* Generated bundle index. Do not edit.
|
|
157
346
|
*/
|
|
158
347
|
|
|
159
|
-
export { AbAlternativeComponent, AbTestContainerComponent, PasswordValidationComponent, SharedComponentsModule };
|
|
348
|
+
export { AbAlternativeComponent, AbTestContainerComponent, CustomUploaderComponent, PasswordValidationComponent, ProfileImageCropperComponent, SharedComponentsModule };
|
|
160
349
|
//# sourceMappingURL=shared-components.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared-components.mjs","sources":["../../../../libs/shared-components/src/lib/ab-test/ab-test-container/ab-test-container.component.ts","../../../../libs/shared-components/src/lib/ab-test/ab-alternative/ab-alternative.component.ts","../../../../libs/shared-components/src/lib/ab-test/ab-alternative/ab-alternative.component.html","../../../../libs/shared-components/src/lib/password-validation/password-validation.component.ts","../../../../libs/shared-components/src/lib/password-validation/password-validation.component.html","../../../../libs/shared-components/src/lib/shared-components.module.ts","../../../../libs/shared-components/src/shared-components.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\n\nimport { AB_TEST_ACTIONS } from '@posiwise/common-utilities';\nimport { Experiment } from '../ab-test.interface';\nimport { AbTestService } from '@posiwise/common-services';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'pw-ab-test-container',\n template: '<ng-content></ng-content>'\n})\nexport class AbTestContainerComponent implements OnInit {\n @Input()\n experimentName: string;\n\n @Input()\n serviceName: string;\n\n data: Experiment;\n\n /**\n * Specifies boolean to show the experiment as fallback\n */\n showDefaultExperiment = false;\n\n constructor(private service: AbTestService) {}\n\n ngOnInit(): void {\n this.getExperiment();\n }\n\n private getExperiment() {\n this.service\n .getExperiment(this.experimentName, AB_TEST_ACTIONS.START, this.serviceName)\n .subscribe({\n next: (response: Experiment) => {\n this.showDefaultExperiment = false;\n this.data = response || ({} as Experiment);\n },\n error: () => {\n // in case the api for experiment fails, we show the default experiment\n this.showDefaultExperiment = true;\n }\n });\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { AbTestContainerComponent } from '../ab-test-container/ab-test-container.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ab-alternative',\n templateUrl: './ab-alternative.component.html'\n})\nexport class AbAlternativeComponent {\n @Input()\n name: string;\n\n /**\n * Specficies AbTestContainerComponent instance template reference\n */\n @Input()\n ref: AbTestContainerComponent;\n\n /**\n * If the getExperiment call fails, it can be set to show the experiment\n * as fallback\n */\n @Input()\n default = false;\n}\n","<!-- renders the template for the started experiment.\nin case of error, render the template marked as default=true -->\n<ng-template [ngIf]=\"\n ref?.data?.alternative === name || (default === true && ref.showDefaultExperiment === true)\n \">\n <ng-content></ng-content>\n</ng-template>\n","import { Component, EventEmitter, Injector, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { StatusCodes } from 'http-status-codes';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-password-validation',\n templateUrl: './password-validation.component.html'\n})\nexport class PasswordValidationComponent extends AppBaseComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<any>;\n\n @Output()\n successEvent: EventEmitter<boolean> = new EventEmitter();\n\n password: string;\n\n buttonBusy: boolean;\n\n constructor(injector: Injector, private modal: NgbModal) {\n super(injector);\n }\n\n open() {\n this.modal.open(this.content, { centered: true, windowClass: 'modal-holder' });\n }\n\n validatePassword() {\n if (this.password) {\n this.buttonBusy = true;\n this.userService\n .checkPassword({ password: this.password })\n .subscribe(data => {\n if (data && data?.status === StatusCodes.OK) {\n this.successEvent.emit(true);\n this.modal.dismissAll();\n this.password = null;\n } else {\n this.successEvent.emit(false);\n this.password = null;\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ 'User.Account.Message.EnterPassword' | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { AbTestContainerComponent } from './ab-test/ab-test-container/ab-test-container.component';\nimport { AbAlternativeComponent } from './ab-test/ab-alternative/ab-alternative.component';\nimport { PasswordValidationComponent } from './password-validation/password-validation.component';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { CoreTranslocoModule } from \"@posiwise/core-transloco\";\n\nimport { FormsModule } from '@angular/forms';\n\n@NgModule({\n declarations: [\n AbTestContainerComponent,\n AbAlternativeComponent,\n PasswordValidationComponent\n ],\n imports: [\n FormsModule,\n DirectivesModule,\n CoreTranslocoModule\n ],\n exports: [\n AbTestContainerComponent,\n AbAlternativeComponent,\n PasswordValidationComponent\n ]\n})\nexport class SharedComponentsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shared-components.mjs","sources":["../../../../libs/shared-components/src/lib/ab-test/ab-test-container/ab-test-container.component.ts","../../../../libs/shared-components/src/lib/ab-test/ab-alternative/ab-alternative.component.ts","../../../../libs/shared-components/src/lib/ab-test/ab-alternative/ab-alternative.component.html","../../../../libs/shared-components/src/lib/password-validation/password-validation.component.ts","../../../../libs/shared-components/src/lib/password-validation/password-validation.component.html","../../../../libs/shared-components/src/lib/image-cropper/image-cropper.component.ts","../../../../libs/shared-components/src/lib/image-cropper/image-cropper.component.html","../../../../libs/shared-components/src/lib/custom-uploader/custom-uploader.component.ts","../../../../libs/shared-components/src/lib/custom-uploader/custom-uploader.component.html","../../../../libs/shared-components/src/lib/shared-components.module.ts","../../../../libs/shared-components/src/shared-components.ts"],"sourcesContent":["import { Component, Input, OnInit } from '@angular/core';\n\nimport { AB_TEST_ACTIONS } from '@posiwise/common-utilities';\nimport { Experiment } from '../ab-test.interface';\nimport { AbTestService } from '@posiwise/common-services';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'pw-ab-test-container',\n template: '<ng-content></ng-content>'\n})\nexport class AbTestContainerComponent implements OnInit {\n @Input()\n experimentName: string;\n\n @Input()\n serviceName: string;\n\n data: Experiment;\n\n /**\n * Specifies boolean to show the experiment as fallback\n */\n showDefaultExperiment = false;\n\n constructor(private service: AbTestService) {}\n\n ngOnInit(): void {\n this.getExperiment();\n }\n\n private getExperiment() {\n this.service\n .getExperiment(this.experimentName, AB_TEST_ACTIONS.START, this.serviceName)\n .subscribe({\n next: (response: Experiment) => {\n this.showDefaultExperiment = false;\n this.data = response || ({} as Experiment);\n },\n error: () => {\n // in case the api for experiment fails, we show the default experiment\n this.showDefaultExperiment = true;\n }\n });\n }\n}\n","import { Component, Input } from '@angular/core';\n\nimport { AbTestContainerComponent } from '../ab-test-container/ab-test-container.component';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ab-alternative',\n templateUrl: './ab-alternative.component.html'\n})\nexport class AbAlternativeComponent {\n @Input()\n name: string;\n\n /**\n * Specficies AbTestContainerComponent instance template reference\n */\n @Input()\n ref: AbTestContainerComponent;\n\n /**\n * If the getExperiment call fails, it can be set to show the experiment\n * as fallback\n */\n @Input()\n default = false;\n}\n","<!-- renders the template for the started experiment.\nin case of error, render the template marked as default=true -->\n<ng-template [ngIf]=\"\n ref?.data?.alternative === name || (default === true && ref.showDefaultExperiment === true)\n \">\n <ng-content></ng-content>\n</ng-template>\n","import { Component, EventEmitter, Injector, Output, TemplateRef, ViewChild } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\nimport { StatusCodes } from 'http-status-codes';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\n\n@Component({\n selector: 'pw-password-validation',\n templateUrl: './password-validation.component.html'\n})\nexport class PasswordValidationComponent extends AppBaseComponent {\n @ViewChild('content', { static: true }) content: TemplateRef<any>;\n\n @Output()\n successEvent: EventEmitter<boolean> = new EventEmitter();\n\n password: string;\n\n buttonBusy: boolean;\n\n constructor(injector: Injector, private modal: NgbModal) {\n super(injector);\n }\n\n open() {\n this.modal.open(this.content, { centered: true, windowClass: 'modal-holder' });\n }\n\n validatePassword() {\n if (this.password) {\n this.buttonBusy = true;\n this.userService\n .checkPassword({ password: this.password })\n .subscribe(data => {\n if (data && data?.status === StatusCodes.OK) {\n this.successEvent.emit(true);\n this.modal.dismissAll();\n this.password = null;\n } else {\n this.successEvent.emit(false);\n this.password = null;\n }\n })\n .add(() => {\n this.buttonBusy = false;\n });\n }\n }\n}\n","<ng-template #content\n let-modal>\n <div class=\"modal-header\">\n <h5 class=\"modal-title\">Confirm</h5>\n <button type=\"button\"\n class=\"btn-close float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n </button>\n </div>\n <div class=\"modal-body\">\n <strong class=\"p3\">{{ 'User.Account.Message.EnterPassword' | transloco }}</strong>\n <div>\n <ng-content></ng-content>\n </div>\n <div class=\"row\">\n <div class=\"col-12\">\n <input type=\"password\"\n #passwordRef\n [(ngModel)]=\"password\"\n class=\"form-control\"\n placeholder=\"Current Password\" />\n </div>\n </div>\n <div class=\"row mt-2\">\n <div class=\"col-12\">\n <button [buttonBusy]=\"buttonBusy\"\n class=\"btn btn-primary float-end\"\n type=\"button\"\n (click)=\"validatePassword()\">\n {{ 'Button.Confirm' | transloco }}\n </button>\n </div>\n </div>\n </div>\n</ng-template>\n","import { ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';\nimport { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';\n\n@Component({\n selector: 'pw-image-cropper',\n templateUrl: './image-cropper.component.html',\n styleUrls: ['./image-cropper.component.scss']\n})\nexport class ProfileImageCropperComponent {\n imageChangedEvent = '';\n\n croppedImage = '';\n\n @Output() imageSelectionEvent: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() closeEvent: EventEmitter<any> = new EventEmitter<any>();\n\n @Output() fileChangeEvent: EventEmitter<any> = new EventEmitter<any>();\n\n busy: boolean;\n\n @Input() aspectRatio = 'auto';\n\n transform: ImageTransform = {};\n\n canvasRotation = 0;\n\n showCropper = false;\n\n constructor(private cdr: ChangeDetectorRef) {}\n\n onFileChange(event: any): void {\n this.imageChangedEvent = event;\n this.fileChangeEvent.emit(event.target.files[0]?.name);\n }\n\n imageCropped(event: ImageCroppedEvent) {\n this.croppedImage = event.base64;\n this.cdr.detectChanges();\n }\n\n imageLoaded() {\n this.showCropper = true;\n }\n\n rotateLeft() {\n this.canvasRotation--;\n this.flipAfterRotate();\n }\n\n rotateRight() {\n this.canvasRotation++;\n this.flipAfterRotate();\n }\n\n private flipAfterRotate() {\n const flippedH = this.transform.flipH;\n const flippedV = this.transform.flipV;\n this.transform = {\n ...this.transform,\n flipH: flippedV,\n flipV: flippedH\n };\n }\n\n flipHorizontal() {\n this.transform = {\n ...this.transform,\n flipH: !this.transform.flipH\n };\n }\n\n flipVertical() {\n this.transform = {\n ...this.transform,\n flipV: !this.transform.flipV\n };\n }\n\n saveProfilePicture() {\n if (this.croppedImage) {\n this.imageSelectionEvent.emit(this.croppedImage);\n this.busy = true;\n }\n }\n\n onCloseModal() {\n this.closeEvent.emit();\n }\n}\n","<section class=\"image-cropper\">\n <div class=\"row text-start\">\n <div class=\"col-12\">\n <div class=\"card-block pb-0\">\n <div class=\"row\">\n <div class=\"col-12\">\n <div class=\"file-upload my-2 float-start\">\n <label>\n Upload Pic\n <input id=\"custom-input\"\n type=\"file\"\n (change)=\"onFileChange($event)\" />\n </label>\n </div>\n\n <div class=\"float-end m-2\">\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Left\">\n <i\n class=\"fa fa-undo-alt\"\n (click)=\"rotateLeft()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Rotate Right\">\n <i\n class=\"fa fa-redo-alt\"\n (click)=\"rotateRight()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Horizontal\">\n <i\n class=\"fa fa-arrows-alt-h\"\n (click)=\"flipHorizontal()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n <button class=\"btn btn-primary btn-sm mx-2\"\n title=\"Flip Vertical\">\n <i\n class=\"fa fa-arrows-alt-v\"\n (click)=\"flipVertical()\"\n aria-hidden=\"true\"\n ></i>\n </button>\n </div>\n </div>\n </div>\n\n <div class=\"row\">\n <div class=\"col-8\">\n <div *ngIf=\"aspectRatio === 'auto'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [aspectRatio]=\"4 / 4\"\n [onlyScaleDown]=\"true\"\n [transform]=\"transform\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'fullLogo'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [aspectRatio]=\"5 / 1.1\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n\n <div *ngIf=\"aspectRatio === 'custom'\">\n <image-cropper [imageChangedEvent]=\"imageChangedEvent\"\n [maintainAspectRatio]=\"true\"\n [canvasRotation]=\"canvasRotation\"\n [transform]=\"transform\"\n [aspectRatio]=\"4 / 3\"\n [onlyScaleDown]=\"true\"\n [roundCropper]=\"false\"\n alignImage=\"center\"\n outputType=\"base64\"\n (imageCropped)=\"imageCropped($event)\"\n (imageLoaded)=\"imageLoaded()\"\n [imageQuality]=\"100\"\n [style.display]=\"showCropper ? null : 'none'\"></image-cropper>\n </div>\n </div>\n <div class=\"col-4\">\n <img [src]=\"croppedImage\"\n alt=\"cropped.png\"\n width=\"128\" />\n </div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"card-footer px-3\">\n <div class=\"float-end mt-2\">\n <button type=\"button\"\n class=\"btn btn-outline-default me-2\"\n (click)=\"onCloseModal()\">\n Close\n </button>\n <button type=\"button\"\n class=\"btn btn-primary\"\n (click)=\"saveProfilePicture()\"\n [buttonBusy]=\"busy\">\n Save\n </button>\n </div>\n </div>\n</section>\n","import { DOCUMENT } from '@angular/common';\nimport { Component, EventEmitter, Inject, Injector, Input, Output } from '@angular/core';\nimport { NgbModal } from '@ng-bootstrap/ng-bootstrap';\n\nimport { AppBaseComponent } from '@posiwise/app-base-component';\nimport { HelperService } from '@posiwise/helper-service';\n\n@Component({\n selector: 'pw-custom-uploader',\n templateUrl: './custom-uploader.component.html',\n styleUrls: ['./custom-uploader.component.scss']\n})\nexport class CustomUploaderComponent extends AppBaseComponent {\n @Output() saveEvent: EventEmitter<{ file: string; name: string }> = new EventEmitter<{\n file: string;\n name: string;\n }>();\n\n @Input() controlName: string;\n\n @Input() previewData: any;\n\n @Input() aspectRatio = 'auto';\n\n @Input() title: string;\n\n uploadedFile = null;\n\n selectedFileName: string;\n\n buttonBusy: boolean;\n\n constructor(\n injector: Injector,\n private modalService: NgbModal,\n @Inject(DOCUMENT) private document: Document\n ) {\n super(injector);\n }\n\n deleteExistingFile() {\n HelperService.raiseDeletePopup().then(rep => {\n if (rep.value) {\n this.previewData = null;\n this.onSaveFile();\n }\n });\n }\n\n onSaveFile() {\n this.buttonBusy = true;\n this.saveEvent.emit({\n file: this.previewData?.url ? this.previewData : this.uploadedFile,\n name: this.controlName\n });\n }\n\n // modal image cropper\n\n onFileChange(value) {\n this.selectedFileName = value;\n }\n\n private dataURLtoBlob(dataurl: string) {\n const arr = dataurl?.split(',');\n // eslint-disable-next-line @typescript-eslint/prefer-regexp-exec\n const mime = arr[0].match(/^[A-Z]*[a-z]*:(.*?);[A-Z]*/)[1];\n const bstr = atob(arr[1]);\n let n = bstr.length;\n const u8arr = new Uint8Array(n);\n // eslint-disable-next-line no-plusplus\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n return new Blob([u8arr], { type: mime });\n }\n\n onImageSelection(event) {\n const blob = this.dataURLtoBlob(event);\n const file: File = new File([blob], this.selectedFileName);\n this.uploadedFile = file;\n this.onSaveFile();\n }\n\n openModal(content) {\n this.modalService.open(content, { centered: true, windowClass: 'modal-holder' });\n }\n\n clearValues() {\n this.uploadedFile = null;\n this.selectedFileName = null;\n this.updateHeight();\n }\n\n onClose() {\n this.modalService.dismissAll();\n }\n\n updateHeight() {\n // wait for update card height\n setTimeout(() => {\n this.onImgChange();\n });\n }\n\n onImgChange(event?: any) {\n if (event) {\n event.target.src = 'assets/img/icons/imagenotavailable.png';\n }\n const el = this.document.querySelectorAll(\n 'pw-domain-config-interface,pw-domain-config-build div[matchheight=\"card\"]'\n );\n el.forEach((item: Element) => {\n HelperService.matchHeights(item as HTMLElement, 'card');\n });\n }\n}\n","<div class=\"card pb-2\">\n <div class=\"card-header upload-button-bar\">\n <button pButton\n type=\"button\"\n [disabled]=\"previewData?.url || uploadedFile\"\n (click)=\"openModal(content)\"\n icon=\"pi pi-plus\"\n label=\"Choose\"></button>\n </div>\n <div class=\"card-body\">\n <!-- no files -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"!previewData?.url\">\n <div>\n <img src=\"assets/img/icons/nofilesfound.png\"\n (load)=\"onImgChange()\"\n class=\"mx-auto img-fluid\"\n alt=\"\" />\n </div>\n </div>\n <!-- exising images -->\n <div class=\"d-flex preview-wrapper\"\n *ngIf=\"previewData?.url\">\n <div>\n <a [href]=\"previewData?.url\"\n target=\"_blank\">\n <img [src]=\"previewData?.url\"\n alt=\"\"\n (load)=\"onImgChange()\"\n (error)=\"onImgChange($event)\"\n class=\"img-fluid\" />\n </a>\n </div>\n <div class=\"ms-3\">\n <i\n container=\"body\"\n ngbTooltip=\"Delete\"\n (click)=\"deleteExistingFile()\"\n class=\"fa fa-trash delete-icon\"\n aria-hidden=\"true\"\n ></i>\n </div>\n </div>\n </div>\n</div>\n<!-- image cropper -->\n<ng-template #content\n let-modal>\n <div class=\"card m-0\">\n <div class=\"card-content\">\n <div class=\"card-title\">\n <h3 class=\"modal-title\">{{ title }}</h3>\n <button type=\"button\"\n class=\"btn-close float-end float-end\"\n aria-label=\"Close\"\n (click)=\"modal.dismiss()\">\n\n </button>\n </div>\n <div class=\"card-header\">\n <small> {{ 'User.Profile.PictureMessage' | transloco }}</small>\n <pw-image-cropper #profile\n [aspectRatio]=\"aspectRatio\"\n (fileChangeEvent)=\"onFileChange($event)\"\n (imageSelectionEvent)=\"onImageSelection($event)\"\n (closeEvent)=\"onClose()\">\n </pw-image-cropper>\n </div>\n </div>\n </div>\n</ng-template>\n","import { NgModule } from '@angular/core';\nimport { AbTestContainerComponent } from './ab-test/ab-test-container/ab-test-container.component';\nimport { AbAlternativeComponent } from './ab-test/ab-alternative/ab-alternative.component';\nimport { PasswordValidationComponent } from './password-validation/password-validation.component';\nimport { DirectivesModule } from '@posiwise/directives';\nimport { CoreTranslocoModule } from '@posiwise/core-transloco';\nimport { CustomUploaderComponent } from \"./custom-uploader/custom-uploader.component\";\nimport {ProfileImageCropperComponent} from \"./image-cropper/image-cropper.component\";\n\nimport { FormsModule } from '@angular/forms';\nimport { ImageCropperModule } from 'ngx-image-cropper';\n\n@NgModule({\n declarations: [\n AbTestContainerComponent,\n AbAlternativeComponent,\n PasswordValidationComponent,\n CustomUploaderComponent,\n ProfileImageCropperComponent\n ],\n imports: [\n FormsModule,\n DirectivesModule,\n CoreTranslocoModule,\n ImageCropperModule\n ],\n exports: [\n AbTestContainerComponent,\n AbAlternativeComponent,\n PasswordValidationComponent,\n CustomUploaderComponent,\n ProfileImageCropperComponent,\n ImageCropperModule\n ]\n})\nexport class SharedComponentsModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i1","i2","i2.ProfileImageCropperComponent","i3"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -2,3 +2,5 @@ export * from './lib/shared-components.module';
|
|
|
2
2
|
export * from './lib/ab-test/ab-test-container/ab-test-container.component';
|
|
3
3
|
export * from './lib/ab-test/ab-alternative/ab-alternative.component';
|
|
4
4
|
export * from './lib/password-validation/password-validation.component';
|
|
5
|
+
export * from './lib/custom-uploader/custom-uploader.component';
|
|
6
|
+
export * from './lib/image-cropper/image-cropper.component';
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { EventEmitter, Injector } from '@angular/core';
|
|
2
|
+
import { NgbModal } from '@ng-bootstrap/ng-bootstrap';
|
|
3
|
+
import { AppBaseComponent } from '@posiwise/app-base-component';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare class CustomUploaderComponent extends AppBaseComponent {
|
|
6
|
+
private modalService;
|
|
7
|
+
private document;
|
|
8
|
+
saveEvent: EventEmitter<{
|
|
9
|
+
file: string;
|
|
10
|
+
name: string;
|
|
11
|
+
}>;
|
|
12
|
+
controlName: string;
|
|
13
|
+
previewData: any;
|
|
14
|
+
aspectRatio: string;
|
|
15
|
+
title: string;
|
|
16
|
+
uploadedFile: any;
|
|
17
|
+
selectedFileName: string;
|
|
18
|
+
buttonBusy: boolean;
|
|
19
|
+
constructor(injector: Injector, modalService: NgbModal, document: Document);
|
|
20
|
+
deleteExistingFile(): void;
|
|
21
|
+
onSaveFile(): void;
|
|
22
|
+
onFileChange(value: any): void;
|
|
23
|
+
private dataURLtoBlob;
|
|
24
|
+
onImageSelection(event: any): void;
|
|
25
|
+
openModal(content: any): void;
|
|
26
|
+
clearValues(): void;
|
|
27
|
+
onClose(): void;
|
|
28
|
+
updateHeight(): void;
|
|
29
|
+
onImgChange(event?: any): void;
|
|
30
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<CustomUploaderComponent, never>;
|
|
31
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<CustomUploaderComponent, "pw-custom-uploader", never, { "controlName": "controlName"; "previewData": "previewData"; "aspectRatio": "aspectRatio"; "title": "title"; }, { "saveEvent": "saveEvent"; }, never, never, false, never>;
|
|
32
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ChangeDetectorRef, EventEmitter } from '@angular/core';
|
|
2
|
+
import { ImageCroppedEvent, ImageTransform } from 'ngx-image-cropper';
|
|
3
|
+
import * as i0 from "@angular/core";
|
|
4
|
+
export declare class ProfileImageCropperComponent {
|
|
5
|
+
private cdr;
|
|
6
|
+
imageChangedEvent: string;
|
|
7
|
+
croppedImage: string;
|
|
8
|
+
imageSelectionEvent: EventEmitter<any>;
|
|
9
|
+
closeEvent: EventEmitter<any>;
|
|
10
|
+
fileChangeEvent: EventEmitter<any>;
|
|
11
|
+
busy: boolean;
|
|
12
|
+
aspectRatio: string;
|
|
13
|
+
transform: ImageTransform;
|
|
14
|
+
canvasRotation: number;
|
|
15
|
+
showCropper: boolean;
|
|
16
|
+
constructor(cdr: ChangeDetectorRef);
|
|
17
|
+
onFileChange(event: any): void;
|
|
18
|
+
imageCropped(event: ImageCroppedEvent): void;
|
|
19
|
+
imageLoaded(): void;
|
|
20
|
+
rotateLeft(): void;
|
|
21
|
+
rotateRight(): void;
|
|
22
|
+
private flipAfterRotate;
|
|
23
|
+
flipHorizontal(): void;
|
|
24
|
+
flipVertical(): void;
|
|
25
|
+
saveProfilePicture(): void;
|
|
26
|
+
onCloseModal(): void;
|
|
27
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<ProfileImageCropperComponent, never>;
|
|
28
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ProfileImageCropperComponent, "pw-image-cropper", never, { "aspectRatio": "aspectRatio"; }, { "imageSelectionEvent": "imageSelectionEvent"; "closeEvent": "closeEvent"; "fileChangeEvent": "fileChangeEvent"; }, never, never, false, never>;
|
|
29
|
+
}
|
|
@@ -2,11 +2,14 @@ import * as i0 from "@angular/core";
|
|
|
2
2
|
import * as i1 from "./ab-test/ab-test-container/ab-test-container.component";
|
|
3
3
|
import * as i2 from "./ab-test/ab-alternative/ab-alternative.component";
|
|
4
4
|
import * as i3 from "./password-validation/password-validation.component";
|
|
5
|
-
import * as i4 from "
|
|
6
|
-
import * as i5 from "
|
|
7
|
-
import * as i6 from "@
|
|
5
|
+
import * as i4 from "./custom-uploader/custom-uploader.component";
|
|
6
|
+
import * as i5 from "./image-cropper/image-cropper.component";
|
|
7
|
+
import * as i6 from "@angular/forms";
|
|
8
|
+
import * as i7 from "@posiwise/directives";
|
|
9
|
+
import * as i8 from "@posiwise/core-transloco";
|
|
10
|
+
import * as i9 from "ngx-image-cropper";
|
|
8
11
|
export declare class SharedComponentsModule {
|
|
9
12
|
static ɵfac: i0.ɵɵFactoryDeclaration<SharedComponentsModule, never>;
|
|
10
|
-
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedComponentsModule, [typeof i1.AbTestContainerComponent, typeof i2.AbAlternativeComponent, typeof i3.PasswordValidationComponent], [typeof
|
|
13
|
+
static ɵmod: i0.ɵɵNgModuleDeclaration<SharedComponentsModule, [typeof i1.AbTestContainerComponent, typeof i2.AbAlternativeComponent, typeof i3.PasswordValidationComponent, typeof i4.CustomUploaderComponent, typeof i5.ProfileImageCropperComponent], [typeof i6.FormsModule, typeof i7.DirectivesModule, typeof i8.CoreTranslocoModule, typeof i9.ImageCropperModule], [typeof i1.AbTestContainerComponent, typeof i2.AbAlternativeComponent, typeof i3.PasswordValidationComponent, typeof i4.CustomUploaderComponent, typeof i5.ProfileImageCropperComponent, typeof i9.ImageCropperModule]>;
|
|
11
14
|
static ɵinj: i0.ɵɵInjectorDeclaration<SharedComponentsModule>;
|
|
12
15
|
}
|
package/package.json
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@posiwise/shared-components",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "15.2.5",
|
|
6
6
|
"@angular/core": "15.2.5",
|
|
7
7
|
"@ngneat/transloco": "^4.2.6",
|
|
8
8
|
"@ngneat/transloco-keys-manager": "^3.7.0",
|
|
9
|
+
"ngx-image-cropper": "^6.3.3",
|
|
9
10
|
"@posiwise/common-services": "^0.0.49",
|
|
10
11
|
"@posiwise/app-base-component": "^0.0.8",
|
|
11
12
|
"@posiwise/directives": "^0.0.1",
|
|
12
|
-
"@posiwise/core-transloco": "^0.0.1"
|
|
13
|
+
"@posiwise/core-transloco": "^0.0.1",
|
|
14
|
+
"@posiwise/core-styles": "^1.0.0"
|
|
13
15
|
},
|
|
14
16
|
"dependencies": {
|
|
15
17
|
"tslib": "^2.3.0"
|