@ng-nest/ui 19.0.0 → 19.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/anchor/anchor.component.d.ts +3 -1
- package/api/api.component.d.ts +1 -1
- package/auto-complete/auto-complete.component.d.ts +1 -3
- package/auto-complete/auto-complete.property.d.ts +1 -1
- package/base-form/base-form.component.d.ts +1 -1
- package/base-form/base-form.property.d.ts +0 -104
- package/carousel/carousel-panel.component.d.ts +1 -1
- package/cascade/cascade.component.d.ts +1 -2
- package/cascade/cascade.property.d.ts +1 -1
- package/checkbox/checkbox.property.d.ts +6 -1
- package/collapse/collapse.component.d.ts +1 -3
- package/collapse/collapse.property.d.ts +1 -15
- package/color-picker/color-picker.component.d.ts +0 -1
- package/color-picker/color-picker.property.d.ts +1 -1
- package/core/config/config.d.ts +1 -0
- package/date-picker/date-picker.component.d.ts +0 -1
- package/date-picker/date-picker.property.d.ts +2 -2
- package/dialog/dialog-portal.component.d.ts +5 -3
- package/dropdown/dropdown.component.d.ts +0 -1
- package/fesm2022/ng-nest-ui-anchor.mjs +11 -7
- package/fesm2022/ng-nest-ui-anchor.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-api.mjs +4 -4
- package/fesm2022/ng-nest-ui-api.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-auto-complete.mjs +14 -23
- package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs +1 -1
- package/fesm2022/ng-nest-ui-back-top.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-base-form.mjs +23 -120
- package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-calendar.mjs +1 -6
- package/fesm2022/ng-nest-ui-calendar.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-carousel.mjs +3 -11
- package/fesm2022/ng-nest-ui-carousel.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-cascade.mjs +1 -7
- package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-checkbox.mjs +2 -2
- package/fesm2022/ng-nest-ui-checkbox.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-collapse.mjs +6 -28
- package/fesm2022/ng-nest-ui-collapse.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-color-picker.mjs +0 -3
- package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-date-picker.mjs +0 -3
- package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dialog.mjs +11 -5
- package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-dropdown.mjs +0 -3
- package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-image.mjs +2 -2
- package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-select.mjs +4 -6
- package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-table.mjs +24 -7
- package/fesm2022/ng-nest-ui-table.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-textarea.mjs +2 -2
- package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-time-picker.mjs +0 -3
- package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-timeline.mjs +1 -11
- package/fesm2022/ng-nest-ui-timeline.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tooltip.mjs +30 -19
- package/fesm2022/ng-nest-ui-tooltip.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-transfer.mjs +8 -3
- package/fesm2022/ng-nest-ui-transfer.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-file.mjs +2 -2
- package/fesm2022/ng-nest-ui-tree-file.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree-select.mjs +93 -53
- package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-tree.mjs +10 -5
- package/fesm2022/ng-nest-ui-tree.mjs.map +1 -1
- package/fesm2022/ng-nest-ui-upload.mjs +3 -6
- package/fesm2022/ng-nest-ui-upload.mjs.map +1 -1
- package/find/find.property.d.ts +1 -1
- package/form/form.property.d.ts +1 -1
- package/input/input.property.d.ts +1 -1
- package/input-number/input-number.property.d.ts +1 -1
- package/list/list.property.d.ts +1 -1
- package/package.json +62 -62
- package/radio/radio.property.d.ts +1 -1
- package/rate/rate.property.d.ts +1 -1
- package/select/select.component.d.ts +0 -1
- package/select/select.property.d.ts +1 -1
- package/slider-select/slider-select.property.d.ts +1 -1
- package/switch/switch.property.d.ts +1 -1
- package/table/table-body.component.d.ts +2 -0
- package/table/table.component.d.ts +2 -2
- package/table/table.property.d.ts +12 -1
- package/textarea/textarea.property.d.ts +1 -1
- package/theme/theme.property.d.ts +1 -1
- package/time-picker/time-picker.component.d.ts +0 -1
- package/time-picker/time-picker.property.d.ts +1 -1
- package/timeline/timeline.property.d.ts +1 -11
- package/tooltip/tooltip.directive.d.ts +5 -3
- package/transfer/transfer.property.d.ts +1 -1
- package/tree/tree.property.d.ts +6 -1
- package/tree-select/tree-select-portal.component.d.ts +1 -4
- package/tree-select/tree-select.component.d.ts +13 -6
- package/tree-select/tree-select.property.d.ts +2 -12
- package/upload/upload.component.d.ts +0 -1
- package/upload/upload.property.d.ts +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { OnInit, ElementRef, AfterViewInit, OnDestroy, AfterContentChecked } from '@angular/core';
|
|
1
|
+
import { OnInit, ElementRef, AfterViewInit, OnDestroy, AfterContentChecked, SimpleChanges } from '@angular/core';
|
|
2
2
|
import { XAnchorProperty } from './anchor.property';
|
|
3
3
|
import { Subject } from 'rxjs';
|
|
4
4
|
import type { XSliderNode } from '@ng-nest/ui/slider';
|
|
@@ -21,10 +21,12 @@ export declare class XAnchorComponent extends XAnchorProperty implements OnInit,
|
|
|
21
21
|
private unSubject;
|
|
22
22
|
private renderer;
|
|
23
23
|
private elementRef;
|
|
24
|
+
private scrollChanged;
|
|
24
25
|
ngAfterContentChecked(): void;
|
|
25
26
|
ngOnInit(): void;
|
|
26
27
|
ngAfterViewInit(): void;
|
|
27
28
|
ngOnDestroy(): void;
|
|
29
|
+
ngOnChanges(changes: SimpleChanges): void;
|
|
28
30
|
activatedChange(index: number): void;
|
|
29
31
|
private setScroll;
|
|
30
32
|
private setActivatedByScroll;
|
package/api/api.component.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from "@angular/core";
|
|
2
2
|
export declare class XApiComponent {
|
|
3
|
-
|
|
3
|
+
_has: boolean;
|
|
4
4
|
static ɵfac: i0.ɵɵFactoryDeclaration<XApiComponent, never>;
|
|
5
5
|
static ɵcmp: i0.ɵɵComponentDeclaration<XApiComponent, "x-api", never, {}, {}, never, ["*"], true, never>;
|
|
6
6
|
}
|
|
@@ -21,7 +21,6 @@ export declare class XAutoCompleteComponent extends XAutoCompleteProperty implem
|
|
|
21
21
|
closeSubject: Subject<void>;
|
|
22
22
|
keydownSubject: Subject<KeyboardEvent>;
|
|
23
23
|
private unSubject;
|
|
24
|
-
private document;
|
|
25
24
|
private portalService;
|
|
26
25
|
private viewContainerRef;
|
|
27
26
|
private overlay;
|
|
@@ -39,8 +38,7 @@ export declare class XAutoCompleteComponent extends XAutoCompleteProperty implem
|
|
|
39
38
|
setSubject(): void;
|
|
40
39
|
setParantScroll(): void;
|
|
41
40
|
portalAttached(): boolean | undefined;
|
|
42
|
-
closePortal():
|
|
43
|
-
destroyPortal(): void;
|
|
41
|
+
closePortal(): void;
|
|
44
42
|
showPortal(): void;
|
|
45
43
|
createPortal(): void;
|
|
46
44
|
setPosition(config: OverlayConfig): void;
|
|
@@ -15,7 +15,7 @@ declare const XAutoCompleteProperty_base: new () => {
|
|
|
15
15
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
16
16
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
17
17
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
18
|
-
invalidIndex: import("@angular/core").
|
|
18
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
19
19
|
value: import("@angular/core").WritableSignal<any>;
|
|
20
20
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
21
21
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -15,7 +15,7 @@ export declare function XFormControlFunction<C extends XComponentConfigKey>(conf
|
|
|
15
15
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
16
16
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
17
17
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
18
|
-
invalidIndex: import("@angular/core").
|
|
18
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
19
19
|
value: import("@angular/core").WritableSignal<any>;
|
|
20
20
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
21
21
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -4,110 +4,6 @@ import * as i0 from "@angular/core";
|
|
|
4
4
|
/**
|
|
5
5
|
* 表单对象共有的参数
|
|
6
6
|
*/
|
|
7
|
-
export declare class XFormProp extends XProperty {
|
|
8
|
-
/**
|
|
9
|
-
* @zh_CN 标签
|
|
10
|
-
* @en_US Label
|
|
11
|
-
*/
|
|
12
|
-
readonly label: import("@angular/core").InputSignal<string>;
|
|
13
|
-
/**
|
|
14
|
-
* @zh_CN 标签宽度
|
|
15
|
-
* @en_US Label width
|
|
16
|
-
*/
|
|
17
|
-
readonly labelWidth: import("@angular/core").InputSignalWithTransform<string, XNumber>;
|
|
18
|
-
/**
|
|
19
|
-
* @zh_CN 标签文字对齐方式
|
|
20
|
-
* @en_US Label text alignment method
|
|
21
|
-
*/
|
|
22
|
-
readonly labelAlign: import("@angular/core").InputSignal<XAlign>;
|
|
23
|
-
/**
|
|
24
|
-
* @zh_CN flex 布局下的子元素水平排列方式
|
|
25
|
-
* @en_US The level of sub-element level arrangement under flex layout
|
|
26
|
-
*/
|
|
27
|
-
readonly justify: import("@angular/core").InputSignal<XJustify>;
|
|
28
|
-
/**
|
|
29
|
-
* @zh_CN flex 布局下的子元素垂直排列方式
|
|
30
|
-
* @en_US sub-element vertical arrangement method under flex layout
|
|
31
|
-
*/
|
|
32
|
-
readonly align: import("@angular/core").InputSignal<XAlign>;
|
|
33
|
-
/**
|
|
34
|
-
* @zh_CN flex 布局下的子元素排列方向
|
|
35
|
-
* @en_US The direction of the sub-element arrangement under flex layout
|
|
36
|
-
*/
|
|
37
|
-
readonly direction: import("@angular/core").InputSignal<XDirection>;
|
|
38
|
-
/**
|
|
39
|
-
* @zh_CN 尺寸
|
|
40
|
-
* @en_US Size
|
|
41
|
-
*/
|
|
42
|
-
readonly size: import("@angular/core").InputSignal<XSize>;
|
|
43
|
-
/**
|
|
44
|
-
* @zh_CN 输入提示信息
|
|
45
|
-
* @en_US Enter prompt information
|
|
46
|
-
*/
|
|
47
|
-
readonly placeholder: import("@angular/core").InputSignal<string | string[]>;
|
|
48
|
-
/**
|
|
49
|
-
* @zh_CN 禁用
|
|
50
|
-
* @en_US Disabled
|
|
51
|
-
*/
|
|
52
|
-
readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, XBoolean>;
|
|
53
|
-
/**
|
|
54
|
-
* @zh_CN 必填
|
|
55
|
-
* @en_US Required
|
|
56
|
-
*/
|
|
57
|
-
readonly required: import("@angular/core").InputSignalWithTransform<boolean, XBoolean>;
|
|
58
|
-
/**
|
|
59
|
-
* @zh_CN 只读
|
|
60
|
-
* @en_US Readonly
|
|
61
|
-
*/
|
|
62
|
-
readonly readonly: import("@angular/core").InputSignalWithTransform<boolean, XBoolean>;
|
|
63
|
-
/**
|
|
64
|
-
* @zh_CN 值模板
|
|
65
|
-
* @en_US Node template
|
|
66
|
-
*/
|
|
67
|
-
readonly valueTpl: import("@angular/core").InputSignal<TemplateRef<any> | undefined>;
|
|
68
|
-
/**
|
|
69
|
-
* @zh_CN 值模板参数
|
|
70
|
-
* @en_US Node template
|
|
71
|
-
*/
|
|
72
|
-
readonly valueTplContext: import("@angular/core").InputSignal<unknown>;
|
|
73
|
-
/**
|
|
74
|
-
* @zh_CN 前置标签
|
|
75
|
-
* @en_US Before label
|
|
76
|
-
*/
|
|
77
|
-
readonly before: import("@angular/core").InputSignal<XTemplate | undefined>;
|
|
78
|
-
/**
|
|
79
|
-
* @zh_CN 后置标签
|
|
80
|
-
* @en_US After label
|
|
81
|
-
*/
|
|
82
|
-
readonly after: import("@angular/core").InputSignal<XTemplate | undefined>;
|
|
83
|
-
/**
|
|
84
|
-
* @zh_CN 正则验证规则
|
|
85
|
-
* @en_US Regular verification rules
|
|
86
|
-
*/
|
|
87
|
-
readonly pattern: import("@angular/core").InputSignal<any>;
|
|
88
|
-
/**
|
|
89
|
-
* @zh_CN 验证不通过提示文字
|
|
90
|
-
* @en_US Verify not pass the prompt text
|
|
91
|
-
*/
|
|
92
|
-
readonly message: import("@angular/core").InputSignal<string | string[]>;
|
|
93
|
-
/**
|
|
94
|
-
* @zh_CN 激活状态
|
|
95
|
-
* @en_US Activation state
|
|
96
|
-
*/
|
|
97
|
-
readonly active: import("@angular/core").ModelSignal<boolean>;
|
|
98
|
-
/**
|
|
99
|
-
* @zh_CN 输入框点击样式
|
|
100
|
-
* @en_US Enter box click style
|
|
101
|
-
*/
|
|
102
|
-
readonly pointer: import("@angular/core").InputSignalWithTransform<boolean, XBoolean>;
|
|
103
|
-
/**
|
|
104
|
-
* @zh_CN 输入验证函数
|
|
105
|
-
* @en_US Enter the verification function
|
|
106
|
-
*/
|
|
107
|
-
readonly inputValidator: import("@angular/core").InputSignal<((value: any) => boolean) | undefined>;
|
|
108
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<XFormProp, never>;
|
|
109
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XFormProp, "x-form-prop", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "labelAlign": { "alias": "labelAlign"; "required": false; "isSignal": true; }; "justify": { "alias": "justify"; "required": false; "isSignal": true; }; "align": { "alias": "align"; "required": false; "isSignal": true; }; "direction": { "alias": "direction"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "valueTpl": { "alias": "valueTpl"; "required": false; "isSignal": true; }; "valueTplContext": { "alias": "valueTplContext"; "required": false; "isSignal": true; }; "before": { "alias": "before"; "required": false; "isSignal": true; }; "after": { "alias": "after"; "required": false; "isSignal": true; }; "pattern": { "alias": "pattern"; "required": false; "isSignal": true; }; "message": { "alias": "message"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; "pointer": { "alias": "pointer"; "required": false; "isSignal": true; }; "inputValidator": { "alias": "inputValidator"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, never, never, true, never>;
|
|
110
|
-
}
|
|
111
7
|
export interface XFormOption {
|
|
112
8
|
/**
|
|
113
9
|
* 标签
|
|
@@ -26,7 +26,7 @@ export declare class XCarouselPanelComponent extends XCarouselPanelProperty impl
|
|
|
26
26
|
ngOnDestroy(): void;
|
|
27
27
|
setActive(): void;
|
|
28
28
|
setStyles(): void;
|
|
29
|
-
calcCardTranslate(index: number, activeIndex: number): number
|
|
29
|
+
calcCardTranslate(index: number, activeIndex: number): number;
|
|
30
30
|
update(): void;
|
|
31
31
|
panelClick(): void;
|
|
32
32
|
static ɵfac: i0.ɵɵFactoryDeclaration<XCarouselPanelComponent, never>;
|
|
@@ -40,8 +40,7 @@ export declare class XCascadeComponent extends XCascadeProperty implements OnIni
|
|
|
40
40
|
mleave(): void;
|
|
41
41
|
clearEmit(): void;
|
|
42
42
|
portalAttached(): boolean | undefined;
|
|
43
|
-
closePortal():
|
|
44
|
-
destroyPortal(): void;
|
|
43
|
+
closePortal(): void;
|
|
45
44
|
showPortal(): void;
|
|
46
45
|
setPosition(config: OverlayConfig): void;
|
|
47
46
|
setInstance(): void;
|
|
@@ -15,7 +15,7 @@ declare const XCascadeProperty_base: new () => {
|
|
|
15
15
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
16
16
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
17
17
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
18
|
-
invalidIndex: import("@angular/core").
|
|
18
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
19
19
|
value: import("@angular/core").WritableSignal<any>;
|
|
20
20
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
21
21
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -16,7 +16,7 @@ declare const XCheckboxProperty_base: new () => {
|
|
|
16
16
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
17
17
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
18
18
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
19
|
-
invalidIndex: import("@angular/core").
|
|
19
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
20
20
|
value: import("@angular/core").WritableSignal<any>;
|
|
21
21
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
22
22
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -310,5 +310,10 @@ export interface XCheckboxNode extends XIdentityProperty {
|
|
|
310
310
|
* @en_US Label text
|
|
311
311
|
*/
|
|
312
312
|
label?: XTemplate;
|
|
313
|
+
/**
|
|
314
|
+
* @zh_CN label 为模板参数的时候
|
|
315
|
+
* @en_US Label when setting template parameters
|
|
316
|
+
*/
|
|
317
|
+
node?: XCheckboxNode;
|
|
313
318
|
}
|
|
314
319
|
export {};
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import { SimpleChanges } from '@angular/core';
|
|
2
1
|
import { XCollapseProperty } from './collapse.property';
|
|
3
2
|
import * as i0 from "@angular/core";
|
|
4
3
|
export declare class XCollapseComponent extends XCollapseProperty {
|
|
5
4
|
start: import("@angular/core").WritableSignal<number>;
|
|
6
5
|
panelChanges: import("@angular/core").WritableSignal<(() => void)[]>;
|
|
7
|
-
|
|
8
|
-
setActives(): void;
|
|
6
|
+
active: import("@angular/core").WritableSignal<number[]>;
|
|
9
7
|
change(num: number, add?: boolean): void;
|
|
10
8
|
static ɵfac: i0.ɵɵFactoryDeclaration<XCollapseComponent, never>;
|
|
11
9
|
static ɵcmp: i0.ɵɵComponentDeclaration<XCollapseComponent, "x-collapse", never, {}, {}, never, ["*"], true, never>;
|
|
@@ -101,22 +101,8 @@ export declare class XCollapseProperty extends XCollapseProperty_base {
|
|
|
101
101
|
*
|
|
102
102
|
*/
|
|
103
103
|
readonly bordered: import("@angular/core").InputSignalWithTransform<boolean, XBoolean>;
|
|
104
|
-
/**
|
|
105
|
-
* @zh_CN 当前激活的面板序号
|
|
106
|
-
* @en_US The serial number of the currently active panel
|
|
107
|
-
* @example
|
|
108
|
-
*
|
|
109
|
-
* ```html
|
|
110
|
-
* <x-collapse [active]="[0, 1]">
|
|
111
|
-
* <x-collapse-panel label="Title 1"></x-collapse-panel>
|
|
112
|
-
* <x-collapse-panel label="Title 2"></x-collapse-panel>
|
|
113
|
-
* </x-collapse>
|
|
114
|
-
* ```
|
|
115
|
-
*
|
|
116
|
-
*/
|
|
117
|
-
readonly active: import("@angular/core").ModelSignal<number[]>;
|
|
118
104
|
static ɵfac: i0.ɵɵFactoryDeclaration<XCollapseProperty, never>;
|
|
119
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XCollapseProperty, "x-collapse-property", never, { "accordion": { "alias": "accordion"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "ghost": { "alias": "ghost"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; };
|
|
105
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XCollapseProperty, "x-collapse-property", never, { "accordion": { "alias": "accordion"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "showIcon": { "alias": "showIcon"; "required": false; "isSignal": true; }; "iconPosition": { "alias": "iconPosition"; "required": false; "isSignal": true; }; "ghost": { "alias": "ghost"; "required": false; "isSignal": true; }; "bordered": { "alias": "bordered"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
120
106
|
}
|
|
121
107
|
/**
|
|
122
108
|
* @zh_CN 图标位置
|
|
@@ -41,7 +41,6 @@ export declare class XColorPickerComponent extends XColorPickerProperty implemen
|
|
|
41
41
|
clearEmit(): void;
|
|
42
42
|
portalAttached(): boolean | undefined;
|
|
43
43
|
closePortal(): boolean;
|
|
44
|
-
destroyPortal(): void;
|
|
45
44
|
showPortal(): void;
|
|
46
45
|
setPosition(config: OverlayConfig): void;
|
|
47
46
|
setParantScroll(): void;
|
|
@@ -15,7 +15,7 @@ declare const XColorPickerProperty_base: new () => {
|
|
|
15
15
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
16
16
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
17
17
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
18
|
-
invalidIndex: import("@angular/core").
|
|
18
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
19
19
|
value: import("@angular/core").WritableSignal<any>;
|
|
20
20
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
21
21
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
package/core/config/config.d.ts
CHANGED
|
@@ -99,7 +99,6 @@ export declare class XDatePickerComponent extends XDatePickerProperty implements
|
|
|
99
99
|
getValue(): string | number | Date | null;
|
|
100
100
|
portalAttached(): boolean | undefined;
|
|
101
101
|
closePortal(): boolean;
|
|
102
|
-
destroyPortal(): void;
|
|
103
102
|
showPortal(): void;
|
|
104
103
|
setPosition(config: OverlayConfig): void;
|
|
105
104
|
setInstance(): void;
|
|
@@ -16,7 +16,7 @@ declare const XDatePickerProperty_base: new () => {
|
|
|
16
16
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
17
17
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
18
18
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
19
|
-
invalidIndex: import("@angular/core").
|
|
19
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
20
20
|
value: import("@angular/core").WritableSignal<any>;
|
|
21
21
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
22
22
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -383,7 +383,7 @@ declare const XDateRangeProperty_base: new () => {
|
|
|
383
383
|
invalidPattern: import("@angular/core").Signal<boolean>;
|
|
384
384
|
requiredIsEmpty: import("@angular/core").Signal<boolean>;
|
|
385
385
|
invalidMessage: import("@angular/core").Signal<string>;
|
|
386
|
-
invalidIndex: import("@angular/core").
|
|
386
|
+
invalidIndex: import("@angular/core").Signal<number>;
|
|
387
387
|
value: import("@angular/core").WritableSignal<any>;
|
|
388
388
|
validatorSignal: import("@angular/core").WritableSignal<boolean>;
|
|
389
389
|
disabledSignal: import("@angular/core").WritableSignal<boolean>;
|
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
import { BasePortalOutlet, CdkPortalOutlet, ComponentPortal, TemplatePortal } from '@angular/cdk/portal';
|
|
2
|
-
import { ComponentRef, EmbeddedViewRef, EventEmitter, Renderer2 } from '@angular/core';
|
|
2
|
+
import { ChangeDetectorRef, ComponentRef, EmbeddedViewRef, EventEmitter, Renderer2 } from '@angular/core';
|
|
3
3
|
import { XDialogAnimationEvent, XDialogAnimationState, XDialogRefOption } from './dialog.property';
|
|
4
4
|
import { AnimationEvent } from '@angular/animations';
|
|
5
5
|
import { CdkDrag, CdkDragEnd, CdkDragHandle } from '@angular/cdk/drag-drop';
|
|
6
6
|
import { XDialogRef } from './dialog-ref';
|
|
7
7
|
import * as i0 from "@angular/core";
|
|
8
8
|
export declare class XDialogPortalComponent extends BasePortalOutlet {
|
|
9
|
-
placement
|
|
9
|
+
placement: import("@angular/core").ModelSignal<XDialogAnimationState>;
|
|
10
|
+
get getPlacement(): XDialogAnimationState;
|
|
10
11
|
done({ toState, totalTime }: AnimationEvent): void;
|
|
11
12
|
start({ toState, totalTime }: AnimationEvent): void;
|
|
12
13
|
renderer: Renderer2;
|
|
14
|
+
changeDetectorRef: ChangeDetectorRef;
|
|
13
15
|
portalOutlet: import("@angular/core").Signal<CdkPortalOutlet>;
|
|
14
16
|
dragRef: import("@angular/core").Signal<CdkDrag<any>>;
|
|
15
17
|
handles: import("@angular/core").Signal<readonly CdkDragHandle[]>;
|
|
@@ -39,5 +41,5 @@ export declare class XDialogPortalComponent extends BasePortalOutlet {
|
|
|
39
41
|
attachTemplatePortal<C>(portal: TemplatePortal<C>): EmbeddedViewRef<C>;
|
|
40
42
|
onDragEnded(event: CdkDragEnd): void;
|
|
41
43
|
static ɵfac: i0.ɵɵFactoryDeclaration<XDialogPortalComponent, never>;
|
|
42
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<XDialogPortalComponent, "x-dialog-portal", never, {}, {}, ["handles"], never, true, never>;
|
|
44
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<XDialogPortalComponent, "x-dialog-portal", never, { "placement": { "alias": "placement"; "required": true; "isSignal": true; }; }, { "placement": "placementChange"; }, ["handles"], never, true, never>;
|
|
43
45
|
}
|
|
@@ -32,7 +32,6 @@ export declare class XDropdownComponent extends XDropdownProperty implements OnI
|
|
|
32
32
|
showPortal(): void;
|
|
33
33
|
portalAttached(): boolean | undefined;
|
|
34
34
|
closePortal(): boolean;
|
|
35
|
-
destroyPortal(): void;
|
|
36
35
|
createPortal(): void;
|
|
37
36
|
setPosition(config: OverlayConfig): void;
|
|
38
37
|
setInstance(): void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { input, Component, viewChild, ElementRef, signal, inject, computed, Renderer2, ViewEncapsulation, ChangeDetectionStrategy, NgModule } from '@angular/core';
|
|
3
|
-
import { XPropertyFunction, XToCssPixelValue, XIsEmpty, XComputedStyle, XToCssPx,
|
|
3
|
+
import { XPropertyFunction, XToCssPixelValue, XIsEmpty, XComputedStyle, XToCssPx, XIsChange, XRequestAnimationFrame, XIsNumber } from '@ng-nest/ui/core';
|
|
4
4
|
import { XSliderComponent } from '@ng-nest/ui/slider';
|
|
5
5
|
import { XAffixComponent } from '@ng-nest/ui/affix';
|
|
6
6
|
import { DOCUMENT, NgClass } from '@angular/common';
|
|
@@ -173,6 +173,7 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
173
173
|
this.unSubject = new Subject();
|
|
174
174
|
this.renderer = inject(Renderer2);
|
|
175
175
|
this.elementRef = inject(ElementRef);
|
|
176
|
+
this.scrollChanged = signal(null);
|
|
176
177
|
}
|
|
177
178
|
ngAfterContentChecked() {
|
|
178
179
|
this.contentChange.next(this.elementRef.nativeElement.innerText);
|
|
@@ -181,7 +182,6 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
181
182
|
this.setSliderData();
|
|
182
183
|
}
|
|
183
184
|
ngAfterViewInit() {
|
|
184
|
-
this.setScroll();
|
|
185
185
|
this.contentChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe(() => {
|
|
186
186
|
this.setSliderData();
|
|
187
187
|
});
|
|
@@ -190,10 +190,12 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
190
190
|
this.unSubject.next();
|
|
191
191
|
this.unSubject.complete();
|
|
192
192
|
}
|
|
193
|
+
ngOnChanges(changes) {
|
|
194
|
+
const { scroll } = changes;
|
|
195
|
+
XIsChange(scroll) && this.setScroll();
|
|
196
|
+
}
|
|
193
197
|
activatedChange(index) {
|
|
194
198
|
const hElements = this.hElements();
|
|
195
|
-
if (XIsEmpty(hElements) || XIsUndefined(this.scrollElement()))
|
|
196
|
-
return;
|
|
197
199
|
this.scrolling.set(true);
|
|
198
200
|
const hElement = hElements[index];
|
|
199
201
|
let scrollTop = hElement.offsetTop - this.anchor().nativeElement.offsetTop - parseFloat(XComputedStyle(hElement, 'margin-top'));
|
|
@@ -205,13 +207,15 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
205
207
|
setScroll() {
|
|
206
208
|
const elementScroll = this.scrollElement();
|
|
207
209
|
const listenScroll = elementScroll.tagName === 'HTML' ? this.document.defaultView : elementScroll;
|
|
208
|
-
|
|
210
|
+
if (this.scrollChanged())
|
|
211
|
+
this.scrollChanged().unsubscribe();
|
|
212
|
+
this.scrollChanged.set(fromEvent(listenScroll, 'scroll')
|
|
209
213
|
.pipe(throttleTime(10), takeUntil(this.unSubject))
|
|
210
214
|
.subscribe(() => {
|
|
211
215
|
if (this.scrolling())
|
|
212
216
|
return;
|
|
213
217
|
this.setActivatedByScroll();
|
|
214
|
-
});
|
|
218
|
+
}));
|
|
215
219
|
}
|
|
216
220
|
setActivatedByScroll() {
|
|
217
221
|
let now = 0;
|
|
@@ -273,7 +277,7 @@ class XAnchorComponent extends XAnchorProperty {
|
|
|
273
277
|
});
|
|
274
278
|
}
|
|
275
279
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XAnchorComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
|
|
276
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.1", type: XAnchorComponent, isStandalone: true, selector: "x-anchor", viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap()\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop()\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight()\" [style.width]=\"affixWidth()\">\r\n <x-slider\r\n [data]=\"sliderData()\"\r\n layout=\"column\"\r\n [(activatedIndex)]=\"activatedIndex\"\r\n [nodeJustify]=\"justify()\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0}.x-anchor{display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XAffixComponent, selector: "x-affix" }, { kind: "component", type: XSliderComponent, selector: "x-slider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
280
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "19.0.1", type: XAnchorComponent, isStandalone: true, selector: "x-anchor", viewQueries: [{ propertyName: "anchor", first: true, predicate: ["anchor"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "content", first: true, predicate: ["content"], descendants: true, read: ElementRef, isSignal: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div #anchor class=\"x-anchor\" [ngClass]=\"classMap()\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop()\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight()\" [style.width]=\"affixWidth()\">\r\n <x-slider\r\n [data]=\"sliderData()\"\r\n layout=\"column\"\r\n [(activatedIndex)]=\"activatedIndex\"\r\n [nodeJustify]=\"justify()\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n", styles: [".x-anchor{margin:0;padding:0}.x-anchor{display:flex}.x-anchor-content{flex:1}.x-anchor-affix{display:block}.x-anchor-slider{float:left}.x-anchor-slider:hover{overflow-y:auto}.x-anchor-slider .x-slider{overflow:hidden}.x-anchor-right{flex-direction:row}.x-anchor-right .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}.x-anchor-left{flex-direction:row-reverse}.x-anchor-left .x-anchor-slider .x-slider-column>.x-slider-scroll{overflow-y:auto}\n"], dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: XAffixComponent, selector: "x-affix" }, { kind: "component", type: XSliderComponent, selector: "x-slider" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
277
281
|
}
|
|
278
282
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XAnchorComponent, decorators: [{
|
|
279
283
|
type: Component,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-anchor.mjs","sources":["../../../../lib/ng-nest/ui/anchor/anchor.property.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.html","../../../../lib/ng-nest/ui/anchor/anchor-inner.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.module.ts","../../../../lib/ng-nest/ui/anchor/ng-nest-ui-anchor.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XIdentityProperty, XJustify, XPositionLeftRight, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Anchor\r\n * @selector x-anchor\r\n * @decorator component\r\n */\r\nexport const XAnchorPrefix = 'x-anchor';\r\nconst X_ANCHOR_CONFIG_NAME = 'anchor';\r\n\r\n/**\r\n * Anchor Property\r\n */\r\n@Component({\r\n selector: `${XAnchorPrefix}-property`, template: ''\r\n})\r\nexport class XAnchorProperty extends XPropertyFunction(X_ANCHOR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 滚动区域对象\r\n * @en_US Scroll area object\r\n * @example\r\n *\r\n * ```html\r\n * <div #scroll style=\"height: 60rem; width: 100%; overflow: auto;\">\r\n * <x-anchor [scroll]=\"scroll\">\r\n * ...\r\n * </x-anchor>\r\n * </div>\r\n * ```\r\n */\r\n readonly scroll = input<HTMLElement>();\r\n /**\r\n * @zh_CN 顶部距离\r\n * @en_US Top distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor affixTop=\"100\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly affixTop = input<string, XNumber>(this.config?.affixTop ?? '0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 底部距离\r\n * @en_US Bottom distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor affixBottom=\"100\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly affixBottom = input<string, XNumber>(this.config?.affixBottom ?? '0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 导航宽度\r\n * @en_US Navigation Width\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor affixWidth=\"150\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly affixWidth = input<string, XNumber>(this.config?.affixWidth!, { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 导航相对内容位置\r\n * @en_US Navigation relative content position\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor layout=\"left\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly layout = input<XAnchorLayout>(this.config?.layout ?? 'right');\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor justify=\"end\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly justify = input<XJustify>(this.config?.justify ?? 'start');\r\n}\r\n\r\n/**\r\n * Anchor inner\r\n * @selector x-anchor-inner\r\n * @decorator component\r\n */\r\nexport const XAnchorInnerPrefix = 'x-anchor-inner';\r\n\r\n/**\r\n * Anchor inner Property\r\n */\r\n@Component({\r\n selector: `${XAnchorInnerPrefix}-property`, template: ''\r\n})\r\nexport class XAnchorInnerProperty {}\r\n\r\n/**\r\n * Anchor Node\r\n */\r\nexport interface XAnchorNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 左内边距,用来显示层级\r\n * @en_US Left inner margin, used to display hierarchy\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 锚点的链接\r\n * @en_US Anchor link\r\n */\r\n link?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式,相对内容的位置\r\n * @en_US Layout method, relative content position\r\n */\r\nexport type XAnchorLayout = XPositionLeftRight;\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n AfterViewInit,\r\n OnDestroy,\r\n AfterContentChecked,\r\n inject,\r\n computed,\r\n signal,\r\n viewChild\r\n} from '@angular/core';\r\nimport { XAnchorPrefix, XAnchorProperty } from './anchor.property';\r\nimport { XComputedStyle, XIsEmpty, XRequestAnimationFrame, XIsNumber, XIsUndefined, XToCssPx } from '@ng-nest/ui/core';\r\nimport { XSliderComponent } from '@ng-nest/ui/slider';\r\nimport { XAffixComponent } from '@ng-nest/ui/affix';\r\nimport { DOCUMENT, NgClass } from '@angular/common';\r\nimport { fromEvent, Subject } from 'rxjs';\r\nimport { throttleTime, takeUntil, distinctUntilChanged } from 'rxjs/operators';\r\nimport type { XSliderNode } from '@ng-nest/ui/slider';\r\nimport type { XAnchorNode } from './anchor.property';\r\n\r\n@Component({\r\n selector: `${XAnchorPrefix}`,\r\n imports: [NgClass, XAffixComponent, XSliderComponent],\r\n templateUrl: './anchor.component.html',\r\n styleUrls: ['./anchor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorComponent extends XAnchorProperty implements OnInit, AfterViewInit, OnDestroy, AfterContentChecked {\r\n anchor = viewChild.required('anchor', { read: ElementRef<HTMLElement> });\r\n content = viewChild.required('content', { read: ElementRef<HTMLElement> });\r\n hElements = signal<NodeListOf<HTMLElement> | null>(null);\r\n sliderData = signal<XSliderNode[]>([]);\r\n activatedIndex = signal(0);\r\n\r\n document: Document = inject(DOCUMENT);\r\n contentChange = new Subject<string>();\r\n scrollElement = computed(() => {\r\n let scroll = this.scroll();\r\n if (!scroll) {\r\n scroll = this.document.documentElement;\r\n }\r\n return scroll;\r\n });\r\n sliderHeight = computed(() => {\r\n if (XIsEmpty(this.sliderData())) {\r\n return 0;\r\n } else {\r\n const height = this.scrollElement().offsetHeight;\r\n const top = parseFloat(XComputedStyle(this.scrollElement(), 'padding-top'));\r\n const borderTop = parseFloat(XComputedStyle(this.scrollElement(), 'border-top'));\r\n const bottom = parseFloat(XComputedStyle(this.scrollElement(), 'padding-bottom'));\r\n const borderBottom = parseFloat(XComputedStyle(this.scrollElement(), 'border-bottom'));\r\n return (\r\n height -\r\n top -\r\n bottom -\r\n borderTop -\r\n borderBottom -\r\n XToCssPx(this.affixTop(), this.fontSize()) -\r\n XToCssPx(this.affixBottom(), this.fontSize())\r\n );\r\n }\r\n });\r\n classMap = computed(() => ({\r\n [`${XAnchorPrefix}-${this.layout()}`]: !XIsEmpty(this.layout())\r\n }));\r\n private scrolling = signal(false);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n\r\n ngAfterContentChecked(): void {\r\n this.contentChange.next(this.elementRef.nativeElement.innerText);\r\n }\r\n\r\n ngOnInit() {\r\n this.setSliderData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.setScroll();\r\n this.contentChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe(() => {\r\n this.setSliderData();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n activatedChange(index: number) {\r\n const hElements = this.hElements();\r\n if (XIsEmpty(hElements) || XIsUndefined(this.scrollElement())) return;\r\n\r\n this.scrolling.set(true);\r\n const hElement = hElements![index];\r\n let scrollTop =\r\n hElement.offsetTop - this.anchor().nativeElement.offsetTop - parseFloat(XComputedStyle(hElement, 'margin-top'));\r\n let maxScrollTop = this.scrollElement().scrollHeight - this.scrollElement().clientHeight;\r\n if (scrollTop > maxScrollTop) scrollTop = maxScrollTop;\r\n this.scrollTo(this.scrollElement(), parseInt(`${scrollTop}`), 150);\r\n }\r\n\r\n private setScroll() {\r\n const elementScroll = this.scrollElement();\r\n const listenScroll = elementScroll.tagName === 'HTML' ? this.document.defaultView : elementScroll;\r\n fromEvent(listenScroll!, 'scroll')\r\n .pipe(throttleTime(10), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n if (this.scrolling()) return;\r\n this.setActivatedByScroll();\r\n });\r\n }\r\n\r\n private setActivatedByScroll() {\r\n let now = 0;\r\n const hElements = this.hElements();\r\n hElements!.forEach((h, index) => {\r\n let distance = this.scrollElement().scrollTop + this.anchor().nativeElement.offsetTop;\r\n if (distance >= h.offsetTop) {\r\n now = index;\r\n return;\r\n }\r\n });\r\n this.activatedIndex.set(now);\r\n }\r\n\r\n private setSliderData() {\r\n this.hElements.set(\r\n this.content().nativeElement.querySelectorAll(\r\n ':scope> h1,:scope> h2,:scope> h3,:scope> h4,:scope> h5,:scope> x-anchor-inner> h1,:scope> x-anchor-inner>h2,:scope> x-anchor-inner>h3,:scope> x-anchor-inner>h4,:scope> x-anchor-inner>h5'\r\n )\r\n );\r\n const hElements = this.hElements();\r\n if (hElements!.length > 0) {\r\n let list: XAnchorNode[] = [];\r\n hElements!.forEach((x: HTMLElement, i: number) => {\r\n const link = `x-anchor-${i}`;\r\n const left = this.setLeft(x);\r\n this.renderer.setAttribute(x, 'id', link);\r\n list = [\r\n ...list,\r\n {\r\n id: i,\r\n label: x.innerText,\r\n left: left,\r\n link: link\r\n }\r\n ];\r\n });\r\n this.sliderData.set(list);\r\n } else {\r\n this.sliderData.set([]);\r\n }\r\n }\r\n\r\n private setLeft(element: HTMLElement): number {\r\n const eles = ['H1', 'H2', 'H3', 'H4', 'H5'];\r\n const index = eles.indexOf(element.tagName);\r\n return index + 1;\r\n }\r\n\r\n private scrollTo(element: HTMLElement, to: number, duration: number) {\r\n const difference = to - element.scrollTop;\r\n const perTick = (difference / duration) * 10;\r\n XRequestAnimationFrame(() => {\r\n const num = element.scrollTop + perTick;\r\n if (XIsNumber(num) && num !== Infinity) {\r\n element.scrollTop = num;\r\n }\r\n if (element.scrollTop === to || duration <= 0) {\r\n setTimeout(() => this.scrolling.set(false), 20);\r\n return;\r\n } else {\r\n this.scrollTo(element, to, duration - 10);\r\n }\r\n });\r\n }\r\n}\r\n","<div #anchor class=\"x-anchor\" [ngClass]=\"classMap()\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop()\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight()\" [style.width]=\"affixWidth()\">\r\n <x-slider\r\n [data]=\"sliderData()\"\r\n layout=\"column\"\r\n [(activatedIndex)]=\"activatedIndex\"\r\n [nodeJustify]=\"justify()\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { XAnchorInnerPrefix, XAnchorInnerProperty } from './anchor.property';\r\n\r\n@Component({\r\n selector: `${XAnchorInnerPrefix}`,\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorInnerComponent extends XAnchorInnerProperty {}\r\n","import { NgModule } from '@angular/core';\r\nimport { XAnchorComponent } from './anchor.component';\r\nimport { XAnchorInnerComponent } from './anchor-inner.component';\r\n\r\n@NgModule({\r\n exports: [XAnchorComponent, XAnchorInnerComponent],\r\n imports: [XAnchorComponent, XAnchorInnerComponent]\r\n})\r\nexport class XAnchorModule {}\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-anchor.mjs","sources":["../../../../lib/ng-nest/ui/anchor/anchor.property.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.component.html","../../../../lib/ng-nest/ui/anchor/anchor-inner.component.ts","../../../../lib/ng-nest/ui/anchor/anchor.module.ts","../../../../lib/ng-nest/ui/anchor/ng-nest-ui-anchor.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XPropertyFunction, XToCssPixelValue } from '@ng-nest/ui/core';\r\nimport type { XIdentityProperty, XJustify, XPositionLeftRight, XNumber } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Anchor\r\n * @selector x-anchor\r\n * @decorator component\r\n */\r\nexport const XAnchorPrefix = 'x-anchor';\r\nconst X_ANCHOR_CONFIG_NAME = 'anchor';\r\n\r\n/**\r\n * Anchor Property\r\n */\r\n@Component({\r\n selector: `${XAnchorPrefix}-property`, template: ''\r\n})\r\nexport class XAnchorProperty extends XPropertyFunction(X_ANCHOR_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 滚动区域对象\r\n * @en_US Scroll area object\r\n * @example\r\n *\r\n * ```html\r\n * <div #scroll style=\"height: 60rem; width: 100%; overflow: auto;\">\r\n * <x-anchor [scroll]=\"scroll\">\r\n * ...\r\n * </x-anchor>\r\n * </div>\r\n * ```\r\n */\r\n readonly scroll = input<HTMLElement>();\r\n /**\r\n * @zh_CN 顶部距离\r\n * @en_US Top distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor affixTop=\"100\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly affixTop = input<string, XNumber>(this.config?.affixTop ?? '0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 底部距离\r\n * @en_US Bottom distance\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor affixBottom=\"100\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly affixBottom = input<string, XNumber>(this.config?.affixBottom ?? '0', { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 导航宽度\r\n * @en_US Navigation Width\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor affixWidth=\"150\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly affixWidth = input<string, XNumber>(this.config?.affixWidth!, { transform: XToCssPixelValue });\r\n /**\r\n * @zh_CN 导航相对内容位置\r\n * @en_US Navigation relative content position\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor layout=\"left\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly layout = input<XAnchorLayout>(this.config?.layout ?? 'right');\r\n /**\r\n * @zh_CN 对齐方式\r\n * @en_US Alignment\r\n * @example\r\n *\r\n * ```html\r\n * <x-anchor justify=\"end\">\r\n * ...\r\n * </x-anchor>\r\n * ```\r\n *\r\n */\r\n readonly justify = input<XJustify>(this.config?.justify ?? 'start');\r\n}\r\n\r\n/**\r\n * Anchor inner\r\n * @selector x-anchor-inner\r\n * @decorator component\r\n */\r\nexport const XAnchorInnerPrefix = 'x-anchor-inner';\r\n\r\n/**\r\n * Anchor inner Property\r\n */\r\n@Component({\r\n selector: `${XAnchorInnerPrefix}-property`, template: ''\r\n})\r\nexport class XAnchorInnerProperty {}\r\n\r\n/**\r\n * Anchor Node\r\n */\r\nexport interface XAnchorNode extends XIdentityProperty {\r\n /**\r\n * @zh_CN 左内边距,用来显示层级\r\n * @en_US Left inner margin, used to display hierarchy\r\n */\r\n left?: number;\r\n /**\r\n * @zh_CN 图标\r\n * @en_US Icon\r\n */\r\n icon?: string;\r\n /**\r\n * @zh_CN 锚点的链接\r\n * @en_US Anchor link\r\n */\r\n link?: string;\r\n}\r\n\r\n/**\r\n * @zh_CN 布局方式,相对内容的位置\r\n * @en_US Layout method, relative content position\r\n */\r\nexport type XAnchorLayout = XPositionLeftRight;\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n Renderer2,\r\n ElementRef,\r\n ChangeDetectionStrategy,\r\n AfterViewInit,\r\n OnDestroy,\r\n AfterContentChecked,\r\n inject,\r\n computed,\r\n signal,\r\n viewChild,\r\n SimpleChanges\r\n} from '@angular/core';\r\nimport { XAnchorPrefix, XAnchorProperty } from './anchor.property';\r\nimport { XComputedStyle, XIsEmpty, XRequestAnimationFrame, XIsNumber, XToCssPx, XIsChange } from '@ng-nest/ui/core';\r\nimport { XSliderComponent } from '@ng-nest/ui/slider';\r\nimport { XAffixComponent } from '@ng-nest/ui/affix';\r\nimport { DOCUMENT, NgClass } from '@angular/common';\r\nimport { fromEvent, Subject, Subscription } from 'rxjs';\r\nimport { throttleTime, takeUntil, distinctUntilChanged } from 'rxjs/operators';\r\nimport type { XSliderNode } from '@ng-nest/ui/slider';\r\nimport type { XAnchorNode } from './anchor.property';\r\n\r\n@Component({\r\n selector: `${XAnchorPrefix}`,\r\n imports: [NgClass, XAffixComponent, XSliderComponent],\r\n templateUrl: './anchor.component.html',\r\n styleUrls: ['./anchor.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorComponent extends XAnchorProperty implements OnInit, AfterViewInit, OnDestroy, AfterContentChecked {\r\n anchor = viewChild.required('anchor', { read: ElementRef<HTMLElement> });\r\n content = viewChild.required('content', { read: ElementRef<HTMLElement> });\r\n hElements = signal<NodeListOf<HTMLElement> | null>(null);\r\n sliderData = signal<XSliderNode[]>([]);\r\n activatedIndex = signal(0);\r\n\r\n document: Document = inject(DOCUMENT);\r\n contentChange = new Subject<string>();\r\n scrollElement = computed(() => {\r\n let scroll = this.scroll();\r\n if (!scroll) {\r\n scroll = this.document.documentElement;\r\n }\r\n return scroll;\r\n });\r\n sliderHeight = computed(() => {\r\n if (XIsEmpty(this.sliderData())) {\r\n return 0;\r\n } else {\r\n const height = this.scrollElement().offsetHeight;\r\n const top = parseFloat(XComputedStyle(this.scrollElement(), 'padding-top'));\r\n const borderTop = parseFloat(XComputedStyle(this.scrollElement(), 'border-top'));\r\n const bottom = parseFloat(XComputedStyle(this.scrollElement(), 'padding-bottom'));\r\n const borderBottom = parseFloat(XComputedStyle(this.scrollElement(), 'border-bottom'));\r\n return (\r\n height -\r\n top -\r\n bottom -\r\n borderTop -\r\n borderBottom -\r\n XToCssPx(this.affixTop(), this.fontSize()) -\r\n XToCssPx(this.affixBottom(), this.fontSize())\r\n );\r\n }\r\n });\r\n classMap = computed(() => ({\r\n [`${XAnchorPrefix}-${this.layout()}`]: !XIsEmpty(this.layout())\r\n }));\r\n private scrolling = signal(false);\r\n private fontSize = computed(() => parseFloat(XComputedStyle(this.document.documentElement, 'font-size')));\r\n private unSubject = new Subject<void>();\r\n private renderer = inject(Renderer2);\r\n private elementRef = inject(ElementRef);\r\n private scrollChanged = signal<Subscription | null>(null);\r\n\r\n ngAfterContentChecked(): void {\r\n this.contentChange.next(this.elementRef.nativeElement.innerText);\r\n }\r\n\r\n ngOnInit() {\r\n this.setSliderData();\r\n }\r\n\r\n ngAfterViewInit() {\r\n this.contentChange.pipe(distinctUntilChanged(), takeUntil(this.unSubject)).subscribe(() => {\r\n this.setSliderData();\r\n });\r\n }\r\n\r\n ngOnDestroy() {\r\n this.unSubject.next();\r\n this.unSubject.complete();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const { scroll } = changes;\r\n XIsChange(scroll) && this.setScroll();\r\n }\r\n\r\n activatedChange(index: number) {\r\n const hElements = this.hElements();\r\n\r\n this.scrolling.set(true);\r\n const hElement = hElements![index];\r\n let scrollTop =\r\n hElement.offsetTop - this.anchor().nativeElement.offsetTop - parseFloat(XComputedStyle(hElement, 'margin-top'));\r\n let maxScrollTop = this.scrollElement().scrollHeight - this.scrollElement().clientHeight;\r\n if (scrollTop > maxScrollTop) scrollTop = maxScrollTop;\r\n this.scrollTo(this.scrollElement(), parseInt(`${scrollTop}`), 150);\r\n }\r\n\r\n private setScroll() {\r\n const elementScroll = this.scrollElement();\r\n const listenScroll = elementScroll.tagName === 'HTML' ? this.document.defaultView : elementScroll;\r\n if (this.scrollChanged()) this.scrollChanged()!.unsubscribe();\r\n this.scrollChanged.set(\r\n fromEvent(listenScroll!, 'scroll')\r\n .pipe(throttleTime(10), takeUntil(this.unSubject))\r\n .subscribe(() => {\r\n if (this.scrolling()) return;\r\n this.setActivatedByScroll();\r\n })\r\n );\r\n }\r\n\r\n private setActivatedByScroll() {\r\n let now = 0;\r\n const hElements = this.hElements();\r\n hElements!.forEach((h, index) => {\r\n let distance = this.scrollElement().scrollTop + this.anchor().nativeElement.offsetTop;\r\n if (distance >= h.offsetTop) {\r\n now = index;\r\n return;\r\n }\r\n });\r\n this.activatedIndex.set(now);\r\n }\r\n\r\n private setSliderData() {\r\n this.hElements.set(\r\n this.content().nativeElement.querySelectorAll(\r\n ':scope> h1,:scope> h2,:scope> h3,:scope> h4,:scope> h5,:scope> x-anchor-inner> h1,:scope> x-anchor-inner>h2,:scope> x-anchor-inner>h3,:scope> x-anchor-inner>h4,:scope> x-anchor-inner>h5'\r\n )\r\n );\r\n const hElements = this.hElements();\r\n if (hElements!.length > 0) {\r\n let list: XAnchorNode[] = [];\r\n hElements!.forEach((x: HTMLElement, i: number) => {\r\n const link = `x-anchor-${i}`;\r\n const left = this.setLeft(x);\r\n this.renderer.setAttribute(x, 'id', link);\r\n list = [\r\n ...list,\r\n {\r\n id: i,\r\n label: x.innerText,\r\n left: left,\r\n link: link\r\n }\r\n ];\r\n });\r\n this.sliderData.set(list);\r\n } else {\r\n this.sliderData.set([]);\r\n }\r\n }\r\n\r\n private setLeft(element: HTMLElement): number {\r\n const eles = ['H1', 'H2', 'H3', 'H4', 'H5'];\r\n const index = eles.indexOf(element.tagName);\r\n return index + 1;\r\n }\r\n\r\n private scrollTo(element: HTMLElement, to: number, duration: number) {\r\n const difference = to - element.scrollTop;\r\n const perTick = (difference / duration) * 10;\r\n XRequestAnimationFrame(() => {\r\n const num = element.scrollTop + perTick;\r\n if (XIsNumber(num) && num !== Infinity) {\r\n element.scrollTop = num;\r\n }\r\n if (element.scrollTop === to || duration <= 0) {\r\n setTimeout(() => this.scrolling.set(false), 20);\r\n return;\r\n } else {\r\n this.scrollTo(element, to, duration - 10);\r\n }\r\n });\r\n }\r\n}\r\n","<div #anchor class=\"x-anchor\" [ngClass]=\"classMap()\">\r\n <div #content class=\"x-anchor-content\">\r\n <ng-content></ng-content>\r\n </div>\r\n <x-affix class=\"x-anchor-affix\" [top]=\"affixTop()\">\r\n <div class=\"x-anchor-slider\" [style.height.px]=\"sliderHeight()\" [style.width]=\"affixWidth()\">\r\n <x-slider\r\n [data]=\"sliderData()\"\r\n layout=\"column\"\r\n [(activatedIndex)]=\"activatedIndex\"\r\n [nodeJustify]=\"justify()\"\r\n [nodeTpl]=\"sliderNodeTpl\"\r\n [showAnchor]=\"true\"\r\n (indexChange)=\"activatedChange($event)\"\r\n ></x-slider>\r\n </div>\r\n </x-affix>\r\n</div>\r\n\r\n<ng-template #sliderNodeTpl let-node=\"$node\">\r\n <span [style.padding-left.rem]=\"node.left - 1\">{{ node.label }}</span>\r\n</ng-template>\r\n","import { ChangeDetectionStrategy, Component, ViewEncapsulation } from '@angular/core';\r\nimport { XAnchorInnerPrefix, XAnchorInnerProperty } from './anchor.property';\r\n\r\n@Component({\r\n selector: `${XAnchorInnerPrefix}`,\r\n template: '<ng-content></ng-content>',\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XAnchorInnerComponent extends XAnchorInnerProperty {}\r\n","import { NgModule } from '@angular/core';\r\nimport { XAnchorComponent } from './anchor.component';\r\nimport { XAnchorInnerComponent } from './anchor-inner.component';\r\n\r\n@NgModule({\r\n exports: [XAnchorComponent, XAnchorInnerComponent],\r\n imports: [XAnchorComponent, XAnchorInnerComponent]\r\n})\r\nexport class XAnchorModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -10,17 +10,17 @@ const XApiPrefix = 'x-api';
|
|
|
10
10
|
|
|
11
11
|
class XApiComponent {
|
|
12
12
|
constructor() {
|
|
13
|
-
this.
|
|
13
|
+
this._has = true;
|
|
14
14
|
}
|
|
15
15
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XApiComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
16
|
-
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.1", type: XApiComponent, isStandalone: true, selector: "x-api", host: { properties: { "class": "this.
|
|
16
|
+
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.0.1", type: XApiComponent, isStandalone: true, selector: "x-api", host: { properties: { "class.x-api": "this._has" } }, ngImport: i0, template: "<ng-content></ng-content>\r\n", styles: [".x-api{margin:0;padding:0}.x-api{display:block}.x-api>.x-api-selector:not(:first-child){margin-top:1rem}.x-api>.x-api-selector>span:first-child{font-size:1.25rem}.x-api>.x-api-selector>span:last-child{margin-left:1rem;padding:.25rem .5rem;color:var(--x-danger);background:var(--x-danger-900);border-radius:var(--x-border-small-radius)}.x-api>.x-api-interface>tr>td:nth-child(1){width:20%;position:relative;white-space:nowrap}.x-api>.x-api-interface>tr>td:nth-child(3){width:22%;color:#f637e3}.x-api>.x-api-interface>tr>td:nth-child(4){color:#fa2c05;width:16%}.x-api>.x-api-type>tr>td:nth-child(1){color:#3b82f6;width:20%}.x-api>.x-api-type>tr>td:nth-child(3){color:#dd4a68;width:35%}.x-api .x-api-name{color:#3b82f6;cursor:pointer;background-color:#3b82f61a;border-radius:var(--x-border-small-radius);padding:.25rem .325rem .25rem 1.5rem;transition:var(--x-animation-duration-base) background-color;will-change:background-color}.x-api .x-api-name:hover{background-color:#3b82f633}.x-api .x-api-signal{background:#3b82f61a;border-radius:var(--x-border-small-radius);color:var(--x-success);margin-right:-1.325rem;height:1.625rem;width:1.375rem;display:inline-flex;align-items:center;justify-content:center}.x-api .x-api-popover{color:#f637e3;cursor:pointer;background-color:#f637e31a;border-radius:var(--x-border-small-radius);padding:.25rem .325rem;transition:var(--x-animation-duration-base) background-color;will-change:background-color}.x-api .x-api-popover:hover{background-color:#f637e333}.x-api table{width:100%;background:var(--x-background);border-collapse:collapse;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-api table tr>th,.x-api table tr>td{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border);text-align:left;padding:.5rem 0}.x-api table tr:last-child>th,.x-api table tr:last-child>td{border-width:0px}.x-api table tr th{white-space:nowrap;color:var(--x-text)}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
|
|
17
17
|
}
|
|
18
18
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.1", ngImport: i0, type: XApiComponent, decorators: [{
|
|
19
19
|
type: Component,
|
|
20
20
|
args: [{ selector: `${XApiPrefix}`, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-content></ng-content>\r\n", styles: [".x-api{margin:0;padding:0}.x-api{display:block}.x-api>.x-api-selector:not(:first-child){margin-top:1rem}.x-api>.x-api-selector>span:first-child{font-size:1.25rem}.x-api>.x-api-selector>span:last-child{margin-left:1rem;padding:.25rem .5rem;color:var(--x-danger);background:var(--x-danger-900);border-radius:var(--x-border-small-radius)}.x-api>.x-api-interface>tr>td:nth-child(1){width:20%;position:relative;white-space:nowrap}.x-api>.x-api-interface>tr>td:nth-child(3){width:22%;color:#f637e3}.x-api>.x-api-interface>tr>td:nth-child(4){color:#fa2c05;width:16%}.x-api>.x-api-type>tr>td:nth-child(1){color:#3b82f6;width:20%}.x-api>.x-api-type>tr>td:nth-child(3){color:#dd4a68;width:35%}.x-api .x-api-name{color:#3b82f6;cursor:pointer;background-color:#3b82f61a;border-radius:var(--x-border-small-radius);padding:.25rem .325rem .25rem 1.5rem;transition:var(--x-animation-duration-base) background-color;will-change:background-color}.x-api .x-api-name:hover{background-color:#3b82f633}.x-api .x-api-signal{background:#3b82f61a;border-radius:var(--x-border-small-radius);color:var(--x-success);margin-right:-1.325rem;height:1.625rem;width:1.375rem;display:inline-flex;align-items:center;justify-content:center}.x-api .x-api-popover{color:#f637e3;cursor:pointer;background-color:#f637e31a;border-radius:var(--x-border-small-radius);padding:.25rem .325rem;transition:var(--x-animation-duration-base) background-color;will-change:background-color}.x-api .x-api-popover:hover{background-color:#f637e333}.x-api table{width:100%;background:var(--x-background);border-collapse:collapse;border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border)}.x-api table tr>th,.x-api table tr>td{border-bottom:var(--x-border-width) var(--x-border-style) var(--x-border);text-align:left;padding:.5rem 0}.x-api table tr:last-child>th,.x-api table tr:last-child>td{border-width:0px}.x-api table tr th{white-space:nowrap;color:var(--x-text)}\n"] }]
|
|
21
|
-
}], propDecorators: {
|
|
21
|
+
}], propDecorators: { _has: [{
|
|
22
22
|
type: HostBinding,
|
|
23
|
-
args: [`class`]
|
|
23
|
+
args: [`class.x-api`]
|
|
24
24
|
}] } });
|
|
25
25
|
|
|
26
26
|
class XApiModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ng-nest-ui-api.mjs","sources":["../../../../lib/ng-nest/ui/api/api.property.ts","../../../../lib/ng-nest/ui/api/api.component.ts","../../../../lib/ng-nest/ui/api/api.component.html","../../../../lib/ng-nest/ui/api/api.module.ts","../../../../lib/ng-nest/ui/api/ng-nest-ui-api.ts"],"sourcesContent":["/**\r\n * Api\r\n * @selector x-api\r\n * @decorator component\r\n */\r\nexport const XApiPrefix = 'x-api';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XApiPrefix } from './api.property';\r\n\r\n@Component({\r\n selector: `${XApiPrefix}`,\r\n templateUrl: './api.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XApiComponent {\r\n @HostBinding(`class`)
|
|
1
|
+
{"version":3,"file":"ng-nest-ui-api.mjs","sources":["../../../../lib/ng-nest/ui/api/api.property.ts","../../../../lib/ng-nest/ui/api/api.component.ts","../../../../lib/ng-nest/ui/api/api.component.html","../../../../lib/ng-nest/ui/api/api.module.ts","../../../../lib/ng-nest/ui/api/ng-nest-ui-api.ts"],"sourcesContent":["/**\r\n * Api\r\n * @selector x-api\r\n * @decorator component\r\n */\r\nexport const XApiPrefix = 'x-api';\r\n","import { Component, ViewEncapsulation, ChangeDetectionStrategy, HostBinding } from '@angular/core';\r\nimport { XApiPrefix } from './api.property';\r\n\r\n@Component({\r\n selector: `${XApiPrefix}`,\r\n templateUrl: './api.component.html',\r\n styleUrls: ['./style/index.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class XApiComponent {\r\n @HostBinding(`class.x-api`) _has = true;\r\n}\r\n","<ng-content></ng-content>\r\n","import { NgModule } from '@angular/core';\r\nimport { XApiComponent } from './api.component';\r\n\r\n@NgModule({\r\n exports: [XApiComponent],\r\n imports: [XApiComponent]\r\n})\r\nexport class XApiModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;AAAA;;;;AAIG;AACI,MAAM,UAAU,GAAG;;MCKb,aAAa,CAAA;AAP1B,IAAA,WAAA,GAAA;QAQ8B,IAAI,CAAA,IAAA,GAAG,IAAI;AACxC;iIAFY,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAb,uBAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,aAAa,uHCV1B,+BACA,EAAA,MAAA,EAAA,CAAA,04DAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;;2FDSa,aAAa,EAAA,UAAA,EAAA,CAAA;kBAPzB,SAAS;+BACE,CAAG,EAAA,UAAU,EAAE,EAGV,aAAA,EAAA,iBAAiB,CAAC,IAAI,EAAA,eAAA,EACpB,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,+BAAA,EAAA,MAAA,EAAA,CAAA,04DAAA,CAAA,EAAA;8BAGnB,IAAI,EAAA,CAAA;sBAA/B,WAAW;uBAAC,CAAa,WAAA,CAAA;;;MEJf,UAAU,CAAA;iIAAV,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;kIAAV,UAAU,EAAA,OAAA,EAAA,CAFX,aAAa,CAAA,EAAA,OAAA,EAAA,CADb,aAAa,CAAA,EAAA,CAAA,CAAA;kIAGZ,UAAU,EAAA,CAAA,CAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBAJtB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACR,OAAO,EAAE,CAAC,aAAa,CAAC;oBACxB,OAAO,EAAE,CAAC,aAAa;AACxB,iBAAA;;;ACND;;AAEG;;;;"}
|