ng-zenduit 2.0.19 → 2.0.21

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.
@@ -22,10 +22,10 @@ export class ZenduSortHeaderComponent {
22
22
  }
23
23
  }
24
24
  ZenduSortHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduSortHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
- ZenduSortHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduSortHeaderComponent, selector: "zen-sort", inputs: { sort: "sort", active: "active" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:16px;height:16px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"], dependencies: [{ kind: "component", type: i1.ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }] });
25
+ ZenduSortHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduSortHeaderComponent, selector: "zen-sort", inputs: { sort: "sort", active: "active" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:10px;height:10px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"], dependencies: [{ kind: "component", type: i1.ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }] });
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduSortHeaderComponent, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'zen-sort', template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:16px;height:16px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"] }]
28
+ args: [{ selector: 'zen-sort', template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:10px;height:10px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"] }]
29
29
  }], propDecorators: { sort: [{
30
30
  type: Input
31
31
  }], sortChange: [{
@@ -1705,6 +1705,99 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
1705
1705
  type: Input
1706
1706
  }] } });
1707
1707
 
1708
+ class ZenButtonComponent {
1709
+ constructor() {
1710
+ this.variant = 'primary';
1711
+ this.buttonType = 'button';
1712
+ this.size = 'md';
1713
+ this.destructive = false;
1714
+ this.disabled = false;
1715
+ this.fullWidth = false;
1716
+ this.type = 'button';
1717
+ }
1718
+ get isIconOnly() {
1719
+ return this.buttonType === 'button-icon-only';
1720
+ }
1721
+ get buttonClasses() {
1722
+ const classes = [];
1723
+ // Base variant class
1724
+ if (this.variant === 'primary') {
1725
+ classes.push('button-base');
1726
+ }
1727
+ else if (this.variant === 'secondary-gray') {
1728
+ classes.push('button-secondary-gray');
1729
+ }
1730
+ else if (this.variant === 'secondary') {
1731
+ classes.push('button-secondary-color');
1732
+ }
1733
+ else if (this.variant === 'tertiary-gray') {
1734
+ classes.push('button-tertiary-gray');
1735
+ }
1736
+ else if (this.variant === 'tertiary') {
1737
+ classes.push('button-tertiary-color');
1738
+ }
1739
+ else if (this.variant === 'link-gray') {
1740
+ classes.push('button-link-gray');
1741
+ }
1742
+ else if (this.variant === 'link') {
1743
+ classes.push('button-link-color');
1744
+ }
1745
+ // Size class
1746
+ classes.push(`button-${this.size}`);
1747
+ // Typography classes based on size
1748
+ classes.push('text');
1749
+ if (this.size === '2xl') {
1750
+ classes.push('text-lg');
1751
+ classes.push('text-weight-medium');
1752
+ }
1753
+ else if (this.size === 'xl' || this.size === 'lg') {
1754
+ classes.push('text-md');
1755
+ classes.push('text-weight-medium');
1756
+ }
1757
+ else {
1758
+ classes.push('text-sm');
1759
+ classes.push('text-weight-medium');
1760
+ }
1761
+ // State modifiers
1762
+ if (this.destructive) {
1763
+ classes.push('destructive');
1764
+ }
1765
+ if (this.isIconOnly) {
1766
+ classes.push('button-icon-only');
1767
+ }
1768
+ if (this.fullWidth) {
1769
+ classes.push('full-width');
1770
+ }
1771
+ return classes.join(' ');
1772
+ }
1773
+ getIconName() {
1774
+ // Use the icon input if provided, otherwise default to circle
1775
+ return this.icon || 'circle';
1776
+ }
1777
+ }
1778
+ ZenButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
1779
+ ZenButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenButtonComponent, selector: "zen-button", inputs: { variant: "variant", buttonType: "buttonType", icon: "icon", size: "size", destructive: "destructive", disabled: "disabled", fullWidth: "fullWidth", type: "type" }, ngImport: i0, template: "<button \n [class]=\"buttonClasses\"\n [type]=\"type\"\n [disabled]=\"disabled\">\n \n <!-- Dot indicator -->\n <span *ngIf=\"buttonType === 'button-dot'\" class=\"button-dot\"></span>\n \n <!-- Leading icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-leading' || isIconOnly\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n \n <!-- Button content -->\n <ng-content *ngIf=\"!isIconOnly\"></ng-content>\n \n <!-- Trailing icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-trailing'\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n</button>", styles: [".text{margin:0;padding:0;color:#101828}.text-display-2xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:72px;line-height:90px;letter-spacing:-.02em}.text-display-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:60px;line-height:72px;letter-spacing:-.02em}.text-display-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:48px;line-height:60px;letter-spacing:-.02em}.text-display-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:36px;line-height:44px;letter-spacing:-.02em}.text-display-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:30px;line-height:38px;letter-spacing:0}.text-display-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:24px;line-height:32px;letter-spacing:0}.text-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:20px;line-height:30px;letter-spacing:0}.text-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:18px;line-height:28px;letter-spacing:0}.text-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:24px;letter-spacing:0}.text-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:20px;letter-spacing:0}.text-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:12px;line-height:18px;letter-spacing:0}.text-weight-regular{font-weight:400;font-style:normal}.text-weight-medium{font-weight:500;font-style:normal}.text-weight-semibold{font-weight:600;font-style:normal}.text-weight-bold{font-weight:700;font-style:normal}@media (max-width: 768px){.text-display-2xl{font-size:48px;line-height:56px}.text-display-xl{font-size:40px;line-height:48px}.text-display-lg{font-size:32px;line-height:40px}}.button-2xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:60px;padding:0 28px}.button-2xl zen-icon{color:inherit;background-color:currentColor}.button-2xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-2xl:disabled{cursor:not-allowed}.button-2xl.full-width{width:100%;justify-content:center}.button-2xl.button-icon-only{padding:0;justify-content:center}.button-2xl.button-icon-only{width:60px;padding:0}.button-xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:48px;padding:0 20px}.button-xl zen-icon{color:inherit;background-color:currentColor}.button-xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-xl:disabled{cursor:not-allowed}.button-xl.full-width{width:100%;justify-content:center}.button-xl.button-icon-only{padding:0;justify-content:center}.button-xl.button-icon-only{width:48px;padding:0}.button-lg{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:44px;padding:0 18px}.button-lg zen-icon{color:inherit;background-color:currentColor}.button-lg .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-lg:disabled{cursor:not-allowed}.button-lg.full-width{width:100%;justify-content:center}.button-lg.button-icon-only{padding:0;justify-content:center}.button-lg.button-icon-only{width:44px;padding:0}.button-md{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:40px;padding:0 16px}.button-md zen-icon{color:inherit;background-color:currentColor}.button-md .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-md:disabled{cursor:not-allowed}.button-md.full-width{width:100%;justify-content:center}.button-md.button-icon-only{padding:0;justify-content:center}.button-md.button-icon-only{width:40px;padding:0}.button-sm{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:36px;padding:0 14px}.button-sm zen-icon{color:inherit;background-color:currentColor}.button-sm .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-sm:disabled{cursor:not-allowed}.button-sm.full-width{width:100%;justify-content:center}.button-sm.button-icon-only{padding:0;justify-content:center}.button-sm.button-icon-only{width:36px;padding:0}.button-base{background:#136AB6;color:#fff;border:1px solid #136AB6;box-shadow:0 1px 2px #1018280d}.button-base:hover:not(:disabled){background:#105494;border-color:#105494}.button-base:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-base.destructive{background:#D92D20;border-color:#d92d20}.button-base.destructive:hover:not(:disabled){background:#B42318;border-color:#b42318}.button-base.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-base.destructive:disabled{background:#FECDCA;border-color:#fecdca;color:#fff}.button-base:disabled{background:#C0DDF7;border-color:#c0ddf7;color:#fff}.button-secondary-gray{background:#FFFFFF;color:#344054;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d}.button-secondary-gray:hover:not(:disabled){background:#F9FAFB;color:#1d2939}.button-secondary-gray:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #f2f4f7}.button-secondary-gray.destructive{color:#b42318}.button-secondary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-secondary-gray.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-gray.destructive:disabled{background:#FFFFFF;border-color:#eaecf0;color:#fda29b}.button-secondary-gray:disabled{background:#FFFFFF;border-color:#eaecf0;color:#d0d5dd}.button-secondary-color{background:#F1F7FE;color:#105494;border:1px solid #F1F7FE;box-shadow:0 1px 2px #1018280d}.button-secondary-color:hover:not(:disabled){background:#E3EEFB;border-color:#e3eefb}.button-secondary-color:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-secondary-color.destructive{background:#FEF3F2;color:#b42318;border-color:#fef3f2}.button-secondary-color.destructive:hover:not(:disabled){background:#FEE4E2;border-color:#fee4e2}.button-secondary-color.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-color.destructive:disabled{background:#FFFBFA;border-color:#fffbfa;color:#fda29b}.button-secondary-color:disabled{background:#FAFDFF;border-color:#fafdff;color:#88c1f1}.button-tertiary-gray{background:transparent;color:#667085;border:1px solid transparent}.button-tertiary-gray:hover:not(:disabled){background:#F9FAFB;color:#475467}.button-tertiary-gray:focus:not(:disabled){outline:none;background:#F9FAFB}.button-tertiary-gray.destructive{color:#b42318}.button-tertiary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-gray.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-gray.destructive:disabled{color:#fda29b}.button-tertiary-gray:disabled{color:#d0d5dd}.button-tertiary-color{background:transparent;color:#105494;border:1px solid transparent}.button-tertiary-color:hover:not(:disabled){background:#F1F7FE}.button-tertiary-color:focus:not(:disabled){outline:none;background:#F1F7FE}.button-tertiary-color.destructive{color:#b42318}.button-tertiary-color.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-color.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-color.destructive:disabled{color:#fda29b}.button-tertiary-color:disabled{color:#d0d5dd}.button-link-gray{background:transparent;color:#475467;border:none;text-decoration:none}.button-link-gray:hover:not(:disabled){color:#344054}.button-link-gray:focus:not(:disabled){outline:none}.button-link-gray.destructive{color:#b42318}.button-link-gray.destructive:hover:not(:disabled){color:#912018}.button-link-gray.destructive:disabled{color:#fda29b}.button-link-gray:disabled{color:#d0d5dd}.button-link-color{background:transparent;color:#105494;border:none;text-decoration:none}.button-link-color:hover:not(:disabled){color:#12497a}.button-link-color:focus:not(:disabled){outline:none}.button-link-color.destructive{color:#b42318}.button-link-color.destructive:hover:not(:disabled){color:#912018}.button-link-color.destructive:disabled{color:#fda29b}.button-link-color:disabled{color:#d0d5dd}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }] });
1780
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenButtonComponent, decorators: [{
1781
+ type: Component,
1782
+ args: [{ selector: 'zen-button', template: "<button \n [class]=\"buttonClasses\"\n [type]=\"type\"\n [disabled]=\"disabled\">\n \n <!-- Dot indicator -->\n <span *ngIf=\"buttonType === 'button-dot'\" class=\"button-dot\"></span>\n \n <!-- Leading icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-leading' || isIconOnly\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n \n <!-- Button content -->\n <ng-content *ngIf=\"!isIconOnly\"></ng-content>\n \n <!-- Trailing icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-trailing'\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n</button>", styles: [".text{margin:0;padding:0;color:#101828}.text-display-2xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:72px;line-height:90px;letter-spacing:-.02em}.text-display-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:60px;line-height:72px;letter-spacing:-.02em}.text-display-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:48px;line-height:60px;letter-spacing:-.02em}.text-display-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:36px;line-height:44px;letter-spacing:-.02em}.text-display-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:30px;line-height:38px;letter-spacing:0}.text-display-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:24px;line-height:32px;letter-spacing:0}.text-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:20px;line-height:30px;letter-spacing:0}.text-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:18px;line-height:28px;letter-spacing:0}.text-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:24px;letter-spacing:0}.text-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:20px;letter-spacing:0}.text-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:12px;line-height:18px;letter-spacing:0}.text-weight-regular{font-weight:400;font-style:normal}.text-weight-medium{font-weight:500;font-style:normal}.text-weight-semibold{font-weight:600;font-style:normal}.text-weight-bold{font-weight:700;font-style:normal}@media (max-width: 768px){.text-display-2xl{font-size:48px;line-height:56px}.text-display-xl{font-size:40px;line-height:48px}.text-display-lg{font-size:32px;line-height:40px}}.button-2xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:60px;padding:0 28px}.button-2xl zen-icon{color:inherit;background-color:currentColor}.button-2xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-2xl:disabled{cursor:not-allowed}.button-2xl.full-width{width:100%;justify-content:center}.button-2xl.button-icon-only{padding:0;justify-content:center}.button-2xl.button-icon-only{width:60px;padding:0}.button-xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:48px;padding:0 20px}.button-xl zen-icon{color:inherit;background-color:currentColor}.button-xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-xl:disabled{cursor:not-allowed}.button-xl.full-width{width:100%;justify-content:center}.button-xl.button-icon-only{padding:0;justify-content:center}.button-xl.button-icon-only{width:48px;padding:0}.button-lg{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:44px;padding:0 18px}.button-lg zen-icon{color:inherit;background-color:currentColor}.button-lg .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-lg:disabled{cursor:not-allowed}.button-lg.full-width{width:100%;justify-content:center}.button-lg.button-icon-only{padding:0;justify-content:center}.button-lg.button-icon-only{width:44px;padding:0}.button-md{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:40px;padding:0 16px}.button-md zen-icon{color:inherit;background-color:currentColor}.button-md .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-md:disabled{cursor:not-allowed}.button-md.full-width{width:100%;justify-content:center}.button-md.button-icon-only{padding:0;justify-content:center}.button-md.button-icon-only{width:40px;padding:0}.button-sm{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:36px;padding:0 14px}.button-sm zen-icon{color:inherit;background-color:currentColor}.button-sm .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-sm:disabled{cursor:not-allowed}.button-sm.full-width{width:100%;justify-content:center}.button-sm.button-icon-only{padding:0;justify-content:center}.button-sm.button-icon-only{width:36px;padding:0}.button-base{background:#136AB6;color:#fff;border:1px solid #136AB6;box-shadow:0 1px 2px #1018280d}.button-base:hover:not(:disabled){background:#105494;border-color:#105494}.button-base:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-base.destructive{background:#D92D20;border-color:#d92d20}.button-base.destructive:hover:not(:disabled){background:#B42318;border-color:#b42318}.button-base.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-base.destructive:disabled{background:#FECDCA;border-color:#fecdca;color:#fff}.button-base:disabled{background:#C0DDF7;border-color:#c0ddf7;color:#fff}.button-secondary-gray{background:#FFFFFF;color:#344054;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d}.button-secondary-gray:hover:not(:disabled){background:#F9FAFB;color:#1d2939}.button-secondary-gray:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #f2f4f7}.button-secondary-gray.destructive{color:#b42318}.button-secondary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-secondary-gray.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-gray.destructive:disabled{background:#FFFFFF;border-color:#eaecf0;color:#fda29b}.button-secondary-gray:disabled{background:#FFFFFF;border-color:#eaecf0;color:#d0d5dd}.button-secondary-color{background:#F1F7FE;color:#105494;border:1px solid #F1F7FE;box-shadow:0 1px 2px #1018280d}.button-secondary-color:hover:not(:disabled){background:#E3EEFB;border-color:#e3eefb}.button-secondary-color:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-secondary-color.destructive{background:#FEF3F2;color:#b42318;border-color:#fef3f2}.button-secondary-color.destructive:hover:not(:disabled){background:#FEE4E2;border-color:#fee4e2}.button-secondary-color.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-color.destructive:disabled{background:#FFFBFA;border-color:#fffbfa;color:#fda29b}.button-secondary-color:disabled{background:#FAFDFF;border-color:#fafdff;color:#88c1f1}.button-tertiary-gray{background:transparent;color:#667085;border:1px solid transparent}.button-tertiary-gray:hover:not(:disabled){background:#F9FAFB;color:#475467}.button-tertiary-gray:focus:not(:disabled){outline:none;background:#F9FAFB}.button-tertiary-gray.destructive{color:#b42318}.button-tertiary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-gray.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-gray.destructive:disabled{color:#fda29b}.button-tertiary-gray:disabled{color:#d0d5dd}.button-tertiary-color{background:transparent;color:#105494;border:1px solid transparent}.button-tertiary-color:hover:not(:disabled){background:#F1F7FE}.button-tertiary-color:focus:not(:disabled){outline:none;background:#F1F7FE}.button-tertiary-color.destructive{color:#b42318}.button-tertiary-color.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-color.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-color.destructive:disabled{color:#fda29b}.button-tertiary-color:disabled{color:#d0d5dd}.button-link-gray{background:transparent;color:#475467;border:none;text-decoration:none}.button-link-gray:hover:not(:disabled){color:#344054}.button-link-gray:focus:not(:disabled){outline:none}.button-link-gray.destructive{color:#b42318}.button-link-gray.destructive:hover:not(:disabled){color:#912018}.button-link-gray.destructive:disabled{color:#fda29b}.button-link-gray:disabled{color:#d0d5dd}.button-link-color{background:transparent;color:#105494;border:none;text-decoration:none}.button-link-color:hover:not(:disabled){color:#12497a}.button-link-color:focus:not(:disabled){outline:none}.button-link-color.destructive{color:#b42318}.button-link-color.destructive:hover:not(:disabled){color:#912018}.button-link-color.destructive:disabled{color:#fda29b}.button-link-color:disabled{color:#d0d5dd}\n"] }]
1783
+ }], propDecorators: { variant: [{
1784
+ type: Input
1785
+ }], buttonType: [{
1786
+ type: Input
1787
+ }], icon: [{
1788
+ type: Input
1789
+ }], size: [{
1790
+ type: Input
1791
+ }], destructive: [{
1792
+ type: Input
1793
+ }], disabled: [{
1794
+ type: Input
1795
+ }], fullWidth: [{
1796
+ type: Input
1797
+ }], type: [{
1798
+ type: Input
1799
+ }] } });
1800
+
1708
1801
  class ZenduFilterComponent {
1709
1802
  constructor(renderer) {
1710
1803
  this.renderer = renderer;
@@ -2440,10 +2533,10 @@ class ZenduFilterComponent {
2440
2533
  }
2441
2534
  }
2442
2535
  ZenduFilterComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduFilterComponent, deps: [{ token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
2443
- ZenduFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduFilterComponent, selector: "zen-filter", inputs: { config: "config", filter: "filter", position: "position", resetBehavior: "resetBehavior", isVisible: "isVisible", customTrigger: "customTrigger", imageUrl: "imageUrl", label: "label", showOptions: "showOptions", customOptions: "customOptions", wrapperBodyClass: "wrapperBodyClass", customPosition: "customPosition" }, outputs: { filterChange: "filterChange", isVisibleChange: "isVisibleChange" }, host: { listeners: { "window:mousedown": "outsideHandling($event)", "window:resize": "windowSizeHandling($event)", "window:scroll": "windowScroll($event)", "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "_componentElement", first: true, predicate: ["mainComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"filters-component\"\n #mainComponent\n click-out=\"isVisible && hide()\">\n\n <ng-container *ngIf=\"!customTrigger\">\n <button (click)=\"toggle()\"\n class=\"button-stroked filter {{isApplied ? 'applied' : ''}}\">\n <zen-icon [src]=\"imageUrl\"\n *ngIf=\"imageUrl\"></zen-icon>\n <i class=\"filter-icon material-icons\"\n *ngIf=\"!imageUrl\">filter_list</i>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n </button>\n </ng-container>\n\n <ng-content *ngIf=\"customTrigger\"></ng-content>\n\n <div [hidden]=\"!isVisible\"\n class=\"action-menu menu-content\"\n [class.customTrigger]=\"customTrigger\"\n [ngStyle]=\"{ 'left': menuLeft, 'right': menuRight, 'top': menuTop, 'bottom': menuBottom }\">\n <div class=\"action-menu-header\">\n <zen-search-box [(text)]=\"searchText\"\n #searchBox\n (textChange)=\"searchTextChanged()\"></zen-search-box>\n </div>\n\n <div class=\"action-menu-body items-wrapper\"\n ngClass=\"{{wrapperBodyClass}}\">\n <ng-container *ngIf=\"errorMessage.length\">\n <li *ngFor=\"let item of errorMessage\"\n class=\"error-msg\">{{item | translate }}</li>\n </ng-container>\n\n <div *ngFor=\"let item of config.items\">\n <div class=\"menu-item\"\n *ngIf=\"isMenuIsVisible(item)\">\n\n <!-- Divider between two filter -->\n <div *ngIf=\"item.type === 'divider'\">\n <p class=\"filter-divider\"></p>\n </div>\n\n <!-- Boolean toggle -->\n <div *ngIf=\"item.type === 'toggle'\"\n class=\"action-item toggle-row\">\n <div>{{item.title | translate}}</div>\n <zen-toggle-slide [(enabled)]=\"item.enabled\"></zen-toggle-slide>\n </div>\n\n <button class=\"action-item expander-item\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && !item.disableCollapse\"\n (click)=\"toggleItem(item)\">\n <span class=\"expander-title\">{{item.title | translate}}</span>\n <i class=\"material-icons expand-icon\"\n [ngClass]=\"{'active': item.expanded}\">expand_more</i>\n </button>\n\n <div class=\"action-item section-title\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && item.disableCollapse\">\n {{item.title | translate}}\n </div>\n\n <ng-container *ngIf=\"item.expanded || item.disableCollapse\">\n <div [ngSwitch]=\"item.type\">\n <!-- Multiselect -->\n <div *ngSwitchCase=\"'multiselect'\">\n <!-- Lazy loading mode -->\n <ng-container *ngIf=\"item.isLazyLoading\">\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n <div *ngIf=\"item.canLoadMore && !item.isLoadingNow\"\n class=\"action-item\">\n <button (click)=\"loadMore(item, false)\"\n class=\"button-stroked full-width\">\n {{'Load More' | translate}}\n </button>\n </div>\n <div *ngIf=\"item.isLoadingNow\"\n class=\"loader-more-spinner\">\n <zen-spinner size=\"small\"></zen-spinner>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!item.isLazyLoading && !hasTreeData(item)\">\n <div class=\"action-item-checkbox ds-item select-all\" *ngIf=\"!item.hideSelectAll\">\n <zen-checkbox *ngIf=\"item.dataSource.length === item.filteredDataSource.length\"\n [(checked)]=\"item.isSelectedAll\"\n [indeterminate]=\"isItemActive(item) && !item.isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll(item)\">\n </zen-checkbox>\n </div>\n\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n </ng-container>\n\n <!-- Tree view mode -->\n <zen-groups *ngIf=\"!item.isLazyLoading && hasTreeData(item)\"\n [dataSource]=\"item.dataSource\"\n [filteredDataSource]=\"item.filteredDataSource\"\n [hideSelectAll]=\"item.hideSelectAll\"\n [inline]=\"true\"\n [hideSearch]=\"true\"\n [(isSelectedAll)]=\"item.isSelectedAll\"\n (checkedChange)=\"checkChanged($event, item)\">\n </zen-groups>\n </div>\n\n <!-- Date range picker -->\n <div *ngSwitchCase=\"'dateRange'\">\n <!-- Options date range view -->\n <ng-container *ngIf=\"item.dateRangeOptions?.length\">\n <ng-container *ngFor=\"let option of item.dateRangeOptions\">\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.name\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === option.name\"\n (radioChange)=\"handleDateRangeOptionClick(item, option)\"></zen-radio>\n </div>\n </ng-container>\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"'Custom'\"\n [label]=\"'Custom' | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === 'Custom'\"\n (radioChange)=\"handleCustomDateRangeClick(item)\"></zen-radio>\n </div>\n <ng-container *ngIf=\"selectedDateRangeOptions[item.key] === 'Custom'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Default date range view -->\n <ng-container *ngIf=\"!item.dateRangeOptions?.length\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </div>\n\n <!-- Date picker -->\n <div *ngSwitchCase=\"'date'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'Date' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.date\"\n [showTime]=\"item.showTime\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </div>\n\n <!-- Number range -->\n <div *ngSwitchCase=\"'numberRange'\"\n class=\"filter-row number-range-row\">\n <div>\n <div class=\"lbl\">{{'Min' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.from\"\n type=\"number\" />\n </div>\n <div>\n <div class=\"lbl\">{{'Max' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.to\"\n type=\"number\" />\n </div>\n </div>\n\n <!-- Radio -->\n <div *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of item.radioOptions\"\n class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.id\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [imageUrl]=\"option.imageUrl\"\n [selected]=\"option.selected\"\n (radioChange)=\"radioChanged($event, item)\"\n [disabled]=\"option.disabled\"></zen-radio>\n </div>\n </div>\n </div>\n </ng-container>\n\n </div>\n </div>\n <span *ngIf=\"showNoFilterResult\"\n class=\"no-item\">{{'No Results Found' | translate}}..</span>\n </div>\n\n <div class=\"action-menu-footer filter-footer\">\n <span class=\"selected-count\" *ngIf=\"hasMultiselectItems\">{{ selectedCount }} {{'Selected' | translate}}</span>\n <div class=\"filter-footer-actions\">\n <button (click)=\"reset()\"\n class=\"filter-btn-clear\"\n [class.has-selection]=\"selectedCount > 0 && hasMultiselectItems\">\n {{'Clear Filter' | translate}}\n </button>\n <button (click)=\"apply()\"\n class=\"filter-btn-apply\">\n {{'Apply' | translate}}\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".filters-component{display:inline-block;position:relative}.filters-component .filter{color:#828282;position:relative;border-color:#ececed;padding:0 7px;height:38px}.filters-component .filter zen-icon{background:#828282}.filters-component .filter.applied{color:var(--color-primary, #2188d9);background:#f4f9fd;border:1px solid var(--color-primary, #2188d9)}.filters-component .filter.applied zen-icon{background:var(--color-primary, #2188d9)}.filters-component .filter .dot{background:var(--color-primary, #2188d9);width:4px;height:4px;position:absolute;border-radius:50%;left:42px;top:9px}.filters-component .menu-content{width:360px;white-space:initial;position:fixed}.filters-component .menu-content.absolute{position:absolute;inset:auto}.filters-component .menu-content.dropdown-left{right:0}.filters-component .menu-content.dropdown-right{left:0}.filters-component .menu-content.dropdown-top{bottom:100%;margin-bottom:8px}.filters-component .menu-content.dropdown-bottom{top:100%;margin-top:8px}.filters-component .menu-content.customTrigger{top:30px}.filters-component .menu-content .items-wrapper{overflow-y:auto;max-height:calc(100vh - 407px);position:relative;padding:8px 0}.filters-component .menu-content .items-wrapper .action-item,.filters-component .menu-content .items-wrapper .action-item-checkbox,.filters-component .menu-content .items-wrapper .action-item-radio{font-weight:500;font-size:14px;line-height:20px;color:#344054;padding:0 24px}.filters-component .menu-content .items-wrapper .action-item:hover,.filters-component .menu-content .items-wrapper .action-item-checkbox:hover,.filters-component .menu-content .items-wrapper .action-item-radio:hover{background:transparent}.filters-component .menu-content .items-wrapper .expander-item{outline:none;border:none;display:flex;width:100%;justify-content:space-between;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#344054;background:transparent;padding:12px 24px}.filters-component .menu-content .items-wrapper .expander-item .expander-title{flex:1;text-align:left}.filters-component .menu-content .items-wrapper .expander-item.expanded,.filters-component .menu-content .items-wrapper .expander-item.active{background:transparent;color:#344054}.filters-component .menu-content .items-wrapper .expander-item:hover{background:transparent}.filters-component .menu-content .items-wrapper .expand-icon{transition:.3s;font-size:20px;color:#667085}.filters-component .menu-content .items-wrapper .expand-icon.active{transform:rotate(180deg)}.filters-component .menu-content .items-wrapper .ds-item{padding-left:32px}.filters-component .menu-content .items-wrapper .no-item,.filters-component .menu-content .items-wrapper .error-msg{color:#dc3e33;display:flex;flex-direction:row;align-items:center;padding:10px 24px;font-weight:400;font-size:14px}.filters-component .menu-content .items-wrapper .select-all{font-weight:500}.filters-component .menu-content .items-wrapper .filter-row{padding:0 24px}.filters-component .menu-content .items-wrapper .filter-row:not(:last-of-type){margin-bottom:20px}.filters-component .menu-content .items-wrapper .filter-row .lbl{color:#344054;font-size:14px;font-weight:500;margin-bottom:8px}.filters-component .menu-content .items-wrapper .filter-row:focus-within .lbl{color:var(--color-primary, #2188d9)}.filters-component .menu-content .items-wrapper .number-range-row{display:flex;margin-left:32px;gap:16px;margin-bottom:10px}.filters-component .menu-content .items-wrapper .toggle-row{justify-content:space-between}.filters-component .filter-footer{justify-content:space-between;padding:16px 24px;border-top:1px solid #eaecf0}.filters-component .filter-footer .selected-count{font-weight:500;font-size:14px;line-height:20px;color:#1d2939}.filters-component .filter-footer .filter-footer-actions{display:flex;gap:12px}.filters-component .filter-footer .filter-btn-clear{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:#ffffff;border:1px solid #eaecf0;box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#d0d5dd;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-clear:hover{background:#f9fafb;color:#98a2b3}.filters-component .filter-footer .filter-btn-clear.has-selection{border-color:#fda29b;color:#b42318}.filters-component .filter-footer .filter-btn-clear.has-selection:hover{background:#fef3f2;color:#912018}.filters-component .filter-footer .filter-btn-apply{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:var(--color-primary, #2188d9);border:1px solid var(--color-primary, #2188d9);box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#fff;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-apply:hover{background:var(--color-blue-shade-1, #0d74c5);border-color:var(--color-blue-shade-1, #0d74c5)}.filters-component .section-title{font-weight:500;font-size:14px;line-height:20px;color:#344054;cursor:default;padding:12px 24px}.filters-component .section-title:hover{background:transparent}.filters-component .has-badge zen-checkbox{width:auto}.filters-component .filter-item-badge{font-weight:500;font-size:14px;line-height:20px;padding:2px 10px;border-radius:16px;white-space:nowrap}.filters-component .loader-more-spinner{display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}.hidden{display:none}:host ::ng-deep zen-radio label{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ZenduCheckboxComponent, selector: "zen-checkbox", inputs: ["checked", "label", "labelColor", "disabled", "disableValueChange", "indeterminate", "imageUrl", "size", "supportingText"], outputs: ["checkedChange"] }, { kind: "component", type: ZenduToggleSlideComponent, selector: "zen-toggle-slide", inputs: ["enabled", "disabled"], outputs: ["enabledChange"] }, { kind: "component", type: ZenduSearchBoxComponent, selector: "zen-search-box", inputs: ["text", "delay", "autoFocus", "disabled", "placeholder"], outputs: ["textChange"] }, { kind: "component", type: ZenduDatepickerComponent, selector: "zen-datepicker", inputs: ["date", "showTime", "showSeconds", "showDate", "parentContainer", "containerClass", "minDate", "maxDate", "boxDesign", "highlightDays", "autoConfirm", "hint", "highlightError", "disabled", "readonly", "xPosition", "yPosition", "dispalyOverParent"], outputs: ["dateChange"] }, { kind: "component", type: ZenduGroupsComponent, selector: "zen-groups", inputs: ["dataSource", "filteredDataSource", "hideSelectAll", "isSelectedAll", "inline", "width", "placeholder", "hideSearch", "idProp", "displayProp"], outputs: ["isSelectedAllChange", "checkedChange"] }, { kind: "component", type: ZenduRadioButtonComponent, selector: "zen-radio", inputs: ["selected", "label", "value", "name", "disabled", "imageUrl", "size", "supportingText"], outputs: ["radioChange"] }, { kind: "component", type: ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }, { kind: "component", type: ZenduSpinner, selector: "zen-spinner", inputs: ["size"] }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] });
2536
+ ZenduFilterComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduFilterComponent, selector: "zen-filter", inputs: { config: "config", filter: "filter", position: "position", resetBehavior: "resetBehavior", isVisible: "isVisible", customTrigger: "customTrigger", imageUrl: "imageUrl", label: "label", showOptions: "showOptions", customOptions: "customOptions", wrapperBodyClass: "wrapperBodyClass", customPosition: "customPosition" }, outputs: { filterChange: "filterChange", isVisibleChange: "isVisibleChange" }, host: { listeners: { "window:mousedown": "outsideHandling($event)", "window:resize": "windowSizeHandling($event)", "window:scroll": "windowScroll($event)", "window:keydown": "onWindowKeyDown($event)" } }, viewQueries: [{ propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true }, { propertyName: "_componentElement", first: true, predicate: ["mainComponent"], descendants: true }], usesOnChanges: true, ngImport: i0, template: "<div class=\"filters-component\"\n #mainComponent\n click-out=\"isVisible && hide()\">\n\n <ng-container *ngIf=\"!customTrigger\">\n <zen-button (click)=\"toggle()\"\n [variant]=\"isApplied ? 'secondary' : 'secondary-gray'\"\n class=\"filter {{isApplied ? 'applied' : ''}}\">\n <zen-icon [src]=\"imageUrl\"\n *ngIf=\"imageUrl\"></zen-icon>\n <i class=\"filter-icon material-icons\"\n *ngIf=\"!imageUrl\">filter_list</i>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n </zen-button>\n </ng-container>\n\n <ng-content *ngIf=\"customTrigger\"></ng-content>\n\n <div [hidden]=\"!isVisible\"\n class=\"action-menu menu-content\"\n [class.customTrigger]=\"customTrigger\"\n [ngStyle]=\"{ 'left': menuLeft, 'right': menuRight, 'top': menuTop, 'bottom': menuBottom }\">\n <div class=\"action-menu-header\">\n <zen-search-box [(text)]=\"searchText\"\n #searchBox\n (textChange)=\"searchTextChanged()\"></zen-search-box>\n </div>\n\n <div class=\"action-menu-body items-wrapper\"\n ngClass=\"{{wrapperBodyClass}}\">\n <ng-container *ngIf=\"errorMessage.length\">\n <li *ngFor=\"let item of errorMessage\"\n class=\"error-msg\">{{item | translate }}</li>\n </ng-container>\n\n <div *ngFor=\"let item of config.items\">\n <div class=\"menu-item\"\n *ngIf=\"isMenuIsVisible(item)\">\n\n <!-- Divider between two filter -->\n <div *ngIf=\"item.type === 'divider'\">\n <p class=\"filter-divider\"></p>\n </div>\n\n <!-- Boolean toggle -->\n <div *ngIf=\"item.type === 'toggle'\"\n class=\"action-item toggle-row\">\n <div>{{item.title | translate}}</div>\n <zen-toggle-slide [(enabled)]=\"item.enabled\"></zen-toggle-slide>\n </div>\n\n <button class=\"action-item expander-item\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && !item.disableCollapse\"\n (click)=\"toggleItem(item)\">\n <span class=\"expander-title\">{{item.title | translate}}</span>\n <i class=\"material-icons expand-icon\"\n [ngClass]=\"{'active': item.expanded}\">expand_more</i>\n </button>\n\n <div class=\"action-item section-title\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && item.disableCollapse\">\n {{item.title | translate}}\n </div>\n\n <ng-container *ngIf=\"item.expanded || item.disableCollapse\">\n <div [ngSwitch]=\"item.type\">\n <!-- Multiselect -->\n <div *ngSwitchCase=\"'multiselect'\">\n <!-- Lazy loading mode -->\n <ng-container *ngIf=\"item.isLazyLoading\">\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n <div *ngIf=\"item.canLoadMore && !item.isLoadingNow\"\n class=\"action-item\">\n <button (click)=\"loadMore(item, false)\"\n class=\"button-stroked full-width\">\n {{'Load More' | translate}}\n </button>\n </div>\n <div *ngIf=\"item.isLoadingNow\"\n class=\"loader-more-spinner\">\n <zen-spinner size=\"small\"></zen-spinner>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!item.isLazyLoading && !hasTreeData(item)\">\n <div class=\"action-item-checkbox ds-item select-all\" *ngIf=\"!item.hideSelectAll\">\n <zen-checkbox *ngIf=\"item.dataSource.length === item.filteredDataSource.length\"\n [(checked)]=\"item.isSelectedAll\"\n [indeterminate]=\"isItemActive(item) && !item.isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll(item)\">\n </zen-checkbox>\n </div>\n\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n </ng-container>\n\n <!-- Tree view mode -->\n <zen-groups *ngIf=\"!item.isLazyLoading && hasTreeData(item)\"\n [dataSource]=\"item.dataSource\"\n [filteredDataSource]=\"item.filteredDataSource\"\n [hideSelectAll]=\"item.hideSelectAll\"\n [inline]=\"true\"\n [hideSearch]=\"true\"\n [(isSelectedAll)]=\"item.isSelectedAll\"\n (checkedChange)=\"checkChanged($event, item)\">\n </zen-groups>\n </div>\n\n <!-- Date range picker -->\n <div *ngSwitchCase=\"'dateRange'\">\n <!-- Options date range view -->\n <ng-container *ngIf=\"item.dateRangeOptions?.length\">\n <ng-container *ngFor=\"let option of item.dateRangeOptions\">\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.name\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === option.name\"\n (radioChange)=\"handleDateRangeOptionClick(item, option)\"></zen-radio>\n </div>\n </ng-container>\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"'Custom'\"\n [label]=\"'Custom' | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === 'Custom'\"\n (radioChange)=\"handleCustomDateRangeClick(item)\"></zen-radio>\n </div>\n <ng-container *ngIf=\"selectedDateRangeOptions[item.key] === 'Custom'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Default date range view -->\n <ng-container *ngIf=\"!item.dateRangeOptions?.length\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </div>\n\n <!-- Date picker -->\n <div *ngSwitchCase=\"'date'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'Date' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.date\"\n [showTime]=\"item.showTime\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </div>\n\n <!-- Number range -->\n <div *ngSwitchCase=\"'numberRange'\"\n class=\"filter-row number-range-row\">\n <div>\n <div class=\"lbl\">{{'Min' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.from\"\n type=\"number\" />\n </div>\n <div>\n <div class=\"lbl\">{{'Max' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.to\"\n type=\"number\" />\n </div>\n </div>\n\n <!-- Radio -->\n <div *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of item.radioOptions\"\n class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.id\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [imageUrl]=\"option.imageUrl\"\n [selected]=\"option.selected\"\n (radioChange)=\"radioChanged($event, item)\"\n [disabled]=\"option.disabled\"></zen-radio>\n </div>\n </div>\n </div>\n </ng-container>\n\n </div>\n </div>\n <span *ngIf=\"showNoFilterResult\"\n class=\"no-item\">{{'No Results Found' | translate}}..</span>\n </div>\n\n <div class=\"action-menu-footer filter-footer\">\n <span class=\"selected-count\" *ngIf=\"hasMultiselectItems\">{{ selectedCount }} {{'Selected' | translate}}</span>\n <div class=\"filter-footer-actions\">\n <button (click)=\"reset()\"\n class=\"filter-btn-clear\"\n [class.has-selection]=\"selectedCount > 0 && hasMultiselectItems\">\n {{'Clear Filter' | translate}}\n </button>\n <button (click)=\"apply()\"\n class=\"filter-btn-apply\">\n {{'Apply' | translate}}\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".filters-component{display:inline-block;position:relative}.filters-component .menu-content{width:360px;white-space:initial;position:fixed}.filters-component .menu-content.absolute{position:absolute;inset:auto}.filters-component .menu-content.dropdown-left{right:0}.filters-component .menu-content.dropdown-right{left:0}.filters-component .menu-content.dropdown-top{bottom:100%;margin-bottom:8px}.filters-component .menu-content.dropdown-bottom{top:100%;margin-top:8px}.filters-component .menu-content.customTrigger{top:30px}.filters-component .menu-content .items-wrapper{overflow-y:auto;max-height:calc(100vh - 407px);position:relative;padding:8px 0}.filters-component .menu-content .items-wrapper .action-item,.filters-component .menu-content .items-wrapper .action-item-checkbox,.filters-component .menu-content .items-wrapper .action-item-radio{font-weight:500;font-size:14px;line-height:20px;color:#344054;padding:0 24px}.filters-component .menu-content .items-wrapper .action-item:hover,.filters-component .menu-content .items-wrapper .action-item-checkbox:hover,.filters-component .menu-content .items-wrapper .action-item-radio:hover{background:transparent}.filters-component .menu-content .items-wrapper .expander-item{outline:none;border:none;display:flex;width:100%;justify-content:space-between;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#344054;background:transparent;padding:12px 24px}.filters-component .menu-content .items-wrapper .expander-item .expander-title{flex:1;text-align:left}.filters-component .menu-content .items-wrapper .expander-item.expanded,.filters-component .menu-content .items-wrapper .expander-item.active{background:transparent;color:#344054}.filters-component .menu-content .items-wrapper .expander-item:hover{background:transparent}.filters-component .menu-content .items-wrapper .expand-icon{transition:.3s;font-size:20px;color:#667085}.filters-component .menu-content .items-wrapper .expand-icon.active{transform:rotate(180deg)}.filters-component .menu-content .items-wrapper .ds-item{padding-left:32px}.filters-component .menu-content .items-wrapper .no-item,.filters-component .menu-content .items-wrapper .error-msg{color:#dc3e33;display:flex;flex-direction:row;align-items:center;padding:10px 24px;font-weight:400;font-size:14px}.filters-component .menu-content .items-wrapper .select-all{font-weight:500}.filters-component .menu-content .items-wrapper .filter-row{padding:0 24px}.filters-component .menu-content .items-wrapper .filter-row:not(:last-of-type){margin-bottom:20px}.filters-component .menu-content .items-wrapper .filter-row .lbl{color:#344054;font-size:14px;font-weight:500;margin-bottom:8px}.filters-component .menu-content .items-wrapper .filter-row:focus-within .lbl{color:var(--color-primary, #2188d9)}.filters-component .menu-content .items-wrapper .number-range-row{display:flex;margin-left:32px;gap:16px;margin-bottom:10px}.filters-component .menu-content .items-wrapper .toggle-row{justify-content:space-between}.filters-component .filter-footer{justify-content:space-between;padding:16px 24px;border-top:1px solid #eaecf0}.filters-component .filter-footer .selected-count{font-weight:500;font-size:14px;line-height:20px;color:#1d2939}.filters-component .filter-footer .filter-footer-actions{display:flex;gap:12px}.filters-component .filter-footer .filter-btn-clear{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:#ffffff;border:1px solid #eaecf0;box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#d0d5dd;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-clear:hover{background:#f9fafb;color:#98a2b3}.filters-component .filter-footer .filter-btn-clear.has-selection{border-color:#fda29b;color:#b42318}.filters-component .filter-footer .filter-btn-clear.has-selection:hover{background:#fef3f2;color:#912018}.filters-component .filter-footer .filter-btn-apply{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:var(--color-primary, #2188d9);border:1px solid var(--color-primary, #2188d9);box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#fff;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-apply:hover{background:var(--color-blue-shade-1, #0d74c5);border-color:var(--color-blue-shade-1, #0d74c5)}.filters-component .section-title{font-weight:500;font-size:14px;line-height:20px;color:#344054;cursor:default;padding:12px 24px}.filters-component .section-title:hover{background:transparent}.filters-component .has-badge zen-checkbox{width:auto}.filters-component .filter-item-badge{font-weight:500;font-size:14px;line-height:20px;padding:2px 10px;border-radius:16px;white-space:nowrap}.filters-component .loader-more-spinner{display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}.hidden{display:none}:host ::ng-deep zen-radio label{margin:0}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i1.NgSwitch, selector: "[ngSwitch]", inputs: ["ngSwitch"] }, { kind: "directive", type: i1.NgSwitchCase, selector: "[ngSwitchCase]", inputs: ["ngSwitchCase"] }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NumberValueAccessor, selector: "input[type=number][formControlName],input[type=number][formControl],input[type=number][ngModel]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: ZenduCheckboxComponent, selector: "zen-checkbox", inputs: ["checked", "label", "labelColor", "disabled", "disableValueChange", "indeterminate", "imageUrl", "size", "supportingText"], outputs: ["checkedChange"] }, { kind: "component", type: ZenduToggleSlideComponent, selector: "zen-toggle-slide", inputs: ["enabled", "disabled"], outputs: ["enabledChange"] }, { kind: "component", type: ZenduSearchBoxComponent, selector: "zen-search-box", inputs: ["text", "delay", "autoFocus", "disabled", "placeholder"], outputs: ["textChange"] }, { kind: "component", type: ZenduDatepickerComponent, selector: "zen-datepicker", inputs: ["date", "showTime", "showSeconds", "showDate", "parentContainer", "containerClass", "minDate", "maxDate", "boxDesign", "highlightDays", "autoConfirm", "hint", "highlightError", "disabled", "readonly", "xPosition", "yPosition", "dispalyOverParent"], outputs: ["dateChange"] }, { kind: "component", type: ZenduGroupsComponent, selector: "zen-groups", inputs: ["dataSource", "filteredDataSource", "hideSelectAll", "isSelectedAll", "inline", "width", "placeholder", "hideSearch", "idProp", "displayProp"], outputs: ["isSelectedAllChange", "checkedChange"] }, { kind: "component", type: ZenduRadioButtonComponent, selector: "zen-radio", inputs: ["selected", "label", "value", "name", "disabled", "imageUrl", "size", "supportingText"], outputs: ["radioChange"] }, { kind: "component", type: ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }, { kind: "component", type: ZenduSpinner, selector: "zen-spinner", inputs: ["size"] }, { kind: "component", type: ZenButtonComponent, selector: "zen-button", inputs: ["variant", "buttonType", "icon", "size", "destructive", "disabled", "fullWidth", "type"] }, { kind: "pipe", type: i2$1.TranslatePipe, name: "translate" }] });
2444
2537
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduFilterComponent, decorators: [{
2445
2538
  type: Component,
2446
- args: [{ selector: 'zen-filter', template: "<div class=\"filters-component\"\n #mainComponent\n click-out=\"isVisible && hide()\">\n\n <ng-container *ngIf=\"!customTrigger\">\n <button (click)=\"toggle()\"\n class=\"button-stroked filter {{isApplied ? 'applied' : ''}}\">\n <zen-icon [src]=\"imageUrl\"\n *ngIf=\"imageUrl\"></zen-icon>\n <i class=\"filter-icon material-icons\"\n *ngIf=\"!imageUrl\">filter_list</i>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n </button>\n </ng-container>\n\n <ng-content *ngIf=\"customTrigger\"></ng-content>\n\n <div [hidden]=\"!isVisible\"\n class=\"action-menu menu-content\"\n [class.customTrigger]=\"customTrigger\"\n [ngStyle]=\"{ 'left': menuLeft, 'right': menuRight, 'top': menuTop, 'bottom': menuBottom }\">\n <div class=\"action-menu-header\">\n <zen-search-box [(text)]=\"searchText\"\n #searchBox\n (textChange)=\"searchTextChanged()\"></zen-search-box>\n </div>\n\n <div class=\"action-menu-body items-wrapper\"\n ngClass=\"{{wrapperBodyClass}}\">\n <ng-container *ngIf=\"errorMessage.length\">\n <li *ngFor=\"let item of errorMessage\"\n class=\"error-msg\">{{item | translate }}</li>\n </ng-container>\n\n <div *ngFor=\"let item of config.items\">\n <div class=\"menu-item\"\n *ngIf=\"isMenuIsVisible(item)\">\n\n <!-- Divider between two filter -->\n <div *ngIf=\"item.type === 'divider'\">\n <p class=\"filter-divider\"></p>\n </div>\n\n <!-- Boolean toggle -->\n <div *ngIf=\"item.type === 'toggle'\"\n class=\"action-item toggle-row\">\n <div>{{item.title | translate}}</div>\n <zen-toggle-slide [(enabled)]=\"item.enabled\"></zen-toggle-slide>\n </div>\n\n <button class=\"action-item expander-item\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && !item.disableCollapse\"\n (click)=\"toggleItem(item)\">\n <span class=\"expander-title\">{{item.title | translate}}</span>\n <i class=\"material-icons expand-icon\"\n [ngClass]=\"{'active': item.expanded}\">expand_more</i>\n </button>\n\n <div class=\"action-item section-title\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && item.disableCollapse\">\n {{item.title | translate}}\n </div>\n\n <ng-container *ngIf=\"item.expanded || item.disableCollapse\">\n <div [ngSwitch]=\"item.type\">\n <!-- Multiselect -->\n <div *ngSwitchCase=\"'multiselect'\">\n <!-- Lazy loading mode -->\n <ng-container *ngIf=\"item.isLazyLoading\">\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n <div *ngIf=\"item.canLoadMore && !item.isLoadingNow\"\n class=\"action-item\">\n <button (click)=\"loadMore(item, false)\"\n class=\"button-stroked full-width\">\n {{'Load More' | translate}}\n </button>\n </div>\n <div *ngIf=\"item.isLoadingNow\"\n class=\"loader-more-spinner\">\n <zen-spinner size=\"small\"></zen-spinner>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!item.isLazyLoading && !hasTreeData(item)\">\n <div class=\"action-item-checkbox ds-item select-all\" *ngIf=\"!item.hideSelectAll\">\n <zen-checkbox *ngIf=\"item.dataSource.length === item.filteredDataSource.length\"\n [(checked)]=\"item.isSelectedAll\"\n [indeterminate]=\"isItemActive(item) && !item.isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll(item)\">\n </zen-checkbox>\n </div>\n\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n </ng-container>\n\n <!-- Tree view mode -->\n <zen-groups *ngIf=\"!item.isLazyLoading && hasTreeData(item)\"\n [dataSource]=\"item.dataSource\"\n [filteredDataSource]=\"item.filteredDataSource\"\n [hideSelectAll]=\"item.hideSelectAll\"\n [inline]=\"true\"\n [hideSearch]=\"true\"\n [(isSelectedAll)]=\"item.isSelectedAll\"\n (checkedChange)=\"checkChanged($event, item)\">\n </zen-groups>\n </div>\n\n <!-- Date range picker -->\n <div *ngSwitchCase=\"'dateRange'\">\n <!-- Options date range view -->\n <ng-container *ngIf=\"item.dateRangeOptions?.length\">\n <ng-container *ngFor=\"let option of item.dateRangeOptions\">\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.name\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === option.name\"\n (radioChange)=\"handleDateRangeOptionClick(item, option)\"></zen-radio>\n </div>\n </ng-container>\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"'Custom'\"\n [label]=\"'Custom' | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === 'Custom'\"\n (radioChange)=\"handleCustomDateRangeClick(item)\"></zen-radio>\n </div>\n <ng-container *ngIf=\"selectedDateRangeOptions[item.key] === 'Custom'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Default date range view -->\n <ng-container *ngIf=\"!item.dateRangeOptions?.length\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </div>\n\n <!-- Date picker -->\n <div *ngSwitchCase=\"'date'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'Date' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.date\"\n [showTime]=\"item.showTime\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </div>\n\n <!-- Number range -->\n <div *ngSwitchCase=\"'numberRange'\"\n class=\"filter-row number-range-row\">\n <div>\n <div class=\"lbl\">{{'Min' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.from\"\n type=\"number\" />\n </div>\n <div>\n <div class=\"lbl\">{{'Max' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.to\"\n type=\"number\" />\n </div>\n </div>\n\n <!-- Radio -->\n <div *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of item.radioOptions\"\n class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.id\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [imageUrl]=\"option.imageUrl\"\n [selected]=\"option.selected\"\n (radioChange)=\"radioChanged($event, item)\"\n [disabled]=\"option.disabled\"></zen-radio>\n </div>\n </div>\n </div>\n </ng-container>\n\n </div>\n </div>\n <span *ngIf=\"showNoFilterResult\"\n class=\"no-item\">{{'No Results Found' | translate}}..</span>\n </div>\n\n <div class=\"action-menu-footer filter-footer\">\n <span class=\"selected-count\" *ngIf=\"hasMultiselectItems\">{{ selectedCount }} {{'Selected' | translate}}</span>\n <div class=\"filter-footer-actions\">\n <button (click)=\"reset()\"\n class=\"filter-btn-clear\"\n [class.has-selection]=\"selectedCount > 0 && hasMultiselectItems\">\n {{'Clear Filter' | translate}}\n </button>\n <button (click)=\"apply()\"\n class=\"filter-btn-apply\">\n {{'Apply' | translate}}\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".filters-component{display:inline-block;position:relative}.filters-component .filter{color:#828282;position:relative;border-color:#ececed;padding:0 7px;height:38px}.filters-component .filter zen-icon{background:#828282}.filters-component .filter.applied{color:var(--color-primary, #2188d9);background:#f4f9fd;border:1px solid var(--color-primary, #2188d9)}.filters-component .filter.applied zen-icon{background:var(--color-primary, #2188d9)}.filters-component .filter .dot{background:var(--color-primary, #2188d9);width:4px;height:4px;position:absolute;border-radius:50%;left:42px;top:9px}.filters-component .menu-content{width:360px;white-space:initial;position:fixed}.filters-component .menu-content.absolute{position:absolute;inset:auto}.filters-component .menu-content.dropdown-left{right:0}.filters-component .menu-content.dropdown-right{left:0}.filters-component .menu-content.dropdown-top{bottom:100%;margin-bottom:8px}.filters-component .menu-content.dropdown-bottom{top:100%;margin-top:8px}.filters-component .menu-content.customTrigger{top:30px}.filters-component .menu-content .items-wrapper{overflow-y:auto;max-height:calc(100vh - 407px);position:relative;padding:8px 0}.filters-component .menu-content .items-wrapper .action-item,.filters-component .menu-content .items-wrapper .action-item-checkbox,.filters-component .menu-content .items-wrapper .action-item-radio{font-weight:500;font-size:14px;line-height:20px;color:#344054;padding:0 24px}.filters-component .menu-content .items-wrapper .action-item:hover,.filters-component .menu-content .items-wrapper .action-item-checkbox:hover,.filters-component .menu-content .items-wrapper .action-item-radio:hover{background:transparent}.filters-component .menu-content .items-wrapper .expander-item{outline:none;border:none;display:flex;width:100%;justify-content:space-between;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#344054;background:transparent;padding:12px 24px}.filters-component .menu-content .items-wrapper .expander-item .expander-title{flex:1;text-align:left}.filters-component .menu-content .items-wrapper .expander-item.expanded,.filters-component .menu-content .items-wrapper .expander-item.active{background:transparent;color:#344054}.filters-component .menu-content .items-wrapper .expander-item:hover{background:transparent}.filters-component .menu-content .items-wrapper .expand-icon{transition:.3s;font-size:20px;color:#667085}.filters-component .menu-content .items-wrapper .expand-icon.active{transform:rotate(180deg)}.filters-component .menu-content .items-wrapper .ds-item{padding-left:32px}.filters-component .menu-content .items-wrapper .no-item,.filters-component .menu-content .items-wrapper .error-msg{color:#dc3e33;display:flex;flex-direction:row;align-items:center;padding:10px 24px;font-weight:400;font-size:14px}.filters-component .menu-content .items-wrapper .select-all{font-weight:500}.filters-component .menu-content .items-wrapper .filter-row{padding:0 24px}.filters-component .menu-content .items-wrapper .filter-row:not(:last-of-type){margin-bottom:20px}.filters-component .menu-content .items-wrapper .filter-row .lbl{color:#344054;font-size:14px;font-weight:500;margin-bottom:8px}.filters-component .menu-content .items-wrapper .filter-row:focus-within .lbl{color:var(--color-primary, #2188d9)}.filters-component .menu-content .items-wrapper .number-range-row{display:flex;margin-left:32px;gap:16px;margin-bottom:10px}.filters-component .menu-content .items-wrapper .toggle-row{justify-content:space-between}.filters-component .filter-footer{justify-content:space-between;padding:16px 24px;border-top:1px solid #eaecf0}.filters-component .filter-footer .selected-count{font-weight:500;font-size:14px;line-height:20px;color:#1d2939}.filters-component .filter-footer .filter-footer-actions{display:flex;gap:12px}.filters-component .filter-footer .filter-btn-clear{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:#ffffff;border:1px solid #eaecf0;box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#d0d5dd;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-clear:hover{background:#f9fafb;color:#98a2b3}.filters-component .filter-footer .filter-btn-clear.has-selection{border-color:#fda29b;color:#b42318}.filters-component .filter-footer .filter-btn-clear.has-selection:hover{background:#fef3f2;color:#912018}.filters-component .filter-footer .filter-btn-apply{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:var(--color-primary, #2188d9);border:1px solid var(--color-primary, #2188d9);box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#fff;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-apply:hover{background:var(--color-blue-shade-1, #0d74c5);border-color:var(--color-blue-shade-1, #0d74c5)}.filters-component .section-title{font-weight:500;font-size:14px;line-height:20px;color:#344054;cursor:default;padding:12px 24px}.filters-component .section-title:hover{background:transparent}.filters-component .has-badge zen-checkbox{width:auto}.filters-component .filter-item-badge{font-weight:500;font-size:14px;line-height:20px;padding:2px 10px;border-radius:16px;white-space:nowrap}.filters-component .loader-more-spinner{display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}.hidden{display:none}:host ::ng-deep zen-radio label{margin:0}\n"] }]
2539
+ args: [{ selector: 'zen-filter', template: "<div class=\"filters-component\"\n #mainComponent\n click-out=\"isVisible && hide()\">\n\n <ng-container *ngIf=\"!customTrigger\">\n <zen-button (click)=\"toggle()\"\n [variant]=\"isApplied ? 'secondary' : 'secondary-gray'\"\n class=\"filter {{isApplied ? 'applied' : ''}}\">\n <zen-icon [src]=\"imageUrl\"\n *ngIf=\"imageUrl\"></zen-icon>\n <i class=\"filter-icon material-icons\"\n *ngIf=\"!imageUrl\">filter_list</i>\n <span *ngIf=\"label\">{{ label | translate }}</span>\n </zen-button>\n </ng-container>\n\n <ng-content *ngIf=\"customTrigger\"></ng-content>\n\n <div [hidden]=\"!isVisible\"\n class=\"action-menu menu-content\"\n [class.customTrigger]=\"customTrigger\"\n [ngStyle]=\"{ 'left': menuLeft, 'right': menuRight, 'top': menuTop, 'bottom': menuBottom }\">\n <div class=\"action-menu-header\">\n <zen-search-box [(text)]=\"searchText\"\n #searchBox\n (textChange)=\"searchTextChanged()\"></zen-search-box>\n </div>\n\n <div class=\"action-menu-body items-wrapper\"\n ngClass=\"{{wrapperBodyClass}}\">\n <ng-container *ngIf=\"errorMessage.length\">\n <li *ngFor=\"let item of errorMessage\"\n class=\"error-msg\">{{item | translate }}</li>\n </ng-container>\n\n <div *ngFor=\"let item of config.items\">\n <div class=\"menu-item\"\n *ngIf=\"isMenuIsVisible(item)\">\n\n <!-- Divider between two filter -->\n <div *ngIf=\"item.type === 'divider'\">\n <p class=\"filter-divider\"></p>\n </div>\n\n <!-- Boolean toggle -->\n <div *ngIf=\"item.type === 'toggle'\"\n class=\"action-item toggle-row\">\n <div>{{item.title | translate}}</div>\n <zen-toggle-slide [(enabled)]=\"item.enabled\"></zen-toggle-slide>\n </div>\n\n <button class=\"action-item expander-item\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && !item.disableCollapse\"\n (click)=\"toggleItem(item)\">\n <span class=\"expander-title\">{{item.title | translate}}</span>\n <i class=\"material-icons expand-icon\"\n [ngClass]=\"{'active': item.expanded}\">expand_more</i>\n </button>\n\n <div class=\"action-item section-title\"\n *ngIf=\"item.type != 'toggle' && item.type != 'divider' && item.disableCollapse\">\n {{item.title | translate}}\n </div>\n\n <ng-container *ngIf=\"item.expanded || item.disableCollapse\">\n <div [ngSwitch]=\"item.type\">\n <!-- Multiselect -->\n <div *ngSwitchCase=\"'multiselect'\">\n <!-- Lazy loading mode -->\n <ng-container *ngIf=\"item.isLazyLoading\">\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n <div *ngIf=\"item.canLoadMore && !item.isLoadingNow\"\n class=\"action-item\">\n <button (click)=\"loadMore(item, false)\"\n class=\"button-stroked full-width\">\n {{'Load More' | translate}}\n </button>\n </div>\n <div *ngIf=\"item.isLoadingNow\"\n class=\"loader-more-spinner\">\n <zen-spinner size=\"small\"></zen-spinner>\n </div>\n </ng-container>\n\n <ng-container *ngIf=\"!item.isLazyLoading && !hasTreeData(item)\">\n <div class=\"action-item-checkbox ds-item select-all\" *ngIf=\"!item.hideSelectAll\">\n <zen-checkbox *ngIf=\"item.dataSource.length === item.filteredDataSource.length\"\n [(checked)]=\"item.isSelectedAll\"\n [indeterminate]=\"isItemActive(item) && !item.isSelectedAll\"\n [label]=\"'Select All' | translate\"\n (checkedChange)=\"onSelectAll(item)\">\n </zen-checkbox>\n </div>\n\n <div *ngFor=\"let dsItem of item.filteredDataSource\"\n class=\"action-item-checkbox ds-item\"\n [class.has-badge]=\"dsItem.badgeBgColor\">\n <zen-checkbox [(checked)]=\"dsItem.checked\"\n [imageUrl]=\"dsItem.imageUrl\"\n (checkedChange)=\"checkChanged(dsItem, item)\"\n [label]=\"dsItem.badgeBgColor ? '' : (dsItem.name?.toString() | translate)\"></zen-checkbox>\n <span *ngIf=\"dsItem.badgeBgColor\"\n class=\"filter-item-badge\"\n [ngStyle]=\"{'background': dsItem.badgeBgColor, 'color': dsItem.badgeColor}\">\n {{ dsItem.name?.toString() | translate }}\n </span>\n </div>\n </ng-container>\n\n <!-- Tree view mode -->\n <zen-groups *ngIf=\"!item.isLazyLoading && hasTreeData(item)\"\n [dataSource]=\"item.dataSource\"\n [filteredDataSource]=\"item.filteredDataSource\"\n [hideSelectAll]=\"item.hideSelectAll\"\n [inline]=\"true\"\n [hideSearch]=\"true\"\n [(isSelectedAll)]=\"item.isSelectedAll\"\n (checkedChange)=\"checkChanged($event, item)\">\n </zen-groups>\n </div>\n\n <!-- Date range picker -->\n <div *ngSwitchCase=\"'dateRange'\">\n <!-- Options date range view -->\n <ng-container *ngIf=\"item.dateRangeOptions?.length\">\n <ng-container *ngFor=\"let option of item.dateRangeOptions\">\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.name\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === option.name\"\n (radioChange)=\"handleDateRangeOptionClick(item, option)\"></zen-radio>\n </div>\n </ng-container>\n <div class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"'Custom'\"\n [label]=\"'Custom' | translate\"\n [name]=\"item.key\"\n [selected]=\"selectedDateRangeOptions[item.key] === 'Custom'\"\n (radioChange)=\"handleCustomDateRangeClick(item)\"></zen-radio>\n </div>\n <ng-container *ngIf=\"selectedDateRangeOptions[item.key] === 'Custom'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </ng-container>\n\n <!-- Default date range view -->\n <ng-container *ngIf=\"!item.dateRangeOptions?.length\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'From' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.start\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'To' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.dateRange.end\"\n [showTime]=\"item.showTime\"\n [yPosition]=\"item.config?.yPosition ?? datepickerPosition.AUTO\"\n (dateChange)=\"handleEndDateChange(item)\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </ng-container>\n </div>\n\n <!-- Date picker -->\n <div *ngSwitchCase=\"'date'\">\n <div class=\"ds-item filter-row\">\n <div class=\"lbl\">{{'Date' | translate}}:</div>\n <zen-datepicker class=\"width-full\"\n [(date)]=\"item.date\"\n [showTime]=\"item.showTime\"\n [parentContainer]=\"mainComponent\">\n </zen-datepicker>\n </div>\n </div>\n\n <!-- Number range -->\n <div *ngSwitchCase=\"'numberRange'\"\n class=\"filter-row number-range-row\">\n <div>\n <div class=\"lbl\">{{'Min' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.from\"\n type=\"number\" />\n </div>\n <div>\n <div class=\"lbl\">{{'Max' | translate}}:</div>\n <input class=\"material-input\"\n [(ngModel)]=\"item.numberRange.to\"\n type=\"number\" />\n </div>\n </div>\n\n <!-- Radio -->\n <div *ngSwitchCase=\"'radio'\">\n <div *ngFor=\"let option of item.radioOptions\"\n class=\"action-item-radio ds-item\">\n <zen-radio [value]=\"option.id\"\n [label]=\"option.name | translate\"\n [name]=\"item.key\"\n [imageUrl]=\"option.imageUrl\"\n [selected]=\"option.selected\"\n (radioChange)=\"radioChanged($event, item)\"\n [disabled]=\"option.disabled\"></zen-radio>\n </div>\n </div>\n </div>\n </ng-container>\n\n </div>\n </div>\n <span *ngIf=\"showNoFilterResult\"\n class=\"no-item\">{{'No Results Found' | translate}}..</span>\n </div>\n\n <div class=\"action-menu-footer filter-footer\">\n <span class=\"selected-count\" *ngIf=\"hasMultiselectItems\">{{ selectedCount }} {{'Selected' | translate}}</span>\n <div class=\"filter-footer-actions\">\n <button (click)=\"reset()\"\n class=\"filter-btn-clear\"\n [class.has-selection]=\"selectedCount > 0 && hasMultiselectItems\">\n {{'Clear Filter' | translate}}\n </button>\n <button (click)=\"apply()\"\n class=\"filter-btn-apply\">\n {{'Apply' | translate}}\n </button>\n </div>\n </div>\n\n </div>\n</div>\n", styles: [".filters-component{display:inline-block;position:relative}.filters-component .menu-content{width:360px;white-space:initial;position:fixed}.filters-component .menu-content.absolute{position:absolute;inset:auto}.filters-component .menu-content.dropdown-left{right:0}.filters-component .menu-content.dropdown-right{left:0}.filters-component .menu-content.dropdown-top{bottom:100%;margin-bottom:8px}.filters-component .menu-content.dropdown-bottom{top:100%;margin-top:8px}.filters-component .menu-content.customTrigger{top:30px}.filters-component .menu-content .items-wrapper{overflow-y:auto;max-height:calc(100vh - 407px);position:relative;padding:8px 0}.filters-component .menu-content .items-wrapper .action-item,.filters-component .menu-content .items-wrapper .action-item-checkbox,.filters-component .menu-content .items-wrapper .action-item-radio{font-weight:500;font-size:14px;line-height:20px;color:#344054;padding:0 24px}.filters-component .menu-content .items-wrapper .action-item:hover,.filters-component .menu-content .items-wrapper .action-item-checkbox:hover,.filters-component .menu-content .items-wrapper .action-item-radio:hover{background:transparent}.filters-component .menu-content .items-wrapper .expander-item{outline:none;border:none;display:flex;width:100%;justify-content:space-between;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#344054;background:transparent;padding:12px 24px}.filters-component .menu-content .items-wrapper .expander-item .expander-title{flex:1;text-align:left}.filters-component .menu-content .items-wrapper .expander-item.expanded,.filters-component .menu-content .items-wrapper .expander-item.active{background:transparent;color:#344054}.filters-component .menu-content .items-wrapper .expander-item:hover{background:transparent}.filters-component .menu-content .items-wrapper .expand-icon{transition:.3s;font-size:20px;color:#667085}.filters-component .menu-content .items-wrapper .expand-icon.active{transform:rotate(180deg)}.filters-component .menu-content .items-wrapper .ds-item{padding-left:32px}.filters-component .menu-content .items-wrapper .no-item,.filters-component .menu-content .items-wrapper .error-msg{color:#dc3e33;display:flex;flex-direction:row;align-items:center;padding:10px 24px;font-weight:400;font-size:14px}.filters-component .menu-content .items-wrapper .select-all{font-weight:500}.filters-component .menu-content .items-wrapper .filter-row{padding:0 24px}.filters-component .menu-content .items-wrapper .filter-row:not(:last-of-type){margin-bottom:20px}.filters-component .menu-content .items-wrapper .filter-row .lbl{color:#344054;font-size:14px;font-weight:500;margin-bottom:8px}.filters-component .menu-content .items-wrapper .filter-row:focus-within .lbl{color:var(--color-primary, #2188d9)}.filters-component .menu-content .items-wrapper .number-range-row{display:flex;margin-left:32px;gap:16px;margin-bottom:10px}.filters-component .menu-content .items-wrapper .toggle-row{justify-content:space-between}.filters-component .filter-footer{justify-content:space-between;padding:16px 24px;border-top:1px solid #eaecf0}.filters-component .filter-footer .selected-count{font-weight:500;font-size:14px;line-height:20px;color:#1d2939}.filters-component .filter-footer .filter-footer-actions{display:flex;gap:12px}.filters-component .filter-footer .filter-btn-clear{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:#ffffff;border:1px solid #eaecf0;box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#d0d5dd;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-clear:hover{background:#f9fafb;color:#98a2b3}.filters-component .filter-footer .filter-btn-clear.has-selection{border-color:#fda29b;color:#b42318}.filters-component .filter-footer .filter-btn-clear.has-selection:hover{background:#fef3f2;color:#912018}.filters-component .filter-footer .filter-btn-apply{display:flex;align-items:center;justify-content:center;padding:10px 16px;border-radius:8px;background:var(--color-primary, #2188d9);border:1px solid var(--color-primary, #2188d9);box-shadow:0 1px 2px #1018280d;font-family:inherit;font-weight:500;font-size:14px;line-height:20px;color:#fff;cursor:pointer;white-space:nowrap}.filters-component .filter-footer .filter-btn-apply:hover{background:var(--color-blue-shade-1, #0d74c5);border-color:var(--color-blue-shade-1, #0d74c5)}.filters-component .section-title{font-weight:500;font-size:14px;line-height:20px;color:#344054;cursor:default;padding:12px 24px}.filters-component .section-title:hover{background:transparent}.filters-component .has-badge zen-checkbox{width:auto}.filters-component .filter-item-badge{font-weight:500;font-size:14px;line-height:20px;padding:2px 10px;border-radius:16px;white-space:nowrap}.filters-component .loader-more-spinner{display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box}.hidden{display:none}:host ::ng-deep zen-radio label{margin:0}\n"] }]
2447
2540
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }]; }, propDecorators: { config: [{
2448
2541
  type: Input
2449
2542
  }], filter: [{
@@ -3616,10 +3709,10 @@ class ZenduSortHeaderComponent {
3616
3709
  }
3617
3710
  }
3618
3711
  ZenduSortHeaderComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduSortHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
3619
- ZenduSortHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduSortHeaderComponent, selector: "zen-sort", inputs: { sort: "sort", active: "active" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:16px;height:16px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"], dependencies: [{ kind: "component", type: ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }] });
3712
+ ZenduSortHeaderComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenduSortHeaderComponent, selector: "zen-sort", inputs: { sort: "sort", active: "active" }, outputs: { sortChange: "sortChange" }, ngImport: i0, template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:10px;height:10px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"], dependencies: [{ kind: "component", type: ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }] });
3620
3713
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenduSortHeaderComponent, decorators: [{
3621
3714
  type: Component,
3622
- args: [{ selector: 'zen-sort', template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:16px;height:16px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"] }]
3715
+ args: [{ selector: 'zen-sort', template: "<div class=\"sort-option\"\n (click)=\"toggleSort()\">\n <zen-icon class=\"sort-icon\"\n [class.sort-icon-active]=\"active\"\n [class.sort-icon-asc]=\"active && sort === 'asc'\"\n src=\"assets/ng-zenduit/icons/arrow-down.svg\"></zen-icon>\n</div>\n", styles: [".sort-option{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none}.sort-option .sort-icon{width:10px;height:10px;background-color:#667085;transition:transform .2s,background-color .2s}.sort-option .sort-icon-active{background-color:#344054}.sort-option .sort-icon-asc{transform:rotate(180deg)}\n"] }]
3623
3716
  }], propDecorators: { sort: [{
3624
3717
  type: Input
3625
3718
  }], sortChange: [{
@@ -8150,99 +8243,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImpo
8150
8243
  type: Output
8151
8244
  }] } });
8152
8245
 
8153
- class ZenButtonComponent {
8154
- constructor() {
8155
- this.variant = 'primary';
8156
- this.buttonType = 'button';
8157
- this.size = 'md';
8158
- this.destructive = false;
8159
- this.disabled = false;
8160
- this.fullWidth = false;
8161
- this.type = 'button';
8162
- }
8163
- get isIconOnly() {
8164
- return this.buttonType === 'button-icon-only';
8165
- }
8166
- get buttonClasses() {
8167
- const classes = [];
8168
- // Base variant class
8169
- if (this.variant === 'primary') {
8170
- classes.push('button-base');
8171
- }
8172
- else if (this.variant === 'secondary-gray') {
8173
- classes.push('button-secondary-gray');
8174
- }
8175
- else if (this.variant === 'secondary') {
8176
- classes.push('button-secondary-color');
8177
- }
8178
- else if (this.variant === 'tertiary-gray') {
8179
- classes.push('button-tertiary-gray');
8180
- }
8181
- else if (this.variant === 'tertiary') {
8182
- classes.push('button-tertiary-color');
8183
- }
8184
- else if (this.variant === 'link-gray') {
8185
- classes.push('button-link-gray');
8186
- }
8187
- else if (this.variant === 'link') {
8188
- classes.push('button-link-color');
8189
- }
8190
- // Size class
8191
- classes.push(`button-${this.size}`);
8192
- // Typography classes based on size
8193
- classes.push('text');
8194
- if (this.size === '2xl') {
8195
- classes.push('text-lg');
8196
- classes.push('text-weight-medium');
8197
- }
8198
- else if (this.size === 'xl' || this.size === 'lg') {
8199
- classes.push('text-md');
8200
- classes.push('text-weight-medium');
8201
- }
8202
- else {
8203
- classes.push('text-sm');
8204
- classes.push('text-weight-medium');
8205
- }
8206
- // State modifiers
8207
- if (this.destructive) {
8208
- classes.push('destructive');
8209
- }
8210
- if (this.isIconOnly) {
8211
- classes.push('button-icon-only');
8212
- }
8213
- if (this.fullWidth) {
8214
- classes.push('full-width');
8215
- }
8216
- return classes.join(' ');
8217
- }
8218
- getIconName() {
8219
- // Use the icon input if provided, otherwise default to circle
8220
- return this.icon || 'circle';
8221
- }
8222
- }
8223
- ZenButtonComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenButtonComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
8224
- ZenButtonComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.12", type: ZenButtonComponent, selector: "zen-button", inputs: { variant: "variant", buttonType: "buttonType", icon: "icon", size: "size", destructive: "destructive", disabled: "disabled", fullWidth: "fullWidth", type: "type" }, ngImport: i0, template: "<button \n [class]=\"buttonClasses\"\n [type]=\"type\"\n [disabled]=\"disabled\">\n \n <!-- Dot indicator -->\n <span *ngIf=\"buttonType === 'button-dot'\" class=\"button-dot\"></span>\n \n <!-- Leading icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-leading' || isIconOnly\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n \n <!-- Button content -->\n <ng-content *ngIf=\"!isIconOnly\"></ng-content>\n \n <!-- Trailing icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-trailing'\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n</button>", styles: [".text{margin:0;padding:0;color:#101828}.text-display-2xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:72px;line-height:90px;letter-spacing:-.02em}.text-display-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:60px;line-height:72px;letter-spacing:-.02em}.text-display-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:48px;line-height:60px;letter-spacing:-.02em}.text-display-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:36px;line-height:44px;letter-spacing:-.02em}.text-display-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:30px;line-height:38px;letter-spacing:0}.text-display-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:24px;line-height:32px;letter-spacing:0}.text-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:20px;line-height:30px;letter-spacing:0}.text-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:18px;line-height:28px;letter-spacing:0}.text-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:24px;letter-spacing:0}.text-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:20px;letter-spacing:0}.text-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:12px;line-height:18px;letter-spacing:0}.text-weight-regular{font-weight:400;font-style:normal}.text-weight-medium{font-weight:500;font-style:normal}.text-weight-semibold{font-weight:600;font-style:normal}.text-weight-bold{font-weight:700;font-style:normal}@media (max-width: 768px){.text-display-2xl{font-size:48px;line-height:56px}.text-display-xl{font-size:40px;line-height:48px}.text-display-lg{font-size:32px;line-height:40px}}.button-2xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:60px;padding:0 28px}.button-2xl zen-icon{color:inherit;background-color:currentColor}.button-2xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-2xl:disabled{cursor:not-allowed}.button-2xl.full-width{width:100%;justify-content:center}.button-2xl.button-icon-only{padding:0;justify-content:center}.button-2xl.button-icon-only{width:60px;padding:0}.button-xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:48px;padding:0 20px}.button-xl zen-icon{color:inherit;background-color:currentColor}.button-xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-xl:disabled{cursor:not-allowed}.button-xl.full-width{width:100%;justify-content:center}.button-xl.button-icon-only{padding:0;justify-content:center}.button-xl.button-icon-only{width:48px;padding:0}.button-lg{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:44px;padding:0 18px}.button-lg zen-icon{color:inherit;background-color:currentColor}.button-lg .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-lg:disabled{cursor:not-allowed}.button-lg.full-width{width:100%;justify-content:center}.button-lg.button-icon-only{padding:0;justify-content:center}.button-lg.button-icon-only{width:44px;padding:0}.button-md{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:40px;padding:0 16px}.button-md zen-icon{color:inherit;background-color:currentColor}.button-md .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-md:disabled{cursor:not-allowed}.button-md.full-width{width:100%;justify-content:center}.button-md.button-icon-only{padding:0;justify-content:center}.button-md.button-icon-only{width:40px;padding:0}.button-sm{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:36px;padding:0 14px}.button-sm zen-icon{color:inherit;background-color:currentColor}.button-sm .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-sm:disabled{cursor:not-allowed}.button-sm.full-width{width:100%;justify-content:center}.button-sm.button-icon-only{padding:0;justify-content:center}.button-sm.button-icon-only{width:36px;padding:0}.button-base{background:#136AB6;color:#fff;border:1px solid #136AB6;box-shadow:0 1px 2px #1018280d}.button-base:hover:not(:disabled){background:#105494;border-color:#105494}.button-base:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-base.destructive{background:#D92D20;border-color:#d92d20}.button-base.destructive:hover:not(:disabled){background:#B42318;border-color:#b42318}.button-base.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-base.destructive:disabled{background:#FECDCA;border-color:#fecdca;color:#fff}.button-base:disabled{background:#C0DDF7;border-color:#c0ddf7;color:#fff}.button-secondary-gray{background:#FFFFFF;color:#344054;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d}.button-secondary-gray:hover:not(:disabled){background:#F9FAFB;color:#1d2939}.button-secondary-gray:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #f2f4f7}.button-secondary-gray.destructive{color:#b42318}.button-secondary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-secondary-gray.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-gray.destructive:disabled{background:#FFFFFF;border-color:#eaecf0;color:#fda29b}.button-secondary-gray:disabled{background:#FFFFFF;border-color:#eaecf0;color:#d0d5dd}.button-secondary-color{background:#F1F7FE;color:#105494;border:1px solid #F1F7FE;box-shadow:0 1px 2px #1018280d}.button-secondary-color:hover:not(:disabled){background:#E3EEFB;border-color:#e3eefb}.button-secondary-color:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-secondary-color.destructive{background:#FEF3F2;color:#b42318;border-color:#fef3f2}.button-secondary-color.destructive:hover:not(:disabled){background:#FEE4E2;border-color:#fee4e2}.button-secondary-color.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-color.destructive:disabled{background:#FFFBFA;border-color:#fffbfa;color:#fda29b}.button-secondary-color:disabled{background:#FAFDFF;border-color:#fafdff;color:#88c1f1}.button-tertiary-gray{background:transparent;color:#667085;border:1px solid transparent}.button-tertiary-gray:hover:not(:disabled){background:#F9FAFB;color:#475467}.button-tertiary-gray:focus:not(:disabled){outline:none;background:#F9FAFB}.button-tertiary-gray.destructive{color:#b42318}.button-tertiary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-gray.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-gray.destructive:disabled{color:#fda29b}.button-tertiary-gray:disabled{color:#d0d5dd}.button-tertiary-color{background:transparent;color:#105494;border:1px solid transparent}.button-tertiary-color:hover:not(:disabled){background:#F1F7FE}.button-tertiary-color:focus:not(:disabled){outline:none;background:#F1F7FE}.button-tertiary-color.destructive{color:#b42318}.button-tertiary-color.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-color.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-color.destructive:disabled{color:#fda29b}.button-tertiary-color:disabled{color:#d0d5dd}.button-link-gray{background:transparent;color:#475467;border:none;text-decoration:none}.button-link-gray:hover:not(:disabled){color:#344054}.button-link-gray:focus:not(:disabled){outline:none}.button-link-gray.destructive{color:#b42318}.button-link-gray.destructive:hover:not(:disabled){color:#912018}.button-link-gray.destructive:disabled{color:#fda29b}.button-link-gray:disabled{color:#d0d5dd}.button-link-color{background:transparent;color:#105494;border:none;text-decoration:none}.button-link-color:hover:not(:disabled){color:#12497a}.button-link-color:focus:not(:disabled){outline:none}.button-link-color.destructive{color:#b42318}.button-link-color.destructive:hover:not(:disabled){color:#912018}.button-link-color.destructive:disabled{color:#fda29b}.button-link-color:disabled{color:#d0d5dd}\n"], dependencies: [{ kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: ZenduIconComponent, selector: "zen-icon", inputs: ["src", "name", "size", "color", "theme", "customColor"] }] });
8225
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.12", ngImport: i0, type: ZenButtonComponent, decorators: [{
8226
- type: Component,
8227
- args: [{ selector: 'zen-button', template: "<button \n [class]=\"buttonClasses\"\n [type]=\"type\"\n [disabled]=\"disabled\">\n \n <!-- Dot indicator -->\n <span *ngIf=\"buttonType === 'button-dot'\" class=\"button-dot\"></span>\n \n <!-- Leading icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-leading' || isIconOnly\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n \n <!-- Button content -->\n <ng-content *ngIf=\"!isIconOnly\"></ng-content>\n \n <!-- Trailing icon -->\n <zen-icon *ngIf=\"buttonType === 'button-icon-trailing'\" \n [name]=\"getIconName()\"\n size=\"xs\"></zen-icon>\n</button>", styles: [".text{margin:0;padding:0;color:#101828}.text-display-2xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:72px;line-height:90px;letter-spacing:-.02em}.text-display-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:60px;line-height:72px;letter-spacing:-.02em}.text-display-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:48px;line-height:60px;letter-spacing:-.02em}.text-display-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:36px;line-height:44px;letter-spacing:-.02em}.text-display-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:30px;line-height:38px;letter-spacing:0}.text-display-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:24px;line-height:32px;letter-spacing:0}.text-xl{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:20px;line-height:30px;letter-spacing:0}.text-lg{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:18px;line-height:28px;letter-spacing:0}.text-md{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:16px;line-height:24px;letter-spacing:0}.text-sm{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:14px;line-height:20px;letter-spacing:0}.text-xs{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:12px;line-height:18px;letter-spacing:0}.text-weight-regular{font-weight:400;font-style:normal}.text-weight-medium{font-weight:500;font-style:normal}.text-weight-semibold{font-weight:600;font-style:normal}.text-weight-bold{font-weight:700;font-style:normal}@media (max-width: 768px){.text-display-2xl{font-size:48px;line-height:56px}.text-display-xl{font-size:40px;line-height:48px}.text-display-lg{font-size:32px;line-height:40px}}.button-2xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:60px;padding:0 28px}.button-2xl zen-icon{color:inherit;background-color:currentColor}.button-2xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-2xl:disabled{cursor:not-allowed}.button-2xl.full-width{width:100%;justify-content:center}.button-2xl.button-icon-only{padding:0;justify-content:center}.button-2xl.button-icon-only{width:60px;padding:0}.button-xl{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:48px;padding:0 20px}.button-xl zen-icon{color:inherit;background-color:currentColor}.button-xl .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-xl:disabled{cursor:not-allowed}.button-xl.full-width{width:100%;justify-content:center}.button-xl.button-icon-only{padding:0;justify-content:center}.button-xl.button-icon-only{width:48px;padding:0}.button-lg{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:44px;padding:0 18px}.button-lg zen-icon{color:inherit;background-color:currentColor}.button-lg .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-lg:disabled{cursor:not-allowed}.button-lg.full-width{width:100%;justify-content:center}.button-lg.button-icon-only{padding:0;justify-content:center}.button-lg.button-icon-only{width:44px;padding:0}.button-md{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:40px;padding:0 16px}.button-md zen-icon{color:inherit;background-color:currentColor}.button-md .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-md:disabled{cursor:not-allowed}.button-md.full-width{width:100%;justify-content:center}.button-md.button-icon-only{padding:0;justify-content:center}.button-md.button-icon-only{width:40px;padding:0}.button-sm{display:inline-flex;flex-direction:row;align-items:center;justify-content:center;gap:8px;border-radius:8px;box-sizing:border-box;white-space:nowrap;border:none;transition:all .2s ease;cursor:pointer;font-family:inherit;height:36px;padding:0 14px}.button-sm zen-icon{color:inherit;background-color:currentColor}.button-sm .button-dot{width:6px;height:6px;background:currentColor;border-radius:50%;display:inline-block}.button-sm:disabled{cursor:not-allowed}.button-sm.full-width{width:100%;justify-content:center}.button-sm.button-icon-only{padding:0;justify-content:center}.button-sm.button-icon-only{width:36px;padding:0}.button-base{background:#136AB6;color:#fff;border:1px solid #136AB6;box-shadow:0 1px 2px #1018280d}.button-base:hover:not(:disabled){background:#105494;border-color:#105494}.button-base:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-base.destructive{background:#D92D20;border-color:#d92d20}.button-base.destructive:hover:not(:disabled){background:#B42318;border-color:#b42318}.button-base.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-base.destructive:disabled{background:#FECDCA;border-color:#fecdca;color:#fff}.button-base:disabled{background:#C0DDF7;border-color:#c0ddf7;color:#fff}.button-secondary-gray{background:#FFFFFF;color:#344054;border:1px solid #D0D5DD;box-shadow:0 1px 2px #1018280d}.button-secondary-gray:hover:not(:disabled){background:#F9FAFB;color:#1d2939}.button-secondary-gray:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #f2f4f7}.button-secondary-gray.destructive{color:#b42318}.button-secondary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-secondary-gray.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-gray.destructive:disabled{background:#FFFFFF;border-color:#eaecf0;color:#fda29b}.button-secondary-gray:disabled{background:#FFFFFF;border-color:#eaecf0;color:#d0d5dd}.button-secondary-color{background:#F1F7FE;color:#105494;border:1px solid #F1F7FE;box-shadow:0 1px 2px #1018280d}.button-secondary-color:hover:not(:disabled){background:#E3EEFB;border-color:#e3eefb}.button-secondary-color:focus:not(:disabled){outline:none;box-shadow:0 1px 2px #1018280d,0 0 0 4px #136ab63d}.button-secondary-color.destructive{background:#FEF3F2;color:#b42318;border-color:#fef3f2}.button-secondary-color.destructive:hover:not(:disabled){background:#FEE4E2;border-color:#fee4e2}.button-secondary-color.destructive:focus:not(:disabled){box-shadow:0 1px 2px #1018280d,0 0 0 4px #d92d203d}.button-secondary-color.destructive:disabled{background:#FFFBFA;border-color:#fffbfa;color:#fda29b}.button-secondary-color:disabled{background:#FAFDFF;border-color:#fafdff;color:#88c1f1}.button-tertiary-gray{background:transparent;color:#667085;border:1px solid transparent}.button-tertiary-gray:hover:not(:disabled){background:#F9FAFB;color:#475467}.button-tertiary-gray:focus:not(:disabled){outline:none;background:#F9FAFB}.button-tertiary-gray.destructive{color:#b42318}.button-tertiary-gray.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-gray.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-gray.destructive:disabled{color:#fda29b}.button-tertiary-gray:disabled{color:#d0d5dd}.button-tertiary-color{background:transparent;color:#105494;border:1px solid transparent}.button-tertiary-color:hover:not(:disabled){background:#F1F7FE}.button-tertiary-color:focus:not(:disabled){outline:none;background:#F1F7FE}.button-tertiary-color.destructive{color:#b42318}.button-tertiary-color.destructive:hover:not(:disabled){background:#FEF3F2;color:#912018}.button-tertiary-color.destructive:focus:not(:disabled){background:#FEF3F2}.button-tertiary-color.destructive:disabled{color:#fda29b}.button-tertiary-color:disabled{color:#d0d5dd}.button-link-gray{background:transparent;color:#475467;border:none;text-decoration:none}.button-link-gray:hover:not(:disabled){color:#344054}.button-link-gray:focus:not(:disabled){outline:none}.button-link-gray.destructive{color:#b42318}.button-link-gray.destructive:hover:not(:disabled){color:#912018}.button-link-gray.destructive:disabled{color:#fda29b}.button-link-gray:disabled{color:#d0d5dd}.button-link-color{background:transparent;color:#105494;border:none;text-decoration:none}.button-link-color:hover:not(:disabled){color:#12497a}.button-link-color:focus:not(:disabled){outline:none}.button-link-color.destructive{color:#b42318}.button-link-color.destructive:hover:not(:disabled){color:#912018}.button-link-color.destructive:disabled{color:#fda29b}.button-link-color:disabled{color:#d0d5dd}\n"] }]
8228
- }], propDecorators: { variant: [{
8229
- type: Input
8230
- }], buttonType: [{
8231
- type: Input
8232
- }], icon: [{
8233
- type: Input
8234
- }], size: [{
8235
- type: Input
8236
- }], destructive: [{
8237
- type: Input
8238
- }], disabled: [{
8239
- type: Input
8240
- }], fullWidth: [{
8241
- type: Input
8242
- }], type: [{
8243
- type: Input
8244
- }] } });
8245
-
8246
8246
  class ZenduInputComponent {
8247
8247
  constructor() {
8248
8248
  /**