ngx-tethys 19.1.0-next.0 → 19.1.0-next.10
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/CHANGELOG.md +126 -0
- package/README.md +0 -1
- package/action/action.component.d.ts +7 -8
- package/affix/affix.component.d.ts +3 -4
- package/arrow-switcher/arrow-switcher.component.d.ts +5 -1
- package/badge/badge.component.d.ts +1 -1
- package/button/button-group.component.d.ts +5 -12
- package/button/button-icon.component.d.ts +14 -28
- package/button/button.component.d.ts +17 -27
- package/color-picker/coordinates.directive.d.ts +1 -2
- package/date-picker/abstract-picker.component.d.ts +50 -52
- package/date-picker/abstract-picker.directive.d.ts +15 -40
- package/date-picker/base-picker.component.d.ts +12 -40
- package/date-picker/date-picker.config.d.ts +3 -0
- package/date-picker/lib/calendar/calendar-footer.component.d.ts +24 -19
- package/date-picker/lib/calendar/calendar-header.component.d.ts +15 -15
- package/date-picker/lib/calendar/calendar-table.component.d.ts +15 -16
- package/date-picker/lib/date/date-table-cell.component.d.ts +6 -3
- package/date-picker/lib/date/date-table.component.d.ts +2 -3
- package/date-picker/lib/date-carousel/date-carousel.component.d.ts +2 -3
- package/date-picker/lib/decade/decade-header.component.d.ts +2 -5
- package/date-picker/lib/decade/decade-table.component.d.ts +3 -5
- package/date-picker/lib/month/month-table.component.d.ts +1 -2
- package/date-picker/lib/popups/date-popup.component.d.ts +33 -34
- package/date-picker/lib/popups/inner-popup.component.d.ts +22 -29
- package/date-picker/lib/quarter/quarter-table.component.d.ts +1 -4
- package/date-picker/lib/year/year-header.component.d.ts +2 -4
- package/date-picker/lib/year/year-table.component.d.ts +2 -4
- package/date-picker/month-picker.component.d.ts +2 -2
- package/date-picker/picker.component.d.ts +31 -36
- package/date-picker/picker.pipes.d.ts +4 -5
- package/date-picker/picker.util.d.ts +5 -5
- package/date-picker/picker.validators.d.ts +4 -8
- package/date-picker/quarter-picker.component.d.ts +2 -3
- package/date-picker/styles/calendar.scss +1 -1
- package/date-picker/styles/range-picker.scss +1 -0
- package/date-picker/styles/week-picker.scss +1 -0
- package/date-picker/week-picker.component.d.ts +0 -1
- package/date-picker/year-picker.component.d.ts +2 -3
- package/dropdown/dropdown-active.directive.d.ts +4 -5
- package/dropdown/dropdown-menu-item.directive.d.ts +7 -15
- package/dropdown/dropdown-menu.component.d.ts +6 -13
- package/dropdown/dropdown-submenu.component.d.ts +2 -4
- package/dropdown/dropdown.directive.d.ts +15 -25
- package/empty/empty.component.d.ts +2 -1
- package/fesm2022/ngx-tethys-action.mjs +15 -16
- package/fesm2022/ngx-tethys-action.mjs.map +1 -1
- package/fesm2022/ngx-tethys-affix.mjs +14 -18
- package/fesm2022/ngx-tethys-affix.mjs.map +1 -1
- package/fesm2022/ngx-tethys-arrow-switcher.mjs +15 -3
- package/fesm2022/ngx-tethys-arrow-switcher.mjs.map +1 -1
- package/fesm2022/ngx-tethys-autocomplete.mjs +4 -4
- package/fesm2022/ngx-tethys-autocomplete.mjs.map +1 -1
- package/fesm2022/ngx-tethys-badge.mjs.map +1 -1
- package/fesm2022/ngx-tethys-button.mjs +225 -322
- package/fesm2022/ngx-tethys-button.mjs.map +1 -1
- package/fesm2022/ngx-tethys-carousel.mjs +1 -0
- package/fesm2022/ngx-tethys-carousel.mjs.map +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs +1 -1
- package/fesm2022/ngx-tethys-cascader.mjs.map +1 -1
- package/fesm2022/ngx-tethys-checkbox.mjs +2 -2
- package/fesm2022/ngx-tethys-checkbox.mjs.map +1 -1
- package/fesm2022/ngx-tethys-collapse.mjs +2 -2
- package/fesm2022/ngx-tethys-collapse.mjs.map +1 -1
- package/fesm2022/ngx-tethys-color-picker.mjs +4 -6
- package/fesm2022/ngx-tethys-color-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-copy.mjs +2 -2
- package/fesm2022/ngx-tethys-copy.mjs.map +1 -1
- package/fesm2022/ngx-tethys-date-picker.mjs +861 -1078
- package/fesm2022/ngx-tethys-date-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-divider.mjs +5 -5
- package/fesm2022/ngx-tethys-divider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-dropdown.mjs +159 -209
- package/fesm2022/ngx-tethys-dropdown.mjs.map +1 -1
- package/fesm2022/ngx-tethys-empty.mjs +5 -2
- package/fesm2022/ngx-tethys-empty.mjs.map +1 -1
- package/fesm2022/ngx-tethys-flexible-text.mjs +68 -88
- package/fesm2022/ngx-tethys-flexible-text.mjs.map +1 -1
- package/fesm2022/ngx-tethys-grid.mjs +10 -15
- package/fesm2022/ngx-tethys-grid.mjs.map +1 -1
- package/fesm2022/ngx-tethys-i18n.mjs +26 -6
- package/fesm2022/ngx-tethys-i18n.mjs.map +1 -1
- package/fesm2022/ngx-tethys-icon.mjs +44 -59
- package/fesm2022/ngx-tethys-icon.mjs.map +1 -1
- package/fesm2022/ngx-tethys-image.mjs +44 -42
- package/fesm2022/ngx-tethys-image.mjs.map +1 -1
- package/fesm2022/ngx-tethys-input-number.mjs.map +1 -1
- package/fesm2022/ngx-tethys-layout.mjs +291 -334
- package/fesm2022/ngx-tethys-layout.mjs.map +1 -1
- package/fesm2022/ngx-tethys-list.mjs +183 -217
- package/fesm2022/ngx-tethys-list.mjs.map +1 -1
- package/fesm2022/ngx-tethys-message.mjs +29 -36
- package/fesm2022/ngx-tethys-message.mjs.map +1 -1
- package/fesm2022/ngx-tethys-notify.mjs +33 -41
- package/fesm2022/ngx-tethys-notify.mjs.map +1 -1
- package/fesm2022/ngx-tethys-progress.mjs +7 -11
- package/fesm2022/ngx-tethys-progress.mjs.map +1 -1
- package/fesm2022/ngx-tethys-property.mjs +8 -19
- package/fesm2022/ngx-tethys-property.mjs.map +1 -1
- package/fesm2022/ngx-tethys-radio.mjs +46 -58
- package/fesm2022/ngx-tethys-radio.mjs.map +1 -1
- package/fesm2022/ngx-tethys-rate.mjs +115 -157
- package/fesm2022/ngx-tethys-rate.mjs.map +1 -1
- package/fesm2022/ngx-tethys-resizable.mjs +100 -143
- package/fesm2022/ngx-tethys-resizable.mjs.map +1 -1
- package/fesm2022/ngx-tethys-segment.mjs +84 -103
- package/fesm2022/ngx-tethys-segment.mjs.map +1 -1
- package/fesm2022/ngx-tethys-select.mjs +164 -228
- package/fesm2022/ngx-tethys-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-shared.mjs +423 -586
- package/fesm2022/ngx-tethys-shared.mjs.map +1 -1
- package/fesm2022/ngx-tethys-skeleton.mjs +1 -2
- package/fesm2022/ngx-tethys-skeleton.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slide.mjs +37 -56
- package/fesm2022/ngx-tethys-slide.mjs.map +1 -1
- package/fesm2022/ngx-tethys-slider.mjs.map +1 -1
- package/fesm2022/ngx-tethys-space.mjs +2 -8
- package/fesm2022/ngx-tethys-space.mjs.map +1 -1
- package/fesm2022/ngx-tethys-stepper.mjs.map +1 -1
- package/fesm2022/ngx-tethys-strength.mjs +52 -66
- package/fesm2022/ngx-tethys-strength.mjs.map +1 -1
- package/fesm2022/ngx-tethys-table.mjs +1 -2
- package/fesm2022/ngx-tethys-table.mjs.map +1 -1
- package/fesm2022/ngx-tethys-time-picker.mjs +244 -271
- package/fesm2022/ngx-tethys-time-picker.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tooltip.mjs +109 -93
- package/fesm2022/ngx-tethys-tooltip.mjs.map +1 -1
- package/fesm2022/ngx-tethys-transfer.mjs +98 -119
- package/fesm2022/ngx-tethys-transfer.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree-select.mjs +216 -284
- package/fesm2022/ngx-tethys-tree-select.mjs.map +1 -1
- package/fesm2022/ngx-tethys-tree.mjs +281 -401
- package/fesm2022/ngx-tethys-tree.mjs.map +1 -1
- package/fesm2022/ngx-tethys-upload.mjs +2 -2
- package/fesm2022/ngx-tethys-upload.mjs.map +1 -1
- package/fesm2022/ngx-tethys-vote.mjs +53 -99
- package/fesm2022/ngx-tethys-vote.mjs.map +1 -1
- package/fesm2022/ngx-tethys.mjs +1 -1
- package/fesm2022/ngx-tethys.mjs.map +1 -1
- package/flexible-text/flexible-text.component.d.ts +9 -15
- package/grid/flex.d.ts +1 -3
- package/grid/thy-row.directive.d.ts +1 -4
- package/i18n/i18n.d.ts +7 -2
- package/i18n/locales/de-de.d.ts +5 -1
- package/i18n/locales/en-us.d.ts +5 -1
- package/i18n/locales/ja-jp.d.ts +5 -1
- package/i18n/locales/zh-hans.d.ts +5 -1
- package/i18n/locales/zh-hant.d.ts +5 -1
- package/icon/icon.component.d.ts +10 -18
- package/image/image.directive.d.ts +10 -13
- package/image/image.token.d.ts +5 -5
- package/image/preview/image-preview.component.d.ts +2 -2
- package/input-number/input-number.component.d.ts +1 -1
- package/layout/header.component.d.ts +15 -19
- package/layout/layout.component.d.ts +3 -2
- package/layout/sidebar-header.component.d.ts +7 -8
- package/layout/sidebar.component.d.ts +32 -62
- package/list/list-item-meta.component.d.ts +7 -9
- package/list/list-item.component.d.ts +0 -2
- package/list/list.component.d.ts +2 -8
- package/list/selection/selection-list.d.ts +33 -46
- package/message/abstract/abstract-message.component.d.ts +2 -3
- package/message/message-container.component.d.ts +0 -1
- package/message/message.component.d.ts +1 -3
- package/notify/notify-container.component.d.ts +0 -1
- package/notify/notify.component.d.ts +7 -12
- package/package.json +1 -1
- package/progress/progress-circle.component.d.ts +3 -5
- package/progress/progress.component.d.ts +2 -4
- package/property/properties.component.d.ts +0 -2
- package/property/property-item.component.d.ts +3 -10
- package/radio/group/radio-group.component.d.ts +5 -9
- package/rate/rate-item.component.d.ts +8 -11
- package/rate/rate.component.d.ts +18 -29
- package/resizable/resizable.directive.d.ts +20 -32
- package/resizable/resize-handle.component.d.ts +6 -7
- package/resizable/resize-handles.component.d.ts +5 -9
- package/schematics/version.d.ts +1 -1
- package/schematics/version.js +1 -1
- package/segment/segment-item.component.d.ts +9 -15
- package/segment/segment.component.d.ts +11 -15
- package/segment/segment.token.d.ts +4 -3
- package/select/custom-select/custom-select.component.d.ts +33 -56
- package/select/native-select/native-select.component.d.ts +7 -13
- package/shared/base-form-check.component.d.ts +6 -8
- package/shared/directives/string-or-template-outlet.directive.d.ts +5 -6
- package/shared/directives/thy-autofocus.directive.d.ts +4 -6
- package/shared/directives/thy-contextmenu.directive.d.ts +2 -2
- package/shared/directives/thy-ctrl-enter.directive.d.ts +2 -2
- package/shared/directives/thy-enter.directive.d.ts +2 -2
- package/shared/directives/thy-scroll.directive.d.ts +5 -8
- package/shared/directives/thy-show.d.ts +5 -6
- package/shared/directives/thy-stop-propagation.directive.d.ts +4 -4
- package/shared/directives/view-outlet.directive.d.ts +6 -7
- package/shared/ng-transclude.directive.d.ts +2 -3
- package/shared/option/group/option-group.component.d.ts +5 -9
- package/shared/option/list-option/list-option.component.d.ts +9 -13
- package/shared/option/option.component.d.ts +10 -17
- package/shared/option/option.token.d.ts +4 -3
- package/shared/option/options-container.component.d.ts +1 -1
- package/shared/select/select-control/select-control.component.d.ts +38 -53
- package/slide/slide-body/slide-body-section.component.d.ts +2 -6
- package/slide/slide-header/slide-header.component.d.ts +6 -9
- package/space/space.component.d.ts +5 -11
- package/stepper/stepper.component.d.ts +1 -1
- package/strength/strength.component.d.ts +8 -13
- package/table/table-column.component.d.ts +15 -5
- package/time-picker/inner/inner-time-picker.class.d.ts +15 -13
- package/time-picker/inner/inner-time-picker.component.d.ts +26 -26
- package/time-picker/time-picker-panel.component.d.ts +18 -20
- package/time-picker/time-picker.component.d.ts +22 -30
- package/tooltip/tooltip.directive.d.ts +20 -22
- package/transfer/transfer-list.component.d.ts +15 -15
- package/transfer/transfer.component.d.ts +20 -23
- package/tree/tree-abstract.d.ts +5 -5
- package/tree/tree-node.component.d.ts +24 -37
- package/tree/tree.class.d.ts +4 -4
- package/tree/tree.component.d.ts +47 -75
- package/tree/tree.service.d.ts +3 -4
- package/tree-select/tree-select.component.d.ts +54 -71
- package/vote/vote.component.d.ts +13 -33
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, ElementRef, NgZone, numberAttribute,
|
|
2
|
+
import { inject, ElementRef, NgZone, input, numberAttribute, effect, Component, NgModule } from '@angular/core';
|
|
3
3
|
import { CommonModule } from '@angular/common';
|
|
4
4
|
import { ContentObserver, ObserversModule } from '@angular/cdk/observers';
|
|
5
5
|
import * as i1 from 'ngx-tethys/tooltip';
|
|
6
6
|
import { ThyTooltipDirective, ThyTooltipModule } from 'ngx-tethys/tooltip';
|
|
7
7
|
import { isUndefinedOrNull } from 'ngx-tethys/util';
|
|
8
8
|
import { useHostRenderer } from '@tethys/cdk/dom';
|
|
9
|
-
import {
|
|
9
|
+
import { Observable, Subject, from } from 'rxjs';
|
|
10
10
|
import { take, takeUntil, debounceTime } from 'rxjs/operators';
|
|
11
11
|
|
|
12
12
|
/**
|
|
@@ -14,56 +14,6 @@ import { take, takeUntil, debounceTime } from 'rxjs/operators';
|
|
|
14
14
|
* @name thy-flexible-text,[thyFlexibleText]
|
|
15
15
|
*/
|
|
16
16
|
class ThyFlexibleText {
|
|
17
|
-
constructor() {
|
|
18
|
-
this.elementRef = inject(ElementRef);
|
|
19
|
-
this.contentObserver = inject(ContentObserver);
|
|
20
|
-
this.ngZone = inject(NgZone);
|
|
21
|
-
this.tooltipDirective = inject(ThyTooltipDirective);
|
|
22
|
-
this.isOverflow = false;
|
|
23
|
-
this.subscription = null;
|
|
24
|
-
this.destroy$ = new Subject();
|
|
25
|
-
this.hostRenderer = useHostRenderer();
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* 自定义class类,如果不设置默认会包含 `flexible-text-container`
|
|
29
|
-
*/
|
|
30
|
-
set thyContainerClass(value) {
|
|
31
|
-
this.containerClass = value;
|
|
32
|
-
this.updateContainerClass();
|
|
33
|
-
}
|
|
34
|
-
get thyContainerClass() {
|
|
35
|
-
return this.containerClass;
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
* 需要展示的全部内容
|
|
39
|
-
* @type string | TemplateRef<HTMLElement>
|
|
40
|
-
*/
|
|
41
|
-
set thyContent(value) {
|
|
42
|
-
this.content = value;
|
|
43
|
-
if (this.tooltipDirective) {
|
|
44
|
-
this.tooltipDirective.content = this.content;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* tooltip 的提示位置
|
|
49
|
-
* @type top | bottom | left | right
|
|
50
|
-
* @default top
|
|
51
|
-
*/
|
|
52
|
-
set thyPlacement(value) {
|
|
53
|
-
this.placement = value;
|
|
54
|
-
if (this.tooltipDirective) {
|
|
55
|
-
this.tooltipDirective.placement = this.placement;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
/**
|
|
59
|
-
* tooltip 偏移量
|
|
60
|
-
*/
|
|
61
|
-
set thyOffset(value) {
|
|
62
|
-
this.offset = value;
|
|
63
|
-
if (this.tooltipDirective) {
|
|
64
|
-
this.tooltipDirective.tooltipOffset = this.offset;
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
17
|
static createResizeObserver(element) {
|
|
68
18
|
return new Observable(observer => {
|
|
69
19
|
const resize = new ResizeObserver(entries => {
|
|
@@ -75,19 +25,67 @@ class ThyFlexibleText {
|
|
|
75
25
|
};
|
|
76
26
|
});
|
|
77
27
|
}
|
|
78
|
-
|
|
79
|
-
this.
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
this.
|
|
28
|
+
constructor() {
|
|
29
|
+
this.elementRef = inject(ElementRef);
|
|
30
|
+
this.contentObserver = inject(ContentObserver);
|
|
31
|
+
this.ngZone = inject(NgZone);
|
|
32
|
+
this.tooltipDirective = inject(ThyTooltipDirective);
|
|
33
|
+
this.isOverflow = false;
|
|
34
|
+
this.subscription = null;
|
|
35
|
+
/**
|
|
36
|
+
* 触发提示方式
|
|
37
|
+
* @type hover | focus | click
|
|
38
|
+
* @default hover
|
|
39
|
+
*/
|
|
40
|
+
this.trigger = input(undefined, { alias: 'thyTooltipTrigger' });
|
|
41
|
+
/**
|
|
42
|
+
* 自定义class类,如果不设置默认会包含 `flexible-text-container`
|
|
43
|
+
*/
|
|
44
|
+
this.thyContainerClass = input();
|
|
45
|
+
/**
|
|
46
|
+
* 需要展示的全部内容
|
|
47
|
+
* @type string | TemplateRef<HTMLElement>
|
|
48
|
+
*/
|
|
49
|
+
this.thyTooltipContent = input();
|
|
50
|
+
/**
|
|
51
|
+
* tooltip 的提示位置
|
|
52
|
+
* @type top | bottom | left | right
|
|
53
|
+
* @default top
|
|
54
|
+
*/
|
|
55
|
+
this.thyTooltipPlacement = input();
|
|
56
|
+
/**
|
|
57
|
+
* tooltip 偏移量
|
|
58
|
+
*/
|
|
59
|
+
this.thyTooltipOffset = input(undefined, { transform: numberAttribute });
|
|
60
|
+
this.destroy$ = new Subject();
|
|
61
|
+
this.hostRenderer = useHostRenderer();
|
|
62
|
+
effect(() => {
|
|
63
|
+
this.updateContainerClass();
|
|
64
|
+
});
|
|
65
|
+
effect(() => {
|
|
66
|
+
const content = this.thyTooltipContent();
|
|
67
|
+
if (this.tooltipDirective && content) {
|
|
68
|
+
this.tooltipDirective.setContent(content);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
effect(() => {
|
|
72
|
+
const placement = this.thyTooltipPlacement();
|
|
73
|
+
if (this.tooltipDirective && placement) {
|
|
74
|
+
this.tooltipDirective.setPlacement(placement);
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
effect(() => {
|
|
78
|
+
const offset = this.thyTooltipOffset();
|
|
79
|
+
if (this.tooltipDirective && !isUndefinedOrNull(offset)) {
|
|
80
|
+
this.tooltipDirective.setOffset(offset);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
effect(() => {
|
|
84
|
+
const trigger = this.trigger();
|
|
85
|
+
if (this.tooltipDirective && trigger) {
|
|
86
|
+
this.tooltipDirective.trigger = trigger;
|
|
87
|
+
}
|
|
88
|
+
});
|
|
91
89
|
}
|
|
92
90
|
ngAfterContentInit() {
|
|
93
91
|
// Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means
|
|
@@ -124,38 +122,20 @@ class ThyFlexibleText {
|
|
|
124
122
|
else {
|
|
125
123
|
this.isOverflow = false;
|
|
126
124
|
}
|
|
127
|
-
this.tooltipDirective.
|
|
125
|
+
this.tooltipDirective.setDisabled(!this.isOverflow);
|
|
128
126
|
}
|
|
129
127
|
updateContainerClass() {
|
|
130
|
-
const containerClass = isUndefinedOrNull(this.
|
|
131
|
-
const flexibleTextClass = {
|
|
132
|
-
'text-truncate': true,
|
|
133
|
-
[containerClass]: containerClass !== ''
|
|
134
|
-
};
|
|
128
|
+
const containerClass = isUndefinedOrNull(this.thyContainerClass()) ? 'flexible-text-container' : this.thyContainerClass();
|
|
129
|
+
const flexibleTextClass = { 'text-truncate': true, [containerClass]: containerClass !== '' };
|
|
135
130
|
this.hostRenderer.updateClassByMap(flexibleTextClass);
|
|
136
131
|
}
|
|
137
132
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyFlexibleText, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
138
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "
|
|
133
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "19.2.8", type: ThyFlexibleText, isStandalone: true, selector: "thy-flexible-text,[thyFlexibleText]", inputs: { trigger: { classPropertyName: "trigger", publicName: "thyTooltipTrigger", isSignal: true, isRequired: false, transformFunction: null }, thyContainerClass: { classPropertyName: "thyContainerClass", publicName: "thyContainerClass", isSignal: true, isRequired: false, transformFunction: null }, thyTooltipContent: { classPropertyName: "thyTooltipContent", publicName: "thyTooltipContent", isSignal: true, isRequired: false, transformFunction: null }, thyTooltipPlacement: { classPropertyName: "thyTooltipPlacement", publicName: "thyTooltipPlacement", isSignal: true, isRequired: false, transformFunction: null }, thyTooltipOffset: { classPropertyName: "thyTooltipOffset", publicName: "thyTooltipOffset", isSignal: true, isRequired: false, transformFunction: null } }, exportAs: ["thyFlexibleText"], hostDirectives: [{ directive: i1.ThyTooltipDirective }], ngImport: i0, template: "<ng-content></ng-content>\n" }); }
|
|
139
134
|
}
|
|
140
135
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyFlexibleText, decorators: [{
|
|
141
136
|
type: Component,
|
|
142
137
|
args: [{ selector: 'thy-flexible-text,[thyFlexibleText]', exportAs: 'thyFlexibleText', hostDirectives: [ThyTooltipDirective], template: "<ng-content></ng-content>\n" }]
|
|
143
|
-
}],
|
|
144
|
-
type: Input,
|
|
145
|
-
args: ['thyTooltipTrigger']
|
|
146
|
-
}], thyContainerClass: [{
|
|
147
|
-
type: Input,
|
|
148
|
-
args: ['thyContainerClass']
|
|
149
|
-
}], thyContent: [{
|
|
150
|
-
type: Input,
|
|
151
|
-
args: ['thyTooltipContent']
|
|
152
|
-
}], thyPlacement: [{
|
|
153
|
-
type: Input,
|
|
154
|
-
args: ['thyTooltipPlacement']
|
|
155
|
-
}], thyOffset: [{
|
|
156
|
-
type: Input,
|
|
157
|
-
args: [{ alias: 'thyTooltipOffset', transform: numberAttribute }]
|
|
158
|
-
}] } });
|
|
138
|
+
}], ctorParameters: () => [] });
|
|
159
139
|
|
|
160
140
|
class ThyFlexibleTextModule {
|
|
161
141
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyFlexibleTextModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-flexible-text.mjs","sources":["../../../src/flexible-text/flexible-text.component.ts","../../../src/flexible-text/flexible-text.component.html","../../../src/flexible-text/flexible-text.module.ts","../../../src/flexible-text/ngx-tethys-flexible-text.ts"],"sourcesContent":["import { ContentObserver } from '@angular/cdk/observers';\nimport {\n AfterContentInit,\n Component,\n ElementRef,\n Input,\n NgZone,\n OnDestroy,\n OnInit,\n TemplateRef,\n numberAttribute,\n inject\n} from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { isUndefinedOrNull } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { from, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, take, takeUntil } from 'rxjs/operators';\n\n/**\n * 文本提示组件,支持组件 thy-flexible-text 和指令 [thyFlexibleText] 两种方式\n * @name thy-flexible-text,[thyFlexibleText]\n */\n@Component({\n selector: 'thy-flexible-text,[thyFlexibleText]',\n exportAs: 'thyFlexibleText',\n templateUrl: './flexible-text.component.html',\n hostDirectives: [ThyTooltipDirective]\n})\nexport class ThyFlexibleText implements OnInit, AfterContentInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private contentObserver = inject(ContentObserver);\n private ngZone = inject(NgZone);\n tooltipDirective = inject(ThyTooltipDirective);\n\n isOverflow = false;\n\n content: string | TemplateRef<HTMLElement>;\n\n placement: ThyPlacement;\n\n containerClass: string;\n\n subscription: Subscription | null = null;\n\n offset: number;\n\n /**\n * 触发提示方式\n * @type hover | focus | click\n * @default hover\n */\n @Input('thyTooltipTrigger') trigger: 'hover' | 'focus' | 'click';\n\n /**\n * 自定义class类,如果不设置默认会包含 `flexible-text-container`\n */\n @Input('thyContainerClass')\n set thyContainerClass(value: string) {\n this.containerClass = value;\n this.updateContainerClass();\n }\n\n get thyContainerClass(): string {\n return this.containerClass;\n }\n\n /**\n * 需要展示的全部内容\n * @type string | TemplateRef<HTMLElement>\n */\n @Input('thyTooltipContent') set thyContent(value: string | TemplateRef<HTMLElement>) {\n this.content = value;\n if (this.tooltipDirective) {\n this.tooltipDirective.content = this.content;\n }\n }\n\n /**\n * tooltip 的提示位置\n * @type top | bottom | left | right\n * @default top\n */\n @Input('thyTooltipPlacement') set thyPlacement(value: ThyPlacement) {\n this.placement = value;\n if (this.tooltipDirective) {\n this.tooltipDirective.placement = this.placement;\n }\n }\n\n /**\n * tooltip 偏移量\n */\n @Input({ alias: 'thyTooltipOffset', transform: numberAttribute }) set thyOffset(value: number) {\n this.offset = value;\n if (this.tooltipDirective) {\n this.tooltipDirective.tooltipOffset = this.offset;\n }\n }\n\n private destroy$ = new Subject<void>();\n\n private hostRenderer = useHostRenderer();\n\n static createResizeObserver(element: HTMLElement) {\n return new Observable(observer => {\n const resize = new ResizeObserver(entries => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n\n ngOnInit() {\n this.updateContainerClass();\n if (this.placement) {\n this.tooltipDirective.placement = this.placement;\n }\n if (this.offset) {\n this.tooltipDirective.tooltipOffset = this.offset;\n }\n if (this.trigger) {\n this.tooltipDirective.trigger = this.trigger;\n }\n this.tooltipDirective.content = this.content;\n this.tooltipDirective.thyTooltipDisabled = true;\n }\n\n ngAfterContentInit() {\n // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means\n // the `onStable` will never emit any value.\n const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n // Normally this isn't in the zone, but it can cause performance regressions for apps\n // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n this.ngZone.runOutsideAngular(() => {\n // Wait for the next time period to avoid blocking the js thread.\n onStable$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.contentObserver\n .observe(this.elementRef)\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(() => {\n this.applyOverflow();\n });\n\n ThyFlexibleText.createResizeObserver(this.elementRef.nativeElement)\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(() => {\n this.applyOverflow();\n });\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.tooltipDirective.hide();\n }\n\n applyOverflow() {\n const nativeElement = this.elementRef.nativeElement;\n if (nativeElement.clientWidth < nativeElement.scrollWidth || nativeElement.clientHeight < nativeElement.scrollHeight) {\n this.isOverflow = true;\n } else {\n this.isOverflow = false;\n }\n this.tooltipDirective.thyTooltipDisabled = !this.isOverflow;\n }\n\n updateContainerClass() {\n const containerClass = isUndefinedOrNull(this.containerClass) ? 'flexible-text-container' : this.containerClass;\n const flexibleTextClass = {\n 'text-truncate': true,\n [containerClass]: containerClass !== ''\n };\n this.hostRenderer.updateClassByMap(flexibleTextClass);\n }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyFlexibleText } from './flexible-text.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n@NgModule({\n imports: [CommonModule, ThyTooltipModule, ObserversModule, ThyFlexibleText],\n exports: [ThyFlexibleText]\n})\nexport class ThyFlexibleTextModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;AAoBA;;;AAGG;MAOU,eAAe,CAAA;AAN5B,IAAA,WAAA,GAAA;AAOY,QAAA,IAAA,CAAA,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;AAC/B,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;AACzC,QAAA,IAAA,CAAA,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;AAC/B,QAAA,IAAA,CAAA,gBAAgB,GAAG,MAAM,CAAC,mBAAmB,CAAC;QAE9C,IAAU,CAAA,UAAA,GAAG,KAAK;QAQlB,IAAY,CAAA,YAAA,GAAwB,IAAI;AAyDhC,QAAA,IAAA,CAAA,QAAQ,GAAG,IAAI,OAAO,EAAQ;QAE9B,IAAY,CAAA,YAAA,GAAG,eAAe,EAAE;AA6E3C;AA7HG;;AAEG;IACH,IACI,iBAAiB,CAAC,KAAa,EAAA;AAC/B,QAAA,IAAI,CAAC,cAAc,GAAG,KAAK;QAC3B,IAAI,CAAC,oBAAoB,EAAE;;AAG/B,IAAA,IAAI,iBAAiB,GAAA;QACjB,OAAO,IAAI,CAAC,cAAc;;AAG9B;;;AAGG;IACH,IAAgC,UAAU,CAAC,KAAwC,EAAA;AAC/E,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK;AACpB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;;AAIpD;;;;AAIG;IACH,IAAkC,YAAY,CAAC,KAAmB,EAAA;AAC9D,QAAA,IAAI,CAAC,SAAS,GAAG,KAAK;AACtB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;;;AAIxD;;AAEG;IACH,IAAsE,SAAS,CAAC,KAAa,EAAA;AACzF,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK;AACnB,QAAA,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;;;IAQzD,OAAO,oBAAoB,CAAC,OAAoB,EAAA;AAC5C,QAAA,OAAO,IAAI,UAAU,CAAC,QAAQ,IAAG;AAC7B,YAAA,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,IAAG;AACxC,gBAAA,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;AAC1B,aAAC,CAAC;AACF,YAAA,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;AACvB,YAAA,OAAO,MAAK;gBACR,MAAM,CAAC,UAAU,EAAE;AACvB,aAAC;AACL,SAAC,CAAC;;IAGN,QAAQ,GAAA;QACJ,IAAI,CAAC,oBAAoB,EAAE;AAC3B,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS;;AAEpD,QAAA,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM;;AAErD,QAAA,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;;QAEhD,IAAI,CAAC,gBAAgB,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO;AAC5C,QAAA,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,IAAI;;IAGnD,kBAAkB,GAAA;;;AAGd,QAAA,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;;AAGrG,QAAA,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAK;;AAE/B,YAAA,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,MAAK;AACpD,gBAAA,IAAI,CAAC;AACA,qBAAA,OAAO,CAAC,IAAI,CAAC,UAAU;AACvB,qBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;qBAChD,SAAS,CAAC,MAAK;oBACZ,IAAI,CAAC,aAAa,EAAE;AACxB,iBAAC,CAAC;gBAEN,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa;AAC7D,qBAAA,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC;qBAChD,SAAS,CAAC,MAAK;oBACZ,IAAI,CAAC,aAAa,EAAE;AACxB,iBAAC,CAAC;AACV,aAAC,CAAC;AACN,SAAC,CAAC;;IAGN,WAAW,GAAA;AACP,QAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE;AACpB,QAAA,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE;;IAGhC,aAAa,GAAA;AACT,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,aAAa;AACnD,QAAA,IAAI,aAAa,CAAC,WAAW,GAAG,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,YAAY,GAAG,aAAa,CAAC,YAAY,EAAE;AAClH,YAAA,IAAI,CAAC,UAAU,GAAG,IAAI;;aACnB;AACH,YAAA,IAAI,CAAC,UAAU,GAAG,KAAK;;QAE3B,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,UAAU;;IAG/D,oBAAoB,GAAA;AAChB,QAAA,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,yBAAyB,GAAG,IAAI,CAAC,cAAc;AAC/G,QAAA,MAAM,iBAAiB,GAAG;AACtB,YAAA,eAAe,EAAE,IAAI;AACrB,YAAA,CAAC,cAAc,GAAG,cAAc,KAAK;SACxC;AACD,QAAA,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,iBAAiB,CAAC;;8GApJhD,eAAe,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qCAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAAA,CAAA,mBAAA,EAAA,SAAA,CAAA,EAAA,iBAAA,EAAA,mBAAA,EAAA,UAAA,EAAA,CAAA,mBAAA,EAAA,YAAA,CAAA,EAAA,YAAA,EAAA,CAAA,qBAAA,EAAA,cAAA,CAAA,EAAA,SAAA,EAAA,CAAA,kBAAA,EAAA,WAAA,EAgEuB,eAAe,CAAA,EAAA,EAAA,QAAA,EAAA,CAAA,iBAAA,CAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,mBAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,EC9FlE,6BACA,EAAA,CAAA,CAAA;;2FD6Ba,eAAe,EAAA,UAAA,EAAA,CAAA;kBAN3B,SAAS;AACI,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,qCAAqC,EACrC,QAAA,EAAA,iBAAiB,EAEX,cAAA,EAAA,CAAC,mBAAmB,CAAC,EAAA,QAAA,EAAA,6BAAA,EAAA;8BAyBT,OAAO,EAAA,CAAA;sBAAlC,KAAK;uBAAC,mBAAmB;gBAMtB,iBAAiB,EAAA,CAAA;sBADpB,KAAK;uBAAC,mBAAmB;gBAcM,UAAU,EAAA,CAAA;sBAAzC,KAAK;uBAAC,mBAAmB;gBAYQ,YAAY,EAAA,CAAA;sBAA7C,KAAK;uBAAC,qBAAqB;gBAU0C,SAAS,EAAA,CAAA;sBAA9E,KAAK;AAAC,gBAAA,IAAA,EAAA,CAAA,EAAE,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,eAAe,EAAE;;;MEpFvD,qBAAqB,CAAA;8GAArB,qBAAqB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;+GAArB,qBAAqB,EAAA,OAAA,EAAA,CAHpB,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAA,EAAA,OAAA,EAAA,CAChE,eAAe,CAAA,EAAA,CAAA,CAAA;AAEhB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,qBAAqB,EAHpB,OAAA,EAAA,CAAA,YAAY,EAAE,gBAAgB,EAAE,eAAe,CAAA,EAAA,CAAA,CAAA;;2FAGhD,qBAAqB,EAAA,UAAA,EAAA,CAAA;kBAJjC,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,CAAC;oBAC3E,OAAO,EAAE,CAAC,eAAe;AAC5B,iBAAA;;;ACTD;;AAEG;;;;"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-flexible-text.mjs","sources":["../../../src/flexible-text/flexible-text.component.ts","../../../src/flexible-text/flexible-text.component.html","../../../src/flexible-text/flexible-text.module.ts","../../../src/flexible-text/ngx-tethys-flexible-text.ts"],"sourcesContent":["import { ContentObserver } from '@angular/cdk/observers';\nimport {\n AfterContentInit,\n Component,\n ElementRef,\n NgZone,\n OnDestroy,\n TemplateRef,\n numberAttribute,\n inject,\n input,\n effect\n} from '@angular/core';\nimport { ThyPlacement } from 'ngx-tethys/core';\nimport { ThyTooltipDirective } from 'ngx-tethys/tooltip';\nimport { isUndefinedOrNull } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { from, Observable, Subject, Subscription } from 'rxjs';\nimport { debounceTime, take, takeUntil } from 'rxjs/operators';\n\n/**\n * 文本提示组件,支持组件 thy-flexible-text 和指令 [thyFlexibleText] 两种方式\n * @name thy-flexible-text,[thyFlexibleText]\n */\n@Component({\n selector: 'thy-flexible-text,[thyFlexibleText]',\n exportAs: 'thyFlexibleText',\n templateUrl: './flexible-text.component.html',\n hostDirectives: [ThyTooltipDirective]\n})\nexport class ThyFlexibleText implements AfterContentInit, OnDestroy {\n private elementRef = inject(ElementRef);\n private contentObserver = inject(ContentObserver);\n private ngZone = inject(NgZone);\n tooltipDirective = inject(ThyTooltipDirective);\n\n isOverflow = false;\n\n subscription: Subscription | null = null;\n\n /**\n * 触发提示方式\n * @type hover | focus | click\n * @default hover\n */\n readonly trigger = input<'hover' | 'focus' | 'click'>(undefined, { alias: 'thyTooltipTrigger' });\n\n /**\n * 自定义class类,如果不设置默认会包含 `flexible-text-container`\n */\n readonly thyContainerClass = input<string>();\n\n /**\n * 需要展示的全部内容\n * @type string | TemplateRef<HTMLElement>\n */\n readonly thyTooltipContent = input<string | TemplateRef<HTMLElement>>();\n\n /**\n * tooltip 的提示位置\n * @type top | bottom | left | right\n * @default top\n */\n readonly thyTooltipPlacement = input<ThyPlacement>();\n\n /**\n * tooltip 偏移量\n */\n readonly thyTooltipOffset = input<number, unknown>(undefined, { transform: numberAttribute });\n\n private destroy$ = new Subject<void>();\n\n private hostRenderer = useHostRenderer();\n\n static createResizeObserver(element: HTMLElement) {\n return new Observable(observer => {\n const resize = new ResizeObserver(entries => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n\n constructor() {\n effect(() => {\n this.updateContainerClass();\n });\n effect(() => {\n const content = this.thyTooltipContent();\n if (this.tooltipDirective && content) {\n this.tooltipDirective.setContent(content);\n }\n });\n effect(() => {\n const placement = this.thyTooltipPlacement();\n if (this.tooltipDirective && placement) {\n this.tooltipDirective.setPlacement(placement);\n }\n });\n effect(() => {\n const offset = this.thyTooltipOffset();\n if (this.tooltipDirective && !isUndefinedOrNull(offset)) {\n this.tooltipDirective.setOffset(offset);\n }\n });\n effect(() => {\n const trigger = this.trigger();\n if (this.tooltipDirective && trigger) {\n this.tooltipDirective.trigger = trigger;\n }\n });\n }\n\n ngAfterContentInit() {\n // Note: the zone may be nooped through `BootstrapOptions` when bootstrapping the root module. This means\n // the `onStable` will never emit any value.\n const onStable$ = this.ngZone.isStable ? from(Promise.resolve()) : this.ngZone.onStable.pipe(take(1));\n // Normally this isn't in the zone, but it can cause performance regressions for apps\n // using `zone-patch-rxjs` because it'll trigger a change detection when it unsubscribes.\n this.ngZone.runOutsideAngular(() => {\n // Wait for the next time period to avoid blocking the js thread.\n onStable$.pipe(takeUntil(this.destroy$)).subscribe(() => {\n this.contentObserver\n .observe(this.elementRef)\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(() => {\n this.applyOverflow();\n });\n\n ThyFlexibleText.createResizeObserver(this.elementRef.nativeElement)\n .pipe(debounceTime(100), takeUntil(this.destroy$))\n .subscribe(() => {\n this.applyOverflow();\n });\n });\n });\n }\n\n ngOnDestroy() {\n this.destroy$.next();\n this.tooltipDirective.hide();\n }\n\n applyOverflow() {\n const nativeElement = this.elementRef.nativeElement;\n if (nativeElement.clientWidth < nativeElement.scrollWidth || nativeElement.clientHeight < nativeElement.scrollHeight) {\n this.isOverflow = true;\n } else {\n this.isOverflow = false;\n }\n this.tooltipDirective.setDisabled(!this.isOverflow);\n }\n\n updateContainerClass() {\n const containerClass = isUndefinedOrNull(this.thyContainerClass()) ? 'flexible-text-container' : this.thyContainerClass();\n const flexibleTextClass = { 'text-truncate': true, [containerClass]: containerClass !== '' };\n this.hostRenderer.updateClassByMap(flexibleTextClass);\n }\n}\n","<ng-content></ng-content>\n","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { ThyFlexibleText } from './flexible-text.component';\nimport { ThyTooltipModule } from 'ngx-tethys/tooltip';\nimport { ObserversModule } from '@angular/cdk/observers';\n\n@NgModule({\n imports: [CommonModule, ThyTooltipModule, ObserversModule, ThyFlexibleText],\n exports: [ThyFlexibleText]\n})\nexport class ThyFlexibleTextModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { input, Directive, inject, computed,
|
|
2
|
+
import { input, effect, Directive, inject, computed, afterNextRender, InjectionToken, ElementRef, DestroyRef, ChangeDetectionStrategy, Component, NgZone, contentChildren, NgModule } from '@angular/core';
|
|
3
3
|
import { ReplaySubject, Subject, Observable } from 'rxjs';
|
|
4
4
|
import { isString } from 'ngx-tethys/util';
|
|
5
5
|
import { useHostRenderer } from '@tethys/cdk/dom';
|
|
@@ -18,15 +18,12 @@ class ThyRowDirective {
|
|
|
18
18
|
/**
|
|
19
19
|
* 栅格的间距
|
|
20
20
|
*/
|
|
21
|
-
this.thyGutter = input(
|
|
21
|
+
this.thyGutter = input();
|
|
22
22
|
this.actualGutter$ = new ReplaySubject(1);
|
|
23
23
|
this.hostRenderer = useHostRenderer();
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
}
|
|
28
|
-
ngOnChanges() {
|
|
29
|
-
this.setGutterStyle();
|
|
24
|
+
effect(() => {
|
|
25
|
+
this.setGutterStyle();
|
|
26
|
+
});
|
|
30
27
|
}
|
|
31
28
|
setGutterStyle() {
|
|
32
29
|
const [horizontalGutter, verticalGutter] = this.getGutter();
|
|
@@ -51,7 +48,7 @@ class ThyRowDirective {
|
|
|
51
48
|
return [thyGutter, 0];
|
|
52
49
|
}
|
|
53
50
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRowDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
54
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: ThyRowDirective, isStandalone: true, selector: "[thyRow]", inputs: { thyGutter: { classPropertyName: "thyGutter", publicName: "thyGutter", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-row" },
|
|
51
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.2.8", type: ThyRowDirective, isStandalone: true, selector: "[thyRow]", inputs: { thyGutter: { classPropertyName: "thyGutter", publicName: "thyGutter", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "thy-row" }, ngImport: i0 }); }
|
|
55
52
|
}
|
|
56
53
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.8", ngImport: i0, type: ThyRowDirective, decorators: [{
|
|
57
54
|
type: Directive,
|
|
@@ -423,9 +420,10 @@ class ThyFlex {
|
|
|
423
420
|
this.hostRenderer = useHostRenderer();
|
|
424
421
|
/**
|
|
425
422
|
* Flex 方向,为 row 或者 column
|
|
426
|
-
* @default row
|
|
427
423
|
*/
|
|
428
|
-
this.thyDirection = input(
|
|
424
|
+
this.thyDirection = input('row', {
|
|
425
|
+
transform: (value) => value || 'row'
|
|
426
|
+
});
|
|
429
427
|
/**
|
|
430
428
|
* Flex Wrap
|
|
431
429
|
* @default nowrap
|
|
@@ -444,9 +442,6 @@ class ThyFlex {
|
|
|
444
442
|
* @default 0
|
|
445
443
|
*/
|
|
446
444
|
this.thyGap = input();
|
|
447
|
-
this.direction = computed(() => {
|
|
448
|
-
return this.thyDirection() || 'row';
|
|
449
|
-
});
|
|
450
445
|
effect(() => {
|
|
451
446
|
this.updateClasses();
|
|
452
447
|
});
|
|
@@ -465,7 +460,7 @@ class ThyFlex {
|
|
|
465
460
|
if (!isUndefinedOrNull(wrap)) {
|
|
466
461
|
classes.push(`flex-${wrap}`);
|
|
467
462
|
}
|
|
468
|
-
const direction = this.
|
|
463
|
+
const direction = this.thyDirection();
|
|
469
464
|
if (!isUndefinedOrNull(direction)) {
|
|
470
465
|
classes.push(`flex-${direction}`);
|
|
471
466
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngx-tethys-grid.mjs","sources":["../../../src/grid/thy-row.directive.ts","../../../src/grid/thy-col.directive.ts","../../../src/grid/grid.token.ts","../../../src/grid/grid.type.ts","../../../src/grid/thy-grid-item.component.ts","../../../src/grid/thy-grid.component.ts","../../../src/grid/flex.ts","../../../src/grid/module.ts","../../../src/grid/ngx-tethys-grid.ts"],"sourcesContent":["import { Directive, OnChanges, OnInit, AfterViewInit, OnDestroy, ChangeDetectionStrategy, input } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { isString } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nexport type ThyRowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';\nexport type ThyRowAlign = 'top' | 'middle' | 'bottom';\nexport interface ThyGutterType {\n xs?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n xxl?: number;\n}\n\n/**\n * 栅格行指令\n * @name thyRow\n * @order 30\n */\n@Directive({\n selector: '[thyRow]',\n host: {\n class: 'thy-row'\n }\n})\nexport class ThyRowDirective implements OnInit, OnChanges {\n /**\n * 栅格的间距\n */\n readonly thyGutter = input<ThyGutterType | number>(undefined);\n\n public actualGutter$ = new ReplaySubject<[number, number]>(1);\n\n private hostRenderer = useHostRenderer();\n\n constructor() {}\n\n ngOnInit() {\n this.setGutterStyle();\n }\n\n ngOnChanges() {\n this.setGutterStyle();\n }\n\n private setGutterStyle() {\n const [horizontalGutter, verticalGutter] = this.getGutter();\n this.actualGutter$.next([horizontalGutter, verticalGutter]);\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `-${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('margin-left', horizontalGutter);\n renderGutter('margin-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('margin-top', verticalGutter);\n renderGutter('margin-bottom', verticalGutter);\n }\n }\n\n private getGutter() {\n const thyGutter = this.thyGutter();\n if (isString(thyGutter)) {\n throw Error(`thyGutter value can not be string type`);\n }\n return [thyGutter as number, 0];\n }\n}\n","import { Directive, inject, input, computed, effect, afterNextRender } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyRowDirective } from './thy-row.directive';\n\nexport interface ThyColEmbeddedProperty {\n span?: number;\n pull?: number;\n push?: number;\n offset?: number;\n order?: number;\n}\n\nexport type ThySpan = number | null | 'auto';\n\n/**\n * 栅格列指令\n * @name thyCol\n * @order 35\n */\n@Directive({\n selector: '[thyCol]',\n host: {\n class: 'thy-col'\n }\n})\nexport class ThyColDirective {\n thyRowDirective = inject(ThyRowDirective, { optional: true, host: true })!;\n\n /**\n * 栅格项的占位列数,thySpan 如果传递了值,以 thySpan 为准\n */\n readonly thyCol = input<ThySpan>();\n\n /**\n * 栅格项的占位列数\n */\n readonly thySpan = input<ThySpan>();\n\n protected readonly span = computed(() => {\n const span = this.thySpan() ?? this.thyCol();\n return span || 24;\n });\n\n private hostRenderer = useHostRenderer();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor() {\n effect(() => {\n this.updateHostClass();\n });\n\n afterNextRender(() => {\n if (this.thyRowDirective) {\n this.thyRowDirective.actualGutter$.pipe(this.takeUntilDestroyed).subscribe(([horizontalGutter, verticalGutter]) => {\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('padding-left', horizontalGutter);\n renderGutter('padding-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('padding-top', verticalGutter);\n renderGutter('padding-bottom', verticalGutter);\n }\n });\n }\n });\n }\n\n private updateHostClass() {\n const span = this.span();\n this.hostRenderer.updateClassByMap({\n [`thy-col-${span}`]: true\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport abstract class ThyGridToken {\n xGap: number;\n gridItemPropValueChange$: Subject<void>;\n}\n\nexport const THY_GRID_COMPONENT = new InjectionToken<ThyGridToken>('THY_GRID_COMPONENT');\n","export type ThyGridResponsiveMode = 'none' | 'self' | 'screen';\n\nexport type ThyGridResponsiveDescription = string;\n\nexport const THY_GRID_DEFAULT_COLUMNS = 24;\n\nexport const THY_GRID_ITEM_DEFAULT_SPAN = 1;\n\nexport const screenBreakpointsMap: Record<string, number> = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, inject, DestroyRef, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridResponsiveDescription, THY_GRID_ITEM_DEFAULT_SPAN } from './grid.type';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\n/**\n * 栅格项组件\n * @name thy-grid-item,[thyGridItem]\n * @order 15\n */\n@Component({\n selector: 'thy-grid-item,[thyGridItem]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-grid-item'\n }\n})\nexport class ThyGridItem implements OnInit {\n elementRef = inject(ElementRef);\n private grid = inject(THY_GRID_COMPONENT, { optional: true })!;\n\n /**\n * 栅格项的占位列数,为 0 时会隐藏该栅格项\n * @default 1\n */\n readonly thySpan = input<number | ThyGridResponsiveDescription>(THY_GRID_ITEM_DEFAULT_SPAN);\n\n /**\n * 栅格项左侧的偏移列数\n */\n readonly thyOffset = input<number | ThyGridResponsiveDescription>(0);\n\n private readonly destroyRef = inject(DestroyRef);\n\n private hostRenderer = useHostRenderer();\n\n public span: number = THY_GRID_ITEM_DEFAULT_SPAN;\n\n public offset: number = 0;\n\n ngOnInit(): void {\n this.grid.gridItemPropValueChange$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.setGridItemStyle();\n });\n }\n\n private setGridItemStyle() {\n const xGap: number = this.grid?.xGap || 0;\n\n this.hostRenderer.setStyle('display', this.span === 0 ? 'none' : '');\n\n this.hostRenderer.setStyle('grid-column', `span ${this.span}`);\n\n this.hostRenderer.setStyle(\n 'margin-left',\n this.offset ? `calc(((100% - ${(this.span - 1) * xGap}px) / ${this.span} + ${xGap}px) * ${this.offset})` : ''\n );\n }\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n AfterContentInit,\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n NgZone,\n OnChanges,\n OnInit,\n SimpleChanges,\n inject,\n input,\n contentChildren,\n effect\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { ThyGridToken, THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport {\n ThyGridResponsiveMode,\n ThyGridResponsiveDescription,\n THY_GRID_DEFAULT_COLUMNS,\n THY_GRID_ITEM_DEFAULT_SPAN,\n screenBreakpointsMap\n} from './grid.type';\n\n/**\n * 栅格组件\n * @name thy-grid, [thyGrid]\n * @order 10\n */\n@Directive({\n selector: '[thyGrid]',\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n host: {\n class: 'thy-grid'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyGrid implements ThyGridToken, OnInit {\n private elementRef = inject(ElementRef);\n private viewportRuler = inject(ViewportRuler);\n private ngZone = inject(NgZone);\n\n /**\n * @internal\n */\n readonly gridItems = contentChildren(ThyGridItem);\n\n /**\n * 栅格的列数\n * @default 24\n */\n readonly thyCols = input<number | ThyGridResponsiveDescription>(THY_GRID_DEFAULT_COLUMNS);\n\n /**\n * 栅格的水平间隔\n */\n readonly thyXGap = input<number | ThyGridResponsiveDescription>(0);\n\n /**\n * 栅格的垂直间隔\n */\n readonly thyYGap = input<number | ThyGridResponsiveDescription>(0);\n\n /**\n * 栅格的水平和垂直间隔\n */\n readonly thyGap = input<number | ThyGridResponsiveDescription>(0);\n\n /**\n * 响应式栅格列数<br/>\n * none: 不进行响应式布局。<br/>\n * self:根据grid的自身宽度进行响应式布局。<br/>\n * screen:根据屏幕断点进行响应式布局,目前预设了5种响应式尺寸:`xs: 0, sm: 576, md: 768, lg: 992, xl: 1200`。\n */\n readonly thyResponsive = input<ThyGridResponsiveMode>('none');\n\n private hostRenderer = useHostRenderer();\n\n private cols: number;\n\n public xGap: number;\n\n private yGap: number;\n\n private numRegex = /^\\d+$/;\n\n private responsiveContainerWidth: number;\n\n public gridItemPropValueChange$ = new Subject<void>();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor() {\n effect(() => {\n this.handleGridItems();\n });\n }\n\n ngOnInit(): void {\n this.setGridStyle();\n\n if (this.thyResponsive() !== 'none') {\n this.listenResizeEvent();\n }\n }\n\n private setGridStyle() {\n this.cols = this.calculateActualValue(this.thyCols() || THY_GRID_DEFAULT_COLUMNS, THY_GRID_DEFAULT_COLUMNS);\n const xGap = this.thyXGap();\n const yGap = this.thyYGap();\n const gap = this.thyGap();\n if (!xGap && !yGap) {\n this.xGap = this.calculateActualValue(gap || 0);\n this.yGap = this.xGap;\n } else {\n this.xGap = this.calculateActualValue(xGap || gap);\n this.yGap = this.calculateActualValue(yGap || gap);\n }\n\n this.hostRenderer.setStyle('display', 'grid');\n this.hostRenderer.setStyle('grid-template-columns', `repeat(${this.cols}, minmax(0, 1fr))`);\n this.hostRenderer.setStyle('gap', `${this.yGap}px ${this.xGap}px`);\n }\n\n private listenResizeEvent() {\n if (this.thyResponsive() === 'screen') {\n this.viewportRuler\n .change(100)\n .pipe(this.takeUntilDestroyed)\n .subscribe(() => {\n this.responsiveContainerWidth = this.viewportRuler.getViewportSize().width;\n this.setGridStyle();\n this.handleGridItems();\n });\n } else {\n this.ngZone.runOutsideAngular(() => {\n this.gridResizeObserver(this.elementRef.nativeElement)\n .pipe(throttleTime(100), this.takeUntilDestroyed)\n .subscribe((data: ResizeObserverEntry[]) => {\n this.responsiveContainerWidth = data[0]?.contentRect?.width;\n this.setGridStyle();\n this.handleGridItems();\n });\n });\n }\n }\n\n private handleGridItems() {\n this.gridItems().forEach((gridItem: ThyGridItem) => {\n const rawSpan = getRawSpan(gridItem.thySpan());\n const span = this.calculateActualValue(rawSpan, THY_GRID_ITEM_DEFAULT_SPAN);\n const offset = this.calculateActualValue(gridItem.thyOffset() || 0);\n\n gridItem.span = Math.min(span + offset, this.cols);\n gridItem.offset = offset;\n });\n\n this.gridItemPropValueChange$.next();\n }\n\n private calculateActualValue(rawValue: number | ThyGridResponsiveDescription, defaultValue?: number): number {\n if (this.numRegex.test(rawValue.toString().trim())) {\n return Number(rawValue);\n } else {\n const responsiveValueMap = this.getResponsiveValueMap(rawValue as ThyGridResponsiveDescription);\n const breakpointKeys = Object.keys(responsiveValueMap);\n const breakpoint = this.calculateBreakPoint(breakpointKeys);\n\n if (this.thyResponsive() !== 'none' && breakpoint) {\n return responsiveValueMap[breakpoint];\n } else if (breakpointKeys.includes('0')) {\n return responsiveValueMap['0'];\n } else {\n return defaultValue || 0;\n }\n }\n }\n\n private getResponsiveValueMap(responsiveValue: string): { [key: string]: number } {\n return responsiveValue.split(' ').reduce((map: { [key: string]: number }, item: string) => {\n if (this.numRegex.test(item.toString())) {\n item = `0:${item}`;\n }\n const [key, value] = item.split(':');\n map[key] = Number(value);\n return map;\n }, {});\n }\n\n private calculateBreakPoint(breakpointKeys: string[]): string {\n if (this.thyResponsive() === 'screen') {\n const width = this.responsiveContainerWidth || this.viewportRuler.getViewportSize().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= screenBreakpointsMap[key] && width < screenBreakpointsMap[breakpointKeys[index + 1]]\n : width >= screenBreakpointsMap[key];\n });\n } else {\n const width = this.responsiveContainerWidth || this.elementRef.nativeElement.getBoundingClientRect().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= Number(key) && width < Number(breakpointKeys[index + 1])\n : width >= Number(key);\n });\n }\n }\n\n private gridResizeObserver(element: HTMLElement): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-grid',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n hostDirectives: [\n {\n directive: ThyGrid,\n inputs: ['thyCols', 'thyXGap', 'thyYGap', 'thyGap', 'thyResponsive']\n }\n ]\n})\nexport class ThyGridComponent {\n grid = inject(ThyGrid);\n}\n\nfunction getRawSpan(span: number | ThyGridResponsiveDescription | undefined | null): number | ThyGridResponsiveDescription {\n return span === undefined || span === null ? THY_GRID_ITEM_DEFAULT_SPAN : span;\n}\n","import { ChangeDetectionStrategy, Component, Directive, computed, effect, input } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { isUndefinedOrNull } from '@tethys/cdk/is';\n\nexport type ThyFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\nexport type ThyFlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\nexport type ThyFlexJustifyContent =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'initial'\n | 'inherit';\nexport type ThyFlexAlignItems = 'start' | 'end' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline' | 'initial' | 'inherit';\nexport type ThyFlexGrow = '1' | '0' | 0 | 1;\nexport type ThyFlexShrink = '1' | '0' | 0 | 1;\n\n/**\n * 设置容器为 Flex 布局组件\n * @name thy-flex, [thyFlex]\n * @order 20\n */\n@Directive({\n selector: '[thyFlex]',\n host: {\n class: 'thy-flex d-flex'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlex {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex 方向,为 row 或者 column\n * @default row\n */\n readonly thyDirection = input<ThyFlexDirection>();\n\n /**\n * Flex Wrap\n * @default nowrap\n */\n readonly thyWrap = input<ThyFlexWrap>();\n\n /**\n * Justify Content\n */\n readonly thyJustifyContent = input<ThyFlexJustifyContent>();\n\n /**\n * Align Items\n */\n readonly thyAlignItems = input<ThyFlexAlignItems>();\n\n /**\n * Flex Item 之间的间隙 Gap\n * @default 0\n */\n readonly thyGap = input<number>();\n\n protected readonly direction = computed(() => {\n return this.thyDirection() || 'row';\n });\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n }\n\n private updateClasses() {\n const classes: string[] = [];\n const justifyContent = this.thyJustifyContent();\n if (!isUndefinedOrNull(justifyContent)) {\n classes.push(`justify-content-${normalizeStartEnd(justifyContent)}`);\n }\n\n const alignItems = this.thyAlignItems();\n if (!isUndefinedOrNull(alignItems)) {\n classes.push(`align-items-${normalizeStartEnd(alignItems)}`);\n }\n\n const wrap = this.thyWrap();\n if (!isUndefinedOrNull(wrap)) {\n classes.push(`flex-${wrap}`);\n }\n\n const direction = this.direction();\n if (!isUndefinedOrNull(direction)) {\n classes.push(`flex-${direction}`);\n }\n this.hostRenderer.updateClass(classes);\n this.hostRenderer.setStyle('gap', `${this.thyGap() ?? '0'}px`);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThyFlex,\n inputs: ['thyDirection', 'thyWrap', 'thyJustifyContent', 'thyAlignItems', 'thyGap']\n }\n ],\n imports: []\n})\nexport class ThyFlexComponent {}\n\n/**\n * 设置为 Flex Item 组件\n * @name thy-flex-item, [thyFlexItem]\n * @order 25\n */\n@Directive({\n selector: '[thyFlexItem]',\n host: {\n class: 'thy-flex-item'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlexItem {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex Item 属性,表示 grow 、shrink 、basis\n */\n readonly thyFlexItem = input<'fill' | string>();\n\n /**\n * Flew Grow,设置或检索弹性盒子的扩展比率,设置 1 为填充剩余区域\n */\n readonly thyGrow = input<ThyFlexGrow>();\n\n /**\n * Flex Shrink,设置或检索弹性盒收缩比例\n * @default 1\n */\n readonly thyShrink = input<ThyFlexShrink>();\n\n /**\n * Flex Basis,设置或检索弹性盒伸缩基准值\n * @default 1\n */\n readonly thyBasis = input<string>();\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n }\n\n private updateClasses() {\n const flexItem = this.thyFlexItem();\n const classes: string[] = [];\n this.hostRenderer.setStyle('flex', '');\n this.hostRenderer.setStyle('basis', '');\n if (flexItem) {\n if (flexItem === 'fill') {\n classes.push(`flex-${flexItem}`);\n } else {\n this.hostRenderer.setStyle('flex', flexItem);\n }\n }\n const grow = this.thyGrow();\n if (!isUndefinedOrNull(grow)) {\n classes.push(`flex-grow-${grow}`);\n }\n const shrink = this.thyShrink();\n if (!isUndefinedOrNull(shrink)) {\n classes.push(`flex-shrink-${shrink}`);\n }\n const basis = this.thyBasis();\n if (!isUndefinedOrNull(basis)) {\n this.hostRenderer.setStyle('flex-basis', basis);\n }\n this.hostRenderer.updateClass(classes);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex-item',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n hostDirectives: [\n {\n directive: ThyFlexItem,\n inputs: ['thyFlexItem', 'thyGrow', 'thyShrink', 'thyBasis']\n }\n ]\n})\nexport class ThyFlexItemComponent {}\n\nfunction normalizeStartEnd(value: string): string {\n return value === 'flex-start' ? 'start' : value === 'flex-end' ? 'end' : value;\n}\n","import { NgModule } from '@angular/core';\nimport { ThyRowDirective } from './thy-row.directive';\nimport { ThyColDirective } from './thy-col.directive';\nimport { ThyGrid, ThyGridComponent } from './thy-grid.component';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { ThyFlex, ThyFlexComponent, ThyFlexItem, ThyFlexItemComponent } from './flex';\n\n@NgModule({\n exports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ],\n imports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ]\n})\nexport class ThyGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngx-tethys-grid.mjs","sources":["../../../src/grid/thy-row.directive.ts","../../../src/grid/thy-col.directive.ts","../../../src/grid/grid.token.ts","../../../src/grid/grid.type.ts","../../../src/grid/thy-grid-item.component.ts","../../../src/grid/thy-grid.component.ts","../../../src/grid/flex.ts","../../../src/grid/module.ts","../../../src/grid/ngx-tethys-grid.ts"],"sourcesContent":["import { Directive, effect, input } from '@angular/core';\nimport { ReplaySubject } from 'rxjs';\nimport { isString } from 'ngx-tethys/util';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\nexport type ThyRowJustify = 'start' | 'end' | 'center' | 'space-around' | 'space-between';\nexport type ThyRowAlign = 'top' | 'middle' | 'bottom';\nexport interface ThyGutterType {\n xs?: number;\n sm?: number;\n md?: number;\n lg?: number;\n xl?: number;\n xxl?: number;\n}\n\n/**\n * 栅格行指令\n * @name thyRow\n * @order 30\n */\n@Directive({\n selector: '[thyRow]',\n host: {\n class: 'thy-row'\n }\n})\nexport class ThyRowDirective {\n /**\n * 栅格的间距\n */\n readonly thyGutter = input<ThyGutterType | number>();\n\n public actualGutter$ = new ReplaySubject<[number, number]>(1);\n\n private hostRenderer = useHostRenderer();\n\n constructor() {\n effect(() => {\n this.setGutterStyle();\n });\n }\n\n private setGutterStyle() {\n const [horizontalGutter, verticalGutter] = this.getGutter();\n this.actualGutter$.next([horizontalGutter, verticalGutter]);\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `-${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('margin-left', horizontalGutter);\n renderGutter('margin-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('margin-top', verticalGutter);\n renderGutter('margin-bottom', verticalGutter);\n }\n }\n\n private getGutter() {\n const thyGutter = this.thyGutter();\n if (isString(thyGutter)) {\n throw Error(`thyGutter value can not be string type`);\n }\n return [thyGutter as number, 0];\n }\n}\n","import { Directive, inject, input, computed, effect, afterNextRender } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { ThyRowDirective } from './thy-row.directive';\n\nexport interface ThyColEmbeddedProperty {\n span?: number;\n pull?: number;\n push?: number;\n offset?: number;\n order?: number;\n}\n\nexport type ThySpan = number | null | 'auto';\n\n/**\n * 栅格列指令\n * @name thyCol\n * @order 35\n */\n@Directive({\n selector: '[thyCol]',\n host: {\n class: 'thy-col'\n }\n})\nexport class ThyColDirective {\n thyRowDirective = inject(ThyRowDirective, { optional: true, host: true })!;\n\n /**\n * 栅格项的占位列数,thySpan 如果传递了值,以 thySpan 为准\n */\n readonly thyCol = input<ThySpan>();\n\n /**\n * 栅格项的占位列数\n */\n readonly thySpan = input<ThySpan>();\n\n protected readonly span = computed(() => {\n const span = this.thySpan() ?? this.thyCol();\n return span || 24;\n });\n\n private hostRenderer = useHostRenderer();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor() {\n effect(() => {\n this.updateHostClass();\n });\n\n afterNextRender(() => {\n if (this.thyRowDirective) {\n this.thyRowDirective.actualGutter$.pipe(this.takeUntilDestroyed).subscribe(([horizontalGutter, verticalGutter]) => {\n const renderGutter = (name: string, gutter: number) => {\n this.hostRenderer.setStyle(name, `${gutter / 2}px`);\n };\n if (horizontalGutter > 0) {\n renderGutter('padding-left', horizontalGutter);\n renderGutter('padding-right', horizontalGutter);\n }\n if (verticalGutter > 0) {\n renderGutter('padding-top', verticalGutter);\n renderGutter('padding-bottom', verticalGutter);\n }\n });\n }\n });\n }\n\n private updateHostClass() {\n const span = this.span();\n this.hostRenderer.updateClassByMap({\n [`thy-col-${span}`]: true\n });\n }\n}\n","import { InjectionToken } from '@angular/core';\nimport { Subject } from 'rxjs';\n\nexport abstract class ThyGridToken {\n xGap: number;\n gridItemPropValueChange$: Subject<void>;\n}\n\nexport const THY_GRID_COMPONENT = new InjectionToken<ThyGridToken>('THY_GRID_COMPONENT');\n","export type ThyGridResponsiveMode = 'none' | 'self' | 'screen';\n\nexport type ThyGridResponsiveDescription = string;\n\nexport const THY_GRID_DEFAULT_COLUMNS = 24;\n\nexport const THY_GRID_ITEM_DEFAULT_SPAN = 1;\n\nexport const screenBreakpointsMap: Record<string, number> = {\n xs: 0,\n sm: 576,\n md: 768,\n lg: 992,\n xl: 1200\n};\n","import { ChangeDetectionStrategy, Component, ElementRef, OnInit, inject, DestroyRef, input } from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridResponsiveDescription, THY_GRID_ITEM_DEFAULT_SPAN } from './grid.type';\nimport { useHostRenderer } from '@tethys/cdk/dom';\n\n/**\n * 栅格项组件\n * @name thy-grid-item,[thyGridItem]\n * @order 15\n */\n@Component({\n selector: 'thy-grid-item,[thyGridItem]',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n class: 'thy-grid-item'\n }\n})\nexport class ThyGridItem implements OnInit {\n elementRef = inject(ElementRef);\n private grid = inject(THY_GRID_COMPONENT, { optional: true })!;\n\n /**\n * 栅格项的占位列数,为 0 时会隐藏该栅格项\n * @default 1\n */\n readonly thySpan = input<number | ThyGridResponsiveDescription>(THY_GRID_ITEM_DEFAULT_SPAN);\n\n /**\n * 栅格项左侧的偏移列数\n */\n readonly thyOffset = input<number | ThyGridResponsiveDescription>(0);\n\n private readonly destroyRef = inject(DestroyRef);\n\n private hostRenderer = useHostRenderer();\n\n public span: number = THY_GRID_ITEM_DEFAULT_SPAN;\n\n public offset: number = 0;\n\n ngOnInit(): void {\n this.grid.gridItemPropValueChange$.pipe(takeUntilDestroyed(this.destroyRef)).subscribe(() => {\n this.setGridItemStyle();\n });\n }\n\n private setGridItemStyle() {\n const xGap: number = this.grid?.xGap || 0;\n\n this.hostRenderer.setStyle('display', this.span === 0 ? 'none' : '');\n\n this.hostRenderer.setStyle('grid-column', `span ${this.span}`);\n\n this.hostRenderer.setStyle(\n 'margin-left',\n this.offset ? `calc(((100% - ${(this.span - 1) * xGap}px) / ${this.span} + ${xGap}px) * ${this.offset})` : ''\n );\n }\n}\n","import { ViewportRuler } from '@angular/cdk/scrolling';\nimport {\n ChangeDetectionStrategy,\n Component,\n Directive,\n ElementRef,\n NgZone,\n OnInit,\n inject,\n input,\n contentChildren,\n effect\n} from '@angular/core';\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\nimport { Observable, Subject } from 'rxjs';\nimport { throttleTime } from 'rxjs/operators';\nimport { ThyGridToken, THY_GRID_COMPONENT } from './grid.token';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport {\n ThyGridResponsiveMode,\n ThyGridResponsiveDescription,\n THY_GRID_DEFAULT_COLUMNS,\n THY_GRID_ITEM_DEFAULT_SPAN,\n screenBreakpointsMap\n} from './grid.type';\n\n/**\n * 栅格组件\n * @name thy-grid, [thyGrid]\n * @order 10\n */\n@Directive({\n selector: '[thyGrid]',\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n host: {\n class: 'thy-grid'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyGrid implements ThyGridToken, OnInit {\n private elementRef = inject(ElementRef);\n private viewportRuler = inject(ViewportRuler);\n private ngZone = inject(NgZone);\n\n /**\n * @internal\n */\n readonly gridItems = contentChildren(ThyGridItem);\n\n /**\n * 栅格的列数\n * @default 24\n */\n readonly thyCols = input<number | ThyGridResponsiveDescription>(THY_GRID_DEFAULT_COLUMNS);\n\n /**\n * 栅格的水平间隔\n */\n readonly thyXGap = input<number | ThyGridResponsiveDescription>(0);\n\n /**\n * 栅格的垂直间隔\n */\n readonly thyYGap = input<number | ThyGridResponsiveDescription>(0);\n\n /**\n * 栅格的水平和垂直间隔\n */\n readonly thyGap = input<number | ThyGridResponsiveDescription>(0);\n\n /**\n * 响应式栅格列数<br/>\n * none: 不进行响应式布局。<br/>\n * self:根据grid的自身宽度进行响应式布局。<br/>\n * screen:根据屏幕断点进行响应式布局,目前预设了5种响应式尺寸:`xs: 0, sm: 576, md: 768, lg: 992, xl: 1200`。\n */\n readonly thyResponsive = input<ThyGridResponsiveMode>('none');\n\n private hostRenderer = useHostRenderer();\n\n private cols: number;\n\n public xGap: number;\n\n private yGap: number;\n\n private numRegex = /^\\d+$/;\n\n private responsiveContainerWidth: number;\n\n public gridItemPropValueChange$ = new Subject<void>();\n\n private takeUntilDestroyed = takeUntilDestroyed();\n\n constructor() {\n effect(() => {\n this.handleGridItems();\n });\n }\n\n ngOnInit(): void {\n this.setGridStyle();\n\n if (this.thyResponsive() !== 'none') {\n this.listenResizeEvent();\n }\n }\n\n private setGridStyle() {\n this.cols = this.calculateActualValue(this.thyCols() || THY_GRID_DEFAULT_COLUMNS, THY_GRID_DEFAULT_COLUMNS);\n const xGap = this.thyXGap();\n const yGap = this.thyYGap();\n const gap = this.thyGap();\n if (!xGap && !yGap) {\n this.xGap = this.calculateActualValue(gap || 0);\n this.yGap = this.xGap;\n } else {\n this.xGap = this.calculateActualValue(xGap || gap);\n this.yGap = this.calculateActualValue(yGap || gap);\n }\n\n this.hostRenderer.setStyle('display', 'grid');\n this.hostRenderer.setStyle('grid-template-columns', `repeat(${this.cols}, minmax(0, 1fr))`);\n this.hostRenderer.setStyle('gap', `${this.yGap}px ${this.xGap}px`);\n }\n\n private listenResizeEvent() {\n if (this.thyResponsive() === 'screen') {\n this.viewportRuler\n .change(100)\n .pipe(this.takeUntilDestroyed)\n .subscribe(() => {\n this.responsiveContainerWidth = this.viewportRuler.getViewportSize().width;\n this.setGridStyle();\n this.handleGridItems();\n });\n } else {\n this.ngZone.runOutsideAngular(() => {\n this.gridResizeObserver(this.elementRef.nativeElement)\n .pipe(throttleTime(100), this.takeUntilDestroyed)\n .subscribe((data: ResizeObserverEntry[]) => {\n this.responsiveContainerWidth = data[0]?.contentRect?.width;\n this.setGridStyle();\n this.handleGridItems();\n });\n });\n }\n }\n\n private handleGridItems() {\n this.gridItems().forEach((gridItem: ThyGridItem) => {\n const rawSpan = getRawSpan(gridItem.thySpan());\n const span = this.calculateActualValue(rawSpan, THY_GRID_ITEM_DEFAULT_SPAN);\n const offset = this.calculateActualValue(gridItem.thyOffset() || 0);\n\n gridItem.span = Math.min(span + offset, this.cols);\n gridItem.offset = offset;\n });\n\n this.gridItemPropValueChange$.next();\n }\n\n private calculateActualValue(rawValue: number | ThyGridResponsiveDescription, defaultValue?: number): number {\n if (this.numRegex.test(rawValue.toString().trim())) {\n return Number(rawValue);\n } else {\n const responsiveValueMap = this.getResponsiveValueMap(rawValue as ThyGridResponsiveDescription);\n const breakpointKeys = Object.keys(responsiveValueMap);\n const breakpoint = this.calculateBreakPoint(breakpointKeys);\n\n if (this.thyResponsive() !== 'none' && breakpoint) {\n return responsiveValueMap[breakpoint];\n } else if (breakpointKeys.includes('0')) {\n return responsiveValueMap['0'];\n } else {\n return defaultValue || 0;\n }\n }\n }\n\n private getResponsiveValueMap(responsiveValue: string): { [key: string]: number } {\n return responsiveValue.split(' ').reduce((map: { [key: string]: number }, item: string) => {\n if (this.numRegex.test(item.toString())) {\n item = `0:${item}`;\n }\n const [key, value] = item.split(':');\n map[key] = Number(value);\n return map;\n }, {});\n }\n\n private calculateBreakPoint(breakpointKeys: string[]): string {\n if (this.thyResponsive() === 'screen') {\n const width = this.responsiveContainerWidth || this.viewportRuler.getViewportSize().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= screenBreakpointsMap[key] && width < screenBreakpointsMap[breakpointKeys[index + 1]]\n : width >= screenBreakpointsMap[key];\n });\n } else {\n const width = this.responsiveContainerWidth || this.elementRef.nativeElement.getBoundingClientRect().width;\n return breakpointKeys.find((key: string, index: number) => {\n return index < breakpointKeys.length - 1\n ? width >= Number(key) && width < Number(breakpointKeys[index + 1])\n : width >= Number(key);\n });\n }\n }\n\n private gridResizeObserver(element: HTMLElement): Observable<ResizeObserverEntry[]> {\n return new Observable(observer => {\n const resize = new ResizeObserver((entries: ResizeObserverEntry[]) => {\n observer.next(entries);\n });\n resize.observe(element);\n return () => {\n resize.disconnect();\n };\n });\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-grid',\n template: '<ng-content></ng-content>',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n providers: [\n {\n provide: THY_GRID_COMPONENT,\n useExisting: ThyGrid\n }\n ],\n hostDirectives: [\n {\n directive: ThyGrid,\n inputs: ['thyCols', 'thyXGap', 'thyYGap', 'thyGap', 'thyResponsive']\n }\n ]\n})\nexport class ThyGridComponent {\n grid = inject(ThyGrid);\n}\n\nfunction getRawSpan(span: number | ThyGridResponsiveDescription | undefined | null): number | ThyGridResponsiveDescription {\n return span === undefined || span === null ? THY_GRID_ITEM_DEFAULT_SPAN : span;\n}\n","import { ChangeDetectionStrategy, Component, Directive, effect, input } from '@angular/core';\nimport { useHostRenderer } from '@tethys/cdk/dom';\nimport { isUndefinedOrNull } from '@tethys/cdk/is';\n\nexport type ThyFlexDirection = 'row' | 'column' | 'row-reverse' | 'column-reverse';\nexport type ThyFlexWrap = 'nowrap' | 'wrap' | 'wrap-reverse';\nexport type ThyFlexJustifyContent =\n | 'start'\n | 'end'\n | 'flex-start'\n | 'flex-end'\n | 'center'\n | 'space-between'\n | 'space-around'\n | 'initial'\n | 'inherit';\nexport type ThyFlexAlignItems = 'start' | 'end' | 'stretch' | 'center' | 'flex-start' | 'flex-end' | 'baseline' | 'initial' | 'inherit';\nexport type ThyFlexGrow = '1' | '0' | 0 | 1;\nexport type ThyFlexShrink = '1' | '0' | 0 | 1;\n\n/**\n * 设置容器为 Flex 布局组件\n * @name thy-flex, [thyFlex]\n * @order 20\n */\n@Directive({\n selector: '[thyFlex]',\n host: {\n class: 'thy-flex d-flex'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlex {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex 方向,为 row 或者 column\n */\n readonly thyDirection = input<ThyFlexDirection, ThyFlexDirection>('row', {\n transform: (value: ThyFlexDirection) => value || 'row'\n });\n\n /**\n * Flex Wrap\n * @default nowrap\n */\n readonly thyWrap = input<ThyFlexWrap>();\n\n /**\n * Justify Content\n */\n readonly thyJustifyContent = input<ThyFlexJustifyContent>();\n\n /**\n * Align Items\n */\n readonly thyAlignItems = input<ThyFlexAlignItems>();\n\n /**\n * Flex Item 之间的间隙 Gap\n * @default 0\n */\n readonly thyGap = input<number>();\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n }\n\n private updateClasses() {\n const classes: string[] = [];\n const justifyContent = this.thyJustifyContent();\n if (!isUndefinedOrNull(justifyContent)) {\n classes.push(`justify-content-${normalizeStartEnd(justifyContent)}`);\n }\n\n const alignItems = this.thyAlignItems();\n if (!isUndefinedOrNull(alignItems)) {\n classes.push(`align-items-${normalizeStartEnd(alignItems)}`);\n }\n\n const wrap = this.thyWrap();\n if (!isUndefinedOrNull(wrap)) {\n classes.push(`flex-${wrap}`);\n }\n\n const direction = this.thyDirection();\n if (!isUndefinedOrNull(direction)) {\n classes.push(`flex-${direction}`);\n }\n this.hostRenderer.updateClass(classes);\n this.hostRenderer.setStyle('gap', `${this.thyGap() ?? '0'}px`);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [\n {\n directive: ThyFlex,\n inputs: ['thyDirection', 'thyWrap', 'thyJustifyContent', 'thyAlignItems', 'thyGap']\n }\n ],\n imports: []\n})\nexport class ThyFlexComponent {}\n\n/**\n * 设置为 Flex Item 组件\n * @name thy-flex-item, [thyFlexItem]\n * @order 25\n */\n@Directive({\n selector: '[thyFlexItem]',\n host: {\n class: 'thy-flex-item'\n }\n})\n// eslint-disable-next-line @angular-eslint/directive-class-suffix\nexport class ThyFlexItem {\n private hostRenderer = useHostRenderer();\n\n /**\n * Flex Item 属性,表示 grow 、shrink 、basis\n */\n readonly thyFlexItem = input<'fill' | string>();\n\n /**\n * Flew Grow,设置或检索弹性盒子的扩展比率,设置 1 为填充剩余区域\n */\n readonly thyGrow = input<ThyFlexGrow>();\n\n /**\n * Flex Shrink,设置或检索弹性盒收缩比例\n * @default 1\n */\n readonly thyShrink = input<ThyFlexShrink>();\n\n /**\n * Flex Basis,设置或检索弹性盒伸缩基准值\n * @default 1\n */\n readonly thyBasis = input<string>();\n\n constructor() {\n effect(() => {\n this.updateClasses();\n });\n }\n\n private updateClasses() {\n const flexItem = this.thyFlexItem();\n const classes: string[] = [];\n this.hostRenderer.setStyle('flex', '');\n this.hostRenderer.setStyle('basis', '');\n if (flexItem) {\n if (flexItem === 'fill') {\n classes.push(`flex-${flexItem}`);\n } else {\n this.hostRenderer.setStyle('flex', flexItem);\n }\n }\n const grow = this.thyGrow();\n if (!isUndefinedOrNull(grow)) {\n classes.push(`flex-grow-${grow}`);\n }\n const shrink = this.thyShrink();\n if (!isUndefinedOrNull(shrink)) {\n classes.push(`flex-shrink-${shrink}`);\n }\n const basis = this.thyBasis();\n if (!isUndefinedOrNull(basis)) {\n this.hostRenderer.setStyle('flex-basis', basis);\n }\n this.hostRenderer.updateClass(classes);\n }\n}\n\n/**\n * @internal\n */\n@Component({\n selector: 'thy-flex-item',\n template: `<ng-content></ng-content>`,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n hostDirectives: [\n {\n directive: ThyFlexItem,\n inputs: ['thyFlexItem', 'thyGrow', 'thyShrink', 'thyBasis']\n }\n ]\n})\nexport class ThyFlexItemComponent {}\n\nfunction normalizeStartEnd(value: string): string {\n return value === 'flex-start' ? 'start' : value === 'flex-end' ? 'end' : value;\n}\n","import { NgModule } from '@angular/core';\nimport { ThyRowDirective } from './thy-row.directive';\nimport { ThyColDirective } from './thy-col.directive';\nimport { ThyGrid, ThyGridComponent } from './thy-grid.component';\nimport { ThyGridItem } from './thy-grid-item.component';\nimport { ThyFlex, ThyFlexComponent, ThyFlexItem, ThyFlexItemComponent } from './flex';\n\n@NgModule({\n exports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ],\n imports: [\n ThyGrid,\n ThyGridComponent,\n ThyGridItem,\n ThyRowDirective,\n ThyColDirective,\n ThyFlex,\n ThyFlexItem,\n ThyFlexComponent,\n ThyFlexItemComponent\n ]\n})\nexport class ThyGridModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|