@shival99/z-ui 2.1.32 → 2.2.0
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/fesm2022/shival99-z-ui-components-z-accordion.mjs +41 -25
- package/fesm2022/shival99-z-ui-components-z-accordion.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs +176 -97
- package/fesm2022/shival99-z-ui-components-z-autocomplete.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs +71 -40
- package/fesm2022/shival99-z-ui-components-z-avatar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs +26 -15
- package/fesm2022/shival99-z-ui-components-z-breadcrumb.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs +33 -21
- package/fesm2022/shival99-z-ui-components-z-button-group.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-button.mjs +32 -19
- package/fesm2022/shival99-z-ui-components-z-button.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs +289 -172
- package/fesm2022/shival99-z-ui-components-z-calendar.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-card.mjs +34 -24
- package/fesm2022/shival99-z-ui-components-z-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-chat.mjs +85 -47
- package/fesm2022/shival99-z-ui-components-z-chat.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs +56 -31
- package/fesm2022/shival99-z-ui-components-z-checkbox.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-code.mjs +29 -16
- package/fesm2022/shival99-z-ui-components-z-code.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-command.mjs +34 -19
- package/fesm2022/shival99-z-ui-components-z-command.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +310 -88
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs +32 -18
- package/fesm2022/shival99-z-ui-components-z-dropdown-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-editor.mjs +118 -62
- package/fesm2022/shival99-z-ui-components-z-editor.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-empty.mjs +31 -17
- package/fesm2022/shival99-z-ui-components-z-empty.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +81 -54
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs +240 -132
- package/fesm2022/shival99-z-ui-components-z-gallery.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-icon.mjs +39 -21
- package/fesm2022/shival99-z-ui-components-z-icon.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-input.mjs +173 -95
- package/fesm2022/shival99-z-ui-components-z-input.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs +88 -47
- package/fesm2022/shival99-z-ui-components-z-kanban.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-loading.mjs +31 -19
- package/fesm2022/shival99-z-ui-components-z-loading.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-marquee.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs +87 -45
- package/fesm2022/shival99-z-ui-components-z-media-player.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-menu.mjs +126 -67
- package/fesm2022/shival99-z-ui-components-z-menu.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-metric-card.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +144 -80
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs +45 -24
- package/fesm2022/shival99-z-ui-components-z-pagination.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-popover.mjs +90 -57
- package/fesm2022/shival99-z-ui-components-z-popover.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs +51 -29
- package/fesm2022/shival99-z-ui-components-z-qrcode.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-radio.mjs +36 -20
- package/fesm2022/shival99-z-ui-components-z-radio.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs +27 -15
- package/fesm2022/shival99-z-ui-components-z-scrollarea.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-select.mjs +239 -138
- package/fesm2022/shival99-z-ui-components-z-select.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs +38 -21
- package/fesm2022/shival99-z-ui-components-z-show-more.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs +42 -23
- package/fesm2022/shival99-z-ui-components-z-skeleton-auto.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs +35 -19
- package/fesm2022/shival99-z-ui-components-z-skeleton.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +55 -31
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-switch.mjs +60 -33
- package/fesm2022/shival99-z-ui-components-z-switch.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-table.mjs +10875 -0
- package/fesm2022/shival99-z-ui-components-z-table.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs +534 -0
- package/fesm2022/shival99-z-ui-components-z-tabs.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-tags.mjs +72 -46
- package/fesm2022/shival99-z-ui-components-z-tags.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs +254 -0
- package/fesm2022/shival99-z-ui-components-z-timeline.mjs.map +1 -0
- package/fesm2022/shival99-z-ui-components-z-toast.mjs +53 -31
- package/fesm2022/shival99-z-ui-components-z-toast.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs +133 -56
- package/fesm2022/shival99-z-ui-components-z-tooltip.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-upload.mjs +63 -36
- package/fesm2022/shival99-z-ui-components-z-upload.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-i18n.mjs +2 -0
- package/fesm2022/shival99-z-ui-i18n.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-pipes.mjs +18 -18
- package/fesm2022/shival99-z-ui-services.mjs +35 -31
- package/fesm2022/shival99-z-ui-services.mjs.map +1 -1
- package/package.json +16 -16
- package/types/shival99-z-ui-components-z-autocomplete.d.ts +2 -2
- package/types/shival99-z-ui-components-z-card.d.ts +1 -2
- package/types/shival99-z-ui-components-z-drawer.d.ts +20 -2
- package/types/shival99-z-ui-components-z-gallery.d.ts +1 -2
- package/types/shival99-z-ui-components-z-select.d.ts +2 -2
- package/types/shival99-z-ui-components-z-table.d.ts +2293 -0
- package/types/shival99-z-ui-components-z-tabs.d.ts +92 -0
- package/types/shival99-z-ui-components-z-timeline.d.ts +71 -0
|
@@ -8,35 +8,57 @@ import * as QRCode from 'qrcode';
|
|
|
8
8
|
|
|
9
9
|
class ZQrCodeComponent {
|
|
10
10
|
// Inputs
|
|
11
|
-
zValue = input.required(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
11
|
+
zValue = input.required(/* @ts-ignore */
|
|
12
|
+
...(ngDevMode ? [{ debugName: "zValue" }] : /* istanbul ignore next */ []));
|
|
13
|
+
zSize = input(256, /* @ts-ignore */
|
|
14
|
+
...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
|
|
15
|
+
zLevel = input('H', /* @ts-ignore */
|
|
16
|
+
...(ngDevMode ? [{ debugName: "zLevel" }] : /* istanbul ignore next */ []));
|
|
17
|
+
zLogo = input('', /* @ts-ignore */
|
|
18
|
+
...(ngDevMode ? [{ debugName: "zLogo" }] : /* istanbul ignore next */ []));
|
|
19
|
+
zLogoSize = input(0.2, /* @ts-ignore */
|
|
20
|
+
...(ngDevMode ? [{ debugName: "zLogoSize" }] : /* istanbul ignore next */ [])); // 20% of QR size
|
|
21
|
+
zLogoBgColor = input('#ffffff', /* @ts-ignore */
|
|
22
|
+
...(ngDevMode ? [{ debugName: "zLogoBgColor" }] : /* istanbul ignore next */ []));
|
|
23
|
+
zLogoBgShape = input('circle', /* @ts-ignore */
|
|
24
|
+
...(ngDevMode ? [{ debugName: "zLogoBgShape" }] : /* istanbul ignore next */ []));
|
|
25
|
+
zLogoPadding = input(4, /* @ts-ignore */
|
|
26
|
+
...(ngDevMode ? [{ debugName: "zLogoPadding" }] : /* istanbul ignore next */ []));
|
|
27
|
+
zFgColor = input('#000000', /* @ts-ignore */
|
|
28
|
+
...(ngDevMode ? [{ debugName: "zFgColor" }] : /* istanbul ignore next */ []));
|
|
29
|
+
zBgColor = input('#ffffff', /* @ts-ignore */
|
|
30
|
+
...(ngDevMode ? [{ debugName: "zBgColor" }] : /* istanbul ignore next */ []));
|
|
31
|
+
zDotStyle = input('square', /* @ts-ignore */
|
|
32
|
+
...(ngDevMode ? [{ debugName: "zDotStyle" }] : /* istanbul ignore next */ []));
|
|
33
|
+
zEyeStyle = input('square', /* @ts-ignore */
|
|
34
|
+
...(ngDevMode ? [{ debugName: "zEyeStyle" }] : /* istanbul ignore next */ []));
|
|
35
|
+
zEyeColor = input('', /* @ts-ignore */
|
|
36
|
+
...(ngDevMode ? [{ debugName: "zEyeColor" }] : /* istanbul ignore next */ [])); // if empty, falls back to zFgColor
|
|
37
|
+
zMargin = input(4, /* @ts-ignore */
|
|
38
|
+
...(ngDevMode ? [{ debugName: "zMargin" }] : /* istanbul ignore next */ [])); // margin in modules
|
|
39
|
+
zFgGradient = input(/* @ts-ignore */
|
|
40
|
+
...(ngDevMode ? [undefined, { debugName: "zFgGradient" }] : /* istanbul ignore next */ []));
|
|
41
|
+
zFrame = input('none', /* @ts-ignore */
|
|
42
|
+
...(ngDevMode ? [{ debugName: "zFrame" }] : /* istanbul ignore next */ []));
|
|
43
|
+
zFrameText = input('SCAN ME', /* @ts-ignore */
|
|
44
|
+
...(ngDevMode ? [{ debugName: "zFrameText" }] : /* istanbul ignore next */ []));
|
|
45
|
+
zFrameColor = input('#0f172a', /* @ts-ignore */
|
|
46
|
+
...(ngDevMode ? [{ debugName: "zFrameColor" }] : /* istanbul ignore next */ []));
|
|
47
|
+
zFramePadding = input(12, /* @ts-ignore */
|
|
48
|
+
...(ngDevMode ? [{ debugName: "zFramePadding" }] : /* istanbul ignore next */ [])); // padding around QR inside frame
|
|
49
|
+
zFrameBorderRadius = input(12, /* @ts-ignore */
|
|
50
|
+
...(ngDevMode ? [{ debugName: "zFrameBorderRadius" }] : /* istanbul ignore next */ [])); // border radius of the frame
|
|
51
|
+
zDownloadable = input(false, { ...(ngDevMode ? { debugName: "zDownloadable" } : /* istanbul ignore next */ {}), transform: zTransform }); // toggles hover overlay button
|
|
52
|
+
zDownloadButton = input(false, { ...(ngDevMode ? { debugName: "zDownloadButton" } : /* istanbul ignore next */ {}), transform: zTransform }); // toggles standalone button below
|
|
53
|
+
zShadow = input(true, { ...(ngDevMode ? { debugName: "zShadow" } : /* istanbul ignore next */ {}), transform: zTransform }); // Bật/tắt đổ bóng khung ngoài
|
|
54
|
+
zLoading = input(false, { ...(ngDevMode ? { debugName: "zLoading" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
35
55
|
// DOM references
|
|
36
|
-
_canvasRef = viewChild('qrCanvas',
|
|
56
|
+
_canvasRef = viewChild('qrCanvas', /* @ts-ignore */
|
|
57
|
+
...(ngDevMode ? [{ debugName: "_canvasRef" }] : /* istanbul ignore next */ []));
|
|
37
58
|
_platformId = inject(PLATFORM_ID);
|
|
38
59
|
// States
|
|
39
|
-
downloadText = signal('i18n_z_ui_qrcode_download',
|
|
60
|
+
downloadText = signal('i18n_z_ui_qrcode_download', /* @ts-ignore */
|
|
61
|
+
...(ngDevMode ? [{ debugName: "downloadText" }] : /* istanbul ignore next */ []));
|
|
40
62
|
constructor() {
|
|
41
63
|
// Re-render when any signal inputs change
|
|
42
64
|
effect(() => {
|
|
@@ -367,10 +389,10 @@ class ZQrCodeComponent {
|
|
|
367
389
|
link.click();
|
|
368
390
|
document.body.removeChild(link);
|
|
369
391
|
}
|
|
370
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
371
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
392
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZQrCodeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
393
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", 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.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", 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 });
|
|
372
394
|
}
|
|
373
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
395
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZQrCodeComponent, decorators: [{
|
|
374
396
|
type: Component,
|
|
375
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.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", 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"] }]
|
|
376
398
|
}], 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 }] }] } });
|
|
@@ -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 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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"}
|
|
@@ -54,18 +54,29 @@ class ZRadioComponent {
|
|
|
54
54
|
zOnBlur = output();
|
|
55
55
|
zOnFocus = output();
|
|
56
56
|
zEvent = output();
|
|
57
|
-
class = input('',
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
57
|
+
class = input('', /* @ts-ignore */
|
|
58
|
+
...(ngDevMode ? [{ debugName: "class" }] : /* istanbul ignore next */ []));
|
|
59
|
+
zType = input('default', /* @ts-ignore */
|
|
60
|
+
...(ngDevMode ? [{ debugName: "zType" }] : /* istanbul ignore next */ []));
|
|
61
|
+
zSize = input('default', /* @ts-ignore */
|
|
62
|
+
...(ngDevMode ? [{ debugName: "zSize" }] : /* istanbul ignore next */ []));
|
|
63
|
+
zLabel = input('', /* @ts-ignore */
|
|
64
|
+
...(ngDevMode ? [{ debugName: "zLabel" }] : /* istanbul ignore next */ []));
|
|
65
|
+
zText = input('', /* @ts-ignore */
|
|
66
|
+
...(ngDevMode ? [{ debugName: "zText" }] : /* istanbul ignore next */ []));
|
|
67
|
+
zDisabled = input(false, { ...(ngDevMode ? { debugName: "zDisabled" } : /* istanbul ignore next */ {}), transform: zTransform });
|
|
68
|
+
zValue = input('', /* @ts-ignore */
|
|
69
|
+
...(ngDevMode ? [{ debugName: "zValue" }] : /* istanbul ignore next */ []));
|
|
70
|
+
zOptions = input([], /* @ts-ignore */
|
|
71
|
+
...(ngDevMode ? [{ debugName: "zOptions" }] : /* istanbul ignore next */ []));
|
|
72
|
+
zOrientation = input('vertical', /* @ts-ignore */
|
|
73
|
+
...(ngDevMode ? [{ debugName: "zOrientation" }] : /* istanbul ignore next */ []));
|
|
74
|
+
zSelectedValue = model(null, /* @ts-ignore */
|
|
75
|
+
...(ngDevMode ? [{ debugName: "zSelectedValue" }] : /* istanbul ignore next */ []));
|
|
76
|
+
_disabled = signal(false, /* @ts-ignore */
|
|
77
|
+
...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
|
|
78
|
+
isDisabled = computed(() => this.zDisabled() || this._disabled(), /* @ts-ignore */
|
|
79
|
+
...(ngDevMode ? [{ debugName: "isDisabled" }] : /* istanbul ignore next */ []));
|
|
69
80
|
hostClasses = computed(() => {
|
|
70
81
|
const hasLabel = !!this.zLabel();
|
|
71
82
|
if (this.zType() === 'group') {
|
|
@@ -75,14 +86,19 @@ class ZRadioComponent {
|
|
|
75
86
|
return zMergeClasses('flex flex-col gap-2', this.class());
|
|
76
87
|
}
|
|
77
88
|
return zMergeClasses('inline-flex items-center gap-2', this.class());
|
|
78
|
-
},
|
|
89
|
+
}, /* @ts-ignore */
|
|
90
|
+
...(ngDevMode ? [{ debugName: "hostClasses" }] : /* istanbul ignore next */ []));
|
|
79
91
|
groupClasses = computed(() => {
|
|
80
92
|
const orientation = this.zOrientation() === 'horizontal' ? 'flex-row flex-wrap' : 'flex-col';
|
|
81
93
|
return `flex ${orientation} gap-2`;
|
|
82
|
-
},
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
94
|
+
}, /* @ts-ignore */
|
|
95
|
+
...(ngDevMode ? [{ debugName: "groupClasses" }] : /* istanbul ignore next */ []));
|
|
96
|
+
radioClasses = computed(() => zRadioVariants({ zSize: this.zSize() }), /* @ts-ignore */
|
|
97
|
+
...(ngDevMode ? [{ debugName: "radioClasses" }] : /* istanbul ignore next */ []));
|
|
98
|
+
indicatorClasses = computed(() => zRadioIndicatorVariants({ zSize: this.zSize() }), /* @ts-ignore */
|
|
99
|
+
...(ngDevMode ? [{ debugName: "indicatorClasses" }] : /* istanbul ignore next */ []));
|
|
100
|
+
labelClasses = computed(() => zRadioLabelVariants({ zSize: this.zSize() }), /* @ts-ignore */
|
|
101
|
+
...(ngDevMode ? [{ debugName: "labelClasses" }] : /* istanbul ignore next */ []));
|
|
86
102
|
_onChange = () => { };
|
|
87
103
|
_onTouched = () => { };
|
|
88
104
|
writeValue(value) {
|
|
@@ -137,8 +153,8 @@ class ZRadioComponent {
|
|
|
137
153
|
getOptionState(option) {
|
|
138
154
|
return this.isOptionChecked(option) ? 'checked' : 'unchecked';
|
|
139
155
|
}
|
|
140
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
141
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
156
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZRadioComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
157
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.2", 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: [
|
|
142
158
|
{
|
|
143
159
|
provide: NG_VALUE_ACCESSOR,
|
|
144
160
|
useExisting: forwardRef(() => ZRadioComponent),
|
|
@@ -146,7 +162,7 @@ class ZRadioComponent {
|
|
|
146
162
|
},
|
|
147
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 });
|
|
148
164
|
}
|
|
149
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
165
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.2", ngImport: i0, type: ZRadioComponent, decorators: [{
|
|
150
166
|
type: Component,
|
|
151
167
|
args: [{ selector: 'z-radio', imports: [], standalone: true, providers: [
|
|
152
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":";;;;;;AAEO,MAAM,cAAc,GAAG,GAAG,CAC/B;IACE,oGAAoG;IACpG,oFAAoF;IACpF,gCAAgC;IAChC,qEAAqE;IACrE,0IAA0I;IAC1I,iDAAiD;IACjD,8GAA8G;CAC/G,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,OAAO,EAAE,QAAQ;AACjB,YAAA,EAAE,EAAE,QAAQ;AACb,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGI,MAAM,uBAAuB,GAAG,GAAG,CACxC,gFAAgF,EAChF;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,QAAQ;AACZ,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,EAAE,EAAE,QAAQ;AACb,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;AAGI,MAAM,mBAAmB,GAAG,GAAG,CACpC,mGAAmG,EACnG;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,KAAK,EAAE;AACL,YAAA,EAAE,EAAE,SAAS;AACb,YAAA,OAAO,EAAE,SAAS;AAClB,YAAA,EAAE,EAAE,WAAW;AAChB,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,KAAK,EAAE,SAAS;AACjB,KAAA;AACF,CAAA;;MCpBU,eAAe,CAAA;IACV,OAAO,GAAG,MAAM,EAA0B;IAC1C,OAAO,GAAG,MAAM,EAAc;IAC9B,QAAQ,GAAG,MAAM,EAAc;IAC/B,MAAM,GAAG,MAAM,EAAU;AAEzB,IAAA,KAAK,GAAG,KAAK,CAAa,EAAE,iDAAC;AAC7B,IAAA,KAAK,GAAG,KAAK,CAAa,SAAS,iDAAC;AACpC,IAAA,KAAK,GAAG,KAAK,CAAa,SAAS,iDAAC;AACpC,IAAA,MAAM,GAAG,KAAK,CAAS,EAAE,kDAAC;AAC1B,IAAA,KAAK,GAAG,KAAK,CAAS,EAAE,iDAAC;IACzB,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;AACnD,IAAA,MAAM,GAAG,KAAK,CAAkB,EAAE,kDAAC;AACnC,IAAA,QAAQ,GAAG,KAAK,CAAiB,EAAE,oDAAC;AACpC,IAAA,YAAY,GAAG,KAAK,CAAoB,UAAU,wDAAC;AAEnD,IAAA,cAAc,GAAG,KAAK,CAAyB,IAAI,0DAAC;AAEnD,IAAA,SAAS,GAAG,MAAM,CAAC,KAAK,qDAAC;AAEvB,IAAA,UAAU,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,sDAAC;AAEjE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;QAC7C,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;AAChC,QAAA,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,OAAO,EAAE;YAC5B,OAAO,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3D;QACA,IAAI,QAAQ,EAAE;YACZ,OAAO,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;QAC3D;QACA,OAAO,aAAa,CAAC,gCAAgC,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;AACtE,IAAA,CAAC,uDAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY,GAAG,oBAAoB,GAAG,UAAU;QAC5F,OAAO,CAAA,KAAA,EAAQ,WAAW,CAAA,MAAA,CAAQ;AACpC,IAAA,CAAC,wDAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,wDAAC;AAEtE,IAAA,gBAAgB,GAAG,QAAQ,CAAC,MAAM,uBAAuB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,4DAAC;AAEnF,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAM,mBAAmB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,wDAAC;AAEtF,IAAA,SAAS,GAA4C,MAAK,EAAE,CAAC;AAC7D,IAAA,UAAU,GAAe,MAAK,EAAE,CAAC;AAElC,IAAA,UAAU,CAAC,KAA6B,EAAA;AAC7C,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;IAChC;AAEO,IAAA,gBAAgB,CAAC,EAA2C,EAAA;AACjE,QAAA,IAAI,CAAC,SAAS,GAAG,EAAE;IACrB;AAEO,IAAA,iBAAiB,CAAC,EAAc,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE;IACtB;AAEO,IAAA,gBAAgB,CAAC,UAAmB,EAAA;AACzC,QAAA,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;IAChC;AAEU,IAAA,OAAO,CAAC,KAAiB,EAAA;AACjC,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAChD;AAEU,IAAA,MAAM,CAAC,KAAiB,EAAA;AAChC,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC7C,IAAI,CAAC,UAAU,EAAE;IACnB;IAEU,YAAY,GAAA;AACpB,QAAA,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB;QACF;AAEA,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC;AAC9B,QAAA,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;AACxB,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;QACrB,IAAI,CAAC,UAAU,EAAE;IACnB;AAEU,IAAA,aAAa,CAAC,MAAoB,EAAA;QAC1C,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,MAAM,CAAC,QAAQ,EAAE;YACxC;QACF;QAEA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AAC/B,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,UAAU,EAAE;IACnB;AAEU,IAAA,eAAe,CAAC,MAAoB,EAAA;QAC5C,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,MAAM,CAAC,KAAK;IAC/C;IAEU,SAAS,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc,EAAE,KAAK,IAAI,CAAC,MAAM,EAAE;IAChD;IAEU,aAAa,GAAA;AACrB,QAAA,OAAO,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,GAAG,WAAW;IACnD;AAEU,IAAA,cAAc,CAAC,MAAoB,EAAA;AAC3C,QAAA,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,WAAW;IAC/D;uGA/GW,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;AAAf,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,SAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,YAAA,EAAA,EAAA,iBAAA,EAAA,cAAA,EAAA,UAAA,EAAA,cAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,EAAA,iBAAA,EAAA,gBAAA,EAAA,UAAA,EAAA,gBAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,OAAA,EAAA,EAAA,OAAA,EAAA,SAAA,EAAA,OAAA,EAAA,SAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,cAAA,EAAA,sBAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,OAAA,EAAA,eAAA,EAAA,EAAA,EAAA,SAAA,EAbf;AACT,YAAA;AACE,gBAAA,OAAO,EAAE,iBAAiB;AAC1B,gBAAA,WAAW,EAAE,UAAU,CAAC,MAAM,eAAe,CAAC;AAC9C,gBAAA,KAAK,EAAE,IAAI;AACZ,aAAA;AACF,SAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC5BH,4oEA4DA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FDzBa,eAAe,EAAA,UAAA,EAAA,CAAA;kBAlB3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EACV,EAAE,EAAA,UAAA,EACC,IAAI,EAAA,SAAA,EAEL;AACT,wBAAA;AACE,4BAAA,OAAO,EAAE,iBAAiB;AAC1B,4BAAA,WAAW,EAAE,UAAU,CAAC,qBAAqB,CAAC;AAC9C,4BAAA,KAAK,EAAE,IAAI;AACZ,yBAAA;AACF,qBAAA,EAAA,eAAA,EACgB,uBAAuB,CAAC,MAAM,iBAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,SAAS,EAAE,eAAe;AAC3B,qBAAA,EAAA,QAAA,EAAA,4oEAAA,EAAA;;;AEjCH;;AAEG;;;;"}
|
|
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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"}
|