@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.
@@ -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
- else if (index === total - 1) {
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(this._createControl());
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":";;;;;;;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;IAEpD,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;AAAO,iBAAA,IAAI,KAAK,KAAK,KAAK,GAAG,CAAC,EAAE;gBAC9B,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;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;IAC3C;IAEQ,cAAc,GAAA;QACpB,OAAO;AACL,YAAA,SAAS,EAAE,CAAC,KAAa,KAAI;AAC3B,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,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,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,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;gBAChD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC;YAC/C,CAAC;AACD,YAAA,SAAS,EAAE,CAAC,KAAa,EAAE,MAAoB,KAAI;gBACjD,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;SACrC;IACH;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;QACjC,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;uGAhPW,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,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;;;;"}
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":"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"}
@@ -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 zSubmitForm = (form) => {
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, zSubmitForm, zTransform, zTreeBuild, zTreeFlatten, zUuid };
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.2",
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",