@ng-nest/ui 16.0.0 → 16.0.2

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.
Files changed (46) hide show
  1. package/carousel/carousel.component.d.ts +2 -0
  2. package/core/config/config.d.ts +2 -0
  3. package/core/interfaces/data.type.d.ts +17 -17
  4. package/dropdown/dropdown-portal.component.d.ts +4 -4
  5. package/esm2022/carousel/carousel.component.mjs +8 -2
  6. package/esm2022/core/config/config.mjs +1 -1
  7. package/esm2022/core/functions/convert.mjs +2 -1
  8. package/esm2022/core/interfaces/data.type.mjs +60 -19
  9. package/esm2022/input/input.component.mjs +45 -8
  10. package/esm2022/popover/popover.directive.mjs +17 -6
  11. package/esm2022/popover/popover.property.mjs +6 -2
  12. package/esm2022/select/select.component.mjs +1 -1
  13. package/esm2022/slider/slider.component.mjs +27 -5
  14. package/esm2022/slider/slider.property.mjs +7 -2
  15. package/esm2022/statistic/countdown.component.mjs +8 -2
  16. package/esm2022/tabs/tabs.component.mjs +3 -3
  17. package/esm2022/tabs/tabs.property.mjs +7 -2
  18. package/esm2022/tooltip/tooltip.directive.mjs +16 -5
  19. package/esm2022/tooltip/tooltip.property.mjs +6 -2
  20. package/fesm2022/ng-nest-ui-carousel.mjs +7 -2
  21. package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-core.mjs +60 -18
  23. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-input.mjs +44 -7
  25. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-popover.mjs +21 -6
  27. package/fesm2022/ng-nest-ui-popover.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  29. package/fesm2022/ng-nest-ui-slider.mjs +32 -5
  30. package/fesm2022/ng-nest-ui-slider.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-statistic.mjs +7 -2
  32. package/fesm2022/ng-nest-ui-statistic.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-tabs.mjs +9 -4
  34. package/fesm2022/ng-nest-ui-tabs.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-tooltip.mjs +20 -5
  36. package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
  37. package/input/input.component.d.ts +6 -0
  38. package/package.json +14 -13
  39. package/popover/popover.directive.d.ts +1 -0
  40. package/popover/popover.property.d.ts +12 -2
  41. package/slider/slider.component.d.ts +6 -0
  42. package/slider/slider.property.d.ts +12 -2
  43. package/statistic/countdown.component.d.ts +2 -0
  44. package/tabs/tabs.property.d.ts +12 -2
  45. package/tooltip/tooltip.directive.d.ts +1 -0
  46. package/tooltip/tooltip.property.d.ts +12 -1
@@ -3,8 +3,8 @@ import { EventEmitter, Component, Input, Output, ViewEncapsulation, ChangeDetect
3
3
  import { __decorate } from 'tslib';
4
4
  import * as i1 from '@ng-nest/ui/core';
5
5
  import { XProperty, XDataConvert, XWithConfig, XInputBoolean, XInputNumber, XIsChange, XIsEmpty, XResize, XIsUndefined, XSetData } from '@ng-nest/ui/core';
6
- import { Subject } from 'rxjs';
7
- import { debounceTime, takeUntil } from 'rxjs/operators';
6
+ import { Subject, of } from 'rxjs';
7
+ import { debounceTime, takeUntil, delay } from 'rxjs/operators';
8
8
  import * as i2 from '@angular/common';
9
9
  import { CommonModule } from '@angular/common';
10
10
  import * as i3 from '@ng-nest/ui/link';
@@ -66,7 +66,7 @@ class XSliderProperty extends XProperty {
66
66
  this.nodeChange = new EventEmitter();
67
67
  }
68
68
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: XSliderProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
69
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: XSliderProperty, selector: "x-slider-property", inputs: { data: "data", animated: "animated", activatedIndex: "activatedIndex", layout: "layout", justify: "justify", nodeJustify: "nodeJustify", nodeTpl: "nodeTpl", size: "size", showExpand: "showExpand", autoShowArrow: "autoShowArrow", expandMaxHeight: "expandMaxHeight", showAnchor: "showAnchor" }, outputs: { indexChange: "indexChange", nodeChange: "nodeChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
69
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: XSliderProperty, selector: "x-slider-property", inputs: { data: "data", animated: "animated", activatedIndex: "activatedIndex", trigger: "trigger", layout: "layout", justify: "justify", nodeJustify: "nodeJustify", nodeTpl: "nodeTpl", size: "size", showExpand: "showExpand", autoShowArrow: "autoShowArrow", expandMaxHeight: "expandMaxHeight", showAnchor: "showAnchor" }, outputs: { indexChange: "indexChange", nodeChange: "nodeChange" }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
70
70
  }
71
71
  __decorate([
72
72
  XDataConvert()
@@ -78,6 +78,9 @@ __decorate([
78
78
  __decorate([
79
79
  XInputNumber()
80
80
  ], XSliderProperty.prototype, "activatedIndex", void 0);
81
+ __decorate([
82
+ XWithConfig(X_CONFIG_NAME, 'click')
83
+ ], XSliderProperty.prototype, "trigger", void 0);
81
84
  __decorate([
82
85
  XWithConfig(X_CONFIG_NAME, 'medium')
83
86
  ], XSliderProperty.prototype, "size", void 0);
@@ -104,6 +107,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImpor
104
107
  type: Input
105
108
  }], activatedIndex: [{
106
109
  type: Input
110
+ }], trigger: [{
111
+ type: Input
107
112
  }], layout: [{
108
113
  type: Input
109
114
  }], justify: [{
@@ -154,6 +159,8 @@ class XSliderComponent extends XSliderProperty {
154
159
  this.nodeClassMap = {};
155
160
  this.showArrow = false;
156
161
  this.activatedId = '';
162
+ this.hoverDelay = 200;
163
+ this.hoverDelayUnsub = new Subject();
157
164
  this._offset = 0;
158
165
  this.direction = 'right';
159
166
  this.maxOffset = 0;
@@ -180,6 +187,8 @@ class XSliderComponent extends XSliderProperty {
180
187
  this._unSubject.next();
181
188
  this._unSubject.unsubscribe();
182
189
  this._resizeObserver?.disconnect();
190
+ this.hoverDelayUnsub.next();
191
+ this.hoverDelayUnsub.complete();
183
192
  }
184
193
  ngAfterViewInit() {
185
194
  this.setSubscribe();
@@ -207,6 +216,24 @@ class XSliderComponent extends XSliderProperty {
207
216
  this.setActivated();
208
217
  });
209
218
  }
219
+ onEnter(event, node, index) {
220
+ if (node.disabled || this.trigger === 'click')
221
+ return;
222
+ of(true)
223
+ .pipe(delay(this.hoverDelay), takeUntil(this.hoverDelayUnsub))
224
+ .subscribe(() => {
225
+ if (this.timeoutHide) {
226
+ clearTimeout(this.timeoutHide);
227
+ this.timeoutHide = null;
228
+ }
229
+ this.nodeClick(event, node, index);
230
+ });
231
+ }
232
+ onLeave(node) {
233
+ if (node.disabled || this.trigger === 'click')
234
+ return;
235
+ this.hoverDelayUnsub.next();
236
+ }
210
237
  nodeClick(event, node, index) {
211
238
  if (event) {
212
239
  event.preventDefault();
@@ -350,11 +377,11 @@ class XSliderComponent extends XSliderProperty {
350
377
  return item.id;
351
378
  }
352
379
  /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: XSliderComponent, deps: [{ token: i0.Renderer2 }, { token: i0.ElementRef }, { token: i0.ChangeDetectorRef }, { token: i1.XConfigService }], target: i0.ɵɵFactoryTarget.Component }); }
353
- /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: XSliderComponent, selector: "x-slider", viewQueries: [{ propertyName: "sliderScroll", first: true, predicate: ["sliderScroll"], descendants: true }, { propertyName: "sliderNodes", first: true, predicate: ["sliderNodes"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #slider class=\"x-slider\" [ngClass]=\"classMap\">\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap\">\r\n <ul #sliderNodes [style.transform]=\"transform\">\r\n <li\r\n *ngFor=\"let node of nodes; index as i; trackBy: trackByNode\"\r\n [class.x-slider-activated]=\"getActivated(i)\"\r\n [class.x-slider-disabled]=\"node.disabled\"\r\n [title]=\"node.label\"\r\n >\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n [ngClass]=\"nodeClassMap\"\r\n [href]=\"showAnchor ? '#' + node.id : ''\"\r\n [preventDefault]=\"showAnchor\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n </ng-container>\r\n </x-link>\r\n </li>\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated\" [ngStyle]=\"highlightBox\"></li>\r\n </ul>\r\n </div>\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === maxOffset\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n <x-dropdown\r\n *ngIf=\"showExpand && showArrow && layout === 'row'\"\r\n class=\"x-slider-all\"\r\n [data]=\"nodes\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon [size]=\"size\"> </x-button>\r\n </x-dropdown>\r\n</div>\r\n", styles: [".x-slider{margin:0;padding:0;position:relative;display:flex;align-items:center;height:100%}.x-slider-scroll{overflow:hidden;flex:1;display:inline-flex}.x-slider-scroll.x-justify-start{justify-content:flex-start}.x-slider-scroll.x-justify-center{justify-content:center}.x-slider-scroll.x-justify-end{justify-content:flex-end}.x-slider-scroll.x-justify-space-between{justify-content:space-between}.x-slider-scroll.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul{display:inline-flex;align-items:center;position:relative;transition:transform var(--x-animation-duration-base)}.x-slider-scroll>ul>li{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:2}.x-slider-scroll>ul>li x-link{flex:1}.x-slider-scroll>ul>li x-link.x-justify-start{justify-content:flex-start}.x-slider-scroll>ul>li x-link.x-justify-center{justify-content:center}.x-slider-scroll>ul>li x-link.x-justify-end{justify-content:flex-end}.x-slider-scroll>ul>li x-link.x-justify-space-between{justify-content:space-between}.x-slider-scroll>ul>li x-link.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul>li x-link.x-size-big{height:var(--x-height-big);line-height:var(--x-height-big);padding:0 var(--x-padding-big)}.x-slider-scroll>ul>li x-link.x-size-large{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-slider-scroll>ul>li x-link.x-size-medium{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-slider-scroll>ul>li x-link.x-size-small{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-slider-scroll>ul>li x-link.x-size-mini{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-slider-scroll>ul>li.x-slider-highlight{position:absolute;left:0;top:0;z-index:1;width:0;height:0;border-radius:var(--x-border-radius);background-color:#0000000d;border:.0625rem solid var(--x-border)}.x-slider-scroll>ul>li.x-slider-highlight-animated{transition:width var(--x-animation-duration-base),left var(--x-animation-duration-base),height var(--x-animation-duration-base),top var(--x-animation-duration-base)}.x-slider-activated{color:var(--x-primary)}.x-slider-disabled{color:var(--x-text-400)!important;cursor:not-allowed!important}.x-slider-disabled .x-link{cursor:not-allowed!important}.x-slider-disabled .x-link:hover{color:var(--x-text-400)!important}.x-slider-arrow-left,.x-slider-arrow-right{height:1.675rem;line-height:1.675rem}.x-slider-arrow-left>x-icon,.x-slider-arrow-right>x-icon{margin-right:0}.x-slider-arrow-left .x-link,.x-slider-arrow-right .x-link{padding:.5rem}.x-slider-show-arrow>.x-slider-scroll{justify-content:start!important}.x-slider-row>.x-slider-scroll>ul{flex-direction:row}.x-slider-column{display:inline-flex;flex-direction:column}.x-slider-column>.x-slider-scroll{display:inline-block}.x-slider-column>.x-slider-scroll>ul{flex-direction:column}.x-slider-column>.x-slider-scroll>ul>li{display:flex;width:100%}.x-slider-column>.x-slider-arrow-left,.x-slider-column>.x-slider-arrow-right{transform:rotate(90deg)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.XLinkComponent, selector: "x-link" }, { kind: "component", type: i4.XButtonComponent, selector: "x-button" }, { kind: "directive", type: i5.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i6.XDropdownComponent, selector: "x-dropdown" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
380
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.0.0", type: XSliderComponent, selector: "x-slider", viewQueries: [{ propertyName: "sliderScroll", first: true, predicate: ["sliderScroll"], descendants: true }, { propertyName: "sliderNodes", first: true, predicate: ["sliderNodes"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #slider class=\"x-slider\" [ngClass]=\"classMap\">\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap\">\r\n <ul #sliderNodes [style.transform]=\"transform\">\r\n <li\r\n *ngFor=\"let node of nodes; index as i; trackBy: trackByNode\"\r\n [class.x-slider-activated]=\"getActivated(i)\"\r\n [class.x-slider-disabled]=\"node.disabled\"\r\n [title]=\"node.label\"\r\n >\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n (mouseenter)=\"onEnter($event, node, i)\"\r\n (mouseleave)=\"onLeave(node)\"\r\n [ngClass]=\"nodeClassMap\"\r\n [href]=\"showAnchor ? '#' + node.id : ''\"\r\n [preventDefault]=\"showAnchor\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n </ng-container>\r\n </x-link>\r\n </li>\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated\" [ngStyle]=\"highlightBox\"></li>\r\n </ul>\r\n </div>\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === maxOffset\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n <x-dropdown\r\n *ngIf=\"showExpand && showArrow && layout === 'row'\"\r\n class=\"x-slider-all\"\r\n [data]=\"nodes\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon [size]=\"size\"> </x-button>\r\n </x-dropdown>\r\n</div>\r\n", styles: [".x-slider{margin:0;padding:0;position:relative;display:flex;align-items:center;height:100%}.x-slider-scroll{overflow:hidden;flex:1;display:inline-flex}.x-slider-scroll.x-justify-start{justify-content:flex-start}.x-slider-scroll.x-justify-center{justify-content:center}.x-slider-scroll.x-justify-end{justify-content:flex-end}.x-slider-scroll.x-justify-space-between{justify-content:space-between}.x-slider-scroll.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul{display:inline-flex;align-items:center;position:relative;transition:transform var(--x-animation-duration-base)}.x-slider-scroll>ul>li{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:2}.x-slider-scroll>ul>li x-link{flex:1}.x-slider-scroll>ul>li x-link.x-justify-start{justify-content:flex-start}.x-slider-scroll>ul>li x-link.x-justify-center{justify-content:center}.x-slider-scroll>ul>li x-link.x-justify-end{justify-content:flex-end}.x-slider-scroll>ul>li x-link.x-justify-space-between{justify-content:space-between}.x-slider-scroll>ul>li x-link.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul>li x-link.x-size-big{height:var(--x-height-big);line-height:var(--x-height-big);padding:0 var(--x-padding-big)}.x-slider-scroll>ul>li x-link.x-size-large{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-slider-scroll>ul>li x-link.x-size-medium{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-slider-scroll>ul>li x-link.x-size-small{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-slider-scroll>ul>li x-link.x-size-mini{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-slider-scroll>ul>li.x-slider-highlight{position:absolute;left:0;top:0;z-index:1;width:0;height:0;border-radius:var(--x-border-radius);background-color:#0000000d;border:.0625rem solid var(--x-border)}.x-slider-scroll>ul>li.x-slider-highlight-animated{transition:width var(--x-animation-duration-base),left var(--x-animation-duration-base),height var(--x-animation-duration-base),top var(--x-animation-duration-base)}.x-slider-activated{color:var(--x-primary)}.x-slider-disabled{color:var(--x-text-400)!important;cursor:not-allowed!important}.x-slider-disabled .x-link{cursor:not-allowed!important}.x-slider-disabled .x-link:hover{color:var(--x-text-400)!important}.x-slider-arrow-left,.x-slider-arrow-right{height:1.675rem;line-height:1.675rem}.x-slider-arrow-left>x-icon,.x-slider-arrow-right>x-icon{margin-right:0}.x-slider-arrow-left .x-link,.x-slider-arrow-right .x-link{padding:.5rem}.x-slider-show-arrow>.x-slider-scroll{justify-content:start!important}.x-slider-row>.x-slider-scroll>ul{flex-direction:row}.x-slider-column{display:inline-flex;flex-direction:column}.x-slider-column>.x-slider-scroll{display:inline-block}.x-slider-column>.x-slider-scroll>ul{flex-direction:column}.x-slider-column>.x-slider-scroll>ul>li{display:flex;width:100%}.x-slider-column>.x-slider-arrow-left,.x-slider-column>.x-slider-arrow-right{transform:rotate(90deg)}\n"], dependencies: [{ kind: "directive", type: i2.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "component", type: i3.XLinkComponent, selector: "x-link" }, { kind: "component", type: i4.XButtonComponent, selector: "x-button" }, { kind: "directive", type: i5.XOutletDirective, selector: "[xOutlet]", inputs: ["xOutletContext", "xOutlet"] }, { kind: "component", type: i6.XDropdownComponent, selector: "x-dropdown" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
354
381
  }
355
382
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.0.0", ngImport: i0, type: XSliderComponent, decorators: [{
356
383
  type: Component,
357
- args: [{ selector: `${XSliderPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #slider class=\"x-slider\" [ngClass]=\"classMap\">\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap\">\r\n <ul #sliderNodes [style.transform]=\"transform\">\r\n <li\r\n *ngFor=\"let node of nodes; index as i; trackBy: trackByNode\"\r\n [class.x-slider-activated]=\"getActivated(i)\"\r\n [class.x-slider-disabled]=\"node.disabled\"\r\n [title]=\"node.label\"\r\n >\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n [ngClass]=\"nodeClassMap\"\r\n [href]=\"showAnchor ? '#' + node.id : ''\"\r\n [preventDefault]=\"showAnchor\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n </ng-container>\r\n </x-link>\r\n </li>\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated\" [ngStyle]=\"highlightBox\"></li>\r\n </ul>\r\n </div>\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === maxOffset\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n <x-dropdown\r\n *ngIf=\"showExpand && showArrow && layout === 'row'\"\r\n class=\"x-slider-all\"\r\n [data]=\"nodes\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon [size]=\"size\"> </x-button>\r\n </x-dropdown>\r\n</div>\r\n", styles: [".x-slider{margin:0;padding:0;position:relative;display:flex;align-items:center;height:100%}.x-slider-scroll{overflow:hidden;flex:1;display:inline-flex}.x-slider-scroll.x-justify-start{justify-content:flex-start}.x-slider-scroll.x-justify-center{justify-content:center}.x-slider-scroll.x-justify-end{justify-content:flex-end}.x-slider-scroll.x-justify-space-between{justify-content:space-between}.x-slider-scroll.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul{display:inline-flex;align-items:center;position:relative;transition:transform var(--x-animation-duration-base)}.x-slider-scroll>ul>li{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:2}.x-slider-scroll>ul>li x-link{flex:1}.x-slider-scroll>ul>li x-link.x-justify-start{justify-content:flex-start}.x-slider-scroll>ul>li x-link.x-justify-center{justify-content:center}.x-slider-scroll>ul>li x-link.x-justify-end{justify-content:flex-end}.x-slider-scroll>ul>li x-link.x-justify-space-between{justify-content:space-between}.x-slider-scroll>ul>li x-link.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul>li x-link.x-size-big{height:var(--x-height-big);line-height:var(--x-height-big);padding:0 var(--x-padding-big)}.x-slider-scroll>ul>li x-link.x-size-large{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-slider-scroll>ul>li x-link.x-size-medium{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-slider-scroll>ul>li x-link.x-size-small{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-slider-scroll>ul>li x-link.x-size-mini{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-slider-scroll>ul>li.x-slider-highlight{position:absolute;left:0;top:0;z-index:1;width:0;height:0;border-radius:var(--x-border-radius);background-color:#0000000d;border:.0625rem solid var(--x-border)}.x-slider-scroll>ul>li.x-slider-highlight-animated{transition:width var(--x-animation-duration-base),left var(--x-animation-duration-base),height var(--x-animation-duration-base),top var(--x-animation-duration-base)}.x-slider-activated{color:var(--x-primary)}.x-slider-disabled{color:var(--x-text-400)!important;cursor:not-allowed!important}.x-slider-disabled .x-link{cursor:not-allowed!important}.x-slider-disabled .x-link:hover{color:var(--x-text-400)!important}.x-slider-arrow-left,.x-slider-arrow-right{height:1.675rem;line-height:1.675rem}.x-slider-arrow-left>x-icon,.x-slider-arrow-right>x-icon{margin-right:0}.x-slider-arrow-left .x-link,.x-slider-arrow-right .x-link{padding:.5rem}.x-slider-show-arrow>.x-slider-scroll{justify-content:start!important}.x-slider-row>.x-slider-scroll>ul{flex-direction:row}.x-slider-column{display:inline-flex;flex-direction:column}.x-slider-column>.x-slider-scroll{display:inline-block}.x-slider-column>.x-slider-scroll>ul{flex-direction:column}.x-slider-column>.x-slider-scroll>ul>li{display:flex;width:100%}.x-slider-column>.x-slider-arrow-left,.x-slider-column>.x-slider-arrow-right{transform:rotate(90deg)}\n"] }]
384
+ args: [{ selector: `${XSliderPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div #slider class=\"x-slider\" [ngClass]=\"classMap\">\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap\">\r\n <ul #sliderNodes [style.transform]=\"transform\">\r\n <li\r\n *ngFor=\"let node of nodes; index as i; trackBy: trackByNode\"\r\n [class.x-slider-activated]=\"getActivated(i)\"\r\n [class.x-slider-disabled]=\"node.disabled\"\r\n [title]=\"node.label\"\r\n >\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n (mouseenter)=\"onEnter($event, node, i)\"\r\n (mouseleave)=\"onLeave(node)\"\r\n [ngClass]=\"nodeClassMap\"\r\n [href]=\"showAnchor ? '#' + node.id : ''\"\r\n [preventDefault]=\"showAnchor\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n </ng-container>\r\n </x-link>\r\n </li>\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated\" [ngStyle]=\"highlightBox\"></li>\r\n </ul>\r\n </div>\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === maxOffset\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n <x-dropdown\r\n *ngIf=\"showExpand && showArrow && layout === 'row'\"\r\n class=\"x-slider-all\"\r\n [data]=\"nodes\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon [size]=\"size\"> </x-button>\r\n </x-dropdown>\r\n</div>\r\n", styles: [".x-slider{margin:0;padding:0;position:relative;display:flex;align-items:center;height:100%}.x-slider-scroll{overflow:hidden;flex:1;display:inline-flex}.x-slider-scroll.x-justify-start{justify-content:flex-start}.x-slider-scroll.x-justify-center{justify-content:center}.x-slider-scroll.x-justify-end{justify-content:flex-end}.x-slider-scroll.x-justify-space-between{justify-content:space-between}.x-slider-scroll.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul{display:inline-flex;align-items:center;position:relative;transition:transform var(--x-animation-duration-base)}.x-slider-scroll>ul>li{display:inline-flex;align-items:center;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap;z-index:2}.x-slider-scroll>ul>li x-link{flex:1}.x-slider-scroll>ul>li x-link.x-justify-start{justify-content:flex-start}.x-slider-scroll>ul>li x-link.x-justify-center{justify-content:center}.x-slider-scroll>ul>li x-link.x-justify-end{justify-content:flex-end}.x-slider-scroll>ul>li x-link.x-justify-space-between{justify-content:space-between}.x-slider-scroll>ul>li x-link.x-justify-space-around{justify-content:space-around}.x-slider-scroll>ul>li x-link.x-size-big{height:var(--x-height-big);line-height:var(--x-height-big);padding:0 var(--x-padding-big)}.x-slider-scroll>ul>li x-link.x-size-large{height:var(--x-height-large);line-height:var(--x-height-large);padding:0 var(--x-padding-large)}.x-slider-scroll>ul>li x-link.x-size-medium{height:var(--x-height-medium);line-height:var(--x-height-medium);padding:0 var(--x-padding-medium)}.x-slider-scroll>ul>li x-link.x-size-small{height:var(--x-height-small);line-height:var(--x-height-small);padding:0 var(--x-padding-small)}.x-slider-scroll>ul>li x-link.x-size-mini{height:var(--x-height-mini);line-height:var(--x-height-mini);padding:0 var(--x-padding-mini)}.x-slider-scroll>ul>li.x-slider-highlight{position:absolute;left:0;top:0;z-index:1;width:0;height:0;border-radius:var(--x-border-radius);background-color:#0000000d;border:.0625rem solid var(--x-border)}.x-slider-scroll>ul>li.x-slider-highlight-animated{transition:width var(--x-animation-duration-base),left var(--x-animation-duration-base),height var(--x-animation-duration-base),top var(--x-animation-duration-base)}.x-slider-activated{color:var(--x-primary)}.x-slider-disabled{color:var(--x-text-400)!important;cursor:not-allowed!important}.x-slider-disabled .x-link{cursor:not-allowed!important}.x-slider-disabled .x-link:hover{color:var(--x-text-400)!important}.x-slider-arrow-left,.x-slider-arrow-right{height:1.675rem;line-height:1.675rem}.x-slider-arrow-left>x-icon,.x-slider-arrow-right>x-icon{margin-right:0}.x-slider-arrow-left .x-link,.x-slider-arrow-right .x-link{padding:.5rem}.x-slider-show-arrow>.x-slider-scroll{justify-content:start!important}.x-slider-row>.x-slider-scroll>ul{flex-direction:row}.x-slider-column{display:inline-flex;flex-direction:column}.x-slider-column>.x-slider-scroll{display:inline-block}.x-slider-column>.x-slider-scroll>ul{flex-direction:column}.x-slider-column>.x-slider-scroll>ul>li{display:flex;width:100%}.x-slider-column>.x-slider-arrow-left,.x-slider-column>.x-slider-arrow-right{transform:rotate(90deg)}\n"] }]
358
385
  }], ctorParameters: function () { return [{ type: i0.Renderer2 }, { type: i0.ElementRef }, { type: i0.ChangeDetectorRef }, { type: i1.XConfigService }]; }, propDecorators: { sliderScroll: [{
359
386
  type: ViewChild,
360
387
  args: ['sliderScroll']
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-slider.mjs","sources":["../../../../lib/ng-nest/ui/slider/slider.property.ts","../../../../lib/ng-nest/ui/slider/slider.component.ts","../../../../lib/ng-nest/ui/slider/slider.component.html","../../../../lib/ng-nest/ui/slider/slider.module.ts","../../../../lib/ng-nest/ui/slider/ng-nest-ui-slider.ts"],"sourcesContent":["import {\r\n XData,\r\n XTemplate,\r\n XProperty,\r\n XIdentityProperty,\r\n XDataConvert,\r\n XInputBoolean,\r\n XInputNumber,\r\n XJustify,\r\n XSize,\r\n XNumber,\r\n XBoolean,\r\n XWithConfig\r\n} from '@ng-nest/ui/core';\r\nimport { TemplateRef, Input, EventEmitter, Output, Component } from '@angular/core';\r\n\r\n/**\r\n * Slider\r\n * @selector x-slider\r\n * @decorator component\r\n */\r\nexport const XSliderPrefix = 'x-slider';\r\nconst X_CONFIG_NAME = 'slider';\r\n\r\n/**\r\n * Slider Property\r\n */\r\n@Component({ selector: `${XSliderPrefix}-property`, template: '' })\r\nexport class XSliderProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XSliderNode> = [];\r\n /**\r\n * @zh_CN 滑动动画\r\n * @en_US Sliding animation\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() animated?: XBoolean;\r\n /**\r\n * @zh_CN 当前激活的索引\r\n * @en_US Currently active index\r\n */\r\n @Input() @XInputNumber() activatedIndex: XNumber = 0;\r\n /**\r\n * @zh_CN 排列方式\r\n * @en_US Arrangement\r\n */\r\n @Input() layout?: XSliderLayout = 'row';\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n */\r\n @Input() justify?: XJustify = 'start';\r\n /**\r\n * @zh_CN 节点文字对齐方式\r\n * @en_US Node text alignment\r\n */\r\n @Input() nodeJustify?: XJustify = 'center';\r\n /**\r\n * @zh_CN 节点自定义模板\r\n * @en_US Node custom template\r\n */\r\n @Input() nodeTpl!: TemplateRef<any>;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') size?: XSize;\r\n /**\r\n * @zh_CN 节点显示不下的时候显示展开所有的按钮,排列方式为 row 的时候生效\r\n * @en_US When the node is not displayed, display all the buttons, and the arrangement is effective when the arrangement is row\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() showExpand?: XBoolean;\r\n /**\r\n * @zh_CN 节点显示不下的时候显示左右/上下的箭头\r\n * @en_US 节点显示不下的时候显示左右/上下的箭头\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() autoShowArrow?: XBoolean;\r\n /**\r\n * @zh_CN 展开所有弹框的最大高度\r\n * @en_US Expand the maximum height of all bomb frames\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '15rem') expandMaxHeight?: string;\r\n /**\r\n * @zh_CN 显示描点\r\n * @en_US Show anchor\r\n */\r\n @Input() @XInputBoolean() showAnchor?: XBoolean;\r\n /**\r\n * @zh_CN 激活索引变化事件\r\n * @en_US Activate index change event\r\n */\r\n @Output() indexChange = new EventEmitter<number>();\r\n /**\r\n * @zh_CN 激活节点改变事件\r\n * @en_US Activate node change event\r\n */\r\n @Output() nodeChange = new EventEmitter<XSliderNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Slider 数据对象\r\n * @en_US Slider data object\r\n */\r\nexport interface XSliderNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 标题,支持模板\r\n * @en_US Title, support template\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 禁用节点\r\n * @en_US Node disabled\r\n */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XSliderLayout = 'row' | 'column';\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n SimpleChange\r\n} from '@angular/core';\r\nimport { XSliderPrefix, XSliderNode, XSliderProperty } from './slider.property';\r\nimport { XClassMap, XIsChange, XResize, XPosition, XIsUndefined, XIsEmpty, XSetData, XConfigService, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject } from 'rxjs';\r\nimport { takeUntil, debounceTime } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XSliderPrefix}`,\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSliderComponent extends XSliderProperty implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n @ViewChild('sliderScroll') sliderScroll!: ElementRef<HTMLElement>;\r\n @ViewChild('sliderNodes') sliderNodes!: ElementRef<HTMLElement>;\r\n nodes: XSliderNode[] = [];\r\n activated!: XSliderNode | null;\r\n scrollClassMap: XClassMap = {};\r\n nodeClassMap: XClassMap = {};\r\n showArrow = false;\r\n activatedId = '';\r\n private _offset: number = 0;\r\n get offset(): number {\r\n return this._offset;\r\n }\r\n set offset(value: number) {\r\n this._offset = Math.floor(value);\r\n this.transform = `translate${this.dir}(-${this._offset}px)`;\r\n this.cdr.detectChanges();\r\n }\r\n direction: XPosition = 'right';\r\n maxOffset: number = 0;\r\n get dir(): 'X' | 'Y' {\r\n return this.layout === 'row' ? 'X' : 'Y';\r\n }\r\n get sizeName() {\r\n return this.layout === 'row' ? 'Width' : 'Height';\r\n }\r\n transform?: string;\r\n highlightBox = {\r\n width: '',\r\n height: '',\r\n left: '',\r\n top: ''\r\n };\r\n private _unSubject = new Subject<void>();\r\n private _resizeObserver!: XResizeObserver;\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, layout, justify, nodeJustify, activatedIndex } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(layout) && this.setChange(this.classMap, layout);\r\n XIsChange(justify) && this.setChange(this.scrollClassMap, justify, 'x-justify');\r\n XIsChange(nodeJustify) && this.setChange(this.nodeClassMap, nodeJustify, 'x-justify');\r\n XIsChange(activatedIndex) && this.setDirection(activatedIndex.currentValue, activatedIndex.previousValue) && this.setActivated();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setSubscribe();\r\n this.setActivated();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XSliderPrefix}-${this.layout}`] = !XIsEmpty(this.layout);\r\n this.scrollClassMap[`x-justify-${this.justify}`] = !XIsEmpty(this.justify);\r\n this.nodeClassMap = {\r\n [`x-justify-${this.nodeJustify}`]: !XIsEmpty(this.nodeJustify),\r\n [`x-size-${this.size}`]: !XIsEmpty(this.size)\r\n };\r\n }\r\n\r\n setChange(map: XClassMap, change: SimpleChange, prefix = XSliderPrefix) {\r\n map[`${prefix}-${change.previousValue}`] = false;\r\n map[`${prefix}-${change.currentValue}`] = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setSubscribe() {\r\n XResize(this.sliderScroll.nativeElement, this.sliderNodes.nativeElement)\r\n .pipe(debounceTime(30), takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this._resizeObserver = x.resizeObserver;\r\n this.sizeChecked();\r\n this.setActivated();\r\n });\r\n }\r\n\r\n nodeClick(event: Event | null, node: XSliderNode, index: number) {\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (node.disabled) return;\r\n this.setDirection(index, Number(this.activatedIndex));\r\n this.activatedIndex = index;\r\n this.activated = node;\r\n this.activatedId = node.id;\r\n this.setHighlight();\r\n this.setTranslate();\r\n this.indexChange.emit(index);\r\n this.nodeChange.emit(node);\r\n }\r\n\r\n dropdownClick(node: XSliderNode) {\r\n const index = this.nodes.indexOf(node);\r\n this.nodeClick(null, node, index);\r\n }\r\n\r\n scrollPrev() {\r\n if (this.offset === 0) return;\r\n const scrollSize = this.sliderScroll.nativeElement[`offset${this.sizeName}`];\r\n const currentOffset = this.offset;\r\n if (!currentOffset) return;\r\n const offset = currentOffset > scrollSize ? currentOffset - scrollSize : 0;\r\n this.offset = offset;\r\n }\r\n\r\n scrollNext() {\r\n if (this.offset === this.maxOffset) return;\r\n const sliderSize = this.sliderNodes.nativeElement[`offset${this.sizeName}`];\r\n const scrollSize = this.sliderScroll.nativeElement[`offset${this.sizeName}`];\r\n const currentOffset = this.offset;\r\n if (sliderSize - currentOffset <= scrollSize) return;\r\n const offset = sliderSize - currentOffset > scrollSize * 2 ? currentOffset + scrollSize : sliderSize - scrollSize;\r\n this.offset = offset;\r\n }\r\n\r\n setDirection(index: number, before: number) {\r\n const increase = index > before;\r\n this.direction = this.layout === 'row' ? (increase ? 'right' : 'left') : increase ? 'bottom' : 'top';\r\n return this.direction;\r\n }\r\n\r\n setTranslate() {\r\n if (\r\n XIsUndefined(this.sliderScroll) ||\r\n XIsUndefined(this.sliderNodes) ||\r\n typeof this.sliderScroll.nativeElement.getBoundingClientRect !== 'function'\r\n )\r\n return;\r\n const sliderRect = this.sliderScroll.nativeElement?.getBoundingClientRect();\r\n const sliderNodesRect = this.sliderNodes.nativeElement?.getBoundingClientRect();\r\n let moveIndex = ['bottom', 'right'].indexOf(this.direction) !== -1 ? Number(this.activatedIndex) + 2 : Number(this.activatedIndex);\r\n moveIndex = moveIndex > this.nodes.length ? this.nodes.length : moveIndex === 0 ? 1 : moveIndex;\r\n let moveEle = this.sliderNodes.nativeElement?.querySelector(`li:nth-child(${moveIndex})`);\r\n let maxOffset = 0;\r\n if (XIsEmpty(moveEle)) return;\r\n const moveRect = moveEle!.getBoundingClientRect();\r\n const currentOffset = this.offset;\r\n let offset = currentOffset;\r\n if (this.layout === 'row') {\r\n maxOffset = sliderNodesRect.width - sliderRect.width;\r\n if (moveRect.left < sliderRect.left) {\r\n offset = currentOffset - (sliderRect.left - moveRect.left);\r\n }\r\n if (moveRect.right > sliderRect.right) {\r\n offset = currentOffset + moveRect.right - sliderRect.right;\r\n }\r\n } else {\r\n maxOffset = sliderNodesRect.height - sliderRect.height;\r\n if (moveRect.top < sliderRect.top) {\r\n offset = currentOffset - (sliderRect.top - moveRect.top);\r\n }\r\n if (moveRect.bottom > sliderRect.bottom) {\r\n offset = currentOffset + (moveRect.bottom - sliderRect.bottom);\r\n }\r\n }\r\n this.maxOffset = Math.ceil(maxOffset);\r\n offset = Math.max(Math.ceil(offset), 0);\r\n if ([this.maxOffset + 1, this.maxOffset - 1].includes(offset)) {\r\n this.offset = this.maxOffset;\r\n } else {\r\n this.offset = Math.min(offset, this.maxOffset);\r\n }\r\n }\r\n\r\n sizeChecked() {\r\n const size = this.sliderNodes.nativeElement[`offset${this.sizeName}`];\r\n const scrollSize = this.sliderScroll.nativeElement[`offset${this.sizeName}`];\r\n const showArrow = this.nodes.length > 1 && size > scrollSize;\r\n if (this.showArrow !== showArrow) {\r\n this.showArrow = showArrow;\r\n this.classMap[`${XSliderPrefix}-show-arrow`] = this.showArrow;\r\n if (!this.showArrow) {\r\n this.offset = 0;\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n setActivated() {\r\n if (this.nodes.length > 0) {\r\n this.activated = this.nodes[Number(this.activatedIndex)];\r\n if (this.activated) {\r\n this.activatedId = this.activated.id;\r\n }\r\n } else {\r\n this.activated = null;\r\n }\r\n this.setHighlight();\r\n this.setTranslate();\r\n }\r\n\r\n setHighlight() {\r\n if (XIsUndefined(this.sliderNodes)) return;\r\n const activeEle: HTMLElement = this.sliderNodes.nativeElement.querySelector(`li:nth-child(${Number(this.activatedIndex) + 1})`)!;\r\n if (!activeEle) return;\r\n this.highlightBox = {\r\n width: `${activeEle.offsetWidth}px`,\r\n height: `${activeEle.offsetHeight}px`,\r\n left: `${activeEle.offsetLeft}px`,\r\n top: `${activeEle.offsetTop}px`\r\n };\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private setData() {\r\n XSetData<XSliderNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.cdr.detectChanges();\r\n setTimeout(() => this.setActivated());\r\n });\r\n }\r\n\r\n getActivated(index: number) {\r\n return Number(this.activatedIndex) === index;\r\n }\r\n\r\n trackByNode(_index: number, item: XSliderNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div #slider class=\"x-slider\" [ngClass]=\"classMap\">\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap\">\r\n <ul #sliderNodes [style.transform]=\"transform\">\r\n <li\r\n *ngFor=\"let node of nodes; index as i; trackBy: trackByNode\"\r\n [class.x-slider-activated]=\"getActivated(i)\"\r\n [class.x-slider-disabled]=\"node.disabled\"\r\n [title]=\"node.label\"\r\n >\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n [ngClass]=\"nodeClassMap\"\r\n [href]=\"showAnchor ? '#' + node.id : ''\"\r\n [preventDefault]=\"showAnchor\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n </ng-container>\r\n </x-link>\r\n </li>\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated\" [ngStyle]=\"highlightBox\"></li>\r\n </ul>\r\n </div>\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === maxOffset\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n <x-dropdown\r\n *ngIf=\"showExpand && showArrow && layout === 'row'\"\r\n class=\"x-slider-all\"\r\n [data]=\"nodes\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon [size]=\"size\"> </x-button>\r\n </x-dropdown>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XSliderComponent } from './slider.component';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XSliderProperty } from './slider.property';\r\nimport { XDropdownModule } from '@ng-nest/ui/dropdown';\r\n\r\n@NgModule({\r\n declarations: [XSliderComponent, XSliderProperty],\r\n exports: [XSliderComponent],\r\n imports: [CommonModule, XLinkModule, XButtonModule, XOutletModule, XDropdownModule]\r\n})\r\nexport class XSliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-slider.mjs","sources":["../../../../lib/ng-nest/ui/slider/slider.property.ts","../../../../lib/ng-nest/ui/slider/slider.component.ts","../../../../lib/ng-nest/ui/slider/slider.component.html","../../../../lib/ng-nest/ui/slider/slider.module.ts","../../../../lib/ng-nest/ui/slider/ng-nest-ui-slider.ts"],"sourcesContent":["import {\r\n XData,\r\n XTemplate,\r\n XProperty,\r\n XIdentityProperty,\r\n XDataConvert,\r\n XInputBoolean,\r\n XInputNumber,\r\n XJustify,\r\n XSize,\r\n XNumber,\r\n XBoolean,\r\n XWithConfig,\r\n XTrigger\r\n} from '@ng-nest/ui/core';\r\nimport { TemplateRef, Input, EventEmitter, Output, Component } from '@angular/core';\r\n\r\n/**\r\n * Slider\r\n * @selector x-slider\r\n * @decorator component\r\n */\r\nexport const XSliderPrefix = 'x-slider';\r\nconst X_CONFIG_NAME = 'slider';\r\n\r\n/**\r\n * Slider Property\r\n */\r\n@Component({ selector: `${XSliderPrefix}-property`, template: '' })\r\nexport class XSliderProperty extends XProperty {\r\n /**\r\n * @zh_CN 节点数据\r\n * @en_US Node data\r\n */\r\n @Input() @XDataConvert() data: XData<XSliderNode> = [];\r\n /**\r\n * @zh_CN 滑动动画\r\n * @en_US Sliding animation\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() animated?: XBoolean;\r\n /**\r\n * @zh_CN 当前激活的索引\r\n * @en_US Currently active index\r\n */\r\n @Input() @XInputNumber() activatedIndex: XNumber = 0;\r\n /**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger mode\r\n */\r\n @Input() @XWithConfig<XSliderTrigger>(X_CONFIG_NAME, 'click') trigger!: XSliderTrigger;\r\n /**\r\n * @zh_CN 排列方式\r\n * @en_US Arrangement\r\n */\r\n @Input() layout?: XSliderLayout = 'row';\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n */\r\n @Input() justify?: XJustify = 'start';\r\n /**\r\n * @zh_CN 节点文字对齐方式\r\n * @en_US Node text alignment\r\n */\r\n @Input() nodeJustify?: XJustify = 'center';\r\n /**\r\n * @zh_CN 节点自定义模板\r\n * @en_US Node custom template\r\n */\r\n @Input() nodeTpl!: TemplateRef<any>;\r\n /**\r\n * @zh_CN 尺寸\r\n * @en_US Size\r\n */\r\n @Input() @XWithConfig<XSize>(X_CONFIG_NAME, 'medium') size?: XSize;\r\n /**\r\n * @zh_CN 节点显示不下的时候显示展开所有的按钮,排列方式为 row 的时候生效\r\n * @en_US When the node is not displayed, display all the buttons, and the arrangement is effective when the arrangement is row\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, false) @XInputBoolean() showExpand?: XBoolean;\r\n /**\r\n * @zh_CN 节点显示不下的时候显示左右/上下的箭头\r\n * @en_US 节点显示不下的时候显示左右/上下的箭头\r\n */\r\n @Input() @XWithConfig<XBoolean>(X_CONFIG_NAME, true) @XInputBoolean() autoShowArrow?: XBoolean;\r\n /**\r\n * @zh_CN 展开所有弹框的最大高度\r\n * @en_US Expand the maximum height of all bomb frames\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, '15rem') expandMaxHeight?: string;\r\n /**\r\n * @zh_CN 显示描点\r\n * @en_US Show anchor\r\n */\r\n @Input() @XInputBoolean() showAnchor?: XBoolean;\r\n /**\r\n * @zh_CN 激活索引变化事件\r\n * @en_US Activate index change event\r\n */\r\n @Output() indexChange = new EventEmitter<number>();\r\n /**\r\n * @zh_CN 激活节点改变事件\r\n * @en_US Activate node change event\r\n */\r\n @Output() nodeChange = new EventEmitter<XSliderNode>();\r\n}\r\n\r\n/**\r\n * @zh_CN Slider 数据对象\r\n * @en_US Slider data object\r\n */\r\nexport interface XSliderNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 标题,支持模板\r\n * @en_US Title, support template\r\n */\r\n label?: XTemplate;\r\n /**\r\n * @zh_CN 禁用节点\r\n * @en_US Node disabled\r\n */\r\n disabled?: boolean;\r\n}\r\n\r\n/**\r\n * @zh_CN 触发方式\r\n * @en_US Trigger method\r\n */\r\nexport type XSliderTrigger = XTrigger;\r\n\r\n/**\r\n * @zh_CN 布局方式\r\n * @en_US Layout\r\n */\r\nexport type XSliderLayout = 'row' | 'column';\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n ViewChild,\r\n AfterViewInit,\r\n OnDestroy,\r\n SimpleChange\r\n} from '@angular/core';\r\nimport { XSliderPrefix, XSliderNode, XSliderProperty } from './slider.property';\r\nimport { XClassMap, XIsChange, XResize, XPosition, XIsUndefined, XIsEmpty, XSetData, XConfigService, XResizeObserver } from '@ng-nest/ui/core';\r\nimport { Subject, of } from 'rxjs';\r\nimport { takeUntil, debounceTime, delay } from 'rxjs/operators';\r\n\r\n@Component({\r\n selector: `${XSliderPrefix}`,\r\n templateUrl: './slider.component.html',\r\n styleUrls: ['./slider.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XSliderComponent extends XSliderProperty implements OnInit, OnChanges, OnDestroy, AfterViewInit {\r\n @ViewChild('sliderScroll') sliderScroll!: ElementRef<HTMLElement>;\r\n @ViewChild('sliderNodes') sliderNodes!: ElementRef<HTMLElement>;\r\n nodes: XSliderNode[] = [];\r\n activated!: XSliderNode | null;\r\n scrollClassMap: XClassMap = {};\r\n nodeClassMap: XClassMap = {};\r\n showArrow = false;\r\n activatedId = '';\r\n timeoutHide: any;\r\n hoverDelay = 200;\r\n hoverDelayUnsub = new Subject<void>();\r\n private _offset: number = 0;\r\n get offset(): number {\r\n return this._offset;\r\n }\r\n set offset(value: number) {\r\n this._offset = Math.floor(value);\r\n this.transform = `translate${this.dir}(-${this._offset}px)`;\r\n this.cdr.detectChanges();\r\n }\r\n direction: XPosition = 'right';\r\n maxOffset: number = 0;\r\n get dir(): 'X' | 'Y' {\r\n return this.layout === 'row' ? 'X' : 'Y';\r\n }\r\n get sizeName() {\r\n return this.layout === 'row' ? 'Width' : 'Height';\r\n }\r\n transform?: string;\r\n highlightBox = {\r\n width: '',\r\n height: '',\r\n left: '',\r\n top: ''\r\n };\r\n private _unSubject = new Subject<void>();\r\n private _resizeObserver!: XResizeObserver;\r\n\r\n constructor(\r\n public renderer: Renderer2,\r\n public elementRef: ElementRef<HTMLElement>,\r\n public cdr: ChangeDetectorRef,\r\n public configService: XConfigService\r\n ) {\r\n super();\r\n }\r\n\r\n ngOnInit() {\r\n this.setClassMap();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { data, layout, justify, nodeJustify, activatedIndex } = changes;\r\n XIsChange(data) && this.setData();\r\n XIsChange(layout) && this.setChange(this.classMap, layout);\r\n XIsChange(justify) && this.setChange(this.scrollClassMap, justify, 'x-justify');\r\n XIsChange(nodeJustify) && this.setChange(this.nodeClassMap, nodeJustify, 'x-justify');\r\n XIsChange(activatedIndex) && this.setDirection(activatedIndex.currentValue, activatedIndex.previousValue) && this.setActivated();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._unSubject.next();\r\n this._unSubject.unsubscribe();\r\n this._resizeObserver?.disconnect();\r\n this.hoverDelayUnsub.next();\r\n this.hoverDelayUnsub.complete();\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this.setSubscribe();\r\n this.setActivated();\r\n }\r\n\r\n setClassMap() {\r\n this.classMap[`${XSliderPrefix}-${this.layout}`] = !XIsEmpty(this.layout);\r\n this.scrollClassMap[`x-justify-${this.justify}`] = !XIsEmpty(this.justify);\r\n this.nodeClassMap = {\r\n [`x-justify-${this.nodeJustify}`]: !XIsEmpty(this.nodeJustify),\r\n [`x-size-${this.size}`]: !XIsEmpty(this.size)\r\n };\r\n }\r\n\r\n setChange(map: XClassMap, change: SimpleChange, prefix = XSliderPrefix) {\r\n map[`${prefix}-${change.previousValue}`] = false;\r\n map[`${prefix}-${change.currentValue}`] = true;\r\n this.cdr.detectChanges();\r\n }\r\n\r\n setSubscribe() {\r\n XResize(this.sliderScroll.nativeElement, this.sliderNodes.nativeElement)\r\n .pipe(debounceTime(30), takeUntil(this._unSubject))\r\n .subscribe((x) => {\r\n this._resizeObserver = x.resizeObserver;\r\n this.sizeChecked();\r\n this.setActivated();\r\n });\r\n }\r\n\r\n onEnter(event: Event | null, node: XSliderNode, index: number) {\r\n if (node.disabled || this.trigger === 'click') return;\r\n of(true)\r\n .pipe(delay(this.hoverDelay), takeUntil(this.hoverDelayUnsub))\r\n .subscribe(() => {\r\n if (this.timeoutHide) {\r\n clearTimeout(this.timeoutHide);\r\n this.timeoutHide = null;\r\n }\r\n this.nodeClick(event, node, index)\r\n });\r\n }\r\n\r\n onLeave(node: XSliderNode) {\r\n if (node.disabled || this.trigger === 'click') return;\r\n this.hoverDelayUnsub.next();\r\n }\r\n\r\n nodeClick(event: Event | null, node: XSliderNode, index: number) {\r\n if (event) {\r\n event.preventDefault();\r\n event.stopPropagation();\r\n }\r\n if (node.disabled) return;\r\n this.setDirection(index, Number(this.activatedIndex));\r\n this.activatedIndex = index;\r\n this.activated = node;\r\n this.activatedId = node.id;\r\n this.setHighlight();\r\n this.setTranslate();\r\n this.indexChange.emit(index);\r\n this.nodeChange.emit(node);\r\n }\r\n\r\n dropdownClick(node: XSliderNode) {\r\n const index = this.nodes.indexOf(node);\r\n this.nodeClick(null, node, index);\r\n }\r\n\r\n scrollPrev() {\r\n if (this.offset === 0) return;\r\n const scrollSize = this.sliderScroll.nativeElement[`offset${this.sizeName}`];\r\n const currentOffset = this.offset;\r\n if (!currentOffset) return;\r\n const offset = currentOffset > scrollSize ? currentOffset - scrollSize : 0;\r\n this.offset = offset;\r\n }\r\n\r\n scrollNext() {\r\n if (this.offset === this.maxOffset) return;\r\n const sliderSize = this.sliderNodes.nativeElement[`offset${this.sizeName}`];\r\n const scrollSize = this.sliderScroll.nativeElement[`offset${this.sizeName}`];\r\n const currentOffset = this.offset;\r\n if (sliderSize - currentOffset <= scrollSize) return;\r\n const offset = sliderSize - currentOffset > scrollSize * 2 ? currentOffset + scrollSize : sliderSize - scrollSize;\r\n this.offset = offset;\r\n }\r\n\r\n setDirection(index: number, before: number) {\r\n const increase = index > before;\r\n this.direction = this.layout === 'row' ? (increase ? 'right' : 'left') : increase ? 'bottom' : 'top';\r\n return this.direction;\r\n }\r\n\r\n setTranslate() {\r\n if (\r\n XIsUndefined(this.sliderScroll) ||\r\n XIsUndefined(this.sliderNodes) ||\r\n typeof this.sliderScroll.nativeElement.getBoundingClientRect !== 'function'\r\n )\r\n return;\r\n const sliderRect = this.sliderScroll.nativeElement?.getBoundingClientRect();\r\n const sliderNodesRect = this.sliderNodes.nativeElement?.getBoundingClientRect();\r\n let moveIndex = ['bottom', 'right'].indexOf(this.direction) !== -1 ? Number(this.activatedIndex) + 2 : Number(this.activatedIndex);\r\n moveIndex = moveIndex > this.nodes.length ? this.nodes.length : moveIndex === 0 ? 1 : moveIndex;\r\n let moveEle = this.sliderNodes.nativeElement?.querySelector(`li:nth-child(${moveIndex})`);\r\n let maxOffset = 0;\r\n if (XIsEmpty(moveEle)) return;\r\n const moveRect = moveEle!.getBoundingClientRect();\r\n const currentOffset = this.offset;\r\n let offset = currentOffset;\r\n if (this.layout === 'row') {\r\n maxOffset = sliderNodesRect.width - sliderRect.width;\r\n if (moveRect.left < sliderRect.left) {\r\n offset = currentOffset - (sliderRect.left - moveRect.left);\r\n }\r\n if (moveRect.right > sliderRect.right) {\r\n offset = currentOffset + moveRect.right - sliderRect.right;\r\n }\r\n } else {\r\n maxOffset = sliderNodesRect.height - sliderRect.height;\r\n if (moveRect.top < sliderRect.top) {\r\n offset = currentOffset - (sliderRect.top - moveRect.top);\r\n }\r\n if (moveRect.bottom > sliderRect.bottom) {\r\n offset = currentOffset + (moveRect.bottom - sliderRect.bottom);\r\n }\r\n }\r\n this.maxOffset = Math.ceil(maxOffset);\r\n offset = Math.max(Math.ceil(offset), 0);\r\n if ([this.maxOffset + 1, this.maxOffset - 1].includes(offset)) {\r\n this.offset = this.maxOffset;\r\n } else {\r\n this.offset = Math.min(offset, this.maxOffset);\r\n }\r\n }\r\n\r\n sizeChecked() {\r\n const size = this.sliderNodes.nativeElement[`offset${this.sizeName}`];\r\n const scrollSize = this.sliderScroll.nativeElement[`offset${this.sizeName}`];\r\n const showArrow = this.nodes.length > 1 && size > scrollSize;\r\n if (this.showArrow !== showArrow) {\r\n this.showArrow = showArrow;\r\n this.classMap[`${XSliderPrefix}-show-arrow`] = this.showArrow;\r\n if (!this.showArrow) {\r\n this.offset = 0;\r\n }\r\n this.cdr.detectChanges();\r\n }\r\n }\r\n\r\n setActivated() {\r\n if (this.nodes.length > 0) {\r\n this.activated = this.nodes[Number(this.activatedIndex)];\r\n if (this.activated) {\r\n this.activatedId = this.activated.id;\r\n }\r\n } else {\r\n this.activated = null;\r\n }\r\n this.setHighlight();\r\n this.setTranslate();\r\n }\r\n\r\n setHighlight() {\r\n if (XIsUndefined(this.sliderNodes)) return;\r\n const activeEle: HTMLElement = this.sliderNodes.nativeElement.querySelector(`li:nth-child(${Number(this.activatedIndex) + 1})`)!;\r\n if (!activeEle) return;\r\n this.highlightBox = {\r\n width: `${activeEle.offsetWidth}px`,\r\n height: `${activeEle.offsetHeight}px`,\r\n left: `${activeEle.offsetLeft}px`,\r\n top: `${activeEle.offsetTop}px`\r\n };\r\n this.cdr.detectChanges();\r\n }\r\n\r\n private setData() {\r\n XSetData<XSliderNode>(this.data, this._unSubject).subscribe((x) => {\r\n this.nodes = x;\r\n this.cdr.detectChanges();\r\n setTimeout(() => this.setActivated());\r\n });\r\n }\r\n\r\n getActivated(index: number) {\r\n return Number(this.activatedIndex) === index;\r\n }\r\n\r\n trackByNode(_index: number, item: XSliderNode) {\r\n return item.id;\r\n }\r\n}\r\n","<div #slider class=\"x-slider\" [ngClass]=\"classMap\">\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === 0\"\r\n class=\"x-slider-arrow-left\"\r\n icon=\"fto-chevron-left\"\r\n (click)=\"scrollPrev()\"\r\n ></x-link>\r\n <div class=\"x-slider-scroll\" #sliderScroll [ngClass]=\"scrollClassMap\">\r\n <ul #sliderNodes [style.transform]=\"transform\">\r\n <li\r\n *ngFor=\"let node of nodes; index as i; trackBy: trackByNode\"\r\n [class.x-slider-activated]=\"getActivated(i)\"\r\n [class.x-slider-disabled]=\"node.disabled\"\r\n [title]=\"node.label\"\r\n >\r\n <x-link\r\n (click)=\"nodeClick($event, node, i)\"\r\n (mouseenter)=\"onEnter($event, node, i)\"\r\n (mouseleave)=\"onLeave(node)\"\r\n [ngClass]=\"nodeClassMap\"\r\n [href]=\"showAnchor ? '#' + node.id : ''\"\r\n [preventDefault]=\"showAnchor\"\r\n >\r\n <ng-container *ngTemplateOutlet=\"nodeTpl; context: { $node: node }\"></ng-container>\r\n <ng-container *ngIf=\"!nodeTpl\">\r\n <ng-container *xOutlet=\"node.label\">{{ node.label }}</ng-container>\r\n </ng-container>\r\n </x-link>\r\n </li>\r\n <li class=\"x-slider-highlight\" [class.x-slider-highlight-animated]=\"animated\" [ngStyle]=\"highlightBox\"></li>\r\n </ul>\r\n </div>\r\n <x-link\r\n *ngIf=\"autoShowArrow && showArrow\"\r\n [disabled]=\"offset === maxOffset\"\r\n class=\"x-slider-arrow-right\"\r\n icon=\"fto-chevron-right\"\r\n (click)=\"scrollNext()\"\r\n ></x-link>\r\n <x-dropdown\r\n *ngIf=\"showExpand && showArrow && layout === 'row'\"\r\n class=\"x-slider-all\"\r\n [data]=\"nodes\"\r\n trigger=\"click\"\r\n [(activatedId)]=\"activatedId\"\r\n (nodeClick)=\"dropdownClick($event)\"\r\n [portalMaxHeight]=\"expandMaxHeight\"\r\n >\r\n <x-button icon=\"fto-list\" onlyIcon [size]=\"size\"> </x-button>\r\n </x-dropdown>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XSliderComponent } from './slider.component';\r\nimport { XLinkModule } from '@ng-nest/ui/link';\r\nimport { XButtonModule } from '@ng-nest/ui/button';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XSliderProperty } from './slider.property';\r\nimport { XDropdownModule } from '@ng-nest/ui/dropdown';\r\n\r\n@NgModule({\r\n declarations: [XSliderComponent, XSliderProperty],\r\n exports: [XSliderComponent],\r\n imports: [CommonModule, XLinkModule, XButtonModule, XOutletModule, XDropdownModule]\r\n})\r\nexport class XSliderModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import * as i0 from '@angular/core';
2
- import { Component, Input, EventEmitter, Output, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
2
+ import { Component, Input, EventEmitter, Output, ViewEncapsulation, ChangeDetectionStrategy, inject, PLATFORM_ID, NgModule } from '@angular/core';
3
3
  import { __decorate } from 'tslib';
4
4
  import * as i1 from '@ng-nest/ui/core';
5
5
  import { XWithConfig, XIsChange } from '@ng-nest/ui/core';
6
6
  import * as i2 from '@angular/common';
7
- import { CommonModule } from '@angular/common';
7
+ import { isPlatformBrowser, CommonModule } from '@angular/common';
8
8
  import * as i3 from '@ng-nest/ui/outlet';
9
9
  import { XOutletModule } from '@ng-nest/ui/outlet';
10
10
  import { interval } from 'rxjs';
@@ -112,6 +112,9 @@ class XCountdownComponent extends XCountdownProperty {
112
112
  this.ngZone = ngZone;
113
113
  this.configService = configService;
114
114
  this.period = 1000 / 30;
115
+ this.platformId = inject(PLATFORM_ID);
116
+ this.isBrowser = true;
117
+ this.isBrowser = isPlatformBrowser(this.platformId);
115
118
  }
116
119
  ngOnInit() {
117
120
  this.syncTimer();
@@ -137,6 +140,8 @@ class XCountdownComponent extends XCountdownProperty {
137
140
  }
138
141
  }
139
142
  startTimer() {
143
+ if (!this.isBrowser)
144
+ return;
140
145
  this.ngZone.runOutsideAngular(() => {
141
146
  this.stopTimer();
142
147
  this._updater = interval(this.period).subscribe(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui-statistic.mjs","sources":["../../../../lib/ng-nest/ui/statistic/statistic.property.ts","../../../../lib/ng-nest/ui/statistic/statistic.component.ts","../../../../lib/ng-nest/ui/statistic/statistic.component.html","../../../../lib/ng-nest/ui/statistic/countdown.component.ts","../../../../lib/ng-nest/ui/statistic/countdown.component.html","../../../../lib/ng-nest/ui/statistic/statistic.module.ts","../../../../lib/ng-nest/ui/statistic/ng-nest-ui-statistic.ts"],"sourcesContent":["import { XTemplate, XStyle, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Statistic\r\n * @selector x-statistic\r\n * @decorator component\r\n */\r\nexport const XStatisticPrefix = 'x-statistic';\r\n\r\n/**\r\n * Statistic Property\r\n */\r\n@Component({ selector: `${XStatisticPrefix}-property`, template: '' })\r\nexport class XStatisticProperty {\r\n /**\r\n * @zh_CN 显示值\r\n * @en_US Display value\r\n */\r\n @Input() value?: XTemplate;\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n @Input() label?: XTemplate;\r\n /**\r\n * @zh_CN 前缀\r\n * @en_US Prefix\r\n */\r\n @Input() prefix?: XTemplate;\r\n /**\r\n * @zh_CN 后缀\r\n * @en_US Suffix\r\n */\r\n @Input() suffix?: XTemplate;\r\n /**\r\n * @zh_CN 显示值样式\r\n * @en_US Display value style\r\n */\r\n @Input() valueStyle: XStyle = {};\r\n}\r\n\r\n/**\r\n * Countdown\r\n * @selector x-countdown\r\n * @decorator component\r\n */\r\nexport const XCountdownPrefix = 'x-countdown';\r\nconst X_CONFIG_NAME = 'countdown';\r\n\r\n/**\r\n * Countdown Property\r\n */\r\n@Component({ selector: `${XCountdownPrefix}-property`, template: '' })\r\nexport class XCountdownProperty extends XStatisticProperty {\r\n /**\r\n * @zh_CN 格式化\r\n * @en_US Format\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, 'HH:mm:ss') format?: string;\r\n /**\r\n * @zh_CN 倒计时结束的事件\r\n * @en_US Event at the end of the countdown\r\n */\r\n @Output() finish = new EventEmitter<void>();\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { XStatisticPrefix, XStatisticProperty } from './statistic.property';\r\nimport { XIsChange, XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XStatisticPrefix}`,\r\n templateUrl: './statistic.component.html',\r\n styleUrls: ['./statistic.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XStatisticComponent extends XStatisticProperty implements OnChanges {\r\n displayInt = '';\r\n displayDecimal = '';\r\n\r\n constructor(public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { value } = simples;\r\n XIsChange(value) && this.setDisplay();\r\n }\r\n\r\n setDisplay() {\r\n const decimalSeparator: string = '.';\r\n const val = String(this.value);\r\n const [int, decimal] = val.split(decimalSeparator);\r\n this.displayInt = decimal ? `${int}${decimalSeparator}` : int;\r\n this.displayDecimal = decimal;\r\n }\r\n}\r\n","<div #statistic class=\"x-statistic\">\r\n <div class=\"x-statistic-label\">\r\n <ng-container *xOutlet=\"label\">{{ label }}</ng-container>\r\n </div>\r\n <div class=\"x-statistic-value\" [ngStyle]=\"valueStyle\">\r\n <ng-container *xOutlet=\"value\">\r\n <span class=\"x-statistic-value-prefix\" *ngIf=\"prefix\">\r\n <ng-container *xOutlet=\"prefix\">{{ prefix }}</ng-container>\r\n </span>\r\n <span class=\"x-statistic-value-int\" *ngIf=\"displayInt\">{{ displayInt }}</span>\r\n <span class=\"x-statistic-value-decimal\" *ngIf=\"displayDecimal\">{{ displayDecimal }}</span>\r\n <span class=\"x-statistic-value-suffix\" *ngIf=\"suffix\">\r\n <ng-container *xOutlet=\"suffix\">{{ suffix }}</ng-container>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n NgZone\r\n} from '@angular/core';\r\nimport { XCountdownPrefix, XCountdownProperty } from './statistic.property';\r\nimport { interval, Subscription } from 'rxjs';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XCountdownPrefix}`,\r\n templateUrl: './countdown.component.html',\r\n styleUrls: ['./countdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCountdownComponent extends XCountdownProperty implements OnInit, OnChanges {\r\n diff!: number;\r\n period = 1000 / 30;\r\n private _target!: number;\r\n private _updater!: Subscription | null;\r\n\r\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone, public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnInit(): void {\r\n this.syncTimer();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (value) {\r\n this._target = Number(value.currentValue);\r\n if (!value.isFirstChange()) {\r\n this.syncTimer();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopTimer();\r\n }\r\n\r\n syncTimer(): void {\r\n if (this._target >= Date.now()) {\r\n this.startTimer();\r\n } else {\r\n this.stopTimer();\r\n }\r\n }\r\n\r\n startTimer(): void {\r\n this.ngZone.runOutsideAngular(() => {\r\n this.stopTimer();\r\n this._updater = interval(this.period).subscribe(() => {\r\n this.updateValue();\r\n this.cdr.detectChanges();\r\n });\r\n });\r\n }\r\n\r\n stopTimer(): void {\r\n if (this._updater) {\r\n this._updater.unsubscribe();\r\n this._updater = null;\r\n }\r\n }\r\n\r\n updateValue(): void {\r\n this.diff = Math.max(this._target - Date.now(), 0);\r\n if (this.diff === 0) {\r\n this.stopTimer();\r\n this.finish.emit();\r\n }\r\n }\r\n}\r\n","<div class=\"x-countdown\">\r\n <x-statistic\r\n [value]=\"diff | xTimeRange: format\"\r\n [valueStyle]=\"valueStyle\"\r\n [prefix]=\"prefix\"\r\n [suffix]=\"suffix\"\r\n [label]=\"label\"\r\n ></x-statistic>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XStatisticComponent } from './statistic.component';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XCountdownComponent } from './countdown.component';\r\nimport { XTimeRangeModule } from '@ng-nest/ui/time-range';\r\nimport { XStatisticProperty, XCountdownProperty } from './statistic.property';\r\n\r\n@NgModule({\r\n declarations: [XStatisticComponent, XCountdownComponent, XStatisticProperty, XCountdownProperty],\r\n exports: [XStatisticComponent, XCountdownComponent],\r\n imports: [CommonModule, XOutletModule, XTimeRangeModule]\r\n})\r\nexport class XStatisticModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.XStatisticComponent","i3"],"mappings":"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"}
1
+ {"version":3,"file":"ng-nest-ui-statistic.mjs","sources":["../../../../lib/ng-nest/ui/statistic/statistic.property.ts","../../../../lib/ng-nest/ui/statistic/statistic.component.ts","../../../../lib/ng-nest/ui/statistic/statistic.component.html","../../../../lib/ng-nest/ui/statistic/countdown.component.ts","../../../../lib/ng-nest/ui/statistic/countdown.component.html","../../../../lib/ng-nest/ui/statistic/statistic.module.ts","../../../../lib/ng-nest/ui/statistic/ng-nest-ui-statistic.ts"],"sourcesContent":["import { XTemplate, XStyle, XWithConfig } from '@ng-nest/ui/core';\r\nimport { Input, Output, EventEmitter, Component } from '@angular/core';\r\n\r\n/**\r\n * Statistic\r\n * @selector x-statistic\r\n * @decorator component\r\n */\r\nexport const XStatisticPrefix = 'x-statistic';\r\n\r\n/**\r\n * Statistic Property\r\n */\r\n@Component({ selector: `${XStatisticPrefix}-property`, template: '' })\r\nexport class XStatisticProperty {\r\n /**\r\n * @zh_CN 显示值\r\n * @en_US Display value\r\n */\r\n @Input() value?: XTemplate;\r\n /**\r\n * @zh_CN 标题\r\n * @en_US Title\r\n */\r\n @Input() label?: XTemplate;\r\n /**\r\n * @zh_CN 前缀\r\n * @en_US Prefix\r\n */\r\n @Input() prefix?: XTemplate;\r\n /**\r\n * @zh_CN 后缀\r\n * @en_US Suffix\r\n */\r\n @Input() suffix?: XTemplate;\r\n /**\r\n * @zh_CN 显示值样式\r\n * @en_US Display value style\r\n */\r\n @Input() valueStyle: XStyle = {};\r\n}\r\n\r\n/**\r\n * Countdown\r\n * @selector x-countdown\r\n * @decorator component\r\n */\r\nexport const XCountdownPrefix = 'x-countdown';\r\nconst X_CONFIG_NAME = 'countdown';\r\n\r\n/**\r\n * Countdown Property\r\n */\r\n@Component({ selector: `${XCountdownPrefix}-property`, template: '' })\r\nexport class XCountdownProperty extends XStatisticProperty {\r\n /**\r\n * @zh_CN 格式化\r\n * @en_US Format\r\n */\r\n @Input() @XWithConfig<string>(X_CONFIG_NAME, 'HH:mm:ss') format?: string;\r\n /**\r\n * @zh_CN 倒计时结束的事件\r\n * @en_US Event at the end of the countdown\r\n */\r\n @Output() finish = new EventEmitter<void>();\r\n}\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, SimpleChanges, OnChanges } from '@angular/core';\r\nimport { XStatisticPrefix, XStatisticProperty } from './statistic.property';\r\nimport { XIsChange, XConfigService } from '@ng-nest/ui/core';\r\n\r\n@Component({\r\n selector: `${XStatisticPrefix}`,\r\n templateUrl: './statistic.component.html',\r\n styleUrls: ['./statistic.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XStatisticComponent extends XStatisticProperty implements OnChanges {\r\n displayInt = '';\r\n displayDecimal = '';\r\n\r\n constructor(public configService: XConfigService) {\r\n super();\r\n }\r\n\r\n ngOnChanges(simples: SimpleChanges) {\r\n const { value } = simples;\r\n XIsChange(value) && this.setDisplay();\r\n }\r\n\r\n setDisplay() {\r\n const decimalSeparator: string = '.';\r\n const val = String(this.value);\r\n const [int, decimal] = val.split(decimalSeparator);\r\n this.displayInt = decimal ? `${int}${decimalSeparator}` : int;\r\n this.displayDecimal = decimal;\r\n }\r\n}\r\n","<div #statistic class=\"x-statistic\">\r\n <div class=\"x-statistic-label\">\r\n <ng-container *xOutlet=\"label\">{{ label }}</ng-container>\r\n </div>\r\n <div class=\"x-statistic-value\" [ngStyle]=\"valueStyle\">\r\n <ng-container *xOutlet=\"value\">\r\n <span class=\"x-statistic-value-prefix\" *ngIf=\"prefix\">\r\n <ng-container *xOutlet=\"prefix\">{{ prefix }}</ng-container>\r\n </span>\r\n <span class=\"x-statistic-value-int\" *ngIf=\"displayInt\">{{ displayInt }}</span>\r\n <span class=\"x-statistic-value-decimal\" *ngIf=\"displayDecimal\">{{ displayDecimal }}</span>\r\n <span class=\"x-statistic-value-suffix\" *ngIf=\"suffix\">\r\n <ng-container *xOutlet=\"suffix\">{{ suffix }}</ng-container>\r\n </span>\r\n </ng-container>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ChangeDetectorRef,\r\n ChangeDetectionStrategy,\r\n SimpleChanges,\r\n OnChanges,\r\n NgZone,\r\n inject,\r\n PLATFORM_ID\r\n} from '@angular/core';\r\nimport { XCountdownPrefix, XCountdownProperty } from './statistic.property';\r\nimport { interval, Subscription } from 'rxjs';\r\nimport { XConfigService } from '@ng-nest/ui/core';\r\nimport { isPlatformBrowser } from '@angular/common';\r\n\r\n@Component({\r\n selector: `${XCountdownPrefix}`,\r\n templateUrl: './countdown.component.html',\r\n styleUrls: ['./countdown.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XCountdownComponent extends XCountdownProperty implements OnInit, OnChanges {\r\n diff!: number;\r\n period = 1000 / 30;\r\n private _target!: number;\r\n private _updater!: Subscription | null;\r\n platformId = inject(PLATFORM_ID);\r\n isBrowser = true;\r\n constructor(private cdr: ChangeDetectorRef, private ngZone: NgZone, public configService: XConfigService) {\r\n super();\r\n this.isBrowser = isPlatformBrowser(this.platformId);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.syncTimer();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n const { value } = changes;\r\n if (value) {\r\n this._target = Number(value.currentValue);\r\n if (!value.isFirstChange()) {\r\n this.syncTimer();\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this.stopTimer();\r\n }\r\n\r\n syncTimer(): void {\r\n if (this._target >= Date.now()) {\r\n this.startTimer();\r\n } else {\r\n this.stopTimer();\r\n }\r\n }\r\n\r\n startTimer(): void {\r\n if (!this.isBrowser) return;\r\n this.ngZone.runOutsideAngular(() => {\r\n this.stopTimer();\r\n this._updater = interval(this.period).subscribe(() => {\r\n this.updateValue();\r\n this.cdr.detectChanges();\r\n });\r\n });\r\n }\r\n\r\n stopTimer(): void {\r\n if (this._updater) {\r\n this._updater.unsubscribe();\r\n this._updater = null;\r\n }\r\n }\r\n\r\n updateValue(): void {\r\n this.diff = Math.max(this._target - Date.now(), 0);\r\n if (this.diff === 0) {\r\n this.stopTimer();\r\n this.finish.emit();\r\n }\r\n }\r\n}\r\n","<div class=\"x-countdown\">\r\n <x-statistic\r\n [value]=\"diff | xTimeRange: format\"\r\n [valueStyle]=\"valueStyle\"\r\n [prefix]=\"prefix\"\r\n [suffix]=\"suffix\"\r\n [label]=\"label\"\r\n ></x-statistic>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { XStatisticComponent } from './statistic.component';\r\nimport { XOutletModule } from '@ng-nest/ui/outlet';\r\nimport { XCountdownComponent } from './countdown.component';\r\nimport { XTimeRangeModule } from '@ng-nest/ui/time-range';\r\nimport { XStatisticProperty, XCountdownProperty } from './statistic.property';\r\n\r\n@NgModule({\r\n declarations: [XStatisticComponent, XCountdownComponent, XStatisticProperty, XCountdownProperty],\r\n exports: [XStatisticComponent, XCountdownComponent],\r\n imports: [CommonModule, XOutletModule, XTimeRangeModule]\r\n})\r\nexport class XStatisticModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i2.XStatisticComponent","i3"],"mappings":"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"}