@shival99/z-ui 2.4.2 → 2.4.4
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/css/base.css +2 -1
- package/assets/css/global.css +23 -2
- package/assets/css/tailwind.css +7 -4
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs +6 -6
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-audio-player.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-audio-player.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +27 -12
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs +6 -6
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs +11 -11
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +40 -40
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-card.mjs +7 -7
- package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-chat.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-code.mjs +58 -19
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-command.mjs +6 -5
- package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +17 -17
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +12 -4
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +6 -6
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-empty.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +27 -27
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +42 -34
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-hover-glide.mjs +221 -0
- package/fesm2022/shival99-z-ui-components-z-hover-glide.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +5 -5
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +18 -4
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs +346 -956
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +8 -8
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +5 -5
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +17 -17
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs +352 -0
- package/fesm2022/shival99-z-ui-components-z-number-ticker.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-overlay.mjs +9 -9
- package/fesm2022/shival99-z-ui-components-z-overlay.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +14 -14
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +32 -8
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +181 -26
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +5 -5
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +5 -5
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +107 -105
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +327 -31
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tags.mjs +15 -15
- package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +4 -4
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +10 -9
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +11 -11
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +3 -3
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-i18n.mjs +6 -26
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-pipes.mjs +18 -18
- package/fesm2022/shival99-z-ui-pipes.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-services.mjs +31 -31
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/package.json +21 -1
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +6 -2
- package/types/shival99-z-ui-components-z-calendar.d.ts +4 -4
- package/types/shival99-z-ui-components-z-card.d.ts +21 -21
- package/types/shival99-z-ui-components-z-code.d.ts +16 -3
- package/types/shival99-z-ui-components-z-drawer.d.ts +1 -1
- package/types/shival99-z-ui-components-z-editor.d.ts +8 -8
- package/types/shival99-z-ui-components-z-gallery.d.ts +8 -5
- package/types/shival99-z-ui-components-z-hover-glide.d.ts +48 -0
- package/types/shival99-z-ui-components-z-loading.d.ts +9 -2
- package/types/shival99-z-ui-components-z-media-player.d.ts +102 -172
- package/types/shival99-z-ui-components-z-metric-card.d.ts +19 -19
- package/types/shival99-z-ui-components-z-modal.d.ts +1 -1
- package/types/shival99-z-ui-components-z-number-ticker.d.ts +110 -0
- package/types/shival99-z-ui-components-z-overlay.d.ts +3 -3
- package/types/shival99-z-ui-components-z-popover.d.ts +11 -8
- package/types/shival99-z-ui-components-z-qrcode.d.ts +4 -1
- package/types/shival99-z-ui-components-z-select.d.ts +45 -7
- package/types/shival99-z-ui-components-z-switch.d.ts +22 -21
- package/types/shival99-z-ui-components-z-table.d.ts +1 -1
- package/types/shival99-z-ui-components-z-tabs.d.ts +59 -7
- package/types/shival99-z-ui-components-z-toast.d.ts +1 -1
- package/types/shival99-z-ui-components-z-tooltip.d.ts +2 -2
- package/types/shival99-z-ui-components-z-upload.d.ts +3 -3
- package/types/shival99-z-ui-services.d.ts +10 -10
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isPlatformBrowser } from '@angular/common';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { input, viewChild, inject, PLATFORM_ID, signal, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
|
+
import { input, viewChild, inject, PLATFORM_ID, signal, computed, effect, ViewEncapsulation, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
4
4
|
import { TranslatePipe } from '@ngx-translate/core';
|
|
5
5
|
import { ZButtonComponent } from '@shival99/z-ui/components/z-button';
|
|
6
6
|
import { zTransform } from '@shival99/z-ui/utils';
|
|
@@ -46,8 +46,9 @@ class ZQrCodeComponent {
|
|
|
46
46
|
...(ngDevMode ? [{ debugName: "zFrameColor" }] : /* istanbul ignore next */ []));
|
|
47
47
|
zFramePadding = input(12, /* @ts-ignore */
|
|
48
48
|
...(ngDevMode ? [{ debugName: "zFramePadding" }] : /* istanbul ignore next */ [])); // padding around QR inside frame
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
// Border radius of the frame; falls back to the theme's --radius-lg when unset
|
|
50
|
+
zFrameBorderRadius = input(undefined, /* @ts-ignore */
|
|
51
|
+
...(ngDevMode ? [{ debugName: "zFrameBorderRadius" }] : /* istanbul ignore next */ []));
|
|
51
52
|
zDownloadable = input(false, { ...(ngDevMode ? { debugName: "zDownloadable" } : /* istanbul ignore next */ {}), transform: zTransform }); // toggles hover overlay button
|
|
52
53
|
zDownloadButton = input(false, { ...(ngDevMode ? { debugName: "zDownloadButton" } : /* istanbul ignore next */ {}), transform: zTransform }); // toggles standalone button below
|
|
53
54
|
zShadow = input(true, { ...(ngDevMode ? { debugName: "zShadow" } : /* istanbul ignore next */ {}), transform: zTransform }); // Bật/tắt đổ bóng khung ngoài
|
|
@@ -59,6 +60,29 @@ class ZQrCodeComponent {
|
|
|
59
60
|
// States
|
|
60
61
|
downloadText = signal('i18n_z_ui_qrcode_download', /* @ts-ignore */
|
|
61
62
|
...(ngDevMode ? [{ debugName: "downloadText" }] : /* istanbul ignore next */ []));
|
|
63
|
+
frameBorderRadiusStyle = computed(() => {
|
|
64
|
+
if (this.zFrame() === 'none' && !this.zShadow()) {
|
|
65
|
+
return '0px';
|
|
66
|
+
}
|
|
67
|
+
const explicit = this.zFrameBorderRadius();
|
|
68
|
+
return explicit !== undefined ? `${explicit}px` : 'var(--radius-lg)';
|
|
69
|
+
}, /* @ts-ignore */
|
|
70
|
+
...(ngDevMode ? [{ debugName: "frameBorderRadiusStyle" }] : /* istanbul ignore next */ []));
|
|
71
|
+
/** Resolves the frame radius to a px number for canvas drawing, reading the theme's --radius-lg when unset. */
|
|
72
|
+
_resolveFrameBorderRadiusPx() {
|
|
73
|
+
const explicit = this.zFrameBorderRadius();
|
|
74
|
+
if (explicit !== undefined) {
|
|
75
|
+
return explicit;
|
|
76
|
+
}
|
|
77
|
+
const wrapper = this._canvasRef()?.nativeElement.parentElement;
|
|
78
|
+
if (wrapper && isPlatformBrowser(this._platformId)) {
|
|
79
|
+
const resolved = parseFloat(getComputedStyle(wrapper).borderRadius);
|
|
80
|
+
if (!Number.isNaN(resolved)) {
|
|
81
|
+
return resolved;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return 12;
|
|
85
|
+
}
|
|
62
86
|
constructor() {
|
|
63
87
|
// Re-render when any signal inputs change
|
|
64
88
|
effect(() => {
|
|
@@ -87,7 +111,7 @@ class ZQrCodeComponent {
|
|
|
87
111
|
const frame = this.zFrame();
|
|
88
112
|
const dpr = isPlatformBrowser(this._platformId) ? window.devicePixelRatio || 1 : 1;
|
|
89
113
|
const framePadding = frame !== 'none' ? this.zFramePadding() : 0;
|
|
90
|
-
const frameBorderRadius = this.
|
|
114
|
+
const frameBorderRadius = this._resolveFrameBorderRadiusPx();
|
|
91
115
|
const bannerHeight = frame === 'text-bottom' || frame === 'text-top' ? 50 : 0;
|
|
92
116
|
const cssWidth = size + framePadding * 2;
|
|
93
117
|
const cssHeight = size + framePadding * 2 + bannerHeight;
|
|
@@ -389,12 +413,12 @@ class ZQrCodeComponent {
|
|
|
389
413
|
link.click();
|
|
390
414
|
document.body.removeChild(link);
|
|
391
415
|
}
|
|
392
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
393
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
416
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZQrCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
417
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: ZQrCodeComponent, isStandalone: true, selector: "z-qrcode", inputs: { zValue: { classPropertyName: "zValue", publicName: "zValue", isSignal: true, isRequired: true, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zLevel: { classPropertyName: "zLevel", publicName: "zLevel", isSignal: true, isRequired: false, transformFunction: null }, zLogo: { classPropertyName: "zLogo", publicName: "zLogo", isSignal: true, isRequired: false, transformFunction: null }, zLogoSize: { classPropertyName: "zLogoSize", publicName: "zLogoSize", isSignal: true, isRequired: false, transformFunction: null }, zLogoBgColor: { classPropertyName: "zLogoBgColor", publicName: "zLogoBgColor", isSignal: true, isRequired: false, transformFunction: null }, zLogoBgShape: { classPropertyName: "zLogoBgShape", publicName: "zLogoBgShape", isSignal: true, isRequired: false, transformFunction: null }, zLogoPadding: { classPropertyName: "zLogoPadding", publicName: "zLogoPadding", isSignal: true, isRequired: false, transformFunction: null }, zFgColor: { classPropertyName: "zFgColor", publicName: "zFgColor", isSignal: true, isRequired: false, transformFunction: null }, zBgColor: { classPropertyName: "zBgColor", publicName: "zBgColor", isSignal: true, isRequired: false, transformFunction: null }, zDotStyle: { classPropertyName: "zDotStyle", publicName: "zDotStyle", isSignal: true, isRequired: false, transformFunction: null }, zEyeStyle: { classPropertyName: "zEyeStyle", publicName: "zEyeStyle", isSignal: true, isRequired: false, transformFunction: null }, zEyeColor: { classPropertyName: "zEyeColor", publicName: "zEyeColor", isSignal: true, isRequired: false, transformFunction: null }, zMargin: { classPropertyName: "zMargin", publicName: "zMargin", isSignal: true, isRequired: false, transformFunction: null }, zFgGradient: { classPropertyName: "zFgGradient", publicName: "zFgGradient", isSignal: true, isRequired: false, transformFunction: null }, zFrame: { classPropertyName: "zFrame", publicName: "zFrame", isSignal: true, isRequired: false, transformFunction: null }, zFrameText: { classPropertyName: "zFrameText", publicName: "zFrameText", isSignal: true, isRequired: false, transformFunction: null }, zFrameColor: { classPropertyName: "zFrameColor", publicName: "zFrameColor", isSignal: true, isRequired: false, transformFunction: null }, zFramePadding: { classPropertyName: "zFramePadding", publicName: "zFramePadding", isSignal: true, isRequired: false, transformFunction: null }, zFrameBorderRadius: { classPropertyName: "zFrameBorderRadius", publicName: "zFrameBorderRadius", isSignal: true, isRequired: false, transformFunction: null }, zDownloadable: { classPropertyName: "zDownloadable", publicName: "zDownloadable", isSignal: true, isRequired: false, transformFunction: null }, zDownloadButton: { classPropertyName: "zDownloadButton", publicName: "zDownloadButton", isSignal: true, isRequired: false, transformFunction: null }, zShadow: { classPropertyName: "zShadow", publicName: "zShadow", isSignal: true, isRequired: false, transformFunction: null }, zLoading: { classPropertyName: "zLoading", publicName: "zLoading", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "_canvasRef", first: true, predicate: ["qrCanvas"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"z-qrcode-container relative flex flex-col items-center\">\n <div\n class=\"z-qrcode-canvas-wrapper relative transition-all duration-200\"\n [class.shadow-md]=\"zShadow()\"\n [style.border-radius]=\"frameBorderRadiusStyle()\"\n [style.overflow]=\"zFrame() !== 'none' || zShadow() ? 'hidden' : 'visible'\">\n <canvas\n #qrCanvas\n class=\"block\"\n [style.width.px]=\"zFrame() !== 'none' ? zSize() + zFramePadding() * 2 : zSize()\"\n [style.height.px]=\"\n zFrame() !== 'none'\n ? zSize() + zFramePadding() * 2 + (zFrame() === 'text-bottom' || zFrame() === 'text-top' ? 50 : 0)\n : zSize()\n \"></canvas>\n\n @if (zLoading()) {\n <div class=\"absolute inset-0 z-10 flex items-center justify-center bg-white/80 transition-opacity\">\n <svg\n class=\"h-8 w-8 animate-spin text-slate-800\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n </div>\n }\n\n @if (zDownloadable() && !zLoading()) {\n <div\n class=\"absolute inset-0 z-10 flex items-center justify-center rounded-md bg-black/45 opacity-0 transition-all duration-200 hover:opacity-100\">\n <button\n z-button\n [zWave]=\"false\"\n zSize=\"sm\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n </div>\n\n @if (zDownloadButton() && !zLoading()) {\n <div class=\"mt-4\">\n <button\n z-button\n [zWave]=\"false\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n</div>\n", styles: ["z-qrcode{display:inline-block;line-height:0}z-qrcode .z-qrcode-container{position:relative;display:inline-flex;flex-direction:column;align-items:center;border-radius:inherit}z-qrcode .z-qrcode-canvas-wrapper{position:relative;overflow:hidden;border-radius:inherit}\n"], dependencies: [{ kind: "component", type: ZButtonComponent, selector: "z-button, button[z-button], a[z-button]", inputs: ["class", "zType", "zSize", "zShape", "zLabel", "zLoading", "zDisabled", "zTypeIcon", "zAnimatedTypeIcon", "zAnimateIcon", "zAnimationTriggerIcon", "zSizeIcon", "zStrokeWidthIcon", "zWave"], exportAs: ["zButton"] }, { kind: "pipe", type: TranslatePipe, name: "translate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
394
418
|
}
|
|
395
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
419
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZQrCodeComponent, decorators: [{
|
|
396
420
|
type: Component,
|
|
397
|
-
args: [{ selector: 'z-qrcode', imports: [TranslatePipe, ZButtonComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"z-qrcode-container relative flex flex-col items-center\">\n <div\n class=\"z-qrcode-canvas-wrapper relative transition-all duration-200\"\n [class.shadow-md]=\"zShadow()\"\n [style.border-radius
|
|
421
|
+
args: [{ selector: 'z-qrcode', imports: [TranslatePipe, ZButtonComponent], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, template: "<div class=\"z-qrcode-container relative flex flex-col items-center\">\n <div\n class=\"z-qrcode-canvas-wrapper relative transition-all duration-200\"\n [class.shadow-md]=\"zShadow()\"\n [style.border-radius]=\"frameBorderRadiusStyle()\"\n [style.overflow]=\"zFrame() !== 'none' || zShadow() ? 'hidden' : 'visible'\">\n <canvas\n #qrCanvas\n class=\"block\"\n [style.width.px]=\"zFrame() !== 'none' ? zSize() + zFramePadding() * 2 : zSize()\"\n [style.height.px]=\"\n zFrame() !== 'none'\n ? zSize() + zFramePadding() * 2 + (zFrame() === 'text-bottom' || zFrame() === 'text-top' ? 50 : 0)\n : zSize()\n \"></canvas>\n\n @if (zLoading()) {\n <div class=\"absolute inset-0 z-10 flex items-center justify-center bg-white/80 transition-opacity\">\n <svg\n class=\"h-8 w-8 animate-spin text-slate-800\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n </div>\n }\n\n @if (zDownloadable() && !zLoading()) {\n <div\n class=\"absolute inset-0 z-10 flex items-center justify-center rounded-md bg-black/45 opacity-0 transition-all duration-200 hover:opacity-100\">\n <button\n z-button\n [zWave]=\"false\"\n zSize=\"sm\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n </div>\n\n @if (zDownloadButton() && !zLoading()) {\n <div class=\"mt-4\">\n <button\n z-button\n [zWave]=\"false\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n</div>\n", styles: ["z-qrcode{display:inline-block;line-height:0}z-qrcode .z-qrcode-container{position:relative;display:inline-flex;flex-direction:column;align-items:center;border-radius:inherit}z-qrcode .z-qrcode-canvas-wrapper{position:relative;overflow:hidden;border-radius:inherit}\n"] }]
|
|
398
422
|
}], ctorParameters: () => [], propDecorators: { zValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "zValue", required: true }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zLevel: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLevel", required: false }] }], zLogo: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLogo", required: false }] }], zLogoSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLogoSize", required: false }] }], zLogoBgColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLogoBgColor", required: false }] }], zLogoBgShape: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLogoBgShape", required: false }] }], zLogoPadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLogoPadding", required: false }] }], zFgColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFgColor", required: false }] }], zBgColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zBgColor", required: false }] }], zDotStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDotStyle", required: false }] }], zEyeStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "zEyeStyle", required: false }] }], zEyeColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zEyeColor", required: false }] }], zMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "zMargin", required: false }] }], zFgGradient: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFgGradient", required: false }] }], zFrame: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFrame", required: false }] }], zFrameText: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFrameText", required: false }] }], zFrameColor: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFrameColor", required: false }] }], zFramePadding: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFramePadding", required: false }] }], zFrameBorderRadius: [{ type: i0.Input, args: [{ isSignal: true, alias: "zFrameBorderRadius", required: false }] }], zDownloadable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDownloadable", required: false }] }], zDownloadButton: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDownloadButton", required: false }] }], zShadow: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShadow", required: false }] }], zLoading: [{ type: i0.Input, args: [{ isSignal: true, alias: "zLoading", required: false }] }], _canvasRef: [{ type: i0.ViewChild, args: ['qrCanvas', { isSignal: true }] }] } });
|
|
399
423
|
|
|
400
424
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-qrcode.mjs","sources":["../../../../libs/core-ui/components/z-qrcode/z-qrcode.component.ts","../../../../libs/core-ui/components/z-qrcode/z-qrcode.component.html","../../../../libs/core-ui/components/z-qrcode/shival99-z-ui-components-z-qrcode.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n ElementRef,\n inject,\n input,\n PLATFORM_ID,\n signal,\n viewChild,\n effect,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { zTransform } from '@shival99/z-ui/utils';\nimport * as QRCode from 'qrcode';\nimport {\n ZQrCodeDotStyle,\n ZQrCodeErrorCorrectionLevel,\n ZQrCodeEyeStyle,\n ZQrCodeFrame,\n ZQrCodeGradient,\n} from './z-qrcode.types';\n\n@Component({\n selector: 'z-qrcode',\n imports: [TranslatePipe, ZButtonComponent],\n standalone: true,\n templateUrl: './z-qrcode.component.html',\n styleUrl: './z-qrcode.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ZQrCodeComponent {\n // Inputs\n public readonly zValue = input.required<string>();\n public readonly zSize = input<number>(256);\n public readonly zLevel = input<ZQrCodeErrorCorrectionLevel>('H');\n public readonly zLogo = input<string>('');\n public readonly zLogoSize = input<number>(0.2); // 20% of QR size\n public readonly zLogoBgColor = input<string>('#ffffff');\n public readonly zLogoBgShape = input<'circle' | 'square' | 'none'>('circle');\n public readonly zLogoPadding = input<number>(4);\n public readonly zFgColor = input<string>('#000000');\n public readonly zBgColor = input<string>('#ffffff');\n public readonly zDotStyle = input<ZQrCodeDotStyle>('square');\n public readonly zEyeStyle = input<ZQrCodeEyeStyle>('square');\n public readonly zEyeColor = input<string>(''); // if empty, falls back to zFgColor\n public readonly zMargin = input<number>(4); // margin in modules\n public readonly zFgGradient = input<ZQrCodeGradient>();\n public readonly zFrame = input<ZQrCodeFrame>('none');\n public readonly zFrameText = input<string>('SCAN ME');\n public readonly zFrameColor = input<string>('#0f172a');\n public readonly zFramePadding = input<number>(12); // padding around QR inside frame\n public readonly zFrameBorderRadius = input<number>(12); // border radius of the frame\n public readonly zDownloadable = input(false, { transform: zTransform }); // toggles hover overlay button\n public readonly zDownloadButton = input(false, { transform: zTransform }); // toggles standalone button below\n public readonly zShadow = input(true, { transform: zTransform }); // Bật/tắt đổ bóng khung ngoài\n public readonly zLoading = input(false, { transform: zTransform });\n\n // DOM references\n private readonly _canvasRef = viewChild<ElementRef<HTMLCanvasElement>>('qrCanvas');\n private readonly _platformId = inject(PLATFORM_ID);\n\n // States\n protected readonly downloadText = signal('i18n_z_ui_qrcode_download');\n\n constructor() {\n // Re-render when any signal inputs change\n effect(() => {\n if (isPlatformBrowser(this._platformId)) {\n void this.renderQrCode();\n }\n });\n }\n\n /**\n * Renders the stylized QR code onto the canvas element\n */\n public async renderQrCode(): Promise<void> {\n const canvas = this._canvasRef()?.nativeElement;\n if (!canvas) {\n return;\n }\n\n const value = this.zValue();\n const size = this.zSize();\n const level = this.zLevel();\n const fgColor = this.zFgColor();\n const bgColor = this.zBgColor();\n const dotStyle = this.zDotStyle();\n const eyeStyle = this.zEyeStyle();\n const eyeColorInput = this.zEyeColor();\n const logoUrl = this.zLogo();\n const frame = this.zFrame();\n const dpr = isPlatformBrowser(this._platformId) ? window.devicePixelRatio || 1 : 1;\n const framePadding = frame !== 'none' ? this.zFramePadding() : 0;\n const frameBorderRadius = this.zFrameBorderRadius();\n\n const bannerHeight = frame === 'text-bottom' || frame === 'text-top' ? 50 : 0;\n const cssWidth = size + framePadding * 2;\n const cssHeight = size + framePadding * 2 + bannerHeight;\n canvas.width = cssWidth * dpr;\n canvas.height = cssHeight * dpr;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return;\n }\n\n ctx.scale(dpr, dpr);\n\n // Clear background\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, cssWidth, cssHeight);\n\n if (frame !== 'none') {\n // Draw rounded frame container\n ctx.fillStyle = bgColor;\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, 0, 0, cssWidth, cssHeight, frameBorderRadius);\n ctx.fill();\n\n // Draw border outline\n ctx.strokeStyle = this.zFrameColor();\n ctx.lineWidth = 1.5;\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, 0.75, 0.75, cssWidth - 1.5, cssHeight - 1.5, frameBorderRadius);\n ctx.stroke();\n }\n\n try {\n // Create raw QR code matrix\n const qr = QRCode.create(value, { errorCorrectionLevel: level });\n const moduleCount = qr.modules.size;\n const marginModules = this.zMargin();\n const drawSize = size;\n\n // Calculate module size\n const moduleSize = drawSize / (moduleCount + 2 * marginModules);\n const marginOffset = marginModules * moduleSize;\n\n // Draw offsets\n let xOffset = 0;\n let yOffset = 0;\n if (frame !== 'none') {\n xOffset = framePadding;\n yOffset = frame === 'text-top' ? framePadding + bannerHeight : framePadding;\n }\n\n // 1. Prepare foreground style (solid or gradient)\n let fillStyle: string | CanvasGradient = fgColor;\n const gradientOpt = this.zFgGradient();\n if (gradientOpt && gradientOpt.colors && gradientOpt.colors.length > 0) {\n fillStyle = this._getGradientStyle(ctx, gradientOpt, drawSize, xOffset, yOffset, marginOffset);\n }\n\n const eyeColor = eyeColorInput || fillStyle;\n\n // 2. Draw normal modules (skip eyes and central logo)\n ctx.fillStyle = fillStyle;\n\n // Calculate logo skip boundary\n const hasLogo = !!logoUrl;\n const logoModules = Math.ceil(moduleCount * this.zLogoSize());\n const logoStart = Math.floor((moduleCount - logoModules) / 2);\n const logoEnd = logoStart + logoModules;\n\n for (let r = 0; r < moduleCount; r++) {\n for (let c = 0; c < moduleCount; c++) {\n // Check if it's top-left, top-right, or bottom-left eye\n const isTopLeftEye = r < 7 && c < 7;\n const isTopRightEye = r < 7 && c >= moduleCount - 7;\n const isBottomLeftEye = r >= moduleCount - 7 && c < 7;\n\n if (isTopLeftEye || isTopRightEye || isBottomLeftEye) {\n continue;\n }\n\n // Check if overlapping logo area\n if (hasLogo && r >= logoStart && r < logoEnd && c >= logoStart && c < logoEnd) {\n continue;\n }\n\n const isDark = qr.modules.get(r, c) === 1; // standard raw check\n if (!isDark) {\n continue;\n }\n\n const x = xOffset + marginOffset + c * moduleSize;\n const y = yOffset + marginOffset + r * moduleSize;\n\n this._drawDot(ctx, x, y, moduleSize, dotStyle);\n }\n }\n\n // 3. Draw Eyes\n const eyeCoords = [\n { x: xOffset + marginOffset, y: yOffset + marginOffset }, // Top Left\n { x: xOffset + marginOffset + (moduleCount - 7) * moduleSize, y: yOffset + marginOffset }, // Top Right\n { x: xOffset + marginOffset, y: yOffset + marginOffset + (moduleCount - 7) * moduleSize }, // Bottom Left\n ];\n\n eyeCoords.forEach(coord => {\n this._drawEye(ctx, coord.x, coord.y, moduleSize, eyeStyle, eyeColor);\n });\n\n // 4. Draw central logo if specified\n if (hasLogo) {\n await this._drawLogo(ctx, xOffset + marginOffset, yOffset, drawSize, logoUrl);\n }\n\n // 5. Draw Frame details\n if (frame === 'text-bottom' || frame === 'text-top') {\n const bannerY = frame === 'text-bottom' ? framePadding + size : framePadding;\n this._drawFrame(ctx, cssWidth, bannerY, bannerHeight, this.zFrameText(), this.zFrameColor());\n }\n } catch (err) {\n console.error('Error generating QR code:', err);\n }\n }\n\n /**\n * Helper function to get gradient style fill (no else branches)\n */\n private _getGradientStyle(\n ctx: CanvasRenderingContext2D,\n gradientOpt: ZQrCodeGradient,\n drawSize: number,\n xOffset: number,\n yOffset: number,\n marginOffset: number\n ): CanvasGradient {\n if (gradientOpt.type === 'radial') {\n const cx = drawSize / 2 + xOffset;\n const cy = drawSize / 2 + yOffset;\n const r = (drawSize / 2) * 1.2;\n const grad = ctx.createRadialGradient(cx, cy, 0, cx, cy, r);\n gradientOpt.colors.forEach((c, idx) => {\n grad.addColorStop(idx / (gradientOpt.colors.length - 1), c);\n });\n return grad;\n }\n\n // Default to linear\n const angle = gradientOpt.angle ?? 45;\n const rad = (angle * Math.PI) / 180;\n const x1 = Math.cos(rad) * 0;\n const y1 = Math.sin(rad) * 0;\n const x2 = Math.cos(rad) * drawSize + x1;\n const y2 = Math.sin(rad) * drawSize + y1;\n const grad = ctx.createLinearGradient(\n x1 + xOffset + marginOffset,\n y1 + yOffset + marginOffset,\n x2 + xOffset + marginOffset,\n y2 + yOffset + marginOffset\n );\n gradientOpt.colors.forEach((c, idx) => {\n grad.addColorStop(idx / (gradientOpt.colors.length - 1), c);\n });\n return grad;\n }\n\n /**\n * Helper function to draw dynamic dot module style (no else branches)\n */\n private _drawDot(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n moduleSize: number,\n dotStyle: ZQrCodeDotStyle\n ): void {\n ctx.beginPath();\n if (dotStyle === 'dots') {\n ctx.arc(x + moduleSize / 2, y + moduleSize / 2, (moduleSize / 2) * 0.95, 0, Math.PI * 2);\n ctx.fill();\n return;\n }\n\n if (dotStyle === 'rounded') {\n this._drawRoundedRectPath(\n ctx,\n x + moduleSize * 0.05,\n y + moduleSize * 0.05,\n moduleSize * 0.9,\n moduleSize * 0.9,\n moduleSize * 0.3\n );\n ctx.fill();\n return;\n }\n\n // Default to square\n ctx.fillRect(x, y, moduleSize, moduleSize);\n }\n\n /**\n * Helper path function for rounded corners (no else branches)\n */\n private _drawRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n counterClockwise = false\n ): void {\n if (r > w / 2) {\n r = w / 2;\n }\n if (r > h / 2) {\n r = h / 2;\n }\n\n ctx.moveTo(x + r, y);\n if (counterClockwise) {\n ctx.lineTo(x + r, y);\n ctx.arcTo(x, y, x, y + r, r);\n ctx.lineTo(x, y + h - r);\n ctx.arcTo(x, x + h, x + r, y + h, r);\n ctx.lineTo(x + w - r, y + h);\n ctx.arcTo(x + w, y + h, x + w, y + h - r, r);\n ctx.lineTo(x + w, y + r);\n ctx.arcTo(x + w, y, x + w - r, y, r);\n ctx.closePath();\n return;\n }\n\n ctx.lineTo(x + w - r, y);\n ctx.arcTo(x + w, y, x + w, y + r, r);\n ctx.lineTo(x + w, y + h - r);\n ctx.arcTo(x + w, y + h, x + w - r, y + h, r);\n ctx.lineTo(x + r, y + h);\n ctx.arcTo(x, y + h, x, y + h - r, r);\n ctx.lineTo(x, y + r);\n ctx.arcTo(x, y, x + r, y, r);\n ctx.closePath();\n }\n\n /**\n * Draw eye pattern (no else branches)\n */\n private _drawEye(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n moduleSize: number,\n style: ZQrCodeEyeStyle,\n color: string | CanvasGradient\n ): void {\n ctx.save();\n ctx.fillStyle = color;\n\n const outerSize = 7 * moduleSize;\n const innerSize = 3 * moduleSize;\n const innerOffset = 2 * moduleSize;\n\n if (style === 'circle') {\n ctx.beginPath();\n ctx.arc(x + outerSize / 2, y + outerSize / 2, outerSize / 2, 0, Math.PI * 2);\n ctx.arc(x + outerSize / 2, y + outerSize / 2, outerSize / 2 - moduleSize, 0, Math.PI * 2, true);\n ctx.fill();\n\n ctx.beginPath();\n ctx.arc(x + outerSize / 2, y + outerSize / 2, innerSize / 2, 0, Math.PI * 2);\n ctx.fill();\n ctx.restore();\n return;\n }\n\n if (style === 'rounded') {\n const outerRadius = 2 * moduleSize;\n const innerRadius = moduleSize;\n\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, x, y, outerSize, outerSize, outerRadius);\n this._drawRoundedRectPath(\n ctx,\n x + moduleSize,\n y + moduleSize,\n outerSize - 2 * moduleSize,\n outerSize - 2 * moduleSize,\n outerRadius - moduleSize,\n true\n );\n ctx.fill();\n\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, x + innerOffset, y + innerOffset, innerSize, innerSize, innerRadius);\n ctx.fill();\n ctx.restore();\n return;\n }\n\n // Default to square\n ctx.fillRect(x, y, outerSize, outerSize);\n ctx.clearRect(x + moduleSize, y + moduleSize, outerSize - 2 * moduleSize, outerSize - 2 * moduleSize);\n ctx.fillRect(x + innerOffset, y + innerOffset, innerSize, innerSize);\n ctx.restore();\n }\n\n /**\n * Load and render the central logo on canvas (no else branches)\n */\n private _drawLogo(\n ctx: CanvasRenderingContext2D,\n marginOffset: number,\n yOffset: number,\n drawSize: number,\n logoUrl: string\n ): Promise<void> {\n return new Promise(resolve => {\n const img = new Image();\n img.crossOrigin = 'anonymous'; // prevent tainted canvas\n img.src = logoUrl;\n\n img.onload = () => {\n const logoBoxSize = drawSize * this.zLogoSize();\n const logoBoxX = marginOffset + (drawSize - 2 * marginOffset - logoBoxSize) / 2;\n const logoBoxY = marginOffset + (drawSize - 2 * marginOffset - logoBoxSize) / 2 + yOffset;\n\n ctx.save();\n\n // 1. Draw logo mask background (circle or square)\n const bgShape = this.zLogoBgShape();\n if (bgShape === 'circle') {\n ctx.fillStyle = this.zLogoBgColor();\n ctx.beginPath();\n ctx.arc(logoBoxX + logoBoxSize / 2, logoBoxY + logoBoxSize / 2, logoBoxSize / 2, 0, Math.PI * 2);\n ctx.fill();\n }\n if (bgShape === 'square') {\n ctx.fillStyle = this.zLogoBgColor();\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, logoBoxX, logoBoxY, logoBoxSize, logoBoxSize, logoBoxSize * 0.2);\n ctx.fill();\n }\n\n // 2. Draw logo image centered\n const padding = this.zLogoPadding();\n const logoImgSize = logoBoxSize - padding * 2;\n const logoImgX = logoBoxX + padding;\n const logoImgY = logoBoxY + padding;\n\n if (bgShape === 'circle') {\n // Clip to circle so non-circle logos look neat\n ctx.beginPath();\n ctx.arc(logoBoxX + logoBoxSize / 2, logoBoxY + logoBoxSize / 2, logoImgSize / 2, 0, Math.PI * 2);\n ctx.clip();\n }\n\n ctx.drawImage(img, logoImgX, logoImgY, logoImgSize, logoImgSize);\n ctx.restore();\n resolve();\n };\n\n img.onerror = () => {\n console.warn('Failed to load QR code logo from URL:', logoUrl);\n resolve(); // resolve anyway to avoid blocking execution\n };\n });\n }\n\n private _drawFrame(\n ctx: CanvasRenderingContext2D,\n width: number,\n bannerY: number,\n bannerHeight: number,\n text: string,\n frameColor: string\n ): void {\n ctx.save();\n\n // Draw pill badge for standard frame aesthetic\n ctx.fillStyle = frameColor;\n const pillWidth = width * 0.75;\n const pillHeight = 28;\n const pillX = (width - pillWidth) / 2;\n const pillY = bannerY + (bannerHeight - pillHeight) / 2;\n\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, pillX, pillY, pillWidth, pillHeight, pillHeight / 2);\n ctx.fill();\n\n // Render banner text\n ctx.fillStyle = '#ffffff';\n ctx.font = 'bold 12px var(--font-sans, system-ui, sans-serif)';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, width / 2, pillY + pillHeight / 2);\n\n ctx.restore();\n }\n\n /**\n * Download the generated canvas QR Code as a PNG image file\n */\n protected downloadQr(): void {\n const canvas = this._canvasRef()?.nativeElement;\n if (!canvas) {\n return;\n }\n\n const dataUrl = canvas.toDataURL('image/png');\n const link = document.createElement('a');\n link.href = dataUrl;\n link.download = `qrcode_${Date.now()}.png`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n}\n","<div class=\"z-qrcode-container relative flex flex-col items-center\">\n <div\n class=\"z-qrcode-canvas-wrapper relative transition-all duration-200\"\n [class.shadow-md]=\"zShadow()\"\n [style.border-radius.px]=\"zFrame() !== 'none' || zShadow() ? zFrameBorderRadius() : 0\"\n [style.overflow]=\"zFrame() !== 'none' || zShadow() ? 'hidden' : 'visible'\">\n <canvas\n #qrCanvas\n class=\"block\"\n [style.width.px]=\"zFrame() !== 'none' ? zSize() + zFramePadding() * 2 : zSize()\"\n [style.height.px]=\"\n zFrame() !== 'none'\n ? zSize() + zFramePadding() * 2 + (zFrame() === 'text-bottom' || zFrame() === 'text-top' ? 50 : 0)\n : zSize()\n \"></canvas>\n\n @if (zLoading()) {\n <div class=\"absolute inset-0 z-10 flex items-center justify-center bg-white/80 transition-opacity\">\n <svg\n class=\"h-8 w-8 animate-spin text-slate-800\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n </div>\n }\n\n @if (zDownloadable() && !zLoading()) {\n <div\n class=\"absolute inset-0 z-10 flex items-center justify-center rounded-md bg-black/45 opacity-0 transition-all duration-200 hover:opacity-100\">\n <button\n z-button\n [zWave]=\"false\"\n zSize=\"sm\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n </div>\n\n @if (zDownloadButton() && !zLoading()) {\n <div class=\"mt-4\">\n <button\n z-button\n [zWave]=\"false\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-qrcode.mjs","sources":["../../../../libs/core-ui/components/z-qrcode/z-qrcode.component.ts","../../../../libs/core-ui/components/z-qrcode/z-qrcode.component.html","../../../../libs/core-ui/components/z-qrcode/shival99-z-ui-components-z-qrcode.ts"],"sourcesContent":["import { isPlatformBrowser } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n inject,\n input,\n PLATFORM_ID,\n signal,\n viewChild,\n effect,\n ViewEncapsulation,\n} from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { ZButtonComponent } from '@shival99/z-ui/components/z-button';\nimport { zTransform } from '@shival99/z-ui/utils';\nimport * as QRCode from 'qrcode';\nimport {\n ZQrCodeDotStyle,\n ZQrCodeErrorCorrectionLevel,\n ZQrCodeEyeStyle,\n ZQrCodeFrame,\n ZQrCodeGradient,\n} from './z-qrcode.types';\n\n@Component({\n selector: 'z-qrcode',\n imports: [TranslatePipe, ZButtonComponent],\n standalone: true,\n templateUrl: './z-qrcode.component.html',\n styleUrl: './z-qrcode.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class ZQrCodeComponent {\n // Inputs\n public readonly zValue = input.required<string>();\n public readonly zSize = input<number>(256);\n public readonly zLevel = input<ZQrCodeErrorCorrectionLevel>('H');\n public readonly zLogo = input<string>('');\n public readonly zLogoSize = input<number>(0.2); // 20% of QR size\n public readonly zLogoBgColor = input<string>('#ffffff');\n public readonly zLogoBgShape = input<'circle' | 'square' | 'none'>('circle');\n public readonly zLogoPadding = input<number>(4);\n public readonly zFgColor = input<string>('#000000');\n public readonly zBgColor = input<string>('#ffffff');\n public readonly zDotStyle = input<ZQrCodeDotStyle>('square');\n public readonly zEyeStyle = input<ZQrCodeEyeStyle>('square');\n public readonly zEyeColor = input<string>(''); // if empty, falls back to zFgColor\n public readonly zMargin = input<number>(4); // margin in modules\n public readonly zFgGradient = input<ZQrCodeGradient>();\n public readonly zFrame = input<ZQrCodeFrame>('none');\n public readonly zFrameText = input<string>('SCAN ME');\n public readonly zFrameColor = input<string>('#0f172a');\n public readonly zFramePadding = input<number>(12); // padding around QR inside frame\n // Border radius of the frame; falls back to the theme's --radius-lg when unset\n public readonly zFrameBorderRadius = input<number | undefined>(undefined);\n public readonly zDownloadable = input(false, { transform: zTransform }); // toggles hover overlay button\n public readonly zDownloadButton = input(false, { transform: zTransform }); // toggles standalone button below\n public readonly zShadow = input(true, { transform: zTransform }); // Bật/tắt đổ bóng khung ngoài\n public readonly zLoading = input(false, { transform: zTransform });\n\n // DOM references\n private readonly _canvasRef = viewChild<ElementRef<HTMLCanvasElement>>('qrCanvas');\n private readonly _platformId = inject(PLATFORM_ID);\n\n // States\n protected readonly downloadText = signal('i18n_z_ui_qrcode_download');\n\n protected readonly frameBorderRadiusStyle = computed(() => {\n if (this.zFrame() === 'none' && !this.zShadow()) {\n return '0px';\n }\n const explicit = this.zFrameBorderRadius();\n return explicit !== undefined ? `${explicit}px` : 'var(--radius-lg)';\n });\n\n /** Resolves the frame radius to a px number for canvas drawing, reading the theme's --radius-lg when unset. */\n private _resolveFrameBorderRadiusPx(): number {\n const explicit = this.zFrameBorderRadius();\n if (explicit !== undefined) {\n return explicit;\n }\n\n const wrapper = this._canvasRef()?.nativeElement.parentElement;\n if (wrapper && isPlatformBrowser(this._platformId)) {\n const resolved = parseFloat(getComputedStyle(wrapper).borderRadius);\n if (!Number.isNaN(resolved)) {\n return resolved;\n }\n }\n\n return 12;\n }\n\n constructor() {\n // Re-render when any signal inputs change\n effect(() => {\n if (isPlatformBrowser(this._platformId)) {\n void this.renderQrCode();\n }\n });\n }\n\n /**\n * Renders the stylized QR code onto the canvas element\n */\n public async renderQrCode(): Promise<void> {\n const canvas = this._canvasRef()?.nativeElement;\n if (!canvas) {\n return;\n }\n\n const value = this.zValue();\n const size = this.zSize();\n const level = this.zLevel();\n const fgColor = this.zFgColor();\n const bgColor = this.zBgColor();\n const dotStyle = this.zDotStyle();\n const eyeStyle = this.zEyeStyle();\n const eyeColorInput = this.zEyeColor();\n const logoUrl = this.zLogo();\n const frame = this.zFrame();\n const dpr = isPlatformBrowser(this._platformId) ? window.devicePixelRatio || 1 : 1;\n const framePadding = frame !== 'none' ? this.zFramePadding() : 0;\n const frameBorderRadius = this._resolveFrameBorderRadiusPx();\n\n const bannerHeight = frame === 'text-bottom' || frame === 'text-top' ? 50 : 0;\n const cssWidth = size + framePadding * 2;\n const cssHeight = size + framePadding * 2 + bannerHeight;\n canvas.width = cssWidth * dpr;\n canvas.height = cssHeight * dpr;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) {\n return;\n }\n\n ctx.scale(dpr, dpr);\n\n // Clear background\n ctx.fillStyle = bgColor;\n ctx.fillRect(0, 0, cssWidth, cssHeight);\n\n if (frame !== 'none') {\n // Draw rounded frame container\n ctx.fillStyle = bgColor;\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, 0, 0, cssWidth, cssHeight, frameBorderRadius);\n ctx.fill();\n\n // Draw border outline\n ctx.strokeStyle = this.zFrameColor();\n ctx.lineWidth = 1.5;\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, 0.75, 0.75, cssWidth - 1.5, cssHeight - 1.5, frameBorderRadius);\n ctx.stroke();\n }\n\n try {\n // Create raw QR code matrix\n const qr = QRCode.create(value, { errorCorrectionLevel: level });\n const moduleCount = qr.modules.size;\n const marginModules = this.zMargin();\n const drawSize = size;\n\n // Calculate module size\n const moduleSize = drawSize / (moduleCount + 2 * marginModules);\n const marginOffset = marginModules * moduleSize;\n\n // Draw offsets\n let xOffset = 0;\n let yOffset = 0;\n if (frame !== 'none') {\n xOffset = framePadding;\n yOffset = frame === 'text-top' ? framePadding + bannerHeight : framePadding;\n }\n\n // 1. Prepare foreground style (solid or gradient)\n let fillStyle: string | CanvasGradient = fgColor;\n const gradientOpt = this.zFgGradient();\n if (gradientOpt && gradientOpt.colors && gradientOpt.colors.length > 0) {\n fillStyle = this._getGradientStyle(ctx, gradientOpt, drawSize, xOffset, yOffset, marginOffset);\n }\n\n const eyeColor = eyeColorInput || fillStyle;\n\n // 2. Draw normal modules (skip eyes and central logo)\n ctx.fillStyle = fillStyle;\n\n // Calculate logo skip boundary\n const hasLogo = !!logoUrl;\n const logoModules = Math.ceil(moduleCount * this.zLogoSize());\n const logoStart = Math.floor((moduleCount - logoModules) / 2);\n const logoEnd = logoStart + logoModules;\n\n for (let r = 0; r < moduleCount; r++) {\n for (let c = 0; c < moduleCount; c++) {\n // Check if it's top-left, top-right, or bottom-left eye\n const isTopLeftEye = r < 7 && c < 7;\n const isTopRightEye = r < 7 && c >= moduleCount - 7;\n const isBottomLeftEye = r >= moduleCount - 7 && c < 7;\n\n if (isTopLeftEye || isTopRightEye || isBottomLeftEye) {\n continue;\n }\n\n // Check if overlapping logo area\n if (hasLogo && r >= logoStart && r < logoEnd && c >= logoStart && c < logoEnd) {\n continue;\n }\n\n const isDark = qr.modules.get(r, c) === 1; // standard raw check\n if (!isDark) {\n continue;\n }\n\n const x = xOffset + marginOffset + c * moduleSize;\n const y = yOffset + marginOffset + r * moduleSize;\n\n this._drawDot(ctx, x, y, moduleSize, dotStyle);\n }\n }\n\n // 3. Draw Eyes\n const eyeCoords = [\n { x: xOffset + marginOffset, y: yOffset + marginOffset }, // Top Left\n { x: xOffset + marginOffset + (moduleCount - 7) * moduleSize, y: yOffset + marginOffset }, // Top Right\n { x: xOffset + marginOffset, y: yOffset + marginOffset + (moduleCount - 7) * moduleSize }, // Bottom Left\n ];\n\n eyeCoords.forEach(coord => {\n this._drawEye(ctx, coord.x, coord.y, moduleSize, eyeStyle, eyeColor);\n });\n\n // 4. Draw central logo if specified\n if (hasLogo) {\n await this._drawLogo(ctx, xOffset + marginOffset, yOffset, drawSize, logoUrl);\n }\n\n // 5. Draw Frame details\n if (frame === 'text-bottom' || frame === 'text-top') {\n const bannerY = frame === 'text-bottom' ? framePadding + size : framePadding;\n this._drawFrame(ctx, cssWidth, bannerY, bannerHeight, this.zFrameText(), this.zFrameColor());\n }\n } catch (err) {\n console.error('Error generating QR code:', err);\n }\n }\n\n /**\n * Helper function to get gradient style fill (no else branches)\n */\n private _getGradientStyle(\n ctx: CanvasRenderingContext2D,\n gradientOpt: ZQrCodeGradient,\n drawSize: number,\n xOffset: number,\n yOffset: number,\n marginOffset: number\n ): CanvasGradient {\n if (gradientOpt.type === 'radial') {\n const cx = drawSize / 2 + xOffset;\n const cy = drawSize / 2 + yOffset;\n const r = (drawSize / 2) * 1.2;\n const grad = ctx.createRadialGradient(cx, cy, 0, cx, cy, r);\n gradientOpt.colors.forEach((c, idx) => {\n grad.addColorStop(idx / (gradientOpt.colors.length - 1), c);\n });\n return grad;\n }\n\n // Default to linear\n const angle = gradientOpt.angle ?? 45;\n const rad = (angle * Math.PI) / 180;\n const x1 = Math.cos(rad) * 0;\n const y1 = Math.sin(rad) * 0;\n const x2 = Math.cos(rad) * drawSize + x1;\n const y2 = Math.sin(rad) * drawSize + y1;\n const grad = ctx.createLinearGradient(\n x1 + xOffset + marginOffset,\n y1 + yOffset + marginOffset,\n x2 + xOffset + marginOffset,\n y2 + yOffset + marginOffset\n );\n gradientOpt.colors.forEach((c, idx) => {\n grad.addColorStop(idx / (gradientOpt.colors.length - 1), c);\n });\n return grad;\n }\n\n /**\n * Helper function to draw dynamic dot module style (no else branches)\n */\n private _drawDot(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n moduleSize: number,\n dotStyle: ZQrCodeDotStyle\n ): void {\n ctx.beginPath();\n if (dotStyle === 'dots') {\n ctx.arc(x + moduleSize / 2, y + moduleSize / 2, (moduleSize / 2) * 0.95, 0, Math.PI * 2);\n ctx.fill();\n return;\n }\n\n if (dotStyle === 'rounded') {\n this._drawRoundedRectPath(\n ctx,\n x + moduleSize * 0.05,\n y + moduleSize * 0.05,\n moduleSize * 0.9,\n moduleSize * 0.9,\n moduleSize * 0.3\n );\n ctx.fill();\n return;\n }\n\n // Default to square\n ctx.fillRect(x, y, moduleSize, moduleSize);\n }\n\n /**\n * Helper path function for rounded corners (no else branches)\n */\n private _drawRoundedRectPath(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n w: number,\n h: number,\n r: number,\n counterClockwise = false\n ): void {\n if (r > w / 2) {\n r = w / 2;\n }\n if (r > h / 2) {\n r = h / 2;\n }\n\n ctx.moveTo(x + r, y);\n if (counterClockwise) {\n ctx.lineTo(x + r, y);\n ctx.arcTo(x, y, x, y + r, r);\n ctx.lineTo(x, y + h - r);\n ctx.arcTo(x, x + h, x + r, y + h, r);\n ctx.lineTo(x + w - r, y + h);\n ctx.arcTo(x + w, y + h, x + w, y + h - r, r);\n ctx.lineTo(x + w, y + r);\n ctx.arcTo(x + w, y, x + w - r, y, r);\n ctx.closePath();\n return;\n }\n\n ctx.lineTo(x + w - r, y);\n ctx.arcTo(x + w, y, x + w, y + r, r);\n ctx.lineTo(x + w, y + h - r);\n ctx.arcTo(x + w, y + h, x + w - r, y + h, r);\n ctx.lineTo(x + r, y + h);\n ctx.arcTo(x, y + h, x, y + h - r, r);\n ctx.lineTo(x, y + r);\n ctx.arcTo(x, y, x + r, y, r);\n ctx.closePath();\n }\n\n /**\n * Draw eye pattern (no else branches)\n */\n private _drawEye(\n ctx: CanvasRenderingContext2D,\n x: number,\n y: number,\n moduleSize: number,\n style: ZQrCodeEyeStyle,\n color: string | CanvasGradient\n ): void {\n ctx.save();\n ctx.fillStyle = color;\n\n const outerSize = 7 * moduleSize;\n const innerSize = 3 * moduleSize;\n const innerOffset = 2 * moduleSize;\n\n if (style === 'circle') {\n ctx.beginPath();\n ctx.arc(x + outerSize / 2, y + outerSize / 2, outerSize / 2, 0, Math.PI * 2);\n ctx.arc(x + outerSize / 2, y + outerSize / 2, outerSize / 2 - moduleSize, 0, Math.PI * 2, true);\n ctx.fill();\n\n ctx.beginPath();\n ctx.arc(x + outerSize / 2, y + outerSize / 2, innerSize / 2, 0, Math.PI * 2);\n ctx.fill();\n ctx.restore();\n return;\n }\n\n if (style === 'rounded') {\n const outerRadius = 2 * moduleSize;\n const innerRadius = moduleSize;\n\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, x, y, outerSize, outerSize, outerRadius);\n this._drawRoundedRectPath(\n ctx,\n x + moduleSize,\n y + moduleSize,\n outerSize - 2 * moduleSize,\n outerSize - 2 * moduleSize,\n outerRadius - moduleSize,\n true\n );\n ctx.fill();\n\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, x + innerOffset, y + innerOffset, innerSize, innerSize, innerRadius);\n ctx.fill();\n ctx.restore();\n return;\n }\n\n // Default to square\n ctx.fillRect(x, y, outerSize, outerSize);\n ctx.clearRect(x + moduleSize, y + moduleSize, outerSize - 2 * moduleSize, outerSize - 2 * moduleSize);\n ctx.fillRect(x + innerOffset, y + innerOffset, innerSize, innerSize);\n ctx.restore();\n }\n\n /**\n * Load and render the central logo on canvas (no else branches)\n */\n private _drawLogo(\n ctx: CanvasRenderingContext2D,\n marginOffset: number,\n yOffset: number,\n drawSize: number,\n logoUrl: string\n ): Promise<void> {\n return new Promise(resolve => {\n const img = new Image();\n img.crossOrigin = 'anonymous'; // prevent tainted canvas\n img.src = logoUrl;\n\n img.onload = () => {\n const logoBoxSize = drawSize * this.zLogoSize();\n const logoBoxX = marginOffset + (drawSize - 2 * marginOffset - logoBoxSize) / 2;\n const logoBoxY = marginOffset + (drawSize - 2 * marginOffset - logoBoxSize) / 2 + yOffset;\n\n ctx.save();\n\n // 1. Draw logo mask background (circle or square)\n const bgShape = this.zLogoBgShape();\n if (bgShape === 'circle') {\n ctx.fillStyle = this.zLogoBgColor();\n ctx.beginPath();\n ctx.arc(logoBoxX + logoBoxSize / 2, logoBoxY + logoBoxSize / 2, logoBoxSize / 2, 0, Math.PI * 2);\n ctx.fill();\n }\n if (bgShape === 'square') {\n ctx.fillStyle = this.zLogoBgColor();\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, logoBoxX, logoBoxY, logoBoxSize, logoBoxSize, logoBoxSize * 0.2);\n ctx.fill();\n }\n\n // 2. Draw logo image centered\n const padding = this.zLogoPadding();\n const logoImgSize = logoBoxSize - padding * 2;\n const logoImgX = logoBoxX + padding;\n const logoImgY = logoBoxY + padding;\n\n if (bgShape === 'circle') {\n // Clip to circle so non-circle logos look neat\n ctx.beginPath();\n ctx.arc(logoBoxX + logoBoxSize / 2, logoBoxY + logoBoxSize / 2, logoImgSize / 2, 0, Math.PI * 2);\n ctx.clip();\n }\n\n ctx.drawImage(img, logoImgX, logoImgY, logoImgSize, logoImgSize);\n ctx.restore();\n resolve();\n };\n\n img.onerror = () => {\n console.warn('Failed to load QR code logo from URL:', logoUrl);\n resolve(); // resolve anyway to avoid blocking execution\n };\n });\n }\n\n private _drawFrame(\n ctx: CanvasRenderingContext2D,\n width: number,\n bannerY: number,\n bannerHeight: number,\n text: string,\n frameColor: string\n ): void {\n ctx.save();\n\n // Draw pill badge for standard frame aesthetic\n ctx.fillStyle = frameColor;\n const pillWidth = width * 0.75;\n const pillHeight = 28;\n const pillX = (width - pillWidth) / 2;\n const pillY = bannerY + (bannerHeight - pillHeight) / 2;\n\n ctx.beginPath();\n this._drawRoundedRectPath(ctx, pillX, pillY, pillWidth, pillHeight, pillHeight / 2);\n ctx.fill();\n\n // Render banner text\n ctx.fillStyle = '#ffffff';\n ctx.font = 'bold 12px var(--font-sans, system-ui, sans-serif)';\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(text, width / 2, pillY + pillHeight / 2);\n\n ctx.restore();\n }\n\n /**\n * Download the generated canvas QR Code as a PNG image file\n */\n protected downloadQr(): void {\n const canvas = this._canvasRef()?.nativeElement;\n if (!canvas) {\n return;\n }\n\n const dataUrl = canvas.toDataURL('image/png');\n const link = document.createElement('a');\n link.href = dataUrl;\n link.download = `qrcode_${Date.now()}.png`;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n }\n}\n","<div class=\"z-qrcode-container relative flex flex-col items-center\">\n <div\n class=\"z-qrcode-canvas-wrapper relative transition-all duration-200\"\n [class.shadow-md]=\"zShadow()\"\n [style.border-radius]=\"frameBorderRadiusStyle()\"\n [style.overflow]=\"zFrame() !== 'none' || zShadow() ? 'hidden' : 'visible'\">\n <canvas\n #qrCanvas\n class=\"block\"\n [style.width.px]=\"zFrame() !== 'none' ? zSize() + zFramePadding() * 2 : zSize()\"\n [style.height.px]=\"\n zFrame() !== 'none'\n ? zSize() + zFramePadding() * 2 + (zFrame() === 'text-bottom' || zFrame() === 'text-top' ? 50 : 0)\n : zSize()\n \"></canvas>\n\n @if (zLoading()) {\n <div class=\"absolute inset-0 z-10 flex items-center justify-center bg-white/80 transition-opacity\">\n <svg\n class=\"h-8 w-8 animate-spin text-slate-800\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\">\n <circle class=\"opacity-25\" cx=\"12\" cy=\"12\" r=\"10\" stroke=\"currentColor\" stroke-width=\"4\" />\n <path\n class=\"opacity-75\"\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\" />\n </svg>\n </div>\n }\n\n @if (zDownloadable() && !zLoading()) {\n <div\n class=\"absolute inset-0 z-10 flex items-center justify-center rounded-md bg-black/45 opacity-0 transition-all duration-200 hover:opacity-100\">\n <button\n z-button\n [zWave]=\"false\"\n zSize=\"sm\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n </div>\n\n @if (zDownloadButton() && !zLoading()) {\n <div class=\"mt-4\">\n <button\n z-button\n [zWave]=\"false\"\n (click)=\"downloadQr()\"\n class=\"flex cursor-pointer items-center gap-2 font-semibold select-none\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n class=\"h-4 w-4\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n stroke=\"currentColor\"\n stroke-width=\"2.5\">\n <path\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n d=\"M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-4l-4 4m0 0l-4-4m4 4V4\" />\n </svg>\n {{ downloadText() | translate }}\n </button>\n </div>\n }\n</div>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -153,8 +153,8 @@ class ZRadioComponent {
|
|
|
153
153
|
getOptionState(option) {
|
|
154
154
|
return this.isOptionChecked(option) ? 'checked' : 'unchecked';
|
|
155
155
|
}
|
|
156
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
157
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: ZRadioComponent, isStandalone: true, selector: "z-radio", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zLabel: { classPropertyName: "zLabel", publicName: "zLabel", isSignal: true, isRequired: false, transformFunction: null }, zText: { classPropertyName: "zText", publicName: "zText", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null }, zValue: { classPropertyName: "zValue", publicName: "zValue", isSignal: true, isRequired: false, transformFunction: null }, zOptions: { classPropertyName: "zOptions", publicName: "zOptions", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zSelectedValue: { classPropertyName: "zSelectedValue", publicName: "zSelectedValue", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zChange: "zChange", zOnBlur: "zOnBlur", zOnFocus: "zOnFocus", zEvent: "zEvent", zSelectedValue: "zSelectedValueChange" }, host: { properties: { "class": "hostClasses()" } }, providers: [
|
|
158
158
|
{
|
|
159
159
|
provide: NG_VALUE_ACCESSOR,
|
|
160
160
|
useExisting: forwardRef(() => ZRadioComponent),
|
|
@@ -162,7 +162,7 @@ class ZRadioComponent {
|
|
|
162
162
|
},
|
|
163
163
|
], ngImport: i0, template: "<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"radio\"\n [class]=\"radioClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span\n [class]=\"indicatorClasses()\"\n [class.opacity-0]=\"!isOptionChecked(option)\"\n [class.scale-75]=\"!isOptionChecked(option)\"></span>\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single radio) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2 align-middle\">\n <button\n type=\"button\"\n role=\"radio\"\n [class]=\"radioClasses()\"\n [attr.aria-checked]=\"isChecked()\"\n [attr.data-state]=\"getRadioState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onRadioClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span [class]=\"indicatorClasses()\" [class.opacity-0]=\"!isChecked()\" [class.scale-75]=\"!isChecked()\"></span>\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onRadioClick()\">{{ zText() }}</label>\n }\n </div>\n}\n", changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
164
164
|
}
|
|
165
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZRadioComponent, decorators: [{
|
|
166
166
|
type: Component,
|
|
167
167
|
args: [{ selector: 'z-radio', imports: [], standalone: true, providers: [
|
|
168
168
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-radio.mjs","sources":["../../../../libs/core-ui/components/z-radio/z-radio.variants.ts","../../../../libs/core-ui/components/z-radio/z-radio.component.ts","../../../../libs/core-ui/components/z-radio/z-radio.component.html","../../../../libs/core-ui/components/z-radio/shival99-z-ui-components-z-radio.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zRadioVariants = cva(\n [\n 'relative inline-flex items-center justify-center shrink-0 cursor-pointer align-middle leading-none',\n 'rounded-full border border-input bg-background dark:border-border dark:bg-input/25',\n 'transition-colors duration-150',\n 'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:hover:bg-primary/90',\n ],\n {\n variants: {\n zSize: {\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zRadioIndicatorVariants = cva(\n 'rounded-full bg-primary-foreground transition-[opacity,transform] duration-150',\n {\n variants: {\n zSize: {\n sm: 'size-2',\n default: 'size-2.5',\n lg: 'size-3',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zRadioLabelVariants = cva(\n 'select-none cursor-pointer leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n {\n variants: {\n zSize: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport type ZRadioVariants = VariantProps<typeof zRadioVariants>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZRadioOption, ZRadioOrientation, ZRadioSize, ZRadioType } from './z-radio.types';\nimport { zRadioIndicatorVariants, zRadioLabelVariants, zRadioVariants } from './z-radio.variants';\n\n@Component({\n selector: 'z-radio',\n imports: [],\n standalone: true,\n templateUrl: './z-radio.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZRadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZRadioComponent implements ControlValueAccessor {\n public readonly zChange = output<string | number | null>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZRadioType>('default');\n public readonly zSize = input<ZRadioSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zText = input<string>('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zValue = input<string | number>('');\n public readonly zOptions = input<ZRadioOption[]>([]);\n public readonly zOrientation = input<ZRadioOrientation>('vertical');\n\n public readonly zSelectedValue = model<string | number | null>(null);\n\n private readonly _disabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.zDisabled() || this._disabled());\n\n protected readonly hostClasses = computed(() => {\n const hasLabel = !!this.zLabel();\n if (this.zType() === 'group') {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n if (hasLabel) {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n return zMergeClasses('inline-flex items-center gap-2', this.class());\n });\n\n protected readonly groupClasses = computed(() => {\n const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';\n return `flex ${orientation} gap-2`;\n });\n\n protected readonly radioClasses = computed(() => zRadioVariants({ zSize: this.zSize() }));\n\n protected readonly indicatorClasses = computed(() => zRadioIndicatorVariants({ zSize: this.zSize() }));\n\n protected readonly labelClasses = computed(() => zRadioLabelVariants({ zSize: this.zSize() }));\n\n private _onChange: (value: string | number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n public writeValue(value: string | number | null): void {\n this.zSelectedValue.set(value);\n }\n\n public registerOnChange(fn: (value: string | number | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n protected onFocus(event: FocusEvent): void {\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n }\n\n protected onBlur(event: FocusEvent): void {\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n this._onTouched();\n }\n\n protected onRadioClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const value = this.zValue();\n this.zSelectedValue.set(value);\n this.zChange.emit(value);\n this._onChange(value);\n this._onTouched();\n }\n\n protected onOptionClick(option: ZRadioOption): void {\n if (this.isDisabled() || option.disabled) {\n return;\n }\n\n this.zSelectedValue.set(option.value);\n this.zChange.emit(option.value);\n this._onChange(option.value);\n this._onTouched();\n }\n\n protected isOptionChecked(option: ZRadioOption): boolean {\n return this.zSelectedValue() === option.value;\n }\n\n protected isChecked(): boolean {\n return this.zSelectedValue() === this.zValue();\n }\n\n protected getRadioState(): string {\n return this.isChecked() ? 'checked' : 'unchecked';\n }\n\n protected getOptionState(option: ZRadioOption): string {\n return this.isOptionChecked(option) ? 'checked' : 'unchecked';\n }\n}\n","<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"radio\"\n [class]=\"radioClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span\n [class]=\"indicatorClasses()\"\n [class.opacity-0]=\"!isOptionChecked(option)\"\n [class.scale-75]=\"!isOptionChecked(option)\"></span>\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single radio) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2 align-middle\">\n <button\n type=\"button\"\n role=\"radio\"\n [class]=\"radioClasses()\"\n [attr.aria-checked]=\"isChecked()\"\n [attr.data-state]=\"getRadioState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onRadioClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span [class]=\"indicatorClasses()\" [class.opacity-0]=\"!isChecked()\" [class.scale-75]=\"!isChecked()\"></span>\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onRadioClick()\">{{ zText() }}</label>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-radio.mjs","sources":["../../../../libs/core-ui/components/z-radio/z-radio.variants.ts","../../../../libs/core-ui/components/z-radio/z-radio.component.ts","../../../../libs/core-ui/components/z-radio/z-radio.component.html","../../../../libs/core-ui/components/z-radio/shival99-z-ui-components-z-radio.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zRadioVariants = cva(\n [\n 'relative inline-flex items-center justify-center shrink-0 cursor-pointer align-middle leading-none',\n 'rounded-full border border-input bg-background dark:border-border dark:bg-input/25',\n 'transition-colors duration-150',\n 'hover:border-primary/70 hover:bg-primary/5 dark:hover:bg-primary/15',\n 'focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n 'data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:hover:bg-primary/90',\n ],\n {\n variants: {\n zSize: {\n sm: 'size-4',\n default: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zRadioIndicatorVariants = cva(\n 'rounded-full bg-primary-foreground transition-[opacity,transform] duration-150',\n {\n variants: {\n zSize: {\n sm: 'size-2',\n default: 'size-2.5',\n lg: 'size-3',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport const zRadioLabelVariants = cva(\n 'select-none cursor-pointer leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70',\n {\n variants: {\n zSize: {\n sm: 'text-xs',\n default: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n }\n);\n\nexport type ZRadioVariants = VariantProps<typeof zRadioVariants>;\n","import {\n ChangeDetectionStrategy,\n Component,\n computed,\n forwardRef,\n input,\n model,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\nimport { zMergeClasses, zTransform, zCreateEvent, type ZEvent } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type { ZRadioOption, ZRadioOrientation, ZRadioSize, ZRadioType } from './z-radio.types';\nimport { zRadioIndicatorVariants, zRadioLabelVariants, zRadioVariants } from './z-radio.variants';\n\n@Component({\n selector: 'z-radio',\n imports: [],\n standalone: true,\n templateUrl: './z-radio.component.html',\n providers: [\n {\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => ZRadioComponent),\n multi: true,\n },\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZRadioComponent implements ControlValueAccessor {\n public readonly zChange = output<string | number | null>();\n public readonly zOnBlur = output<FocusEvent>();\n public readonly zOnFocus = output<FocusEvent>();\n public readonly zEvent = output<ZEvent>();\n\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZRadioType>('default');\n public readonly zSize = input<ZRadioSize>('default');\n public readonly zLabel = input<string>('');\n public readonly zText = input<string>('');\n public readonly zDisabled = input(false, { transform: zTransform });\n public readonly zValue = input<string | number>('');\n public readonly zOptions = input<ZRadioOption[]>([]);\n public readonly zOrientation = input<ZRadioOrientation>('vertical');\n\n public readonly zSelectedValue = model<string | number | null>(null);\n\n private readonly _disabled = signal(false);\n\n protected readonly isDisabled = computed(() => this.zDisabled() || this._disabled());\n\n protected readonly hostClasses = computed(() => {\n const hasLabel = !!this.zLabel();\n if (this.zType() === 'group') {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n if (hasLabel) {\n return zMergeClasses('flex flex-col gap-2', this.class());\n }\n return zMergeClasses('inline-flex items-center gap-2', this.class());\n });\n\n protected readonly groupClasses = computed(() => {\n const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';\n return `flex ${orientation} gap-2`;\n });\n\n protected readonly radioClasses = computed(() => zRadioVariants({ zSize: this.zSize() }));\n\n protected readonly indicatorClasses = computed(() => zRadioIndicatorVariants({ zSize: this.zSize() }));\n\n protected readonly labelClasses = computed(() => zRadioLabelVariants({ zSize: this.zSize() }));\n\n private _onChange: (value: string | number | null) => void = () => {};\n private _onTouched: () => void = () => {};\n\n public writeValue(value: string | number | null): void {\n this.zSelectedValue.set(value);\n }\n\n public registerOnChange(fn: (value: string | number | null) => void): void {\n this._onChange = fn;\n }\n\n public registerOnTouched(fn: () => void): void {\n this._onTouched = fn;\n }\n\n public setDisabledState(isDisabled: boolean): void {\n this._disabled.set(isDisabled);\n }\n\n protected onFocus(event: FocusEvent): void {\n this.zOnFocus.emit(event);\n this.zEvent.emit(zCreateEvent('focus', event));\n }\n\n protected onBlur(event: FocusEvent): void {\n this.zOnBlur.emit(event);\n this.zEvent.emit(zCreateEvent('blur', event));\n this._onTouched();\n }\n\n protected onRadioClick(): void {\n if (this.isDisabled()) {\n return;\n }\n\n const value = this.zValue();\n this.zSelectedValue.set(value);\n this.zChange.emit(value);\n this._onChange(value);\n this._onTouched();\n }\n\n protected onOptionClick(option: ZRadioOption): void {\n if (this.isDisabled() || option.disabled) {\n return;\n }\n\n this.zSelectedValue.set(option.value);\n this.zChange.emit(option.value);\n this._onChange(option.value);\n this._onTouched();\n }\n\n protected isOptionChecked(option: ZRadioOption): boolean {\n return this.zSelectedValue() === option.value;\n }\n\n protected isChecked(): boolean {\n return this.zSelectedValue() === this.zValue();\n }\n\n protected getRadioState(): string {\n return this.isChecked() ? 'checked' : 'unchecked';\n }\n\n protected getOptionState(option: ZRadioOption): string {\n return this.isOptionChecked(option) ? 'checked' : 'unchecked';\n }\n}\n","<!-- Group Mode -->\n@if (zType() === 'group') {\n <!-- Label above group -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div [class]=\"groupClasses()\">\n @for (option of zOptions(); track option.value) {\n <label\n class=\"inline-flex cursor-pointer items-center gap-2 align-middle\"\n [class.opacity-40]=\"option.disabled || isDisabled()\"\n [class.dark:opacity-50]=\"option.disabled || isDisabled()\"\n [class.cursor-not-allowed]=\"option.disabled || isDisabled()\">\n <button\n type=\"button\"\n role=\"radio\"\n [class]=\"radioClasses()\"\n [attr.aria-checked]=\"isOptionChecked(option)\"\n [attr.data-state]=\"getOptionState(option)\"\n [disabled]=\"isDisabled() || option.disabled\"\n (click)=\"onOptionClick(option)\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span\n [class]=\"indicatorClasses()\"\n [class.opacity-0]=\"!isOptionChecked(option)\"\n [class.scale-75]=\"!isOptionChecked(option)\"></span>\n </button>\n <span [class]=\"labelClasses()\" [class.text-muted-foreground]=\"option.disabled\">{{ option.label }}</span>\n </label>\n }\n </div>\n}\n\n<!-- Default Mode (single radio) -->\n@if (zType() === 'default') {\n <!-- Label above -->\n @if (zLabel()) {\n <label class=\"text-xs leading-none font-medium\">{{ zLabel() }}</label>\n }\n\n <div class=\"inline-flex items-center gap-2 align-middle\">\n <button\n type=\"button\"\n role=\"radio\"\n [class]=\"radioClasses()\"\n [attr.aria-checked]=\"isChecked()\"\n [attr.data-state]=\"getRadioState()\"\n [disabled]=\"isDisabled()\"\n (click)=\"onRadioClick()\"\n (focus)=\"onFocus($event)\"\n (blur)=\"onBlur($event)\">\n <span [class]=\"indicatorClasses()\" [class.opacity-0]=\"!isChecked()\" [class.scale-75]=\"!isChecked()\"></span>\n </button>\n @if (zText()) {\n <label [class]=\"labelClasses()\" (click)=\"onRadioClick()\">{{ zText() }}</label>\n }\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -125,10 +125,10 @@ class ZScrollAreaComponent {
|
|
|
125
125
|
}
|
|
126
126
|
void scrollbar.scrollToElement(targetEl, options);
|
|
127
127
|
}
|
|
128
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.
|
|
129
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.
|
|
128
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZScrollAreaComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
129
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: ZScrollAreaComponent, isStandalone: true, selector: "z-scrollarea", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zType: { classPropertyName: "zType", publicName: "zType", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", isSignal: true, isRequired: false, transformFunction: null }, zVisibility: { classPropertyName: "zVisibility", publicName: "zVisibility", isSignal: true, isRequired: false, transformFunction: null }, zSize: { classPropertyName: "zSize", publicName: "zSize", isSignal: true, isRequired: false, transformFunction: null }, zDisableInteraction: { classPropertyName: "zDisableInteraction", publicName: "zDisableInteraction", isSignal: true, isRequired: false, transformFunction: null }, zSensorThrottleTime: { classPropertyName: "zSensorThrottleTime", publicName: "zSensorThrottleTime", isSignal: true, isRequired: false, transformFunction: null }, zDisableSensor: { classPropertyName: "zDisableSensor", publicName: "zDisableSensor", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zScroll: "zScroll", zScrollbarInit: "zScrollbarInit" }, host: { properties: { "class": "hostClasses()" } }, viewQueries: [{ propertyName: "scrollbarRef", first: true, predicate: ["scrollbarRef"], descendants: true, isSignal: true }, { propertyName: "nativeViewport", first: true, predicate: ["nativeViewport"], descendants: true, isSignal: true }], ngImport: i0, template: "<ng-template #contentTpl>\n <ng-content />\n</ng-template>\n\n@if (zType() === 'custom') {\n <ng-scrollbar\n #scrollbarRef\n class=\"block h-full w-full\"\n [visibility]=\"zVisibility()\"\n [orientation]=\"zOrientation()\"\n [disableInteraction]=\"zDisableInteraction()\"\n [sensorThrottleTime]=\"zSensorThrottleTime()\"\n [disableSensor]=\"zDisableSensor()\"\n (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </ng-scrollbar>\n} @else {\n <div #nativeViewport [class]=\"nativeClasses()\" (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </div>\n}\n", styles: [":host{display:block;position:relative}.z-scrollarea{display:block}.z-scrollarea ng-scrollbar{width:100%;height:inherit;--scrollbar-track-thickness: var(--scrollbar-size);--scrollbar-track-hover-thickness: var(--scrollbar-size);--scrollbar-track-active-thickness: var(--scrollbar-size);--scrollbar-container-offset: 0px;--scrollbar-track-offset: 0px;--scrollbar-track-color: inherit;--scrollbar-thumb-color: inherit;--scrollbar-thumb-hover-color: inherit;--scrollbar-border-radius: inherit;--scrollbar-track-border-radius: inherit;--scrollbar-thumb-transition: inherit}.z-scrollarea .z-scrollarea-native{width:100%;height:inherit}.z-scrollarea{--scrollbar-track-color: transparent;--scrollbar-thumb-color: color-mix(in oklab, var(--muted-foreground) 30%, transparent);--scrollbar-thumb-hover-color: color-mix(in oklab, var(--muted-foreground) 50%, transparent);--scrollbar-border-radius: var(--radius-sm, 6px);--scrollbar-track-border-radius: var(--radius-sm, 6px);--scrollbar-thumb-transition: background-color .2s ease, opacity .2s ease}.z-scrollarea.z-scrollarea-size-sm{--scrollbar-size: 4px;--scrollbar-padding: 2px}.z-scrollarea.z-scrollarea-size-default{--scrollbar-size: 6px;--scrollbar-padding: 4px}.z-scrollarea.z-scrollarea-size-lg{--scrollbar-size: 8px;--scrollbar-padding: 6px}.z-scrollarea .ng-scroll-viewport{width:100%;height:100%;max-width:100%;max-height:100%;box-sizing:border-box}.z-scrollarea .ng-scroll-content{box-sizing:border-box;display:block;width:100%}.z-scrollarea.z-scrollarea-horizontal .ng-scroll-content,.z-scrollarea.z-scrollarea-auto .ng-scroll-content{width:max-content;min-width:100%}.z-scrollarea-visibility-visible .z-scrollarea-native,.z-scrollarea-visibility-hover .z-scrollarea-native{scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent)) var(--scrollbar-track-color, transparent)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar{width:var(--scrollbar-size, 6px);height:var(--scrollbar-size, 6px)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar-track,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-track{background:var(--scrollbar-track-color, transparent)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent));border-radius:var(--scrollbar-border-radius, var(--radius-sm, 6px));transition:var(--scrollbar-thumb-transition, background-color .2s ease)}.z-scrollarea-visibility-visible .z-scrollarea-native::-webkit-scrollbar-thumb:hover,.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover-color, color-mix(in oklab, var(--muted-foreground) 50%, transparent))}.z-scrollarea-visibility-hover .z-scrollarea-native{scrollbar-color:transparent transparent}.z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb{background:transparent}.z-scrollarea-visibility-hover:hover .z-scrollarea-visibility-hover .z-scrollarea-native,.z-scrollarea-visibility-hover:active .z-scrollarea-visibility-hover .z-scrollarea-native,.z-scrollarea-visibility-hover:focus-within .z-scrollarea-visibility-hover .z-scrollarea-native,.z-scrollarea-visibility-hover .z-scrollarea-native:hover,.z-scrollarea-visibility-hover .z-scrollarea-native:active{scrollbar-color:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent)) var(--scrollbar-track-color, transparent)}.z-scrollarea-visibility-hover:hover .z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover:active .z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover:focus-within .z-scrollarea-visibility-hover .z-scrollarea-native::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover .z-scrollarea-native:hover::-webkit-scrollbar-thumb,.z-scrollarea-visibility-hover .z-scrollarea-native:active::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb-color, color-mix(in oklab, var(--muted-foreground) 30%, transparent))}\n"], dependencies: [{ kind: "component", type: NgScrollbar, selector: "ng-scrollbar:not([externalViewport]), [ngScrollbar]", exportAs: ["ngScrollbar"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
130
130
|
}
|
|
131
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.
|
|
131
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: ZScrollAreaComponent, decorators: [{
|
|
132
132
|
type: Component,
|
|
133
133
|
args: [{ selector: 'z-scrollarea', imports: [NgScrollbar, NgTemplateOutlet], standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
134
134
|
'[class]': 'hostClasses()',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-scrollarea.mjs","sources":["../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.variants.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.html","../../../../libs/core-ui/components/z-scrollarea/shival99-z-ui-components-z-scrollarea.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zScrollAreaVariants = cva('z-scrollarea block overflow-hidden w-full', {\n variants: {\n zSize: {\n sm: 'z-scrollarea-size-sm',\n default: 'z-scrollarea-size-default',\n lg: 'z-scrollarea-size-lg',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport type ZScrollAreaVariants = VariantProps<typeof zScrollAreaVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n output,\n viewChild,\n ViewEncapsulation,\n type AfterViewInit,\n} from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport type {\n ZScrollAreaOrientation,\n ZScrollAreaVisibility,\n ZScrollAreaSize,\n ZScrollAreaType,\n} from './z-scrollarea.types';\nimport { zScrollAreaVariants } from './z-scrollarea.variants';\n\n@Component({\n selector: 'z-scrollarea',\n imports: [NgScrollbar, NgTemplateOutlet],\n standalone: true,\n templateUrl: './z-scrollarea.component.html',\n styleUrl: './z-scrollarea.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZScrollAreaComponent implements AfterViewInit {\n // Lấy reference đến ngx-scrollbar\n public readonly scrollbarRef = viewChild<NgScrollbar>('scrollbarRef');\n // Lấy reference đến native viewport\n public readonly nativeViewport = viewChild<ElementRef<HTMLElement>>('nativeViewport');\n\n // Khai báo các inputs sử dụng Signals API\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZScrollAreaType>('custom');\n public readonly zOrientation = input<ZScrollAreaOrientation>('vertical');\n public readonly zVisibility = input<ZScrollAreaVisibility>('hover');\n public readonly zSize = input<ZScrollAreaSize>('default');\n public readonly zDisableInteraction = input<boolean>(false);\n public readonly zSensorThrottleTime = input<number>(200);\n public readonly zDisableSensor = input<boolean>(false);\n\n // Khai báo các outputs sử dụng Signals API\n public readonly zScroll = output<Event>();\n public readonly zScrollbarInit = output<NgScrollbar>();\n\n // Tính toán các class cho host element\n protected readonly hostClasses = computed(() =>\n zMergeClasses(\n zScrollAreaVariants({\n zSize: this.zSize(),\n }),\n `z-scrollarea-${this.zOrientation()}`,\n `z-scrollarea-visibility-${this.zVisibility()}`,\n this.class()\n )\n );\n\n // Tính toán các class cho native viewport\n protected readonly nativeClasses = computed(() => {\n const orientation = this.zOrientation();\n let overflowClass = 'overflow-auto';\n if (orientation === 'vertical') {\n overflowClass = 'overflow-y-auto overflow-x-hidden';\n }\n if (orientation === 'horizontal') {\n overflowClass = 'overflow-x-auto overflow-y-hidden';\n }\n return zMergeClasses('z-scrollarea-native w-full h-full block', overflowClass);\n });\n\n public ngAfterViewInit(): void {\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n this.zScrollbarInit.emit(scrollbar);\n }\n\n // Chuyển tiếp sự kiện scroll\n protected onScroll(event: Event): void {\n this.zScroll.emit(event);\n }\n\n // API helper để scroll chương trình\n public scrollTo(options: ScrollToOptions): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (nativeEl) {\n nativeEl.scrollTo(options);\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n void scrollbar.scrollTo(options);\n }\n\n // API helper để scroll đến phần tử cụ thể\n public scrollToElement(\n selectorOrElement: string | HTMLElement,\n options?: { top?: number; left?: number; duration?: number }\n ): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (!nativeEl) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = nativeEl.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (targetEl) {\n const behavior = options?.duration && options.duration > 0 ? 'smooth' : 'auto';\n targetEl.scrollIntoView({ behavior, block: 'nearest', inline: 'nearest' });\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = scrollbar.nativeElement.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (!targetEl) {\n return;\n }\n\n void scrollbar.scrollToElement(targetEl, options);\n }\n}\n","<ng-template #contentTpl>\n <ng-content />\n</ng-template>\n\n@if (zType() === 'custom') {\n <ng-scrollbar\n #scrollbarRef\n class=\"block h-full w-full\"\n [visibility]=\"zVisibility()\"\n [orientation]=\"zOrientation()\"\n [disableInteraction]=\"zDisableInteraction()\"\n [sensorThrottleTime]=\"zSensorThrottleTime()\"\n [disableSensor]=\"zDisableSensor()\"\n (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </ng-scrollbar>\n} @else {\n <div #nativeViewport [class]=\"nativeClasses()\" (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-components-z-scrollarea.mjs","sources":["../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.variants.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.ts","../../../../libs/core-ui/components/z-scrollarea/z-scrollarea.component.html","../../../../libs/core-ui/components/z-scrollarea/shival99-z-ui-components-z-scrollarea.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zScrollAreaVariants = cva('z-scrollarea block overflow-hidden w-full', {\n variants: {\n zSize: {\n sm: 'z-scrollarea-size-sm',\n default: 'z-scrollarea-size-default',\n lg: 'z-scrollarea-size-lg',\n },\n },\n defaultVariants: {\n zSize: 'default',\n },\n});\n\nexport type ZScrollAreaVariants = VariantProps<typeof zScrollAreaVariants>;\n","import { NgTemplateOutlet } from '@angular/common';\nimport {\n ChangeDetectionStrategy,\n Component,\n computed,\n ElementRef,\n input,\n output,\n viewChild,\n ViewEncapsulation,\n type AfterViewInit,\n} from '@angular/core';\nimport { zMergeClasses } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport { NgScrollbar } from 'ngx-scrollbar';\nimport type {\n ZScrollAreaOrientation,\n ZScrollAreaVisibility,\n ZScrollAreaSize,\n ZScrollAreaType,\n} from './z-scrollarea.types';\nimport { zScrollAreaVariants } from './z-scrollarea.variants';\n\n@Component({\n selector: 'z-scrollarea',\n imports: [NgScrollbar, NgTemplateOutlet],\n standalone: true,\n templateUrl: './z-scrollarea.component.html',\n styleUrl: './z-scrollarea.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n '[class]': 'hostClasses()',\n },\n})\nexport class ZScrollAreaComponent implements AfterViewInit {\n // Lấy reference đến ngx-scrollbar\n public readonly scrollbarRef = viewChild<NgScrollbar>('scrollbarRef');\n // Lấy reference đến native viewport\n public readonly nativeViewport = viewChild<ElementRef<HTMLElement>>('nativeViewport');\n\n // Khai báo các inputs sử dụng Signals API\n public readonly class = input<ClassValue>('');\n public readonly zType = input<ZScrollAreaType>('custom');\n public readonly zOrientation = input<ZScrollAreaOrientation>('vertical');\n public readonly zVisibility = input<ZScrollAreaVisibility>('hover');\n public readonly zSize = input<ZScrollAreaSize>('default');\n public readonly zDisableInteraction = input<boolean>(false);\n public readonly zSensorThrottleTime = input<number>(200);\n public readonly zDisableSensor = input<boolean>(false);\n\n // Khai báo các outputs sử dụng Signals API\n public readonly zScroll = output<Event>();\n public readonly zScrollbarInit = output<NgScrollbar>();\n\n // Tính toán các class cho host element\n protected readonly hostClasses = computed(() =>\n zMergeClasses(\n zScrollAreaVariants({\n zSize: this.zSize(),\n }),\n `z-scrollarea-${this.zOrientation()}`,\n `z-scrollarea-visibility-${this.zVisibility()}`,\n this.class()\n )\n );\n\n // Tính toán các class cho native viewport\n protected readonly nativeClasses = computed(() => {\n const orientation = this.zOrientation();\n let overflowClass = 'overflow-auto';\n if (orientation === 'vertical') {\n overflowClass = 'overflow-y-auto overflow-x-hidden';\n }\n if (orientation === 'horizontal') {\n overflowClass = 'overflow-x-auto overflow-y-hidden';\n }\n return zMergeClasses('z-scrollarea-native w-full h-full block', overflowClass);\n });\n\n public ngAfterViewInit(): void {\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n this.zScrollbarInit.emit(scrollbar);\n }\n\n // Chuyển tiếp sự kiện scroll\n protected onScroll(event: Event): void {\n this.zScroll.emit(event);\n }\n\n // API helper để scroll chương trình\n public scrollTo(options: ScrollToOptions): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (nativeEl) {\n nativeEl.scrollTo(options);\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n void scrollbar.scrollTo(options);\n }\n\n // API helper để scroll đến phần tử cụ thể\n public scrollToElement(\n selectorOrElement: string | HTMLElement,\n options?: { top?: number; left?: number; duration?: number }\n ): void {\n if (this.zType() === 'native') {\n const nativeEl = this.nativeViewport()?.nativeElement;\n if (!nativeEl) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = nativeEl.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (targetEl) {\n const behavior = options?.duration && options.duration > 0 ? 'smooth' : 'auto';\n targetEl.scrollIntoView({ behavior, block: 'nearest', inline: 'nearest' });\n }\n return;\n }\n\n const scrollbar = this.scrollbarRef();\n if (!scrollbar) {\n return;\n }\n\n let targetEl: HTMLElement | null = null;\n if (typeof selectorOrElement === 'string') {\n targetEl = scrollbar.nativeElement.querySelector(selectorOrElement);\n }\n if (selectorOrElement instanceof HTMLElement) {\n targetEl = selectorOrElement;\n }\n\n if (!targetEl) {\n return;\n }\n\n void scrollbar.scrollToElement(targetEl, options);\n }\n}\n","<ng-template #contentTpl>\n <ng-content />\n</ng-template>\n\n@if (zType() === 'custom') {\n <ng-scrollbar\n #scrollbarRef\n class=\"block h-full w-full\"\n [visibility]=\"zVisibility()\"\n [orientation]=\"zOrientation()\"\n [disableInteraction]=\"zDisableInteraction()\"\n [sensorThrottleTime]=\"zSensorThrottleTime()\"\n [disableSensor]=\"zDisableSensor()\"\n (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </ng-scrollbar>\n} @else {\n <div #nativeViewport [class]=\"nativeClasses()\" (scroll)=\"onScroll($event)\">\n <ng-container *ngTemplateOutlet=\"contentTpl\" />\n </div>\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|