@shival99/z-ui 1.3.2 → 1.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs +4 -3
- package/fesm2022/shival99-z-ui-components-z-drawer.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-filter.mjs +14 -20
- package/fesm2022/shival99-z-ui-components-z-filter.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-modal.mjs +6 -5
- package/fesm2022/shival99-z-ui-components-z-modal.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-components-z-steps.mjs +27 -8
- package/fesm2022/shival99-z-ui-components-z-steps.mjs.map +1 -1
- package/fesm2022/shival99-z-ui-utils.mjs +2 -2
- package/fesm2022/shival99-z-ui-utils.mjs.map +1 -1
- package/package.json +1 -1
- package/types/shival99-z-ui-components-z-steps.d.ts +2 -2
- package/types/shival99-z-ui-utils.d.ts +2 -2
|
@@ -119,6 +119,7 @@ class ZStepsComponent {
|
|
|
119
119
|
zClickable = input(false, { ...(ngDevMode ? { debugName: "zClickable" } : {}), transform: zTransform });
|
|
120
120
|
zShowNumber = input(true, { ...(ngDevMode ? { debugName: "zShowNumber" } : {}), transform: zTransform });
|
|
121
121
|
zResponsive = input(true, { ...(ngDevMode ? { debugName: "zResponsive" } : {}), transform: zTransform });
|
|
122
|
+
zDisabled = input(false, { ...(ngDevMode ? { debugName: "zDisabled" } : {}), transform: zTransform });
|
|
122
123
|
zOnStepClick = output();
|
|
123
124
|
zControl = output();
|
|
124
125
|
_internalCurrent = signal(null, ...(ngDevMode ? [{ debugName: "_internalCurrent" }] : []));
|
|
@@ -183,7 +184,7 @@ class ZStepsComponent {
|
|
|
183
184
|
if (index === 0) {
|
|
184
185
|
positionClass = 'z-steps-arrow-first';
|
|
185
186
|
}
|
|
186
|
-
|
|
187
|
+
if (index === total - 1) {
|
|
187
188
|
positionClass = 'z-steps-arrow-last';
|
|
188
189
|
}
|
|
189
190
|
return zMergeClasses(baseClasses, positionClass);
|
|
@@ -221,16 +222,19 @@ class ZStepsComponent {
|
|
|
221
222
|
this._destroyRef.onDestroy(() => {
|
|
222
223
|
this._resizeObserver?.disconnect();
|
|
223
224
|
});
|
|
224
|
-
this.zControl.emit(
|
|
225
|
-
}
|
|
226
|
-
_createControl() {
|
|
227
|
-
return {
|
|
225
|
+
this.zControl.emit({
|
|
228
226
|
setActive: (index) => {
|
|
227
|
+
if (this.zDisabled()) {
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
229
230
|
if (index >= 0 && index < this.zSteps().length) {
|
|
230
231
|
this._internalCurrent.set(index);
|
|
231
232
|
}
|
|
232
233
|
},
|
|
233
234
|
next: () => {
|
|
235
|
+
if (this.zDisabled()) {
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
234
238
|
const current = this.currentStep();
|
|
235
239
|
const total = this.zSteps().length;
|
|
236
240
|
if (current < total - 1) {
|
|
@@ -238,24 +242,36 @@ class ZStepsComponent {
|
|
|
238
242
|
}
|
|
239
243
|
},
|
|
240
244
|
prev: () => {
|
|
245
|
+
if (this.zDisabled()) {
|
|
246
|
+
return;
|
|
247
|
+
}
|
|
241
248
|
const current = this.currentStep();
|
|
242
249
|
if (current > 0) {
|
|
243
250
|
this._internalCurrent.set(current - 1);
|
|
244
251
|
}
|
|
245
252
|
},
|
|
246
253
|
reset: () => {
|
|
254
|
+
if (this.zDisabled()) {
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
247
257
|
this._internalCurrent.set(0);
|
|
248
258
|
this._stepOverrides.set(new Map());
|
|
249
259
|
},
|
|
250
260
|
setDisabled: (index, disabled) => {
|
|
261
|
+
if (this.zDisabled()) {
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
251
264
|
this._updateStepOverride(index, { disabled });
|
|
252
265
|
},
|
|
253
266
|
setStatus: (index, status) => {
|
|
267
|
+
if (this.zDisabled()) {
|
|
268
|
+
return;
|
|
269
|
+
}
|
|
254
270
|
this._updateStepOverride(index, { status });
|
|
255
271
|
},
|
|
256
272
|
getCurrent: () => this.currentStep(),
|
|
257
273
|
getTotal: () => this.zSteps().length,
|
|
258
|
-
};
|
|
274
|
+
});
|
|
259
275
|
}
|
|
260
276
|
_updateStepOverride(index, override) {
|
|
261
277
|
const overrides = new Map(this._stepOverrides());
|
|
@@ -293,6 +309,9 @@ class ZStepsComponent {
|
|
|
293
309
|
return 'pending';
|
|
294
310
|
}
|
|
295
311
|
onStepClick(index) {
|
|
312
|
+
if (this.zDisabled()) {
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
296
315
|
const step = this.zSteps()[index];
|
|
297
316
|
if (step.disabled) {
|
|
298
317
|
return;
|
|
@@ -303,14 +322,14 @@ class ZStepsComponent {
|
|
|
303
322
|
this.zOnStepClick.emit(index);
|
|
304
323
|
}
|
|
305
324
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ZStepsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
306
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ZStepsComponent, isStandalone: true, selector: "z-steps", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zSteps: { classPropertyName: "zSteps", publicName: "zSteps", isSignal: true, isRequired: true, transformFunction: null }, zCurrent: { classPropertyName: "zCurrent", publicName: "zCurrent", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", 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 }, zClickable: { classPropertyName: "zClickable", publicName: "zClickable", isSignal: true, isRequired: false, transformFunction: null }, zShowNumber: { classPropertyName: "zShowNumber", publicName: "zShowNumber", isSignal: true, isRequired: false, transformFunction: null }, zResponsive: { classPropertyName: "zResponsive", publicName: "zResponsive", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zOnStepClick: "zOnStepClick", zControl: "zControl" }, host: { classAttribute: "block" }, ngImport: i0, template: "<ol [class]=\"containerClasses()\">\n @for (step of mergedSteps(); track $index; let i = $index; let last = $last) {\n @if (effectiveOrientation() === 'vertical') {\n <!-- Vertical Layout -->\n <li\n [class]=\"getItemClasses()\"\n [class.!items-start]=\"!step.description && (step.title || step.icon)\"\n [class.items-center]=\"!step.description && (step.title || step.icon)\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n <!-- Vertical Line -->\n @if (!last) {\n <div [class]=\"lineClasses()\"></div>\n }\n\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content -->\n @if (step.title || step.description) {\n <div class=\"flex min-w-0 flex-col\" [style.padding-top.px]=\"!step.description ? iconWidth() / 5 : 0\">\n @if (step.title) {\n <h3 class=\"leading-tight font-medium\">{{ step.title }}</h3>\n }\n @if (step.description) {\n <p class=\"text-muted-foreground mt-1 text-sm\">{{ step.description }}</p>\n }\n </div>\n }\n </li>\n } @else {\n <!-- Horizontal Layout -->\n <li\n [class]=\"zType() === 'arrow' ? 'flex-1' : 'flex-1 last:flex-none'\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n @if (zType() === 'arrow') {\n <!-- Arrow Style -->\n <div [class]=\"getArrowClassesByIndex()[i]\">\n <div class=\"flex items-center gap-3.5\">\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" class=\"shrink-0\" />\n }\n <div class=\"flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-semibold whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"mt-1 truncate text-xs whitespace-nowrap opacity-80\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n </div>\n } @else if (zType() === 'inline') {\n <!-- Inline: Icon + Content + Line in one row -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content Inline -->\n @if (step.title || step.description) {\n <div class=\"ms-3 flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"max-w-30 truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 max-w-30 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n } @else {\n <!-- Default: Icon + Line row, Content below -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n\n <!-- Content Below -->\n @if (step.title || step.description) {\n <div\n class=\"z-steps-content mt-3 flex flex-col text-center\"\n [style.width.px]=\"150\"\n [style.margin-left.px]=\"(iconWidth() - 150) / 2\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n }\n </li>\n }\n }\n</ol>\n", styles: ["z-steps ol li:not(:last-child)>div[class*=border-s]{height:calc(100% + 2rem)}z-steps ol li[class*=mb-6]:not(:last-child)>div[class*=border-s]{height:calc(100% + 1.5rem)}z-steps ol li[class*=mb-10]:not(:last-child)>div[class*=border-s]{height:calc(100% + 2.5rem)}z-steps .z-steps-arrow-item{position:relative;display:flex;flex-direction:column;justify-content:center;transition:all .2s ease-out}z-steps .z-steps-arrow-item:hover{filter:brightness(.92)}z-steps .z-steps-arrow-first{border-radius:6px 0 0 6px;clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%)}z-steps .z-steps-arrow-middle{margin-left:-8px;padding-left:calc(16px + 1rem);clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%,16px 50%)}z-steps .z-steps-arrow-last{margin-left:-8px;padding-left:calc(16px + 1rem);border-radius:0 6px 6px 0;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,16px 50%)}\n"], dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "directive", type: ZTooltipDirective, selector: "[z-tooltip], [zTooltip]", inputs: ["zContent", "zPosition", "zTrigger", "zTooltipType", "zTooltipSize", "zClass", "zShowDelay", "zHideDelay", "zArrow", "zDisabled", "zOffset", "zAutoDetect", "zTriggerElement", "zAlwaysShow", "zMaxWidth"], outputs: ["zShow", "zHide"], exportAs: ["zTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
325
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.0.6", type: ZStepsComponent, isStandalone: true, selector: "z-steps", inputs: { class: { classPropertyName: "class", publicName: "class", isSignal: true, isRequired: false, transformFunction: null }, zSteps: { classPropertyName: "zSteps", publicName: "zSteps", isSignal: true, isRequired: true, transformFunction: null }, zCurrent: { classPropertyName: "zCurrent", publicName: "zCurrent", isSignal: true, isRequired: false, transformFunction: null }, zOrientation: { classPropertyName: "zOrientation", publicName: "zOrientation", 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 }, zClickable: { classPropertyName: "zClickable", publicName: "zClickable", isSignal: true, isRequired: false, transformFunction: null }, zShowNumber: { classPropertyName: "zShowNumber", publicName: "zShowNumber", isSignal: true, isRequired: false, transformFunction: null }, zResponsive: { classPropertyName: "zResponsive", publicName: "zResponsive", isSignal: true, isRequired: false, transformFunction: null }, zDisabled: { classPropertyName: "zDisabled", publicName: "zDisabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { zOnStepClick: "zOnStepClick", zControl: "zControl" }, host: { classAttribute: "block" }, ngImport: i0, template: "<ol [class]=\"containerClasses()\">\n @for (step of mergedSteps(); track $index; let i = $index; let last = $last) {\n @if (effectiveOrientation() === 'vertical') {\n <!-- Vertical Layout -->\n <li\n [class]=\"getItemClasses()\"\n [class.!items-start]=\"!step.description && (step.title || step.icon)\"\n [class.items-center]=\"!step.description && (step.title || step.icon)\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n <!-- Vertical Line -->\n @if (!last) {\n <div [class]=\"lineClasses()\"></div>\n }\n\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content -->\n @if (step.title || step.description) {\n <div class=\"flex min-w-0 flex-col\" [style.padding-top.px]=\"!step.description ? iconWidth() / 5 : 0\">\n @if (step.title) {\n <h3 class=\"leading-tight font-medium\">{{ step.title }}</h3>\n }\n @if (step.description) {\n <p class=\"text-muted-foreground mt-1 text-sm\">{{ step.description }}</p>\n }\n </div>\n }\n </li>\n } @else {\n <!-- Horizontal Layout -->\n <li\n [class]=\"zType() === 'arrow' ? 'flex-1' : 'flex-1 last:flex-none'\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n @if (zType() === 'arrow') {\n <!-- Arrow Style -->\n <div [class]=\"getArrowClassesByIndex()[i]\">\n <div class=\"flex items-center gap-3.5\">\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" class=\"shrink-0\" />\n }\n <div class=\"flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-semibold whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"mt-1 truncate text-xs whitespace-nowrap opacity-80\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n </div>\n } @else if (zType() === 'inline') {\n <!-- Inline: Icon + Content + Line in one row -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content Inline -->\n @if (step.title || step.description) {\n <div class=\"ms-3 flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"max-w-30 truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 max-w-30 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n } @else {\n <!-- Default: Icon + Line row, Content below -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n\n <!-- Content Below -->\n @if (step.title || step.description) {\n <div\n class=\"z-steps-content mt-3 flex flex-col text-center\"\n [style.width.px]=\"150\"\n [style.margin-left.px]=\"(iconWidth() - 150) / 2\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n }\n </li>\n }\n }\n</ol>\n", styles: ["z-steps ol li:not(:last-child)>div[class*=border-s]{height:calc(100% + 2rem)}z-steps ol li[class*=mb-6]:not(:last-child)>div[class*=border-s]{height:calc(100% + 1.5rem)}z-steps ol li[class*=mb-10]:not(:last-child)>div[class*=border-s]{height:calc(100% + 2.5rem)}z-steps .z-steps-arrow-item{position:relative;display:flex;flex-direction:column;justify-content:center;transition:all .2s ease-out}z-steps .z-steps-arrow-item:hover{filter:brightness(.92)}z-steps .z-steps-arrow-first{border-radius:6px 0 0 6px;clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%)}z-steps .z-steps-arrow-middle{margin-left:-8px;padding-left:calc(16px + 1rem);clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%,16px 50%)}z-steps .z-steps-arrow-last{margin-left:-8px;padding-left:calc(16px + 1rem);border-radius:0 6px 6px 0;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,16px 50%)}\n"], dependencies: [{ kind: "component", type: ZIconComponent, selector: "z-icon, [z-icon]", inputs: ["class", "zType", "zSize", "zStrokeWidth", "zSvg"] }, { kind: "directive", type: ZTooltipDirective, selector: "[z-tooltip], [zTooltip]", inputs: ["zContent", "zPosition", "zTrigger", "zTooltipType", "zTooltipSize", "zClass", "zShowDelay", "zHideDelay", "zArrow", "zDisabled", "zOffset", "zAutoDetect", "zTriggerElement", "zAlwaysShow", "zMaxWidth"], outputs: ["zShow", "zHide"], exportAs: ["zTooltip"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
307
326
|
}
|
|
308
327
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.0.6", ngImport: i0, type: ZStepsComponent, decorators: [{
|
|
309
328
|
type: Component,
|
|
310
329
|
args: [{ selector: 'z-steps', imports: [ZIconComponent, ZTooltipDirective], changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, host: {
|
|
311
330
|
class: 'block',
|
|
312
331
|
}, template: "<ol [class]=\"containerClasses()\">\n @for (step of mergedSteps(); track $index; let i = $index; let last = $last) {\n @if (effectiveOrientation() === 'vertical') {\n <!-- Vertical Layout -->\n <li\n [class]=\"getItemClasses()\"\n [class.!items-start]=\"!step.description && (step.title || step.icon)\"\n [class.items-center]=\"!step.description && (step.title || step.icon)\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n <!-- Vertical Line -->\n @if (!last) {\n <div [class]=\"lineClasses()\"></div>\n }\n\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content -->\n @if (step.title || step.description) {\n <div class=\"flex min-w-0 flex-col\" [style.padding-top.px]=\"!step.description ? iconWidth() / 5 : 0\">\n @if (step.title) {\n <h3 class=\"leading-tight font-medium\">{{ step.title }}</h3>\n }\n @if (step.description) {\n <p class=\"text-muted-foreground mt-1 text-sm\">{{ step.description }}</p>\n }\n </div>\n }\n </li>\n } @else {\n <!-- Horizontal Layout -->\n <li\n [class]=\"zType() === 'arrow' ? 'flex-1' : 'flex-1 last:flex-none'\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n @if (zType() === 'arrow') {\n <!-- Arrow Style -->\n <div [class]=\"getArrowClassesByIndex()[i]\">\n <div class=\"flex items-center gap-3.5\">\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" class=\"shrink-0\" />\n }\n <div class=\"flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-semibold whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"mt-1 truncate text-xs whitespace-nowrap opacity-80\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n </div>\n } @else if (zType() === 'inline') {\n <!-- Inline: Icon + Content + Line in one row -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content Inline -->\n @if (step.title || step.description) {\n <div class=\"ms-3 flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"max-w-30 truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 max-w-30 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n } @else {\n <!-- Default: Icon + Line row, Content below -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n\n <!-- Content Below -->\n @if (step.title || step.description) {\n <div\n class=\"z-steps-content mt-3 flex flex-col text-center\"\n [style.width.px]=\"150\"\n [style.margin-left.px]=\"(iconWidth() - 150) / 2\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n }\n </li>\n }\n }\n</ol>\n", styles: ["z-steps ol li:not(:last-child)>div[class*=border-s]{height:calc(100% + 2rem)}z-steps ol li[class*=mb-6]:not(:last-child)>div[class*=border-s]{height:calc(100% + 1.5rem)}z-steps ol li[class*=mb-10]:not(:last-child)>div[class*=border-s]{height:calc(100% + 2.5rem)}z-steps .z-steps-arrow-item{position:relative;display:flex;flex-direction:column;justify-content:center;transition:all .2s ease-out}z-steps .z-steps-arrow-item:hover{filter:brightness(.92)}z-steps .z-steps-arrow-first{border-radius:6px 0 0 6px;clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%)}z-steps .z-steps-arrow-middle{margin-left:-8px;padding-left:calc(16px + 1rem);clip-path:polygon(0 0,calc(100% - 16px) 0,100% 50%,calc(100% - 16px) 100%,0 100%,16px 50%)}z-steps .z-steps-arrow-last{margin-left:-8px;padding-left:calc(16px + 1rem);border-radius:0 6px 6px 0;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,16px 50%)}\n"] }]
|
|
313
|
-
}], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zSteps: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSteps", required: true }] }], zCurrent: [{ type: i0.Input, args: [{ isSignal: true, alias: "zCurrent", required: false }] }], zOrientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOrientation", required: false }] }], zType: [{ type: i0.Input, args: [{ isSignal: true, alias: "zType", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zClickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClickable", required: false }] }], zShowNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowNumber", required: false }] }], zResponsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "zResponsive", required: false }] }], zOnStepClick: [{ type: i0.Output, args: ["zOnStepClick"] }], zControl: [{ type: i0.Output, args: ["zControl"] }] } });
|
|
332
|
+
}], propDecorators: { class: [{ type: i0.Input, args: [{ isSignal: true, alias: "class", required: false }] }], zSteps: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSteps", required: true }] }], zCurrent: [{ type: i0.Input, args: [{ isSignal: true, alias: "zCurrent", required: false }] }], zOrientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "zOrientation", required: false }] }], zType: [{ type: i0.Input, args: [{ isSignal: true, alias: "zType", required: false }] }], zSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "zSize", required: false }] }], zClickable: [{ type: i0.Input, args: [{ isSignal: true, alias: "zClickable", required: false }] }], zShowNumber: [{ type: i0.Input, args: [{ isSignal: true, alias: "zShowNumber", required: false }] }], zResponsive: [{ type: i0.Input, args: [{ isSignal: true, alias: "zResponsive", required: false }] }], zDisabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "zDisabled", required: false }] }], zOnStepClick: [{ type: i0.Output, args: ["zOnStepClick"] }], zControl: [{ type: i0.Output, args: ["zControl"] }] } });
|
|
314
333
|
|
|
315
334
|
/**
|
|
316
335
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-components-z-steps.mjs","sources":["../../../../libs/core-ui/components/z-steps/z-steps.variants.ts","../../../../libs/core-ui/components/z-steps/z-steps.component.ts","../../../../libs/core-ui/components/z-steps/z-steps.component.html","../../../../libs/core-ui/components/z-steps/shival99-z-ui-components-z-steps.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zStepsContainerVariants = cva(['relative list-none m-0 p-0'], {\n variants: {\n orientation: {\n vertical: 'text-foreground',\n horizontal: 'flex items-center w-full',\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n});\n\nexport const zStepsItemVariants = cva(['relative flex items-start'], {\n variants: {\n orientation: {\n vertical: 'last:mb-0',\n horizontal: 'flex-1 last:flex-none',\n },\n size: {\n sm: 'mb-6 ps-10 min-h-6',\n default: 'mb-8 ps-12 min-h-8',\n lg: 'mb-10 ps-14 min-h-10',\n },\n },\n compoundVariants: [{ orientation: 'horizontal', class: 'mb-0 ps-0 min-h-0' }],\n defaultVariants: {\n orientation: 'vertical',\n size: 'default',\n },\n});\n\nexport const zStepsIconVariants = cva(\n [\n 'absolute start-0 z-10 flex items-center justify-center rounded-full ring-6 ring-background transform-gpu transition-transform duration-200 ease-out hover:scale-110',\n ],\n {\n variants: {\n size: {\n sm: 'w-6 h-6 text-xs',\n default: 'w-8 h-8 text-sm',\n lg: 'w-10 h-10 text-base',\n },\n status: {\n pending: 'bg-background border border-input text-muted-foreground ring-muted',\n current: 'bg-primary text-primary-foreground ring-primary/20',\n completed: 'bg-primary text-primary-foreground ring-primary/20',\n error: 'bg-destructive text-destructive-foreground ring-destructive/20',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'pending',\n },\n }\n);\n\nexport const zStepsLineVariants = cva(['absolute border-s border-input'], {\n variants: {\n size: {\n sm: 'start-3 top-3 bottom-0',\n default: 'start-4 top-4 bottom-0',\n lg: 'start-5 top-5 bottom-0',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nexport const zStepsConnectorVariants = cva(['transition-colors duration-200'], {\n variants: {\n orientation: {\n vertical: 'hidden',\n horizontal: 'flex-1 h-1 mx-4 rounded-full',\n },\n status: {\n pending: 'bg-input',\n current: 'bg-input',\n completed: 'bg-primary',\n error: 'bg-destructive/30',\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n status: 'pending',\n },\n});\n\nexport const zStepsArrowItemVariants = cva(\n ['z-steps-arrow-item relative flex flex-1 flex-col justify-center transition-all duration-200'],\n {\n variants: {\n size: {\n sm: 'min-w-[120px] py-2 px-4',\n default: 'min-w-[150px] py-3 px-5',\n lg: 'min-w-[180px] py-4 px-6',\n },\n status: {\n pending: 'bg-muted text-muted-foreground',\n current: 'bg-primary text-primary-foreground z-steps-arrow-active',\n completed: 'bg-primary text-primary-foreground z-steps-arrow-active',\n error: 'bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'pending',\n },\n }\n);\n\nexport type ZStepsContainerVariants = VariantProps<typeof zStepsContainerVariants>;\nexport type ZStepsItemVariants = VariantProps<typeof zStepsItemVariants>;\nexport type ZStepsIconVariants = VariantProps<typeof zStepsIconVariants>;\nexport type ZStepsLineVariants = VariantProps<typeof zStepsLineVariants>;\nexport type ZStepsConnectorVariants = VariantProps<typeof zStepsConnectorVariants>;\nexport type ZStepsArrowItemVariants = VariantProps<typeof zStepsArrowItemVariants>;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ZIconComponent, ZIconVariants } from '@shival99/z-ui/components/z-icon';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZStepItem,\n ZStepsControl,\n ZStepsOrientation,\n ZStepsSize,\n ZStepsStatus,\n ZStepsType,\n} from './z-steps.types';\nimport {\n zStepsArrowItemVariants,\n zStepsConnectorVariants,\n zStepsContainerVariants,\n zStepsIconVariants,\n zStepsItemVariants,\n zStepsLineVariants,\n} from './z-steps.variants';\n\nconst RESPONSIVE_BREAKPOINT = 640;\n\n@Component({\n selector: 'z-steps',\n imports: [ZIconComponent, ZTooltipDirective],\n templateUrl: './z-steps.component.html',\n styleUrl: './z-steps.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block',\n },\n})\nexport class ZStepsComponent implements AfterViewInit {\n private readonly _elementRef = inject(ElementRef);\n private readonly _destroyRef = inject(DestroyRef);\n private _resizeObserver: ResizeObserver | null = null;\n\n public readonly class = input<ClassValue>('');\n public readonly zSteps = input.required<ZStepItem[]>();\n public readonly zCurrent = input<number>(0);\n public readonly zOrientation = input<ZStepsOrientation>('vertical');\n public readonly zType = input<ZStepsType>('default');\n public readonly zSize = input<ZStepsSize>('default');\n public readonly zClickable = input(false, { transform: zTransform });\n public readonly zShowNumber = input(true, { transform: zTransform });\n public readonly zResponsive = input(true, { transform: zTransform });\n\n public readonly zOnStepClick = output<number>();\n public readonly zControl = output<ZStepsControl>();\n\n private readonly _internalCurrent = signal<number | null>(null);\n private readonly _stepOverrides = signal<Map<number, Partial<ZStepItem>>>(new Map());\n\n protected readonly isResponsiveVertical = signal(false);\n\n protected readonly currentStep = computed(() => this._internalCurrent() ?? this.zCurrent());\n\n protected readonly mergedSteps = computed(() => {\n const steps = this.zSteps();\n const overrides = this._stepOverrides();\n return steps.map((step, index) => {\n const override = overrides.get(index);\n return override ? { ...step, ...override } : step;\n });\n });\n\n protected readonly effectiveOrientation = computed<ZStepsOrientation>(() => {\n if (this.zResponsive() && this.isResponsiveVertical()) {\n return 'vertical';\n }\n return this.zOrientation();\n });\n\n protected readonly containerClasses = computed(() =>\n zMergeClasses(\n zStepsContainerVariants({\n orientation: this.effectiveOrientation(),\n }),\n this.class()\n )\n );\n\n protected readonly getItemClasses = computed(() =>\n zStepsItemVariants({\n orientation: this.effectiveOrientation(),\n size: this.zSize(),\n })\n );\n\n protected readonly getIconClassesByStatus = computed(() => {\n const size = this.zSize();\n const steps = this.mergedSteps();\n const current = this.currentStep();\n\n return steps.map((step, index) => {\n const status = this._getStepStatus(step, index, current);\n const baseClasses = zStepsIconVariants({ size, status });\n return zMergeClasses(baseClasses, step.iconClass);\n });\n });\n\n protected readonly lineClasses = computed(() => zStepsLineVariants({ size: this.zSize() }));\n\n protected readonly getConnectorClassesByIndex = computed(() => {\n const orientation = this.effectiveOrientation();\n const steps = this.mergedSteps();\n const current = this.currentStep();\n\n return steps.map((step, index) => {\n const status = this._getConnectorStatus(step, index, current);\n return zStepsConnectorVariants({ orientation, status });\n });\n });\n\n protected readonly stepStatuses = computed(() => {\n const steps = this.mergedSteps();\n const current = this.currentStep();\n return steps.map((step, index) => this._getStepStatus(step, index, current));\n });\n\n protected readonly getArrowClassesByIndex = computed(() => {\n const size = this.zSize();\n const steps = this.mergedSteps();\n const current = this.currentStep();\n const total = steps.length;\n\n return steps.map((step, index) => {\n const status = this._getStepStatus(step, index, current);\n const baseClasses = zStepsArrowItemVariants({ size, status });\n\n let positionClass = 'z-steps-arrow-middle';\n if (index === 0) {\n positionClass = 'z-steps-arrow-first';\n } else if (index === total - 1) {\n positionClass = 'z-steps-arrow-last';\n }\n\n return zMergeClasses(baseClasses, positionClass);\n });\n });\n\n protected readonly defaultIconSize = computed<NonNullable<ZIconVariants['zSize']>>(() => {\n const size = this.zSize();\n if (size === 'sm') {\n return '16';\n }\n if (size === 'lg') {\n return '24';\n }\n return '20';\n });\n\n protected readonly getIconSizeByIndex = computed(() => {\n const defaultSize = this.defaultIconSize();\n const steps = this.mergedSteps();\n return steps.map(step => step.iconSize ?? defaultSize);\n });\n\n protected readonly iconWidth = computed(() => {\n const size = this.zSize();\n if (size === 'sm') {\n return 24;\n }\n if (size === 'lg') {\n return 40;\n }\n return 32;\n });\n\n ngAfterViewInit(): void {\n if (this.zResponsive() && this.zOrientation() === 'horizontal') {\n this._setupResizeObserver();\n }\n\n this._destroyRef.onDestroy(() => {\n this._resizeObserver?.disconnect();\n });\n\n this.zControl.emit(this._createControl());\n }\n\n private _createControl(): ZStepsControl {\n return {\n setActive: (index: number) => {\n if (index >= 0 && index < this.zSteps().length) {\n this._internalCurrent.set(index);\n }\n },\n next: () => {\n const current = this.currentStep();\n const total = this.zSteps().length;\n if (current < total - 1) {\n this._internalCurrent.set(current + 1);\n }\n },\n prev: () => {\n const current = this.currentStep();\n if (current > 0) {\n this._internalCurrent.set(current - 1);\n }\n },\n reset: () => {\n this._internalCurrent.set(0);\n this._stepOverrides.set(new Map());\n },\n setDisabled: (index: number, disabled: boolean) => {\n this._updateStepOverride(index, { disabled });\n },\n setStatus: (index: number, status: ZStepsStatus) => {\n this._updateStepOverride(index, { status });\n },\n getCurrent: () => this.currentStep(),\n getTotal: () => this.zSteps().length,\n };\n }\n\n private _updateStepOverride(index: number, override: Partial<ZStepItem>): void {\n const overrides = new Map(this._stepOverrides());\n const existing = overrides.get(index) || {};\n overrides.set(index, { ...existing, ...override });\n this._stepOverrides.set(overrides);\n }\n\n private _setupResizeObserver(): void {\n const container = this._elementRef.nativeElement;\n this._resizeObserver = new ResizeObserver(entries => {\n const width = entries[0]?.contentRect.width || 0;\n this.isResponsiveVertical.set(width < RESPONSIVE_BREAKPOINT);\n });\n\n this._resizeObserver.observe(container);\n }\n\n private _getStepStatus(step: ZStepItem, index: number, current: number): ZStepsStatus {\n if (step.status) {\n return step.status;\n }\n\n if (index < current) {\n return 'completed';\n }\n\n if (index === current) {\n return 'current';\n }\n\n return 'pending';\n }\n\n private _getConnectorStatus(step: ZStepItem, index: number, current: number): ZStepsStatus {\n if (step.status === 'error') {\n return 'error';\n }\n\n if (index < current) {\n return 'completed';\n }\n\n return 'pending';\n }\n\n protected onStepClick(index: number): void {\n const step = this.zSteps()[index];\n if (step.disabled) {\n return;\n }\n\n if (!this.zClickable()) {\n return;\n }\n\n this.zOnStepClick.emit(index);\n }\n}\n","<ol [class]=\"containerClasses()\">\n @for (step of mergedSteps(); track $index; let i = $index; let last = $last) {\n @if (effectiveOrientation() === 'vertical') {\n <!-- Vertical Layout -->\n <li\n [class]=\"getItemClasses()\"\n [class.!items-start]=\"!step.description && (step.title || step.icon)\"\n [class.items-center]=\"!step.description && (step.title || step.icon)\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n <!-- Vertical Line -->\n @if (!last) {\n <div [class]=\"lineClasses()\"></div>\n }\n\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content -->\n @if (step.title || step.description) {\n <div class=\"flex min-w-0 flex-col\" [style.padding-top.px]=\"!step.description ? iconWidth() / 5 : 0\">\n @if (step.title) {\n <h3 class=\"leading-tight font-medium\">{{ step.title }}</h3>\n }\n @if (step.description) {\n <p class=\"text-muted-foreground mt-1 text-sm\">{{ step.description }}</p>\n }\n </div>\n }\n </li>\n } @else {\n <!-- Horizontal Layout -->\n <li\n [class]=\"zType() === 'arrow' ? 'flex-1' : 'flex-1 last:flex-none'\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n @if (zType() === 'arrow') {\n <!-- Arrow Style -->\n <div [class]=\"getArrowClassesByIndex()[i]\">\n <div class=\"flex items-center gap-3.5\">\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" class=\"shrink-0\" />\n }\n <div class=\"flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-semibold whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"mt-1 truncate text-xs whitespace-nowrap opacity-80\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n </div>\n } @else if (zType() === 'inline') {\n <!-- Inline: Icon + Content + Line in one row -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content Inline -->\n @if (step.title || step.description) {\n <div class=\"ms-3 flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"max-w-30 truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 max-w-30 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n } @else {\n <!-- Default: Icon + Line row, Content below -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n\n <!-- Content Below -->\n @if (step.title || step.description) {\n <div\n class=\"z-steps-content mt-3 flex flex-col text-center\"\n [style.width.px]=\"150\"\n [style.margin-left.px]=\"(iconWidth() - 150) / 2\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n }\n </li>\n }\n }\n</ol>\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-steps.mjs","sources":["../../../../libs/core-ui/components/z-steps/z-steps.variants.ts","../../../../libs/core-ui/components/z-steps/z-steps.component.ts","../../../../libs/core-ui/components/z-steps/z-steps.component.html","../../../../libs/core-ui/components/z-steps/shival99-z-ui-components-z-steps.ts"],"sourcesContent":["import { cva, type VariantProps } from 'class-variance-authority';\n\nexport const zStepsContainerVariants = cva(['relative list-none m-0 p-0'], {\n variants: {\n orientation: {\n vertical: 'text-foreground',\n horizontal: 'flex items-center w-full',\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n },\n});\n\nexport const zStepsItemVariants = cva(['relative flex items-start'], {\n variants: {\n orientation: {\n vertical: 'last:mb-0',\n horizontal: 'flex-1 last:flex-none',\n },\n size: {\n sm: 'mb-6 ps-10 min-h-6',\n default: 'mb-8 ps-12 min-h-8',\n lg: 'mb-10 ps-14 min-h-10',\n },\n },\n compoundVariants: [{ orientation: 'horizontal', class: 'mb-0 ps-0 min-h-0' }],\n defaultVariants: {\n orientation: 'vertical',\n size: 'default',\n },\n});\n\nexport const zStepsIconVariants = cva(\n [\n 'absolute start-0 z-10 flex items-center justify-center rounded-full ring-6 ring-background transform-gpu transition-transform duration-200 ease-out hover:scale-110',\n ],\n {\n variants: {\n size: {\n sm: 'w-6 h-6 text-xs',\n default: 'w-8 h-8 text-sm',\n lg: 'w-10 h-10 text-base',\n },\n status: {\n pending: 'bg-background border border-input text-muted-foreground ring-muted',\n current: 'bg-primary text-primary-foreground ring-primary/20',\n completed: 'bg-primary text-primary-foreground ring-primary/20',\n error: 'bg-destructive text-destructive-foreground ring-destructive/20',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'pending',\n },\n }\n);\n\nexport const zStepsLineVariants = cva(['absolute border-s border-input'], {\n variants: {\n size: {\n sm: 'start-3 top-3 bottom-0',\n default: 'start-4 top-4 bottom-0',\n lg: 'start-5 top-5 bottom-0',\n },\n },\n defaultVariants: {\n size: 'default',\n },\n});\n\nexport const zStepsConnectorVariants = cva(['transition-colors duration-200'], {\n variants: {\n orientation: {\n vertical: 'hidden',\n horizontal: 'flex-1 h-1 mx-4 rounded-full',\n },\n status: {\n pending: 'bg-input',\n current: 'bg-input',\n completed: 'bg-primary',\n error: 'bg-destructive/30',\n },\n },\n defaultVariants: {\n orientation: 'vertical',\n status: 'pending',\n },\n});\n\nexport const zStepsArrowItemVariants = cva(\n ['z-steps-arrow-item relative flex flex-1 flex-col justify-center transition-all duration-200'],\n {\n variants: {\n size: {\n sm: 'min-w-[120px] py-2 px-4',\n default: 'min-w-[150px] py-3 px-5',\n lg: 'min-w-[180px] py-4 px-6',\n },\n status: {\n pending: 'bg-muted text-muted-foreground',\n current: 'bg-primary text-primary-foreground z-steps-arrow-active',\n completed: 'bg-primary text-primary-foreground z-steps-arrow-active',\n error: 'bg-destructive text-destructive-foreground',\n },\n },\n defaultVariants: {\n size: 'default',\n status: 'pending',\n },\n }\n);\n\nexport type ZStepsContainerVariants = VariantProps<typeof zStepsContainerVariants>;\nexport type ZStepsItemVariants = VariantProps<typeof zStepsItemVariants>;\nexport type ZStepsIconVariants = VariantProps<typeof zStepsIconVariants>;\nexport type ZStepsLineVariants = VariantProps<typeof zStepsLineVariants>;\nexport type ZStepsConnectorVariants = VariantProps<typeof zStepsConnectorVariants>;\nexport type ZStepsArrowItemVariants = VariantProps<typeof zStepsArrowItemVariants>;\n","import {\n AfterViewInit,\n ChangeDetectionStrategy,\n Component,\n computed,\n DestroyRef,\n ElementRef,\n inject,\n input,\n output,\n signal,\n ViewEncapsulation,\n} from '@angular/core';\nimport { ZIconComponent, ZIconVariants } from '@shival99/z-ui/components/z-icon';\nimport { ZTooltipDirective } from '@shival99/z-ui/components/z-tooltip';\nimport { zMergeClasses, zTransform } from '@shival99/z-ui/utils';\nimport type { ClassValue } from 'clsx';\nimport type {\n ZStepItem,\n ZStepsControl,\n ZStepsOrientation,\n ZStepsSize,\n ZStepsStatus,\n ZStepsType,\n} from './z-steps.types';\nimport {\n zStepsArrowItemVariants,\n zStepsConnectorVariants,\n zStepsContainerVariants,\n zStepsIconVariants,\n zStepsItemVariants,\n zStepsLineVariants,\n} from './z-steps.variants';\n\nconst RESPONSIVE_BREAKPOINT = 640;\n\n@Component({\n selector: 'z-steps',\n imports: [ZIconComponent, ZTooltipDirective],\n templateUrl: './z-steps.component.html',\n styleUrl: './z-steps.component.scss',\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'block',\n },\n})\nexport class ZStepsComponent implements AfterViewInit {\n private readonly _elementRef = inject(ElementRef);\n private readonly _destroyRef = inject(DestroyRef);\n private _resizeObserver: ResizeObserver | null = null;\n\n public readonly class = input<ClassValue>('');\n public readonly zSteps = input.required<ZStepItem[]>();\n public readonly zCurrent = input<number>(0);\n public readonly zOrientation = input<ZStepsOrientation>('vertical');\n public readonly zType = input<ZStepsType>('default');\n public readonly zSize = input<ZStepsSize>('default');\n public readonly zClickable = input(false, { transform: zTransform });\n public readonly zShowNumber = input(true, { transform: zTransform });\n public readonly zResponsive = input(true, { transform: zTransform });\n public readonly zDisabled = input(false, { transform: zTransform });\n\n public readonly zOnStepClick = output<number>();\n public readonly zControl = output<ZStepsControl>();\n\n private readonly _internalCurrent = signal<number | null>(null);\n private readonly _stepOverrides = signal<Map<number, Partial<ZStepItem>>>(new Map());\n\n protected readonly isResponsiveVertical = signal(false);\n\n protected readonly currentStep = computed(() => this._internalCurrent() ?? this.zCurrent());\n\n protected readonly mergedSteps = computed(() => {\n const steps = this.zSteps();\n const overrides = this._stepOverrides();\n return steps.map((step, index) => {\n const override = overrides.get(index);\n return override ? { ...step, ...override } : step;\n });\n });\n\n protected readonly effectiveOrientation = computed<ZStepsOrientation>(() => {\n if (this.zResponsive() && this.isResponsiveVertical()) {\n return 'vertical';\n }\n return this.zOrientation();\n });\n\n protected readonly containerClasses = computed(() =>\n zMergeClasses(\n zStepsContainerVariants({\n orientation: this.effectiveOrientation(),\n }),\n this.class()\n )\n );\n\n protected readonly getItemClasses = computed(() =>\n zStepsItemVariants({\n orientation: this.effectiveOrientation(),\n size: this.zSize(),\n })\n );\n\n protected readonly getIconClassesByStatus = computed(() => {\n const size = this.zSize();\n const steps = this.mergedSteps();\n const current = this.currentStep();\n\n return steps.map((step, index) => {\n const status = this._getStepStatus(step, index, current);\n const baseClasses = zStepsIconVariants({ size, status });\n return zMergeClasses(baseClasses, step.iconClass);\n });\n });\n\n protected readonly lineClasses = computed(() => zStepsLineVariants({ size: this.zSize() }));\n\n protected readonly getConnectorClassesByIndex = computed(() => {\n const orientation = this.effectiveOrientation();\n const steps = this.mergedSteps();\n const current = this.currentStep();\n\n return steps.map((step, index) => {\n const status = this._getConnectorStatus(step, index, current);\n return zStepsConnectorVariants({ orientation, status });\n });\n });\n\n protected readonly stepStatuses = computed(() => {\n const steps = this.mergedSteps();\n const current = this.currentStep();\n return steps.map((step, index) => this._getStepStatus(step, index, current));\n });\n\n protected readonly getArrowClassesByIndex = computed(() => {\n const size = this.zSize();\n const steps = this.mergedSteps();\n const current = this.currentStep();\n const total = steps.length;\n\n return steps.map((step, index) => {\n const status = this._getStepStatus(step, index, current);\n const baseClasses = zStepsArrowItemVariants({ size, status });\n\n let positionClass = 'z-steps-arrow-middle';\n if (index === 0) {\n positionClass = 'z-steps-arrow-first';\n }\n if (index === total - 1) {\n positionClass = 'z-steps-arrow-last';\n }\n\n return zMergeClasses(baseClasses, positionClass);\n });\n });\n\n protected readonly defaultIconSize = computed<NonNullable<ZIconVariants['zSize']>>(() => {\n const size = this.zSize();\n if (size === 'sm') {\n return '16';\n }\n if (size === 'lg') {\n return '24';\n }\n return '20';\n });\n\n protected readonly getIconSizeByIndex = computed(() => {\n const defaultSize = this.defaultIconSize();\n const steps = this.mergedSteps();\n return steps.map(step => step.iconSize ?? defaultSize);\n });\n\n protected readonly iconWidth = computed(() => {\n const size = this.zSize();\n if (size === 'sm') {\n return 24;\n }\n if (size === 'lg') {\n return 40;\n }\n return 32;\n });\n\n ngAfterViewInit(): void {\n if (this.zResponsive() && this.zOrientation() === 'horizontal') {\n this._setupResizeObserver();\n }\n\n this._destroyRef.onDestroy(() => {\n this._resizeObserver?.disconnect();\n });\n\n this.zControl.emit({\n setActive: (index: number) => {\n if (this.zDisabled()) {\n return;\n }\n if (index >= 0 && index < this.zSteps().length) {\n this._internalCurrent.set(index);\n }\n },\n next: () => {\n if (this.zDisabled()) {\n return;\n }\n const current = this.currentStep();\n const total = this.zSteps().length;\n if (current < total - 1) {\n this._internalCurrent.set(current + 1);\n }\n },\n prev: () => {\n if (this.zDisabled()) {\n return;\n }\n const current = this.currentStep();\n if (current > 0) {\n this._internalCurrent.set(current - 1);\n }\n },\n reset: () => {\n if (this.zDisabled()) {\n return;\n }\n this._internalCurrent.set(0);\n this._stepOverrides.set(new Map());\n },\n setDisabled: (index: number, disabled: boolean) => {\n if (this.zDisabled()) {\n return;\n }\n this._updateStepOverride(index, { disabled });\n },\n setStatus: (index: number, status: ZStepsStatus) => {\n if (this.zDisabled()) {\n return;\n }\n this._updateStepOverride(index, { status });\n },\n getCurrent: () => this.currentStep(),\n getTotal: () => this.zSteps().length,\n });\n }\n\n private _updateStepOverride(index: number, override: Partial<ZStepItem>): void {\n const overrides = new Map(this._stepOverrides());\n const existing = overrides.get(index) || {};\n overrides.set(index, { ...existing, ...override });\n this._stepOverrides.set(overrides);\n }\n\n private _setupResizeObserver(): void {\n const container = this._elementRef.nativeElement;\n this._resizeObserver = new ResizeObserver(entries => {\n const width = entries[0]?.contentRect.width || 0;\n this.isResponsiveVertical.set(width < RESPONSIVE_BREAKPOINT);\n });\n\n this._resizeObserver.observe(container);\n }\n\n private _getStepStatus(step: ZStepItem, index: number, current: number): ZStepsStatus {\n if (step.status) {\n return step.status;\n }\n\n if (index < current) {\n return 'completed';\n }\n\n if (index === current) {\n return 'current';\n }\n\n return 'pending';\n }\n\n private _getConnectorStatus(step: ZStepItem, index: number, current: number): ZStepsStatus {\n if (step.status === 'error') {\n return 'error';\n }\n\n if (index < current) {\n return 'completed';\n }\n\n return 'pending';\n }\n\n protected onStepClick(index: number): void {\n if (this.zDisabled()) {\n return;\n }\n\n const step = this.zSteps()[index];\n if (step.disabled) {\n return;\n }\n\n if (!this.zClickable()) {\n return;\n }\n\n this.zOnStepClick.emit(index);\n }\n}\n","<ol [class]=\"containerClasses()\">\n @for (step of mergedSteps(); track $index; let i = $index; let last = $last) {\n @if (effectiveOrientation() === 'vertical') {\n <!-- Vertical Layout -->\n <li\n [class]=\"getItemClasses()\"\n [class.!items-start]=\"!step.description && (step.title || step.icon)\"\n [class.items-center]=\"!step.description && (step.title || step.icon)\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n <!-- Vertical Line -->\n @if (!last) {\n <div [class]=\"lineClasses()\"></div>\n }\n\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content -->\n @if (step.title || step.description) {\n <div class=\"flex min-w-0 flex-col\" [style.padding-top.px]=\"!step.description ? iconWidth() / 5 : 0\">\n @if (step.title) {\n <h3 class=\"leading-tight font-medium\">{{ step.title }}</h3>\n }\n @if (step.description) {\n <p class=\"text-muted-foreground mt-1 text-sm\">{{ step.description }}</p>\n }\n </div>\n }\n </li>\n } @else {\n <!-- Horizontal Layout -->\n <li\n [class]=\"zType() === 'arrow' ? 'flex-1' : 'flex-1 last:flex-none'\"\n [class.cursor-pointer]=\"zClickable() && !step.disabled\"\n [class.cursor-not-allowed]=\"step.disabled\"\n [class.opacity-50]=\"step.disabled\"\n (click)=\"onStepClick(i)\">\n @if (zType() === 'arrow') {\n <!-- Arrow Style -->\n <div [class]=\"getArrowClassesByIndex()[i]\">\n <div class=\"flex items-center gap-3.5\">\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" class=\"shrink-0\" />\n }\n <div class=\"flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-semibold whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"mt-1 truncate text-xs whitespace-nowrap opacity-80\">\n {{ step.description }}\n </p>\n }\n </div>\n </div>\n </div>\n } @else if (zType() === 'inline') {\n <!-- Inline: Icon + Content + Line in one row -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Content Inline -->\n @if (step.title || step.description) {\n <div class=\"ms-3 flex min-w-0 flex-col\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"max-w-30 truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 max-w-30 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n } @else {\n <!-- Default: Icon + Line row, Content below -->\n <div class=\"flex items-center\">\n <!-- Step Icon -->\n <span [class]=\"getIconClassesByStatus()[i]\" class=\"relative! start-auto! shrink-0\">\n @switch (stepStatuses()[i]) {\n @case ('completed') {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else {\n <z-icon zType=\"lucideCheck\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n }\n @case ('error') {\n <z-icon zType=\"lucideX\" [zSize]=\"getIconSizeByIndex()[i]\" />\n }\n @default {\n @if (step.icon) {\n <z-icon [zType]=\"step.icon\" [zSize]=\"getIconSizeByIndex()[i]\" />\n } @else if (zShowNumber()) {\n <span class=\"font-medium\">{{ i + 1 }}</span>\n }\n }\n }\n </span>\n\n <!-- Horizontal Line -->\n @if (!last) {\n <div [class]=\"getConnectorClassesByIndex()[i]\"></div>\n }\n </div>\n\n <!-- Content Below -->\n @if (step.title || step.description) {\n <div\n class=\"z-steps-content mt-3 flex flex-col text-center\"\n [style.width.px]=\"150\"\n [style.margin-left.px]=\"(iconWidth() - 150) / 2\">\n @if (step.title) {\n <h3\n z-tooltip\n [zContent]=\"step.title\"\n [zAutoDetect]=\"true\"\n zPosition=\"top\"\n class=\"truncate text-sm leading-tight font-medium whitespace-nowrap\">\n {{ step.title }}\n </h3>\n }\n @if (step.description) {\n <p\n z-tooltip\n [zContent]=\"step.description\"\n [zAutoDetect]=\"true\"\n zPosition=\"bottom\"\n class=\"text-muted-foreground mt-1 truncate text-xs whitespace-nowrap\">\n {{ step.description }}\n </p>\n }\n </div>\n }\n }\n </li>\n }\n }\n</ol>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;MAEa,uBAAuB,GAAG,GAAG,CAAC,CAAC,4BAA4B,CAAC,EAAE;AACzE,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,UAAU,EAAE,0BAA0B;AACvC,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,UAAU;AACxB,KAAA;AACF,CAAA;MAEY,kBAAkB,GAAG,GAAG,CAAC,CAAC,2BAA2B,CAAC,EAAE;AACnE,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,QAAQ,EAAE,WAAW;AACrB,YAAA,UAAU,EAAE,uBAAuB;AACpC,SAAA;AACD,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,oBAAoB;AACxB,YAAA,OAAO,EAAE,oBAAoB;AAC7B,YAAA,EAAE,EAAE,sBAAsB;AAC3B,SAAA;AACF,KAAA;IACD,gBAAgB,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,mBAAmB,EAAE,CAAC;AAC7E,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;AAEM,MAAM,kBAAkB,GAAG,GAAG,CACnC;IACE,qKAAqK;CACtK,EACD;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,iBAAiB;AACrB,YAAA,OAAO,EAAE,iBAAiB;AAC1B,YAAA,EAAE,EAAE,qBAAqB;AAC1B,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,oEAAoE;AAC7E,YAAA,OAAO,EAAE,oDAAoD;AAC7D,YAAA,SAAS,EAAE,oDAAoD;AAC/D,YAAA,KAAK,EAAE,gEAAgE;AACxE,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACF,CAAA;MAGU,kBAAkB,GAAG,GAAG,CAAC,CAAC,gCAAgC,CAAC,EAAE;AACxE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,wBAAwB;AAC5B,YAAA,OAAO,EAAE,wBAAwB;AACjC,YAAA,EAAE,EAAE,wBAAwB;AAC7B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,SAAS;AAChB,KAAA;AACF,CAAA;MAEY,uBAAuB,GAAG,GAAG,CAAC,CAAC,gCAAgC,CAAC,EAAE;AAC7E,IAAA,QAAQ,EAAE;AACR,QAAA,WAAW,EAAE;AACX,YAAA,QAAQ,EAAE,QAAQ;AAClB,YAAA,UAAU,EAAE,8BAA8B;AAC3C,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,OAAO,EAAE,UAAU;AACnB,YAAA,SAAS,EAAE,YAAY;AACvB,YAAA,KAAK,EAAE,mBAAmB;AAC3B,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,WAAW,EAAE,UAAU;AACvB,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACF,CAAA;MAEY,uBAAuB,GAAG,GAAG,CACxC,CAAC,6FAA6F,CAAC,EAC/F;AACE,IAAA,QAAQ,EAAE;AACR,QAAA,IAAI,EAAE;AACJ,YAAA,EAAE,EAAE,yBAAyB;AAC7B,YAAA,OAAO,EAAE,yBAAyB;AAClC,YAAA,EAAE,EAAE,yBAAyB;AAC9B,SAAA;AACD,QAAA,MAAM,EAAE;AACN,YAAA,OAAO,EAAE,gCAAgC;AACzC,YAAA,OAAO,EAAE,yDAAyD;AAClE,YAAA,SAAS,EAAE,yDAAyD;AACpE,YAAA,KAAK,EAAE,4CAA4C;AACpD,SAAA;AACF,KAAA;AACD,IAAA,eAAe,EAAE;AACf,QAAA,IAAI,EAAE,SAAS;AACf,QAAA,MAAM,EAAE,SAAS;AAClB,KAAA;AACF,CAAA;;AC5EH,MAAM,qBAAqB,GAAG,GAAG;MAapB,eAAe,CAAA;AACT,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;AAChC,IAAA,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC;IACzC,eAAe,GAA0B,IAAI;AAErC,IAAA,KAAK,GAAG,KAAK,CAAa,EAAE,iDAAC;AAC7B,IAAA,MAAM,GAAG,KAAK,CAAC,QAAQ,iDAAe;AACtC,IAAA,QAAQ,GAAG,KAAK,CAAS,CAAC,oDAAC;AAC3B,IAAA,YAAY,GAAG,KAAK,CAAoB,UAAU,wDAAC;AACnD,IAAA,KAAK,GAAG,KAAK,CAAa,SAAS,iDAAC;AACpC,IAAA,KAAK,GAAG,KAAK,CAAa,SAAS,iDAAC;IACpC,UAAU,GAAG,KAAK,CAAC,KAAK,uDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACpD,WAAW,GAAG,KAAK,CAAC,IAAI,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACpD,WAAW,GAAG,KAAK,CAAC,IAAI,wDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IACpD,SAAS,GAAG,KAAK,CAAC,KAAK,sDAAI,SAAS,EAAE,UAAU,EAAA,CAAG;IAEnD,YAAY,GAAG,MAAM,EAAU;IAC/B,QAAQ,GAAG,MAAM,EAAiB;AAEjC,IAAA,gBAAgB,GAAG,MAAM,CAAgB,IAAI,4DAAC;AAC9C,IAAA,cAAc,GAAG,MAAM,CAAkC,IAAI,GAAG,EAAE,0DAAC;AAEjE,IAAA,oBAAoB,GAAG,MAAM,CAAC,KAAK,gEAAC;AAEpC,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,uDAAC;AAExE,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAK;AAC7C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE;AAC3B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,EAAE;QACvC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;YAC/B,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AACrC,YAAA,OAAO,QAAQ,GAAG,EAAE,GAAG,IAAI,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI;AACnD,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,uDAAC;AAEiB,IAAA,oBAAoB,GAAG,QAAQ,CAAoB,MAAK;QACzE,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;AACrD,YAAA,OAAO,UAAU;QACnB;AACA,QAAA,OAAO,IAAI,CAAC,YAAY,EAAE;AAC5B,IAAA,CAAC,gEAAC;IAEiB,gBAAgB,GAAG,QAAQ,CAAC,MAC7C,aAAa,CACX,uBAAuB,CAAC;AACtB,QAAA,WAAW,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACzC,KAAA,CAAC,EACF,IAAI,CAAC,KAAK,EAAE,CACb,4DACF;AAEkB,IAAA,cAAc,GAAG,QAAQ,CAAC,MAC3C,kBAAkB,CAAC;AACjB,QAAA,WAAW,EAAE,IAAI,CAAC,oBAAoB,EAAE;AACxC,QAAA,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE;AACnB,KAAA,CAAC,0DACH;AAEkB,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAElC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;YACxD,MAAM,WAAW,GAAG,kBAAkB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACxD,OAAO,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC;AACnD,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,kEAAC;AAEiB,IAAA,WAAW,GAAG,QAAQ,CAAC,MAAM,kBAAkB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,uDAAC;AAExE,IAAA,0BAA0B,GAAG,QAAQ,CAAC,MAAK;AAC5D,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,oBAAoB,EAAE;AAC/C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAElC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;YAC7D,OAAO,uBAAuB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;AACzD,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,sEAAC;AAEiB,IAAA,YAAY,GAAG,QAAQ,CAAC,MAAK;AAC9C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;QAClC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;AAC9E,IAAA,CAAC,wDAAC;AAEiB,IAAA,sBAAsB,GAAG,QAAQ,CAAC,MAAK;AACxD,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,QAAA,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM;QAE1B,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,KAAI;AAC/B,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC;YACxD,MAAM,WAAW,GAAG,uBAAuB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAE7D,IAAI,aAAa,GAAG,sBAAsB;AAC1C,YAAA,IAAI,KAAK,KAAK,CAAC,EAAE;gBACf,aAAa,GAAG,qBAAqB;YACvC;AACA,YAAA,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,EAAE;gBACvB,aAAa,GAAG,oBAAoB;YACtC;AAEA,YAAA,OAAO,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;AAClD,QAAA,CAAC,CAAC;AACJ,IAAA,CAAC,kEAAC;AAEiB,IAAA,eAAe,GAAG,QAAQ,CAAsC,MAAK;AACtF,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,IAAI;AACb,IAAA,CAAC,2DAAC;AAEiB,IAAA,kBAAkB,GAAG,QAAQ,CAAC,MAAK;AACpD,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,eAAe,EAAE;AAC1C,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE;AAChC,QAAA,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,WAAW,CAAC;AACxD,IAAA,CAAC,8DAAC;AAEiB,IAAA,SAAS,GAAG,QAAQ,CAAC,MAAK;AAC3C,QAAA,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE;AACzB,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,IAAI,IAAI,KAAK,IAAI,EAAE;AACjB,YAAA,OAAO,EAAE;QACX;AACA,QAAA,OAAO,EAAE;AACX,IAAA,CAAC,qDAAC;IAEF,eAAe,GAAA;AACb,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,YAAY,EAAE,KAAK,YAAY,EAAE;YAC9D,IAAI,CAAC,oBAAoB,EAAE;QAC7B;AAEA,QAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,MAAK;AAC9B,YAAA,IAAI,CAAC,eAAe,EAAE,UAAU,EAAE;AACpC,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AACjB,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB;gBACF;AACA,gBAAA,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE;AAC9C,oBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,KAAK,CAAC;gBAClC;YACF,CAAC;YACD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB;gBACF;AACA,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;gBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AAClC,gBAAA,IAAI,OAAO,GAAG,KAAK,GAAG,CAAC,EAAE;oBACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;gBACxC;YACF,CAAC;YACD,IAAI,EAAE,MAAK;AACT,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB;gBACF;AACA,gBAAA,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE;AAClC,gBAAA,IAAI,OAAO,GAAG,CAAC,EAAE;oBACf,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC;gBACxC;YACF,CAAC;YACD,KAAK,EAAE,MAAK;AACV,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB;gBACF;AACA,gBAAA,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC;YACpC,CAAC;AACD,YAAA,WAAW,EAAE,CAAC,KAAa,EAAE,QAAiB,KAAI;AAChD,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB;gBACF;gBACA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC;YAC/C,CAAC;AACD,YAAA,SAAS,EAAE,CAAC,KAAa,EAAE,MAAoB,KAAI;AACjD,gBAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;oBACpB;gBACF;gBACA,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC;YAC7C,CAAC;AACD,YAAA,UAAU,EAAE,MAAM,IAAI,CAAC,WAAW,EAAE;YACpC,QAAQ,EAAE,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,MAAM;AACrC,SAAA,CAAC;IACJ;IAEQ,mBAAmB,CAAC,KAAa,EAAE,QAA4B,EAAA;QACrE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;QAChD,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE;AAC3C,QAAA,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;AAClD,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;IACpC;IAEQ,oBAAoB,GAAA;AAC1B,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;QAChD,IAAI,CAAC,eAAe,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;AAClD,YAAA,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;YAChD,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,KAAK,GAAG,qBAAqB,CAAC;AAC9D,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC;IACzC;AAEQ,IAAA,cAAc,CAAC,IAAe,EAAE,KAAa,EAAE,OAAe,EAAA;AACpE,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACf,OAAO,IAAI,CAAC,MAAM;QACpB;AAEA,QAAA,IAAI,KAAK,GAAG,OAAO,EAAE;AACnB,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,YAAA,OAAO,SAAS;QAClB;AAEA,QAAA,OAAO,SAAS;IAClB;AAEQ,IAAA,mBAAmB,CAAC,IAAe,EAAE,KAAa,EAAE,OAAe,EAAA;AACzE,QAAA,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO,EAAE;AAC3B,YAAA,OAAO,OAAO;QAChB;AAEA,QAAA,IAAI,KAAK,GAAG,OAAO,EAAE;AACnB,YAAA,OAAO,WAAW;QACpB;AAEA,QAAA,OAAO,SAAS;IAClB;AAEU,IAAA,WAAW,CAAC,KAAa,EAAA;AACjC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE;YACpB;QACF;QAEA,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC;AACjC,QAAA,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB;QACF;AAEA,QAAA,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE;YACtB;QACF;AAEA,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/B;uGApQW,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,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,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,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,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,WAAA,EAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,UAAA,EAAA,aAAA,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,EAAA,OAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,QAAA,EAAA,UAAA,EAAA,EAAA,IAAA,EAAA,EAAA,cAAA,EAAA,OAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC/C5B,8uQAqNA,EAAA,MAAA,EAAA,CAAA,u5BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,ED/KY,cAAc,0HAAE,iBAAiB,EAAA,QAAA,EAAA,yBAAA,EAAA,MAAA,EAAA,CAAA,UAAA,EAAA,WAAA,EAAA,UAAA,EAAA,cAAA,EAAA,cAAA,EAAA,QAAA,EAAA,YAAA,EAAA,YAAA,EAAA,QAAA,EAAA,WAAA,EAAA,SAAA,EAAA,aAAA,EAAA,iBAAA,EAAA,aAAA,EAAA,WAAA,CAAA,EAAA,OAAA,EAAA,CAAA,OAAA,EAAA,OAAA,CAAA,EAAA,QAAA,EAAA,CAAA,UAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA;;2FAShC,eAAe,EAAA,UAAA,EAAA,CAAA;kBAX3B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,SAAS,EAAA,OAAA,EACV,CAAC,cAAc,EAAE,iBAAiB,CAAC,EAAA,eAAA,EAG3B,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,IAAA,EAC/B;AACJ,wBAAA,KAAK,EAAE,OAAO;AACf,qBAAA,EAAA,QAAA,EAAA,8uQAAA,EAAA,MAAA,EAAA,CAAA,u5BAAA,CAAA,EAAA;;;AE7CH;;AAEG;;;;"}
|
|
@@ -526,7 +526,7 @@ function zRegisterEchartsTheme(options = {}) {
|
|
|
526
526
|
* @param form - FormGroup or FormArray to submit
|
|
527
527
|
* @returns true if form is valid, false otherwise
|
|
528
528
|
*/
|
|
529
|
-
const
|
|
529
|
+
const zValidForm = (form) => {
|
|
530
530
|
if (form.invalid) {
|
|
531
531
|
markFormAsInvalid(form);
|
|
532
532
|
return false;
|
|
@@ -596,5 +596,5 @@ const zDebugFormInvalid = (form, parentKey = '') => {
|
|
|
596
596
|
* Generated bundle index. Do not edit.
|
|
597
597
|
*/
|
|
598
598
|
|
|
599
|
-
export { VIETNAMESE_MAP, Z_DIVIDE_SCALE, Z_EXCEL_NUMBER_FORMAT_MAP, Z_LOCALE_MAP, zCapitalCase, zCleanObject, zConvertColorToArgb, zDebugFormInvalid, zDecodeUnicode, zDetectBrowser, zFormatNum, zFormatNumExcel, zMergeClasses, zMiniSearch, zMiniSearch$, zNoop, zRandomColor, zRegisterEchartsTheme, zRemoveVietnamese,
|
|
599
|
+
export { VIETNAMESE_MAP, Z_DIVIDE_SCALE, Z_EXCEL_NUMBER_FORMAT_MAP, Z_LOCALE_MAP, zCapitalCase, zCleanObject, zConvertColorToArgb, zDebugFormInvalid, zDecodeUnicode, zDetectBrowser, zFormatNum, zFormatNumExcel, zMergeClasses, zMiniSearch, zMiniSearch$, zNoop, zRandomColor, zRegisterEchartsTheme, zRemoveVietnamese, zTransform, zTreeBuild, zTreeFlatten, zUuid, zValidForm };
|
|
600
600
|
//# sourceMappingURL=shival99-z-ui-utils.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shival99-z-ui-utils.mjs","sources":["../../../../libs/core-ui/utils/types/z-common.types.ts","../../../../libs/core-ui/utils/z-common.utils.ts","../../../../libs/core-ui/utils/z-echarts.utils.ts","../../../../libs/core-ui/utils/z-form.utils.ts","../../../../libs/core-ui/utils/types/index.ts","../../../../libs/core-ui/utils/index.ts","../../../../libs/core-ui/utils/shival99-z-ui-utils.ts"],"sourcesContent":["export type ZBrowserName = 'Chrome' | 'Edge' | 'Firefox' | 'Safari' | 'Opera' | 'IE' | 'Unknown' | string;\n\nexport type ZDeviceType = 'mobile' | 'tablet' | 'desktop';\nexport interface ZBrowserInfo {\n name: ZBrowserName;\n version: string;\n agent: string;\n device: ZDeviceType;\n time: string;\n}\n\nexport interface ZNavigatorUABrandVersion {\n brand: string;\n version: string;\n}\n\nexport interface ZNavigatorUAData {\n brands: ZNavigatorUABrandVersion[];\n mobile: boolean;\n platform: string;\n}\n\nexport type ZNumberDivide = 'none' | 'thousand' | 'million' | 'billion';\nexport type ZEmptyCheck = 'strict' | 'includeZero';\n\nexport const Z_DIVIDE_SCALE: Record<ZNumberDivide, number> = {\n none: 1,\n thousand: 1_000,\n million: 1_000_000,\n billion: 1_000_000_000,\n};\n\nexport const Z_LOCALE_MAP: Record<string, string> = {\n vi: 'vi-VN',\n en: 'en-US',\n};\n\nexport interface ZFormatNumOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n locale?: string;\n placeholder?: string;\n}\n\nexport const Z_EXCEL_NUMBER_FORMAT_MAP: Record<string, string> = {\n '1.0-0': '#,##0',\n '1.0-1': '#,##0.0',\n '1.0-2': '#,##0.00',\n '1.0-3': '#,##0.000',\n '1.1-1': '#,##0.0',\n '1.1-2': '#,##0.00',\n '1.1-3': '#,##0.000',\n '1.2-2': '#,##0.00',\n};\n\nexport interface ZFormatNumExcelOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Navigator {\n userAgentData?: ZNavigatorUAData;\n }\n}\n\nexport type ZCapitalizeType = 'all' | 'sentence' | 'first';\n","import { isSignal, type WritableSignal } from '@angular/core';\nimport { type ClassValue, clsx } from 'clsx';\nimport type * as ExcelJS from 'exceljs';\nimport MiniSearch from 'minisearch';\nimport { delay, finalize, type Observable, of } from 'rxjs';\nimport { twMerge } from 'tailwind-merge';\nimport {\n type ZDeviceType,\n type ZBrowserInfo,\n type ZNavigatorUABrandVersion,\n type ZFormatNumOptions,\n type ZFormatNumExcelOptions,\n Z_DIVIDE_SCALE,\n Z_LOCALE_MAP,\n Z_EXCEL_NUMBER_FORMAT_MAP,\n type ZCapitalizeType,\n} from './types/z-common.types';\n\nexport const zMergeClasses = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n\nexport const zTransform = (value: boolean | string): boolean => {\n if (typeof value === 'string') {\n return value === '';\n }\n if (typeof value === 'number') {\n return value === 0;\n }\n return value;\n};\n\nexport const zUuid = (prefix = ''): string => {\n const id = crypto.randomUUID();\n return prefix ? `${prefix}-${id}` : id;\n};\n\nexport const zNoop = () => void 0;\n\nexport const zFormatNum = (value: unknown, options: ZFormatNumOptions = {}): string => {\n const {\n divide = 'none',\n format = '1.0-2',\n percent = false,\n emptyCheck = 'strict',\n locale = 'vi',\n placeholder = '-',\n } = options;\n\n if (value === null || value === undefined) {\n return placeholder;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return placeholder;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return placeholder;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n const matched = format.match(/1\\.(\\d)-(\\d)/);\n const minDigits = matched ? parseInt(matched[1], 10) : 0;\n const maxDigits = matched ? parseInt(matched[2], 10) : 2;\n\n const lang = document.documentElement.lang || locale;\n const formatted = new Intl.NumberFormat(Z_LOCALE_MAP[lang] || 'vi-VN', {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: maxDigits,\n }).format(scaledValue);\n\n return percent ? `${formatted}%` : formatted;\n};\n\nexport const zFormatNumExcel = (\n cell: ExcelJS.Cell | undefined,\n value: unknown,\n options: ZFormatNumExcelOptions = {}\n): number | undefined => {\n const { divide = 'none', format = '1.0-1', percent = false, emptyCheck = 'strict' } = options;\n if (value === null || value === undefined || value === '') {\n return undefined;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return undefined;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return undefined;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n let numFmt = Z_EXCEL_NUMBER_FORMAT_MAP[format] || '#,##0.0';\n\n if (percent) {\n numFmt = numFmt + '\"%\"';\n }\n\n if (cell) {\n cell.value = '\\u200B' + scaledValue;\n cell.numFmt = numFmt;\n }\n\n return scaledValue;\n};\n\nexport const zCapitalCase = (text: string, type: ZCapitalizeType = 'first'): string => {\n if (!text) {\n return '';\n }\n\n switch (type) {\n case 'all':\n return text.toUpperCase();\n\n case 'sentence':\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n\n case 'first':\n default:\n return text\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n};\n\nexport const zDecodeUnicode = (str: string): string => {\n if (!str) {\n return '';\n }\n\n str = str.replace(/\\\\\\\\u/g, '\\\\u');\n str = str.replace(/\\\\u([\\dA-Fa-f]{4})/g, (_, g1) => String.fromCharCode(parseInt(g1, 16)));\n str = str.replace(/(^|[^\\\\])u([\\dA-Fa-f]{4})/g, (_, p1, g1) => p1 + String.fromCharCode(parseInt(g1, 16)));\n\n return str.replace(/([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g, (_, high, low) => {\n const hi = high.charCodeAt(0);\n const lo = low.charCodeAt(0);\n const codePoint = (hi - 0xd800) * 0x400 + (lo - 0xdc00) + 0x10000;\n return String.fromCodePoint(codePoint);\n });\n};\n\nexport const zRandomColor = (): { hex: string; rgb: string; hsl: string } => {\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 40) + 60;\n const l = Math.floor(Math.random() * 20) + 60;\n const hsl = `hsl(${h}, ${s}%, ${l}%)`;\n\n const a = s / 100;\n const b = l / 100;\n const c = (1 - Math.abs(2 * b - 1)) * a;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = b - c / 2;\n\n const hueSegment = Math.floor(h / 60) % 6;\n const rgbMap: [number, number, number][] = [\n [c, x, 0],\n [x, c, 0],\n [0, c, x],\n [0, x, c],\n [x, 0, c],\n [c, 0, x],\n ];\n const [r, g, bl] = rgbMap[hueSegment];\n\n const R = Math.round((r + m) * 255);\n const G = Math.round((g + m) * 255);\n const B = Math.round((bl + m) * 255);\n\n const rgb = `rgb(${R}, ${G}, ${B})`;\n const toHex = (n: number) => n.toString(16).padStart(2, '0');\n const hex = `#${toHex(R)}${toHex(G)}${toHex(B)}`;\n\n return { hex, rgb, hsl };\n};\n\nexport const zConvertColorToArgb = (color: string): string => {\n if (color.startsWith('#')) {\n return 'FF' + color.substring(1).toUpperCase();\n }\n\n if (color.startsWith('rgb')) {\n const matches = color.match(/\\d+/g);\n if (matches && matches.length >= 3) {\n const r = parseInt(matches[0]).toString(16).padStart(2, '0');\n const g = parseInt(matches[1]).toString(16).padStart(2, '0');\n const b = parseInt(matches[2]).toString(16).padStart(2, '0');\n return `FF${r}${g}${b}`.toUpperCase();\n }\n }\n\n return 'FF000000';\n};\n\nexport const zCleanObject = <T = unknown>(obj: T): T => {\n if (obj !== Object(obj)) {\n return obj;\n }\n\n return Object.entries(obj as Record<string, unknown>).reduce(\n (acc, [key, value]) => {\n if (value === null || value === undefined) {\n return acc;\n }\n\n const cleaned = zCleanObject(value);\n if (\n cleaned !== null &&\n cleaned !== undefined &&\n (typeof cleaned !== 'object' || Object.keys(cleaned).length > 0)\n ) {\n (acc as Record<string, unknown>)[key] = cleaned;\n }\n\n return acc;\n },\n {} as Record<string, unknown>\n ) as T;\n};\n\nexport const zTreeFlatten = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const flatten = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.flatMap(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return [{ ...child, level, parentsKey }, ...flatten(keyVal, level + 1, newParents)];\n });\n };\n\n return flatten(null, 0, []);\n};\n\nexport const zTreeBuild = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const buildTree = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.map(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return {\n ...child,\n level,\n parentsKey,\n children: buildTree(keyVal, level + 1, newParents),\n };\n });\n };\n\n return buildTree(null, 0, []);\n};\n\nexport const VIETNAMESE_MAP: Record<string, string> = {\n à: 'a',\n á: 'a',\n ạ: 'a',\n ả: 'a',\n ã: 'a',\n â: 'a',\n ầ: 'a',\n ấ: 'a',\n ậ: 'a',\n ẩ: 'a',\n ẫ: 'a',\n ă: 'a',\n ằ: 'a',\n ắ: 'a',\n ặ: 'a',\n ẳ: 'a',\n ẵ: 'a',\n è: 'e',\n é: 'e',\n ẹ: 'e',\n ẻ: 'e',\n ẽ: 'e',\n ê: 'e',\n ề: 'e',\n ế: 'e',\n ệ: 'e',\n ể: 'e',\n ễ: 'e',\n ì: 'i',\n í: 'i',\n ị: 'i',\n ỉ: 'i',\n ĩ: 'i',\n ò: 'o',\n ó: 'o',\n ọ: 'o',\n ỏ: 'o',\n õ: 'o',\n ô: 'o',\n ồ: 'o',\n ố: 'o',\n ộ: 'o',\n ổ: 'o',\n ỗ: 'o',\n ơ: 'o',\n ờ: 'o',\n ớ: 'o',\n ợ: 'o',\n ở: 'o',\n ỡ: 'o',\n ù: 'u',\n ú: 'u',\n ụ: 'u',\n ủ: 'u',\n ũ: 'u',\n ư: 'u',\n ừ: 'u',\n ứ: 'u',\n ự: 'u',\n ử: 'u',\n ữ: 'u',\n ỳ: 'y',\n ý: 'y',\n ỵ: 'y',\n ỷ: 'y',\n ỹ: 'y',\n đ: 'd',\n À: 'A',\n Á: 'A',\n Ạ: 'A',\n Ả: 'A',\n Ã: 'A',\n Â: 'A',\n Ầ: 'A',\n Ấ: 'A',\n Ậ: 'A',\n Ẩ: 'A',\n Ẫ: 'A',\n Ă: 'A',\n Ằ: 'A',\n Ắ: 'A',\n Ặ: 'A',\n Ẳ: 'A',\n Ẵ: 'A',\n È: 'E',\n É: 'E',\n Ẹ: 'E',\n Ẻ: 'E',\n Ẽ: 'E',\n Ê: 'E',\n Ề: 'E',\n Ế: 'E',\n Ệ: 'E',\n Ể: 'E',\n Ễ: 'E',\n Ì: 'I',\n Í: 'I',\n Ị: 'I',\n Ỉ: 'I',\n Ĩ: 'I',\n Ò: 'O',\n Ó: 'O',\n Ọ: 'O',\n Ỏ: 'O',\n Õ: 'O',\n Ô: 'O',\n Ồ: 'O',\n Ố: 'O',\n Ộ: 'O',\n Ổ: 'O',\n Ỗ: 'O',\n Ơ: 'O',\n Ờ: 'O',\n Ớ: 'O',\n Ợ: 'O',\n Ở: 'O',\n Ỡ: 'O',\n Ù: 'U',\n Ú: 'U',\n Ụ: 'U',\n Ủ: 'U',\n Ũ: 'U',\n Ư: 'U',\n Ừ: 'U',\n Ứ: 'U',\n Ự: 'U',\n Ử: 'U',\n Ữ: 'U',\n Ỳ: 'Y',\n Ý: 'Y',\n Ỵ: 'Y',\n Ỷ: 'Y',\n Ỹ: 'Y',\n Đ: 'D',\n};\n\nexport const zRemoveVietnamese = (str: string): string =>\n str\n .split('')\n .map(char => VIETNAMESE_MAP[char] || char)\n .join('');\n\nconst getDeepValue = (obj: unknown, path: string): string => {\n try {\n const value = path.split('.').reduce((acc: unknown, key: string) => {\n if (acc && typeof acc === 'object' && key in acc) {\n return (acc as Record<string, unknown>)[key];\n }\n return '';\n }, obj);\n\n if (Array.isArray(value)) {\n return value.map(v => String(v)).join(' ');\n }\n\n return value as string;\n } catch {\n return '';\n }\n};\n\nexport const zMiniSearch = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n idField?: keyof T | string\n): T[] => {\n if (!query) {\n return data;\n }\n\n const fieldStrings = fields.map(f => String(f));\n const idFieldString = idField ? String(idField) : '_index';\n const useCustomId = !!idField;\n\n const flatData = data.map((item, index) => ({\n ...item,\n ...(!useCustomId && { _index: index }),\n ...Object.fromEntries(fieldStrings.map(field => [field, getDeepValue(item, field)])),\n }));\n\n const search = new MiniSearch({\n idField: idFieldString,\n fields: fieldStrings,\n storeFields: [idFieldString],\n tokenize: (text: string) =>\n zRemoveVietnamese(text.toLowerCase())\n .split(/[\\s@.\\-_]+/)\n .filter(Boolean),\n processTerm: (term: string) => zRemoveVietnamese(term.toLowerCase()),\n });\n\n search.addAll(flatData);\n const results = search.search(query, { prefix: true });\n\n if (useCustomId) {\n const resultIds = new Set(results.map(result => result.id));\n return data.filter(item => resultIds.has((item as Record<string, unknown>)[idFieldString]));\n }\n\n return results.map(result => data[(result as unknown as { _index: number })._index]);\n};\n\nexport const zMiniSearch$ = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n options?: {\n idField?: keyof T | string;\n loading?: WritableSignal<boolean>;\n fakeDelay?: number;\n }\n): Observable<T[]> => {\n const { idField, loading, fakeDelay = 200 } = options ?? {};\n\n if (loading && isSignal(loading)) {\n loading.set(true);\n }\n\n return of(zMiniSearch(data, query, fields, idField)).pipe(\n delay(fakeDelay),\n finalize(() => {\n if (loading && isSignal(loading)) {\n loading.set(false);\n }\n })\n );\n};\n\nconst _detectDevice = (ua: string): ZDeviceType => {\n if (/Mobi|Android.*Mobile|iPhone|iPod|BlackBerry|IEMobile/i.test(ua)) {\n return 'mobile';\n }\n if (/iPad|Android(?!.*Mobile)|Tablet/i.test(ua)) {\n return 'tablet';\n }\n return 'desktop';\n};\n\nexport const zDetectBrowser = (): ZBrowserInfo => {\n const ua = navigator.userAgent;\n const result: ZBrowserInfo = {\n name: 'Unknown',\n version: '',\n agent: ua,\n device: _detectDevice(ua),\n time: new Date().toISOString(),\n };\n\n if (!navigator.userAgentData) {\n return result;\n }\n\n const brands = navigator.userAgentData.brands || [];\n const isMobile = navigator.userAgentData.mobile;\n\n if (isMobile) {\n result.device = 'mobile';\n }\n\n const mainBrand = brands.find(\n (b: ZNavigatorUABrandVersion) => !['Chromium', 'Not_A Brand', 'Not A;Brand', 'Not/A)Brand'].includes(b.brand)\n );\n\n if (mainBrand) {\n result.name = mainBrand.brand.replace('Google ', '');\n result.version = mainBrand.version;\n return result;\n }\n\n const chromium = brands.find((b: ZNavigatorUABrandVersion) => b.brand === 'Chromium');\n if (chromium) {\n result.name = 'Chrome';\n result.version = chromium.version;\n }\n\n return result;\n};\n","import * as echarts from 'echarts';\nimport type { ZEchartsThemeOptions } from './types/z-echarts.types';\n\nconst Z_ECHARTS_DEFAULT_FONT = `'Lexend', 'Arial', 'Helvetica', 'sans-serif'`;\n\n/**\n * Register custom Z-UI theme for ECharts\n * @param options - Theme configuration options\n */\nexport function zRegisterEchartsTheme(options: ZEchartsThemeOptions = {}): void {\n const { themeName = 'zTheme', fontFamily = Z_ECHARTS_DEFAULT_FONT } = options;\n\n echarts.registerTheme(themeName, {\n textStyle: {\n fontFamily,\n color: '#333',\n },\n title: {\n textStyle: {\n fontFamily,\n fontWeight: '450',\n },\n },\n legend: {\n textStyle: {\n fontFamily,\n fontSize: 13,\n color: '#333',\n },\n },\n tooltip: {\n textStyle: {\n fontFamily,\n color: '#333',\n fontSize: 13,\n },\n },\n axisPointer: {\n lineStyle: { color: '#999' },\n crossStyle: { color: '#999' },\n },\n categoryAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { show: false },\n },\n valueAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { lineStyle: { color: '#eee' } },\n },\n });\n}\n","import { FormArray, FormGroup } from '@angular/forms';\n\n/**\n * Submit form and mark invalid controls as dirty (supports nested FormArray/FormGroup)\n * @param form - FormGroup or FormArray to submit\n * @returns true if form is valid, false otherwise\n */\nexport const zSubmitForm = (form: FormGroup | FormArray): boolean => {\n if (form.invalid) {\n markFormAsInvalid(form);\n return false;\n }\n\n return true;\n};\n\n/**\n * Recursively mark invalid controls as dirty (handles nested FormArray/FormGroup)\n */\nconst markFormAsInvalid = (form: FormGroup | FormArray): void => {\n Object.values(form.controls).forEach(control => {\n if (control instanceof FormArray) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control instanceof FormGroup) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control?.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n};\n\n/**\n * Debug invalid form controls by logging to console\n * @param form - FormGroup to debug\n * @param parentKey - Parent key for nested controls\n */\nexport const zDebugFormInvalid = (form: FormGroup, parentKey = ''): void => {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n const controlPath = parentKey ? `${parentKey}.${key}` : key;\n\n if (control instanceof FormGroup) {\n zDebugFormInvalid(control, controlPath);\n return;\n }\n\n if (control instanceof FormArray) {\n control.controls.forEach((ctrl, index) => {\n const arrayPath = `${controlPath}[${index}]`;\n\n if (ctrl instanceof FormGroup) {\n zDebugFormInvalid(ctrl, arrayPath);\n return;\n }\n\n if (ctrl?.invalid) {\n console.log(`❌ Field: ${arrayPath}`, ctrl.errors);\n }\n });\n return;\n }\n\n if (control?.invalid) {\n console.log(`❌ Field: ${controlPath}`, control.errors);\n }\n });\n};\n","/**\n * Utils types index\n */\n\nexport * from './z-common.types';\nexport * from './z-echarts.types';\nexport * from './z-form.types';\n","/**\n * Utils index\n */\n\nexport * from './z-common.utils';\nexport * from './z-echarts.utils';\nexport * from './z-form.utils';\n\n// Export all types\nexport * from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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G;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAA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"}
|
|
1
|
+
{"version":3,"file":"shival99-z-ui-utils.mjs","sources":["../../../../libs/core-ui/utils/types/z-common.types.ts","../../../../libs/core-ui/utils/z-common.utils.ts","../../../../libs/core-ui/utils/z-echarts.utils.ts","../../../../libs/core-ui/utils/z-form.utils.ts","../../../../libs/core-ui/utils/types/index.ts","../../../../libs/core-ui/utils/index.ts","../../../../libs/core-ui/utils/shival99-z-ui-utils.ts"],"sourcesContent":["export type ZBrowserName = 'Chrome' | 'Edge' | 'Firefox' | 'Safari' | 'Opera' | 'IE' | 'Unknown' | string;\n\nexport type ZDeviceType = 'mobile' | 'tablet' | 'desktop';\nexport interface ZBrowserInfo {\n name: ZBrowserName;\n version: string;\n agent: string;\n device: ZDeviceType;\n time: string;\n}\n\nexport interface ZNavigatorUABrandVersion {\n brand: string;\n version: string;\n}\n\nexport interface ZNavigatorUAData {\n brands: ZNavigatorUABrandVersion[];\n mobile: boolean;\n platform: string;\n}\n\nexport type ZNumberDivide = 'none' | 'thousand' | 'million' | 'billion';\nexport type ZEmptyCheck = 'strict' | 'includeZero';\n\nexport const Z_DIVIDE_SCALE: Record<ZNumberDivide, number> = {\n none: 1,\n thousand: 1_000,\n million: 1_000_000,\n billion: 1_000_000_000,\n};\n\nexport const Z_LOCALE_MAP: Record<string, string> = {\n vi: 'vi-VN',\n en: 'en-US',\n};\n\nexport interface ZFormatNumOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n locale?: string;\n placeholder?: string;\n}\n\nexport const Z_EXCEL_NUMBER_FORMAT_MAP: Record<string, string> = {\n '1.0-0': '#,##0',\n '1.0-1': '#,##0.0',\n '1.0-2': '#,##0.00',\n '1.0-3': '#,##0.000',\n '1.1-1': '#,##0.0',\n '1.1-2': '#,##0.00',\n '1.1-3': '#,##0.000',\n '1.2-2': '#,##0.00',\n};\n\nexport interface ZFormatNumExcelOptions {\n divide?: ZNumberDivide;\n format?: string;\n percent?: boolean;\n emptyCheck?: ZEmptyCheck;\n}\n\ndeclare global {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n interface Navigator {\n userAgentData?: ZNavigatorUAData;\n }\n}\n\nexport type ZCapitalizeType = 'all' | 'sentence' | 'first';\n","import { isSignal, type WritableSignal } from '@angular/core';\nimport { type ClassValue, clsx } from 'clsx';\nimport type * as ExcelJS from 'exceljs';\nimport MiniSearch from 'minisearch';\nimport { delay, finalize, type Observable, of } from 'rxjs';\nimport { twMerge } from 'tailwind-merge';\nimport {\n type ZDeviceType,\n type ZBrowserInfo,\n type ZNavigatorUABrandVersion,\n type ZFormatNumOptions,\n type ZFormatNumExcelOptions,\n Z_DIVIDE_SCALE,\n Z_LOCALE_MAP,\n Z_EXCEL_NUMBER_FORMAT_MAP,\n type ZCapitalizeType,\n} from './types/z-common.types';\n\nexport const zMergeClasses = (...inputs: ClassValue[]) => twMerge(clsx(inputs));\n\nexport const zTransform = (value: boolean | string): boolean => {\n if (typeof value === 'string') {\n return value === '';\n }\n if (typeof value === 'number') {\n return value === 0;\n }\n return value;\n};\n\nexport const zUuid = (prefix = ''): string => {\n const id = crypto.randomUUID();\n return prefix ? `${prefix}-${id}` : id;\n};\n\nexport const zNoop = () => void 0;\n\nexport const zFormatNum = (value: unknown, options: ZFormatNumOptions = {}): string => {\n const {\n divide = 'none',\n format = '1.0-2',\n percent = false,\n emptyCheck = 'strict',\n locale = 'vi',\n placeholder = '-',\n } = options;\n\n if (value === null || value === undefined) {\n return placeholder;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return placeholder;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return placeholder;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n const matched = format.match(/1\\.(\\d)-(\\d)/);\n const minDigits = matched ? parseInt(matched[1], 10) : 0;\n const maxDigits = matched ? parseInt(matched[2], 10) : 2;\n\n const lang = document.documentElement.lang || locale;\n const formatted = new Intl.NumberFormat(Z_LOCALE_MAP[lang] || 'vi-VN', {\n minimumFractionDigits: minDigits,\n maximumFractionDigits: maxDigits,\n }).format(scaledValue);\n\n return percent ? `${formatted}%` : formatted;\n};\n\nexport const zFormatNumExcel = (\n cell: ExcelJS.Cell | undefined,\n value: unknown,\n options: ZFormatNumExcelOptions = {}\n): number | undefined => {\n const { divide = 'none', format = '1.0-1', percent = false, emptyCheck = 'strict' } = options;\n if (value === null || value === undefined || value === '') {\n return undefined;\n }\n\n const numValue = Number(value);\n\n if (Number.isNaN(numValue)) {\n return undefined;\n }\n\n if (emptyCheck === 'includeZero' && numValue === 0) {\n return undefined;\n }\n\n const scaledValue = numValue / Z_DIVIDE_SCALE[divide];\n let numFmt = Z_EXCEL_NUMBER_FORMAT_MAP[format] || '#,##0.0';\n\n if (percent) {\n numFmt = numFmt + '\"%\"';\n }\n\n if (cell) {\n cell.value = '\\u200B' + scaledValue;\n cell.numFmt = numFmt;\n }\n\n return scaledValue;\n};\n\nexport const zCapitalCase = (text: string, type: ZCapitalizeType = 'first'): string => {\n if (!text) {\n return '';\n }\n\n switch (type) {\n case 'all':\n return text.toUpperCase();\n\n case 'sentence':\n return text.charAt(0).toUpperCase() + text.slice(1).toLowerCase();\n\n case 'first':\n default:\n return text\n .toLowerCase()\n .split(' ')\n .map(word => word.charAt(0).toUpperCase() + word.slice(1))\n .join(' ');\n }\n};\n\nexport const zDecodeUnicode = (str: string): string => {\n if (!str) {\n return '';\n }\n\n str = str.replace(/\\\\\\\\u/g, '\\\\u');\n str = str.replace(/\\\\u([\\dA-Fa-f]{4})/g, (_, g1) => String.fromCharCode(parseInt(g1, 16)));\n str = str.replace(/(^|[^\\\\])u([\\dA-Fa-f]{4})/g, (_, p1, g1) => p1 + String.fromCharCode(parseInt(g1, 16)));\n\n return str.replace(/([\\uD800-\\uDBFF])([\\uDC00-\\uDFFF])/g, (_, high, low) => {\n const hi = high.charCodeAt(0);\n const lo = low.charCodeAt(0);\n const codePoint = (hi - 0xd800) * 0x400 + (lo - 0xdc00) + 0x10000;\n return String.fromCodePoint(codePoint);\n });\n};\n\nexport const zRandomColor = (): { hex: string; rgb: string; hsl: string } => {\n const h = Math.floor(Math.random() * 360);\n const s = Math.floor(Math.random() * 40) + 60;\n const l = Math.floor(Math.random() * 20) + 60;\n const hsl = `hsl(${h}, ${s}%, ${l}%)`;\n\n const a = s / 100;\n const b = l / 100;\n const c = (1 - Math.abs(2 * b - 1)) * a;\n const x = c * (1 - Math.abs(((h / 60) % 2) - 1));\n const m = b - c / 2;\n\n const hueSegment = Math.floor(h / 60) % 6;\n const rgbMap: [number, number, number][] = [\n [c, x, 0],\n [x, c, 0],\n [0, c, x],\n [0, x, c],\n [x, 0, c],\n [c, 0, x],\n ];\n const [r, g, bl] = rgbMap[hueSegment];\n\n const R = Math.round((r + m) * 255);\n const G = Math.round((g + m) * 255);\n const B = Math.round((bl + m) * 255);\n\n const rgb = `rgb(${R}, ${G}, ${B})`;\n const toHex = (n: number) => n.toString(16).padStart(2, '0');\n const hex = `#${toHex(R)}${toHex(G)}${toHex(B)}`;\n\n return { hex, rgb, hsl };\n};\n\nexport const zConvertColorToArgb = (color: string): string => {\n if (color.startsWith('#')) {\n return 'FF' + color.substring(1).toUpperCase();\n }\n\n if (color.startsWith('rgb')) {\n const matches = color.match(/\\d+/g);\n if (matches && matches.length >= 3) {\n const r = parseInt(matches[0]).toString(16).padStart(2, '0');\n const g = parseInt(matches[1]).toString(16).padStart(2, '0');\n const b = parseInt(matches[2]).toString(16).padStart(2, '0');\n return `FF${r}${g}${b}`.toUpperCase();\n }\n }\n\n return 'FF000000';\n};\n\nexport const zCleanObject = <T = unknown>(obj: T): T => {\n if (obj !== Object(obj)) {\n return obj;\n }\n\n return Object.entries(obj as Record<string, unknown>).reduce(\n (acc, [key, value]) => {\n if (value === null || value === undefined) {\n return acc;\n }\n\n const cleaned = zCleanObject(value);\n if (\n cleaned !== null &&\n cleaned !== undefined &&\n (typeof cleaned !== 'object' || Object.keys(cleaned).length > 0)\n ) {\n (acc as Record<string, unknown>)[key] = cleaned;\n }\n\n return acc;\n },\n {} as Record<string, unknown>\n ) as T;\n};\n\nexport const zTreeFlatten = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const flatten = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.flatMap(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return [{ ...child, level, parentsKey }, ...flatten(keyVal, level + 1, newParents)];\n });\n };\n\n return flatten(null, 0, []);\n};\n\nexport const zTreeBuild = <T extends Record<string, unknown>>(\n list: T[],\n keyMap: keyof T,\n parentKeyMap: keyof T,\n sortFn?: (a: T, b: T) => number\n): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const sortedList = sortFn ? [...list].sort(sortFn) : list;\n const byParent: Record<string, T[]> = {};\n\n for (const item of sortedList) {\n const parentKey = (item[parentKeyMap] as string) ?? 'root';\n if (!byParent[parentKey]) {\n byParent[parentKey] = [];\n }\n byParent[parentKey].push(item);\n }\n\n const buildTree = (\n parentKey: string | null,\n level: number,\n parentsKey: string[]\n ): (T & { level: number; parentsKey: string[]; children: unknown[] })[] => {\n const children = byParent[parentKey ?? 'root'] || [];\n return children.map(child => {\n const keyVal = String(child[keyMap]);\n const newParents = [...parentsKey, keyVal];\n return {\n ...child,\n level,\n parentsKey,\n children: buildTree(keyVal, level + 1, newParents),\n };\n });\n };\n\n return buildTree(null, 0, []);\n};\n\nexport const VIETNAMESE_MAP: Record<string, string> = {\n à: 'a',\n á: 'a',\n ạ: 'a',\n ả: 'a',\n ã: 'a',\n â: 'a',\n ầ: 'a',\n ấ: 'a',\n ậ: 'a',\n ẩ: 'a',\n ẫ: 'a',\n ă: 'a',\n ằ: 'a',\n ắ: 'a',\n ặ: 'a',\n ẳ: 'a',\n ẵ: 'a',\n è: 'e',\n é: 'e',\n ẹ: 'e',\n ẻ: 'e',\n ẽ: 'e',\n ê: 'e',\n ề: 'e',\n ế: 'e',\n ệ: 'e',\n ể: 'e',\n ễ: 'e',\n ì: 'i',\n í: 'i',\n ị: 'i',\n ỉ: 'i',\n ĩ: 'i',\n ò: 'o',\n ó: 'o',\n ọ: 'o',\n ỏ: 'o',\n õ: 'o',\n ô: 'o',\n ồ: 'o',\n ố: 'o',\n ộ: 'o',\n ổ: 'o',\n ỗ: 'o',\n ơ: 'o',\n ờ: 'o',\n ớ: 'o',\n ợ: 'o',\n ở: 'o',\n ỡ: 'o',\n ù: 'u',\n ú: 'u',\n ụ: 'u',\n ủ: 'u',\n ũ: 'u',\n ư: 'u',\n ừ: 'u',\n ứ: 'u',\n ự: 'u',\n ử: 'u',\n ữ: 'u',\n ỳ: 'y',\n ý: 'y',\n ỵ: 'y',\n ỷ: 'y',\n ỹ: 'y',\n đ: 'd',\n À: 'A',\n Á: 'A',\n Ạ: 'A',\n Ả: 'A',\n Ã: 'A',\n Â: 'A',\n Ầ: 'A',\n Ấ: 'A',\n Ậ: 'A',\n Ẩ: 'A',\n Ẫ: 'A',\n Ă: 'A',\n Ằ: 'A',\n Ắ: 'A',\n Ặ: 'A',\n Ẳ: 'A',\n Ẵ: 'A',\n È: 'E',\n É: 'E',\n Ẹ: 'E',\n Ẻ: 'E',\n Ẽ: 'E',\n Ê: 'E',\n Ề: 'E',\n Ế: 'E',\n Ệ: 'E',\n Ể: 'E',\n Ễ: 'E',\n Ì: 'I',\n Í: 'I',\n Ị: 'I',\n Ỉ: 'I',\n Ĩ: 'I',\n Ò: 'O',\n Ó: 'O',\n Ọ: 'O',\n Ỏ: 'O',\n Õ: 'O',\n Ô: 'O',\n Ồ: 'O',\n Ố: 'O',\n Ộ: 'O',\n Ổ: 'O',\n Ỗ: 'O',\n Ơ: 'O',\n Ờ: 'O',\n Ớ: 'O',\n Ợ: 'O',\n Ở: 'O',\n Ỡ: 'O',\n Ù: 'U',\n Ú: 'U',\n Ụ: 'U',\n Ủ: 'U',\n Ũ: 'U',\n Ư: 'U',\n Ừ: 'U',\n Ứ: 'U',\n Ự: 'U',\n Ử: 'U',\n Ữ: 'U',\n Ỳ: 'Y',\n Ý: 'Y',\n Ỵ: 'Y',\n Ỷ: 'Y',\n Ỹ: 'Y',\n Đ: 'D',\n};\n\nexport const zRemoveVietnamese = (str: string): string =>\n str\n .split('')\n .map(char => VIETNAMESE_MAP[char] || char)\n .join('');\n\nconst getDeepValue = (obj: unknown, path: string): string => {\n try {\n const value = path.split('.').reduce((acc: unknown, key: string) => {\n if (acc && typeof acc === 'object' && key in acc) {\n return (acc as Record<string, unknown>)[key];\n }\n return '';\n }, obj);\n\n if (Array.isArray(value)) {\n return value.map(v => String(v)).join(' ');\n }\n\n return value as string;\n } catch {\n return '';\n }\n};\n\nexport const zMiniSearch = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n idField?: keyof T | string\n): T[] => {\n if (!query) {\n return data;\n }\n\n const fieldStrings = fields.map(f => String(f));\n const idFieldString = idField ? String(idField) : '_index';\n const useCustomId = !!idField;\n\n const flatData = data.map((item, index) => ({\n ...item,\n ...(!useCustomId && { _index: index }),\n ...Object.fromEntries(fieldStrings.map(field => [field, getDeepValue(item, field)])),\n }));\n\n const search = new MiniSearch({\n idField: idFieldString,\n fields: fieldStrings,\n storeFields: [idFieldString],\n tokenize: (text: string) =>\n zRemoveVietnamese(text.toLowerCase())\n .split(/[\\s@.\\-_]+/)\n .filter(Boolean),\n processTerm: (term: string) => zRemoveVietnamese(term.toLowerCase()),\n });\n\n search.addAll(flatData);\n const results = search.search(query, { prefix: true });\n\n if (useCustomId) {\n const resultIds = new Set(results.map(result => result.id));\n return data.filter(item => resultIds.has((item as Record<string, unknown>)[idFieldString]));\n }\n\n return results.map(result => data[(result as unknown as { _index: number })._index]);\n};\n\nexport const zMiniSearch$ = <T>(\n data: T[],\n query: string,\n fields: (keyof T | string)[],\n options?: {\n idField?: keyof T | string;\n loading?: WritableSignal<boolean>;\n fakeDelay?: number;\n }\n): Observable<T[]> => {\n const { idField, loading, fakeDelay = 200 } = options ?? {};\n\n if (loading && isSignal(loading)) {\n loading.set(true);\n }\n\n return of(zMiniSearch(data, query, fields, idField)).pipe(\n delay(fakeDelay),\n finalize(() => {\n if (loading && isSignal(loading)) {\n loading.set(false);\n }\n })\n );\n};\n\nconst _detectDevice = (ua: string): ZDeviceType => {\n if (/Mobi|Android.*Mobile|iPhone|iPod|BlackBerry|IEMobile/i.test(ua)) {\n return 'mobile';\n }\n if (/iPad|Android(?!.*Mobile)|Tablet/i.test(ua)) {\n return 'tablet';\n }\n return 'desktop';\n};\n\nexport const zDetectBrowser = (): ZBrowserInfo => {\n const ua = navigator.userAgent;\n const result: ZBrowserInfo = {\n name: 'Unknown',\n version: '',\n agent: ua,\n device: _detectDevice(ua),\n time: new Date().toISOString(),\n };\n\n if (!navigator.userAgentData) {\n return result;\n }\n\n const brands = navigator.userAgentData.brands || [];\n const isMobile = navigator.userAgentData.mobile;\n\n if (isMobile) {\n result.device = 'mobile';\n }\n\n const mainBrand = brands.find(\n (b: ZNavigatorUABrandVersion) => !['Chromium', 'Not_A Brand', 'Not A;Brand', 'Not/A)Brand'].includes(b.brand)\n );\n\n if (mainBrand) {\n result.name = mainBrand.brand.replace('Google ', '');\n result.version = mainBrand.version;\n return result;\n }\n\n const chromium = brands.find((b: ZNavigatorUABrandVersion) => b.brand === 'Chromium');\n if (chromium) {\n result.name = 'Chrome';\n result.version = chromium.version;\n }\n\n return result;\n};\n","import * as echarts from 'echarts';\nimport type { ZEchartsThemeOptions } from './types/z-echarts.types';\n\nconst Z_ECHARTS_DEFAULT_FONT = `'Lexend', 'Arial', 'Helvetica', 'sans-serif'`;\n\n/**\n * Register custom Z-UI theme for ECharts\n * @param options - Theme configuration options\n */\nexport function zRegisterEchartsTheme(options: ZEchartsThemeOptions = {}): void {\n const { themeName = 'zTheme', fontFamily = Z_ECHARTS_DEFAULT_FONT } = options;\n\n echarts.registerTheme(themeName, {\n textStyle: {\n fontFamily,\n color: '#333',\n },\n title: {\n textStyle: {\n fontFamily,\n fontWeight: '450',\n },\n },\n legend: {\n textStyle: {\n fontFamily,\n fontSize: 13,\n color: '#333',\n },\n },\n tooltip: {\n textStyle: {\n fontFamily,\n color: '#333',\n fontSize: 13,\n },\n },\n axisPointer: {\n lineStyle: { color: '#999' },\n crossStyle: { color: '#999' },\n },\n categoryAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { show: false },\n },\n valueAxis: {\n axisLine: { lineStyle: { color: '#ccc' } },\n axisTick: { lineStyle: { color: '#ccc' } },\n axisLabel: {\n fontFamily,\n color: '#444',\n fontSize: 12,\n },\n splitLine: { lineStyle: { color: '#eee' } },\n },\n });\n}\n","import { FormArray, FormGroup } from '@angular/forms';\n\n/**\n * Submit form and mark invalid controls as dirty (supports nested FormArray/FormGroup)\n * @param form - FormGroup or FormArray to submit\n * @returns true if form is valid, false otherwise\n */\nexport const zValidForm = (form: FormGroup | FormArray): boolean => {\n if (form.invalid) {\n markFormAsInvalid(form);\n return false;\n }\n\n return true;\n};\n\n/**\n * Recursively mark invalid controls as dirty (handles nested FormArray/FormGroup)\n */\nconst markFormAsInvalid = (form: FormGroup | FormArray): void => {\n Object.values(form.controls).forEach(control => {\n if (control instanceof FormArray) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control instanceof FormGroup) {\n markFormAsInvalid(control);\n return;\n }\n\n if (control?.invalid) {\n control.markAsDirty();\n control.updateValueAndValidity({ onlySelf: true });\n }\n });\n};\n\n/**\n * Debug invalid form controls by logging to console\n * @param form - FormGroup to debug\n * @param parentKey - Parent key for nested controls\n */\nexport const zDebugFormInvalid = (form: FormGroup, parentKey = ''): void => {\n Object.keys(form.controls).forEach(key => {\n const control = form.get(key);\n const controlPath = parentKey ? `${parentKey}.${key}` : key;\n\n if (control instanceof FormGroup) {\n zDebugFormInvalid(control, controlPath);\n return;\n }\n\n if (control instanceof FormArray) {\n control.controls.forEach((ctrl, index) => {\n const arrayPath = `${controlPath}[${index}]`;\n\n if (ctrl instanceof FormGroup) {\n zDebugFormInvalid(ctrl, arrayPath);\n return;\n }\n\n if (ctrl?.invalid) {\n console.log(`❌ Field: ${arrayPath}`, ctrl.errors);\n }\n });\n return;\n }\n\n if (control?.invalid) {\n console.log(`❌ Field: ${controlPath}`, control.errors);\n }\n });\n};\n","/**\n * Utils types index\n */\n\nexport * from './z-common.types';\nexport * from './z-echarts.types';\nexport * from './z-form.types';\n","/**\n * Utils index\n */\n\nexport * from './z-common.utils';\nexport * from './z-echarts.utils';\nexport * from './z-form.utils';\n\n// Export all types\nexport * from './types';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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G;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAAG;AACN,IAAA,CAAC,EAAE,GAA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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shival99/z-ui",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.4",
|
|
4
4
|
"description": "Z-UI: Modern Angular UI Component Library - A comprehensive, high-performance design system built with Angular 20+, featuring 40+ customizable components with dark mode, accessibility, and enterprise-ready features.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"angular",
|