@ngneers/controls 0.0.1-pre6 → 0.0.1-pre7
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/fesm2022/ngneers-controls-accordion.mjs +10 -10
- package/fesm2022/ngneers-controls-accordion.mjs.map +1 -1
- package/fesm2022/ngneers-controls-api-ng.mjs +12 -9
- package/fesm2022/ngneers-controls-api-ng.mjs.map +1 -1
- package/fesm2022/ngneers-controls-avatar.mjs +6 -6
- package/fesm2022/ngneers-controls-avatar.mjs.map +1 -1
- package/fesm2022/ngneers-controls-base.mjs +9 -9
- package/fesm2022/ngneers-controls-base.mjs.map +1 -1
- package/fesm2022/ngneers-controls-breadcrumb.mjs +7 -7
- package/fesm2022/ngneers-controls-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngneers-controls-button-group.mjs +3 -3
- package/fesm2022/ngneers-controls-button-group.mjs.map +1 -1
- package/fesm2022/ngneers-controls-button.mjs +6 -6
- package/fesm2022/ngneers-controls-button.mjs.map +1 -1
- package/fesm2022/{ngneers-controls-calendar-time-Bzlv9Vkn.mjs → ngneers-controls-calendar-time-CKAqRgOP.mjs} +4 -4
- package/fesm2022/{ngneers-controls-calendar-time-Bzlv9Vkn.mjs.map → ngneers-controls-calendar-time-CKAqRgOP.mjs.map} +1 -1
- package/fesm2022/ngneers-controls-calendar.mjs +11 -11
- package/fesm2022/ngneers-controls-calendar.mjs.map +1 -1
- package/fesm2022/ngneers-controls-checkbox.mjs +4 -4
- package/fesm2022/ngneers-controls-checkbox.mjs.map +1 -1
- package/fesm2022/ngneers-controls-chip.mjs +4 -4
- package/fesm2022/ngneers-controls-chip.mjs.map +1 -1
- package/fesm2022/ngneers-controls-default-icons.mjs +61 -0
- package/fesm2022/ngneers-controls-default-icons.mjs.map +1 -0
- package/fesm2022/ngneers-controls-defer.mjs +3 -3
- package/fesm2022/ngneers-controls-defer.mjs.map +1 -1
- package/fesm2022/ngneers-controls-dialog.mjs +10 -10
- package/fesm2022/ngneers-controls-dialog.mjs.map +1 -1
- package/fesm2022/ngneers-controls-directives.mjs +21 -21
- package/fesm2022/ngneers-controls-directives.mjs.map +1 -1
- package/fesm2022/ngneers-controls-drawer.mjs +7 -7
- package/fesm2022/ngneers-controls-drawer.mjs.map +1 -1
- package/fesm2022/ngneers-controls-edit-inplace.mjs +7 -7
- package/fesm2022/ngneers-controls-edit-inplace.mjs.map +1 -1
- package/fesm2022/ngneers-controls-filter.mjs +4 -4
- package/fesm2022/ngneers-controls-filter.mjs.map +1 -1
- package/fesm2022/ngneers-controls-i18n.mjs +3 -3
- package/fesm2022/ngneers-controls-i18n.mjs.map +1 -1
- package/fesm2022/ngneers-controls-icon.mjs +108 -44
- package/fesm2022/ngneers-controls-icon.mjs.map +1 -1
- package/fesm2022/ngneers-controls-inplace.mjs +6 -6
- package/fesm2022/ngneers-controls-inplace.mjs.map +1 -1
- package/fesm2022/ngneers-controls-input-field.mjs +5 -5
- package/fesm2022/ngneers-controls-input-field.mjs.map +1 -1
- package/fesm2022/ngneers-controls-input-mask.mjs +3 -3
- package/fesm2022/ngneers-controls-input-mask.mjs.map +1 -1
- package/fesm2022/ngneers-controls-input.mjs +3 -3
- package/fesm2022/ngneers-controls-input.mjs.map +1 -1
- package/fesm2022/ngneers-controls-item-view.mjs +6 -6
- package/fesm2022/ngneers-controls-item-view.mjs.map +1 -1
- package/fesm2022/ngneers-controls-list-box.mjs +6 -6
- package/fesm2022/ngneers-controls-list-box.mjs.map +1 -1
- package/fesm2022/ngneers-controls-menu.mjs +10 -10
- package/fesm2022/ngneers-controls-menu.mjs.map +1 -1
- package/fesm2022/ngneers-controls-message.mjs +3 -3
- package/fesm2022/ngneers-controls-message.mjs.map +1 -1
- package/fesm2022/ngneers-controls-paginator.mjs +4 -4
- package/fesm2022/ngneers-controls-paginator.mjs.map +1 -1
- package/fesm2022/ngneers-controls-popover.mjs +11 -6
- package/fesm2022/ngneers-controls-popover.mjs.map +1 -1
- package/fesm2022/ngneers-controls-progress.mjs +3 -3
- package/fesm2022/ngneers-controls-progress.mjs.map +1 -1
- package/fesm2022/ngneers-controls-scroll-shadow.mjs +54 -0
- package/fesm2022/ngneers-controls-scroll-shadow.mjs.map +1 -0
- package/fesm2022/ngneers-controls-scroller.mjs +9 -9
- package/fesm2022/ngneers-controls-scroller.mjs.map +1 -1
- package/fesm2022/ngneers-controls-select-button.mjs +4 -4
- package/fesm2022/ngneers-controls-select-button.mjs.map +1 -1
- package/fesm2022/ngneers-controls-select.mjs +8 -7
- package/fesm2022/ngneers-controls-select.mjs.map +1 -1
- package/fesm2022/ngneers-controls-slider.mjs +3 -3
- package/fesm2022/ngneers-controls-slider.mjs.map +1 -1
- package/fesm2022/ngneers-controls-spinner.mjs +3 -3
- package/fesm2022/ngneers-controls-spinner.mjs.map +1 -1
- package/fesm2022/ngneers-controls-splitter.mjs +10 -10
- package/fesm2022/ngneers-controls-splitter.mjs.map +1 -1
- package/fesm2022/ngneers-controls-switch.mjs +3 -3
- package/fesm2022/ngneers-controls-switch.mjs.map +1 -1
- package/fesm2022/ngneers-controls-table.mjs +227 -293
- package/fesm2022/ngneers-controls-table.mjs.map +1 -1
- package/fesm2022/ngneers-controls-tabs.mjs +10 -10
- package/fesm2022/ngneers-controls-tabs.mjs.map +1 -1
- package/fesm2022/ngneers-controls-tag.mjs +3 -3
- package/fesm2022/ngneers-controls-tag.mjs.map +1 -1
- package/fesm2022/ngneers-controls-toast.mjs +10 -10
- package/fesm2022/ngneers-controls-toast.mjs.map +1 -1
- package/fesm2022/ngneers-controls-toggle-button.mjs +4 -4
- package/fesm2022/ngneers-controls-toggle-button.mjs.map +1 -1
- package/fesm2022/ngneers-controls-tooltip.mjs +44 -8
- package/fesm2022/ngneers-controls-tooltip.mjs.map +1 -1
- package/fesm2022/ngneers-controls-utils-ng.mjs +3 -3
- package/fesm2022/ngneers-controls-utils-ng.mjs.map +1 -1
- package/fesm2022/ngneers-controls-utils.mjs +1 -1
- package/fesm2022/ngneers-controls-utils.mjs.map +1 -1
- package/package.json +29 -11
- package/types/ngneers-controls-accordion.d.ts +6 -4
- package/types/ngneers-controls-api-ng.d.ts +5 -0
- package/types/ngneers-controls-api.d.ts +2 -2
- package/types/ngneers-controls-breadcrumb.d.ts +5 -3
- package/types/ngneers-controls-checkbox.d.ts +5 -3
- package/types/ngneers-controls-chip.d.ts +3 -1
- package/types/ngneers-controls-default-icons.d.ts +5 -0
- package/types/ngneers-controls-drawer.d.ts +3 -1
- package/types/ngneers-controls-filter.d.ts +1 -1
- package/types/ngneers-controls-icon.d.ts +23 -40
- package/types/ngneers-controls-input-field.d.ts +3 -1
- package/types/ngneers-controls-item-view.d.ts +4 -2
- package/types/ngneers-controls-menu.d.ts +3 -1
- package/types/ngneers-controls-message.d.ts +3 -1
- package/types/ngneers-controls-popover.d.ts +1 -0
- package/types/ngneers-controls-scroll-shadow.d.ts +16 -0
- package/types/ngneers-controls-select.d.ts +5 -10
- package/types/ngneers-controls-table.d.ts +29 -41
- package/types/ngneers-controls-tabs.d.ts +4 -2
- package/types/ngneers-controls-tag.d.ts +3 -1
- package/types/ngneers-controls-toast.d.ts +4 -2
- package/types/ngneers-controls-toggle-button.d.ts +5 -3
- package/types/ngneers-controls-tooltip.d.ts +7 -1
- package/fesm2022/ngneers-controls-icon-calendar-z5xA9wTT.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-calendar-z5xA9wTT.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-check-DdAQ9k-T.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-check-DdAQ9k-T.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-chevron_down-HO-z-xOr.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-chevron_down-HO-z-xOr.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-chevron_left-CC5psi16.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-chevron_left-CC5psi16.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-chevron_right-BRxlzx4G.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-chevron_right-BRxlzx4G.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-chevron_up-cqhPO7g2.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-chevron_up-cqhPO7g2.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-ellipsis-DXIGA1sk.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-ellipsis-DXIGA1sk.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-filter-oU7E6Xgr.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-filter-oU7E6Xgr.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-filter_solid-CqIKuR4N.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-filter_solid-CqIKuR4N.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-magnifying_glass-T4Hzbkig.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-magnifying_glass-T4Hzbkig.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-minus-oGDEFO4E.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-minus-oGDEFO4E.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-sort-CRD4tafz.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-sort-CRD4tafz.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-sort_down-DiFB1P6R.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-sort_down-DiFB1P6R.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-sort_up-Bq_q3hIi.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-sort_up-Bq_q3hIi.mjs.map +0 -1
- package/fesm2022/ngneers-controls-icon-xmark-BZKZORiu.mjs +0 -4
- package/fesm2022/ngneers-controls-icon-xmark-BZKZORiu.mjs.map +0 -1
|
@@ -48,10 +48,10 @@ class NgnAutofocus {
|
|
|
48
48
|
this._el.nativeElement.focus();
|
|
49
49
|
this._focused.set(true);
|
|
50
50
|
}
|
|
51
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
52
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
51
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnAutofocus, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
52
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: NgnAutofocus, isStandalone: true, selector: "[ngnAutofocus]", inputs: { ngnAutofocus: { classPropertyName: "ngnAutofocus", publicName: "ngnAutofocus", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
53
53
|
}
|
|
54
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
54
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnAutofocus, decorators: [{
|
|
55
55
|
type: Directive,
|
|
56
56
|
args: [{ selector: '[ngnAutofocus]' }]
|
|
57
57
|
}], ctorParameters: () => [], propDecorators: { ngnAutofocus: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngnAutofocus", required: false }] }] } });
|
|
@@ -129,10 +129,10 @@ class NgnDragBase {
|
|
|
129
129
|
this._startY = clientY;
|
|
130
130
|
this.onDraggedInt({ deltaX: deltaX, deltaY: deltaY, absoluteX: clientX, absoluteY: clientY });
|
|
131
131
|
}
|
|
132
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
133
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
132
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDragBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
133
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: NgnDragBase, isStandalone: true, outputs: { dragStart: "dragStart", dragEnd: "dragEnd", dragged: "dragged" }, ngImport: i0 });
|
|
134
134
|
}
|
|
135
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
135
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDragBase, decorators: [{
|
|
136
136
|
type: Directive
|
|
137
137
|
}], ctorParameters: () => [], propDecorators: { dragStart: [{ type: i0.Output, args: ["dragStart"] }], dragEnd: [{ type: i0.Output, args: ["dragEnd"] }], dragged: [{ type: i0.Output, args: ["dragged"] }] } });
|
|
138
138
|
|
|
@@ -144,10 +144,10 @@ class NgnDragScroll extends NgnDragBase {
|
|
|
144
144
|
behavior: 'auto',
|
|
145
145
|
});
|
|
146
146
|
}
|
|
147
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
148
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
147
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDragScroll, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
148
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: NgnDragScroll, isStandalone: true, selector: "[ngnDragScroll]", usesInheritance: true, ngImport: i0 });
|
|
149
149
|
}
|
|
150
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
150
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDragScroll, decorators: [{
|
|
151
151
|
type: Directive,
|
|
152
152
|
args: [{
|
|
153
153
|
selector: '[ngnDragScroll]',
|
|
@@ -158,10 +158,10 @@ class NgnDrag extends NgnDragBase {
|
|
|
158
158
|
onDragged(delta) {
|
|
159
159
|
// do nothing
|
|
160
160
|
}
|
|
161
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
162
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.
|
|
161
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDrag, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
162
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.2.10", type: NgnDrag, isStandalone: true, selector: "[ngnDrag]", usesInheritance: true, ngImport: i0 });
|
|
163
163
|
}
|
|
164
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDrag, decorators: [{
|
|
165
165
|
type: Directive,
|
|
166
166
|
args: [{
|
|
167
167
|
selector: '[ngnDrag]',
|
|
@@ -301,10 +301,10 @@ class NgnMovable extends NgnBase {
|
|
|
301
301
|
handle.current?.classList.remove(this.theme.class('drag-handle-grabbing'));
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
305
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
304
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnMovable, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
305
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: NgnMovable, isStandalone: true, selector: "[ngnMovable]", inputs: { ngnMovable: { classPropertyName: "ngnMovable", publicName: "ngnMovable", isSignal: true, isRequired: false, transformFunction: null }, ngnMovableDragHandle: { classPropertyName: "ngnMovableDragHandle", publicName: "ngnMovableDragHandle", isSignal: true, isRequired: false, transformFunction: null }, ngnMovableChangeCursor: { classPropertyName: "ngnMovableChangeCursor", publicName: "ngnMovableChangeCursor", isSignal: true, isRequired: false, transformFunction: null }, ngnMovableLimitToViewport: { classPropertyName: "ngnMovableLimitToViewport", publicName: "ngnMovableLimitToViewport", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
306
306
|
}
|
|
307
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
307
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnMovable, decorators: [{
|
|
308
308
|
type: Directive,
|
|
309
309
|
args: [{
|
|
310
310
|
selector: '[ngnMovable]',
|
|
@@ -392,10 +392,10 @@ class NgnResizable {
|
|
|
392
392
|
this.resized.set(true);
|
|
393
393
|
});
|
|
394
394
|
}
|
|
395
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
396
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
395
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnResizable, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
396
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: NgnResizable, isStandalone: true, selector: "[ngnResizable]", inputs: { ngnResizable: { classPropertyName: "ngnResizable", publicName: "ngnResizable", isSignal: true, isRequired: false, transformFunction: null }, ngnResizableSizeLimits: { classPropertyName: "ngnResizableSizeLimits", publicName: "ngnResizableSizeLimits", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "theme.classes({ resizable: !!ngnResizable(), resized: resized()})" } }, ngImport: i0 });
|
|
397
397
|
}
|
|
398
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
398
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnResizable, decorators: [{
|
|
399
399
|
type: Directive,
|
|
400
400
|
args: [{
|
|
401
401
|
selector: '[ngnResizable]',
|
|
@@ -431,10 +431,10 @@ class NgnScrollAmount {
|
|
|
431
431
|
});
|
|
432
432
|
});
|
|
433
433
|
}
|
|
434
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
435
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.
|
|
434
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnScrollAmount, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
435
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.2.10", type: NgnScrollAmount, isStandalone: true, selector: "[ngnScrollAmount]", inputs: { scrollContainer: { classPropertyName: "scrollContainer", publicName: "scrollContainer", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
436
436
|
}
|
|
437
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
437
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnScrollAmount, decorators: [{
|
|
438
438
|
type: Directive,
|
|
439
439
|
args: [{
|
|
440
440
|
selector: '[ngnScrollAmount]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngneers-controls-directives.mjs","sources":["../../src/directives/autofocus.ts","../../src/directives/drag/drag-base.ts","../../src/directives/drag/drag-scroll.ts","../../src/directives/drag/drag.ts","../../src/directives/movable.ts","../../src/directives/resizable.ts","../../src/directives/scroll-amount.ts","../../src/directives/ngneers-controls-directives.ts"],"sourcesContent":["import {\r\n type AfterViewInit,\r\n booleanAttribute,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\n\r\n@Directive({ selector: '[ngnAutofocus]' })\r\nexport class NgnAutofocus implements AfterViewInit {\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\r\n private readonly _focused = signal(false);\r\n private readonly _isInitialized = signal(false);\r\n\r\n public readonly ngnAutofocus = input(true, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.ngnAutofocus()) {\r\n this._focused.set(false);\r\n }\r\n });\r\n effect(() => {\r\n this.autoFocus();\r\n });\r\n }\r\n\r\n public ngAfterViewInit() {\r\n /**\r\n * The additional microtask ensures that the control is rendered and the\r\n * ngn-control-initializing class is removed before trying to focus the element.\r\n */\r\n if (this._el.nativeElement.getClientRects().length === 0) {\r\n queueMicrotask(() => {\r\n this._isInitialized.set(true);\r\n });\r\n } else {\r\n this._isInitialized.set(true);\r\n }\r\n }\r\n\r\n private autoFocus() {\r\n if (!this._isInitialized()) {\r\n return;\r\n }\r\n if (!this.ngnAutofocus()) {\r\n return;\r\n }\r\n if (this._focused()) {\r\n return;\r\n }\r\n this._el.nativeElement.focus();\r\n this._focused.set(true);\r\n }\r\n}\r\n","import {\r\n afterRenderEffect,\r\n Directive,\r\n DOCUMENT,\r\n ElementRef,\r\n inject,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { domEventHandler, domEventObservable, Platform } from '@ngneers/controls/api/ng';\r\n\r\nimport type { NgnDragInfo } from './types';\r\n\r\n@Directive()\r\nexport abstract class NgnDragBase {\r\n protected readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _isBrowser = inject(Platform).isBrowser;\r\n\r\n private _pointerDown = false;\r\n private _startX?: number = undefined;\r\n private _startY?: number = undefined;\r\n\r\n protected readonly isDragging = signal(false);\r\n public readonly dragStart = output<void>();\r\n public readonly dragEnd = output<void>();\r\n public readonly dragged = output<NgnDragInfo>();\r\n\r\n private readonly _pointerDownEvent = domEventObservable(this.el.nativeElement, 'pointerdown');\r\n private readonly _pointerMoveEvent = domEventObservable(this._document, 'pointermove');\r\n private readonly _pointerUpEvent = domEventObservable(this._document, 'pointerup');\r\n\r\n constructor() {\r\n if (!this._isBrowser) {\r\n return;\r\n }\r\n domEventHandler(this.el.nativeElement, 'touchmove', e => {\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n });\r\n afterRenderEffect(() => {\r\n this._pointerDownEvent.subscribe(event => {\r\n this._pointerDown = true;\r\n this._startX = (event as PointerEvent).clientX;\r\n this._startY = (event as PointerEvent).clientY;\r\n });\r\n this._pointerUpEvent.subscribe(() => {\r\n if (!this._pointerDown) {\r\n return;\r\n }\r\n this._pointerDown = false;\r\n this._startX = undefined;\r\n this._startY = undefined;\r\n this.isDragging.set(false);\r\n this.dragEnd.emit();\r\n });\r\n\r\n this._pointerMoveEvent.subscribe(event => {\r\n if (!this._pointerDown) {\r\n return;\r\n }\r\n this.handleDrag(event);\r\n });\r\n });\r\n }\r\n\r\n protected abstract onDragged(delta: NgnDragInfo): void;\r\n\r\n private onDraggedInt(delta: NgnDragInfo) {\r\n this.dragged.emit(delta);\r\n this.onDragged(delta);\r\n }\r\n\r\n private handleDrag(event: Event) {\r\n const { clientX, clientY } = event as PointerEvent;\r\n if (this._startX === undefined || this._startY === undefined) {\r\n throw new Error('Start positions are undefined');\r\n }\r\n const deltaX = clientX - this._startX;\r\n const deltaY = clientY - this._startY;\r\n if (!this.isDragging()) {\r\n const distance = Math.sqrt(deltaX ** 2 + deltaY ** 2);\r\n if (distance < 5) {\r\n return;\r\n }\r\n this.isDragging.set(true);\r\n this.dragStart.emit();\r\n }\r\n if (!this.isDragging()) {\r\n return;\r\n }\r\n this._startX = clientX;\r\n this._startY = clientY;\r\n this.onDraggedInt({ deltaX: deltaX, deltaY: deltaY, absoluteX: clientX, absoluteY: clientY });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\nimport { NgnDragBase } from './drag-base';\r\n\r\nimport type { NgnDragInfo } from './types';\r\n\r\n@Directive({\r\n selector: '[ngnDragScroll]',\r\n})\r\nexport class NgnDragScroll extends NgnDragBase {\r\n protected onDragged(delta: NgnDragInfo): void {\r\n this.el.nativeElement.scrollBy({\r\n left: -delta.deltaX,\r\n top: -delta.deltaY,\r\n behavior: 'auto',\r\n });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\nimport { NgnDragBase } from './drag-base';\r\n\r\nimport type { NgnDragInfo } from './types';\r\n\r\n@Directive({\r\n selector: '[ngnDrag]',\r\n})\r\nexport class NgnDrag extends NgnDragBase {\r\n protected onDragged(delta: NgnDragInfo): void {\r\n // do nothing\r\n }\r\n}\r\n","import {\r\n booleanAttribute,\r\n computed,\r\n Directive,\r\n DOCUMENT,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { domEventHandler, domEventSignal } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\nimport { signalWithPrevious } from '@ngneers/controls/utils-ng';\r\nimport { movableDirectiveTemplate } from '@ngneers/controls-themes/templates/api';\r\n\r\n@Directive({\r\n selector: '[ngnMovable]',\r\n})\r\nexport class NgnMovable extends NgnBase<'movable'> {\r\n protected readonly theme = this.injectThemeTemplate(movableDirectiveTemplate, {\r\n movable: () => this.ngnMovable(),\r\n moved: () => this.dragged(),\r\n });\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\r\n private readonly _document = inject(DOCUMENT);\r\n\r\n /**\r\n * Whether the element is movable.\r\n * @default true\r\n */\r\n public readonly ngnMovable = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * The handle element used to drag the element. If omitted, the entire element will be used as the drag handle.\r\n * @default null\r\n */\r\n public readonly ngnMovableDragHandle = input<HTMLElement | null>(null);\r\n\r\n /**\r\n * When `true`, the cursor will change to indicate that the element / drag handle is movable.\r\n * @default true\r\n */\r\n public readonly ngnMovableChangeCursor = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * When `true`, the movement will be limited to the viewport.\r\n * @default true\r\n */\r\n public readonly ngnMovableLimitToViewport = input(true, { transform: booleanAttribute });\r\n\r\n private readonly _ngnMovableDragHandleWithPrevious = signalWithPrevious(\r\n this.ngnMovableDragHandle,\r\n null\r\n );\r\n\r\n private readonly _eventElement = computed(() => {\r\n const handle = this.ngnMovableDragHandle();\r\n return handle ?? this._el.nativeElement;\r\n });\r\n\r\n protected readonly dragged = signal(false);\r\n\r\n private readonly _pointerDownSignal = domEventSignal(this._eventElement, 'pointerdown');\r\n private readonly _pointerMoveSignal = domEventSignal(this._document, 'pointermove');\r\n private readonly _pointerUpSignal = domEventSignal(this._document, 'pointerup');\r\n\r\n private readonly _isDragging = signal(false);\r\n private _startX = 0;\r\n private _startY = 0;\r\n\r\n constructor() {\r\n super();\r\n\r\n domEventHandler(this._el.nativeElement, 'touchmove', e => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n const pointerDown = this._pointerDownSignal();\r\n // check if primary button or touch\r\n if (pointerDown && (pointerDown.button === 0 || pointerDown.pointerType === 'touch')) {\r\n this._isDragging.set(true);\r\n this._startX = pointerDown.clientX - this._el.nativeElement.offsetLeft;\r\n this._startY = pointerDown.clientY - this._el.nativeElement.offsetTop;\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n const pointerMove = this._pointerMoveSignal();\r\n if (pointerMove && untracked(this._isDragging)) {\r\n this.dragged.set(true);\r\n const newLeft = pointerMove.clientX - this._startX;\r\n const newTop = pointerMove.clientY - this._startY;\r\n\r\n if (this.ngnMovableLimitToViewport()) {\r\n const documentRect = this._document.documentElement.getBoundingClientRect();\r\n const elRect = this._el.nativeElement.getBoundingClientRect();\r\n\r\n const clampedLeft = Math.min(Math.max(newLeft, 0), documentRect.width - elRect.width);\r\n const clampedTop = Math.min(Math.max(newTop, 0), documentRect.height - elRect.height);\r\n\r\n this._el.nativeElement.style.left = `${clampedLeft}px`;\r\n this._el.nativeElement.style.top = `${clampedTop}px`;\r\n } else {\r\n this._el.nativeElement.style.left = `${pointerMove.clientX - this._startX}px`;\r\n this._el.nativeElement.style.top = `${pointerMove.clientY - this._startY}px`;\r\n }\r\n\r\n this._el.nativeElement.style.width = `${this._el.nativeElement.offsetWidth}px`;\r\n this._el.nativeElement.style.height = `${this._el.nativeElement.offsetHeight}px`;\r\n if (\r\n !['fixed', 'absolute', 'static'].includes(\r\n getComputedStyle(this._el.nativeElement).position\r\n )\r\n ) {\r\n this._el.nativeElement.style.position = 'fixed';\r\n }\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n const pointerUp = this._pointerUpSignal();\r\n if (pointerUp && untracked(this._isDragging)) {\r\n this._isDragging.set(false);\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n this._isDragging.set(false);\r\n }\r\n });\r\n\r\n effect(() => {\r\n this.refreshCursor();\r\n });\r\n }\r\n\r\n public bakePosition() {\r\n this._el.nativeElement.style.left = `${this._el.nativeElement.offsetLeft}px`;\r\n this._el.nativeElement.style.top = `${this._el.nativeElement.offsetTop}px`;\r\n if (\r\n !['fixed', 'absolute', 'static'].includes(getComputedStyle(this._el.nativeElement).position)\r\n ) {\r\n this._el.nativeElement.style.position = 'fixed';\r\n }\r\n this.dragged.set(true);\r\n }\r\n\r\n private refreshCursor() {\r\n const handle = this._ngnMovableDragHandleWithPrevious();\r\n if (handle.previous && handle.previous !== handle.current) {\r\n handle.previous.classList.remove(\r\n this.theme.class('drag-handle-grab'),\r\n this.theme.class('drag-handle-grabbing')\r\n );\r\n }\r\n if (!this.ngnMovable() || !this.ngnMovableChangeCursor()) {\r\n handle.current?.classList.remove(\r\n this.theme.class('drag-handle-grab'),\r\n this.theme.class('drag-handle-grabbing')\r\n );\r\n return;\r\n }\r\n if (this._isDragging()) {\r\n handle.current?.classList.add(this.theme.class('drag-handle-grabbing'));\r\n handle.current?.classList.remove(this.theme.class('drag-handle-grab'));\r\n } else {\r\n handle.current?.classList.add(this.theme.class('drag-handle-grab'));\r\n handle.current?.classList.remove(this.theme.class('drag-handle-grabbing'));\r\n }\r\n }\r\n}\r\n","import { Directive, DOCUMENT, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport {\r\n domEventSignal,\r\n elementSizeSignal,\r\n injectThemeTemplate,\r\n Platform,\r\n} from '@ngneers/controls/api/ng';\r\nimport { resizableDirectiveTemplate } from '@ngneers/controls-themes/templates/api';\r\n\r\nimport { NgnMovable } from './movable';\r\n\r\n@Directive({\r\n selector: '[ngnResizable]',\r\n host: {\r\n '[class]': 'theme.classes({ resizable: !!ngnResizable(), resized: resized()})',\r\n },\r\n})\r\nexport class NgnResizable {\r\n protected readonly theme = injectThemeTemplate(resizableDirectiveTemplate);\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\r\n private readonly _isBrowser = inject(Platform).isBrowser;\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _ngnMovable = inject(NgnMovable, { optional: true });\r\n private _isPointerDown = false;\r\n\r\n /**\r\n * Whether the element is resizable.\r\n */\r\n public readonly ngnResizable = input<boolean | null | undefined | ''>(true);\r\n /**\r\n * The maximum size of the resizable element.\r\n */\r\n public readonly ngnResizableSizeLimits = input<{\r\n minWidth: string | number | null | undefined;\r\n minHeight: string | number | null | undefined;\r\n maxWidth: string | number | null | undefined;\r\n maxHeight: string | number | null | undefined;\r\n }>();\r\n\r\n protected readonly resized = signal(false);\r\n\r\n private readonly _pointerDownSignal = domEventSignal(this._el, 'pointerdown');\r\n private readonly _pointerUpSignal = domEventSignal(this._document, 'pointerup');\r\n\r\n private readonly _resizeEvent = elementSizeSignal(this._el);\r\n\r\n /**\r\n * Formats a size value from string | number | null | undefined to a CSS string.\r\n * @param value The size value to format\r\n * @returns The formatted CSS string or null if the value is null/undefined\r\n */\r\n private formatSizeValue(value: string | number | null | undefined): string | null {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n return typeof value === 'number' ? `${value}px` : value;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this._pointerDownSignal()) {\r\n this._isPointerDown = true;\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (this._pointerUpSignal()) {\r\n this._isPointerDown = false;\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this._isBrowser) {\r\n return;\r\n }\r\n const _size = this._resizeEvent(); // just as the trigger\r\n if (!this._isPointerDown) {\r\n // only react to resize events when the pointer is down (user is resizing)\r\n return;\r\n }\r\n\r\n // If the element is also movable, bake its position to avoid misplacement after resizing\r\n this._ngnMovable?.bakePosition();\r\n\r\n // calculate the max width & height of the element based on the size, position & body\r\n\r\n const bodyWidth = this._document.body.clientWidth;\r\n const bodyHeight = this._document.body.clientHeight;\r\n\r\n const elRect = this._el.nativeElement.getBoundingClientRect();\r\n\r\n const maxWidth = bodyWidth - elRect.left;\r\n const maxHeight = bodyHeight - elRect.top;\r\n\r\n const inputMaxWidth = this.ngnResizableSizeLimits()?.maxWidth;\r\n const inputMaxHeight = this.ngnResizableSizeLimits()?.maxHeight;\r\n const formattedMaxWidth = this.formatSizeValue(inputMaxWidth);\r\n const formattedMaxHeight = this.formatSizeValue(inputMaxHeight);\r\n\r\n this._el.nativeElement.style.maxWidth = formattedMaxWidth\r\n ? `min(${formattedMaxWidth}, ${maxWidth}px)`\r\n : `${maxWidth}px`;\r\n this._el.nativeElement.style.maxHeight = formattedMaxHeight\r\n ? `min(${formattedMaxHeight}, ${maxHeight}px)`\r\n : `${maxHeight}px`;\r\n\r\n const inputMinWidth = this.ngnResizableSizeLimits()?.minWidth;\r\n const inputMinHeight = this.ngnResizableSizeLimits()?.minHeight;\r\n const formattedMinWidth = this.formatSizeValue(inputMinWidth);\r\n const formattedMinHeight = this.formatSizeValue(inputMinHeight);\r\n\r\n if (formattedMinWidth) {\r\n this._el.nativeElement.style.minWidth = formattedMinWidth;\r\n }\r\n if (formattedMinHeight) {\r\n this._el.nativeElement.style.minHeight = formattedMinHeight;\r\n }\r\n\r\n this.resized.set(true);\r\n });\r\n }\r\n}\r\n","import {\r\n afterRenderEffect,\r\n computed,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { domEventObservable } from '@ngneers/controls/api/ng';\r\nimport { map } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[ngnScrollAmount]',\r\n})\r\nexport class NgnScrollAmount {\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n /**\r\n * Optional external scroll container. When set, scroll events and\r\n * dimensions are tracked on this element instead of the host element.\r\n */\r\n public readonly scrollContainer = input<HTMLElement | undefined>();\r\n\r\n public readonly scrollTarget = computed(() => this.scrollContainer() ?? this._el.nativeElement);\r\n public readonly scrollTop = signal(this._el.nativeElement.scrollTop);\r\n public readonly scrollLeft = signal(this._el.nativeElement.scrollLeft);\r\n\r\n private readonly _scrollEvent = domEventObservable(this.scrollTarget, 'scroll');\r\n\r\n constructor() {\r\n afterRenderEffect(() => {\r\n const obs = this._scrollEvent.pipe(\r\n map(e => {\r\n const target = e.target as HTMLElement;\r\n return {\r\n top: target.scrollTop,\r\n left: target.scrollLeft,\r\n };\r\n })\r\n );\r\n obs.subscribe(scroll => {\r\n this.scrollTop.set(scroll.top);\r\n this.scrollLeft.set(scroll.left);\r\n });\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngneers-controls-directives.mjs","sources":["../../src/directives/autofocus.ts","../../src/directives/drag/drag-base.ts","../../src/directives/drag/drag-scroll.ts","../../src/directives/drag/drag.ts","../../src/directives/movable.ts","../../src/directives/resizable.ts","../../src/directives/scroll-amount.ts","../../src/directives/ngneers-controls-directives.ts"],"sourcesContent":["import {\r\n type AfterViewInit,\r\n booleanAttribute,\r\n Directive,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\n\r\n@Directive({ selector: '[ngnAutofocus]' })\r\nexport class NgnAutofocus implements AfterViewInit {\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\r\n private readonly _focused = signal(false);\r\n private readonly _isInitialized = signal(false);\r\n\r\n public readonly ngnAutofocus = input(true, { transform: booleanAttribute });\r\n\r\n constructor() {\r\n effect(() => {\r\n if (!this.ngnAutofocus()) {\r\n this._focused.set(false);\r\n }\r\n });\r\n effect(() => {\r\n this.autoFocus();\r\n });\r\n }\r\n\r\n public ngAfterViewInit() {\r\n /**\r\n * The additional microtask ensures that the control is rendered and the\r\n * ngn-control-initializing class is removed before trying to focus the element.\r\n */\r\n if (this._el.nativeElement.getClientRects().length === 0) {\r\n queueMicrotask(() => {\r\n this._isInitialized.set(true);\r\n });\r\n } else {\r\n this._isInitialized.set(true);\r\n }\r\n }\r\n\r\n private autoFocus() {\r\n if (!this._isInitialized()) {\r\n return;\r\n }\r\n if (!this.ngnAutofocus()) {\r\n return;\r\n }\r\n if (this._focused()) {\r\n return;\r\n }\r\n this._el.nativeElement.focus();\r\n this._focused.set(true);\r\n }\r\n}\r\n","import {\r\n afterRenderEffect,\r\n Directive,\r\n DOCUMENT,\r\n ElementRef,\r\n inject,\r\n output,\r\n signal,\r\n} from '@angular/core';\r\nimport { domEventHandler, domEventObservable, Platform } from '@ngneers/controls/api/ng';\r\n\r\nimport type { NgnDragInfo } from './types';\r\n\r\n@Directive()\r\nexport abstract class NgnDragBase {\r\n protected readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _isBrowser = inject(Platform).isBrowser;\r\n\r\n private _pointerDown = false;\r\n private _startX?: number = undefined;\r\n private _startY?: number = undefined;\r\n\r\n protected readonly isDragging = signal(false);\r\n public readonly dragStart = output<void>();\r\n public readonly dragEnd = output<void>();\r\n public readonly dragged = output<NgnDragInfo>();\r\n\r\n private readonly _pointerDownEvent = domEventObservable(this.el.nativeElement, 'pointerdown');\r\n private readonly _pointerMoveEvent = domEventObservable(this._document, 'pointermove');\r\n private readonly _pointerUpEvent = domEventObservable(this._document, 'pointerup');\r\n\r\n constructor() {\r\n if (!this._isBrowser) {\r\n return;\r\n }\r\n domEventHandler(this.el.nativeElement, 'touchmove', e => {\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n });\r\n afterRenderEffect(() => {\r\n this._pointerDownEvent.subscribe(event => {\r\n this._pointerDown = true;\r\n this._startX = (event as PointerEvent).clientX;\r\n this._startY = (event as PointerEvent).clientY;\r\n });\r\n this._pointerUpEvent.subscribe(() => {\r\n if (!this._pointerDown) {\r\n return;\r\n }\r\n this._pointerDown = false;\r\n this._startX = undefined;\r\n this._startY = undefined;\r\n this.isDragging.set(false);\r\n this.dragEnd.emit();\r\n });\r\n\r\n this._pointerMoveEvent.subscribe(event => {\r\n if (!this._pointerDown) {\r\n return;\r\n }\r\n this.handleDrag(event);\r\n });\r\n });\r\n }\r\n\r\n protected abstract onDragged(delta: NgnDragInfo): void;\r\n\r\n private onDraggedInt(delta: NgnDragInfo) {\r\n this.dragged.emit(delta);\r\n this.onDragged(delta);\r\n }\r\n\r\n private handleDrag(event: Event) {\r\n const { clientX, clientY } = event as PointerEvent;\r\n if (this._startX === undefined || this._startY === undefined) {\r\n throw new Error('Start positions are undefined');\r\n }\r\n const deltaX = clientX - this._startX;\r\n const deltaY = clientY - this._startY;\r\n if (!this.isDragging()) {\r\n const distance = Math.sqrt(deltaX ** 2 + deltaY ** 2);\r\n if (distance < 5) {\r\n return;\r\n }\r\n this.isDragging.set(true);\r\n this.dragStart.emit();\r\n }\r\n if (!this.isDragging()) {\r\n return;\r\n }\r\n this._startX = clientX;\r\n this._startY = clientY;\r\n this.onDraggedInt({ deltaX: deltaX, deltaY: deltaY, absoluteX: clientX, absoluteY: clientY });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\nimport { NgnDragBase } from './drag-base';\r\n\r\nimport type { NgnDragInfo } from './types';\r\n\r\n@Directive({\r\n selector: '[ngnDragScroll]',\r\n})\r\nexport class NgnDragScroll extends NgnDragBase {\r\n protected onDragged(delta: NgnDragInfo): void {\r\n this.el.nativeElement.scrollBy({\r\n left: -delta.deltaX,\r\n top: -delta.deltaY,\r\n behavior: 'auto',\r\n });\r\n }\r\n}\r\n","import { Directive } from '@angular/core';\r\n\r\nimport { NgnDragBase } from './drag-base';\r\n\r\nimport type { NgnDragInfo } from './types';\r\n\r\n@Directive({\r\n selector: '[ngnDrag]',\r\n})\r\nexport class NgnDrag extends NgnDragBase {\r\n protected onDragged(delta: NgnDragInfo): void {\r\n // do nothing\r\n }\r\n}\r\n","import {\r\n booleanAttribute,\r\n computed,\r\n Directive,\r\n DOCUMENT,\r\n effect,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n untracked,\r\n} from '@angular/core';\r\nimport { domEventHandler, domEventSignal } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\nimport { signalWithPrevious } from '@ngneers/controls/utils-ng';\r\nimport { movableDirectiveTemplate } from '@ngneers/controls-themes/templates/api';\r\n\r\n@Directive({\r\n selector: '[ngnMovable]',\r\n})\r\nexport class NgnMovable extends NgnBase<'movable'> {\r\n protected readonly theme = this.injectThemeTemplate(movableDirectiveTemplate, {\r\n movable: () => this.ngnMovable(),\r\n moved: () => this.dragged(),\r\n });\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\r\n private readonly _document = inject(DOCUMENT);\r\n\r\n /**\r\n * Whether the element is movable.\r\n * @default true\r\n */\r\n public readonly ngnMovable = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * The handle element used to drag the element. If omitted, the entire element will be used as the drag handle.\r\n * @default null\r\n */\r\n public readonly ngnMovableDragHandle = input<HTMLElement | null>(null);\r\n\r\n /**\r\n * When `true`, the cursor will change to indicate that the element / drag handle is movable.\r\n * @default true\r\n */\r\n public readonly ngnMovableChangeCursor = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * When `true`, the movement will be limited to the viewport.\r\n * @default true\r\n */\r\n public readonly ngnMovableLimitToViewport = input(true, { transform: booleanAttribute });\r\n\r\n private readonly _ngnMovableDragHandleWithPrevious = signalWithPrevious(\r\n this.ngnMovableDragHandle,\r\n null\r\n );\r\n\r\n private readonly _eventElement = computed(() => {\r\n const handle = this.ngnMovableDragHandle();\r\n return handle ?? this._el.nativeElement;\r\n });\r\n\r\n protected readonly dragged = signal(false);\r\n\r\n private readonly _pointerDownSignal = domEventSignal(this._eventElement, 'pointerdown');\r\n private readonly _pointerMoveSignal = domEventSignal(this._document, 'pointermove');\r\n private readonly _pointerUpSignal = domEventSignal(this._document, 'pointerup');\r\n\r\n private readonly _isDragging = signal(false);\r\n private _startX = 0;\r\n private _startY = 0;\r\n\r\n constructor() {\r\n super();\r\n\r\n domEventHandler(this._el.nativeElement, 'touchmove', e => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n if (e.cancelable) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n const pointerDown = this._pointerDownSignal();\r\n // check if primary button or touch\r\n if (pointerDown && (pointerDown.button === 0 || pointerDown.pointerType === 'touch')) {\r\n this._isDragging.set(true);\r\n this._startX = pointerDown.clientX - this._el.nativeElement.offsetLeft;\r\n this._startY = pointerDown.clientY - this._el.nativeElement.offsetTop;\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n const pointerMove = this._pointerMoveSignal();\r\n if (pointerMove && untracked(this._isDragging)) {\r\n this.dragged.set(true);\r\n const newLeft = pointerMove.clientX - this._startX;\r\n const newTop = pointerMove.clientY - this._startY;\r\n\r\n if (this.ngnMovableLimitToViewport()) {\r\n const documentRect = this._document.documentElement.getBoundingClientRect();\r\n const elRect = this._el.nativeElement.getBoundingClientRect();\r\n\r\n const clampedLeft = Math.min(Math.max(newLeft, 0), documentRect.width - elRect.width);\r\n const clampedTop = Math.min(Math.max(newTop, 0), documentRect.height - elRect.height);\r\n\r\n this._el.nativeElement.style.left = `${clampedLeft}px`;\r\n this._el.nativeElement.style.top = `${clampedTop}px`;\r\n } else {\r\n this._el.nativeElement.style.left = `${pointerMove.clientX - this._startX}px`;\r\n this._el.nativeElement.style.top = `${pointerMove.clientY - this._startY}px`;\r\n }\r\n\r\n this._el.nativeElement.style.width = `${this._el.nativeElement.offsetWidth}px`;\r\n this._el.nativeElement.style.height = `${this._el.nativeElement.offsetHeight}px`;\r\n if (\r\n !['fixed', 'absolute', 'static'].includes(\r\n getComputedStyle(this._el.nativeElement).position\r\n )\r\n ) {\r\n this._el.nativeElement.style.position = 'fixed';\r\n }\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n return;\r\n }\r\n const pointerUp = this._pointerUpSignal();\r\n if (pointerUp && untracked(this._isDragging)) {\r\n this._isDragging.set(false);\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this.ngnMovable()) {\r\n this._isDragging.set(false);\r\n }\r\n });\r\n\r\n effect(() => {\r\n this.refreshCursor();\r\n });\r\n }\r\n\r\n public bakePosition() {\r\n this._el.nativeElement.style.left = `${this._el.nativeElement.offsetLeft}px`;\r\n this._el.nativeElement.style.top = `${this._el.nativeElement.offsetTop}px`;\r\n if (\r\n !['fixed', 'absolute', 'static'].includes(getComputedStyle(this._el.nativeElement).position)\r\n ) {\r\n this._el.nativeElement.style.position = 'fixed';\r\n }\r\n this.dragged.set(true);\r\n }\r\n\r\n private refreshCursor() {\r\n const handle = this._ngnMovableDragHandleWithPrevious();\r\n if (handle.previous && handle.previous !== handle.current) {\r\n handle.previous.classList.remove(\r\n this.theme.class('drag-handle-grab'),\r\n this.theme.class('drag-handle-grabbing')\r\n );\r\n }\r\n if (!this.ngnMovable() || !this.ngnMovableChangeCursor()) {\r\n handle.current?.classList.remove(\r\n this.theme.class('drag-handle-grab'),\r\n this.theme.class('drag-handle-grabbing')\r\n );\r\n return;\r\n }\r\n if (this._isDragging()) {\r\n handle.current?.classList.add(this.theme.class('drag-handle-grabbing'));\r\n handle.current?.classList.remove(this.theme.class('drag-handle-grab'));\r\n } else {\r\n handle.current?.classList.add(this.theme.class('drag-handle-grab'));\r\n handle.current?.classList.remove(this.theme.class('drag-handle-grabbing'));\r\n }\r\n }\r\n}\r\n","import { Directive, DOCUMENT, effect, ElementRef, inject, input, signal } from '@angular/core';\r\nimport {\r\n domEventSignal,\r\n elementSizeSignal,\r\n injectThemeTemplate,\r\n Platform,\r\n} from '@ngneers/controls/api/ng';\r\nimport { resizableDirectiveTemplate } from '@ngneers/controls-themes/templates/api';\r\n\r\nimport { NgnMovable } from './movable';\r\n\r\n@Directive({\r\n selector: '[ngnResizable]',\r\n host: {\r\n '[class]': 'theme.classes({ resizable: !!ngnResizable(), resized: resized()})',\r\n },\r\n})\r\nexport class NgnResizable {\r\n protected readonly theme = injectThemeTemplate(resizableDirectiveTemplate);\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef<HTMLElement>);\r\n private readonly _isBrowser = inject(Platform).isBrowser;\r\n private readonly _document = inject(DOCUMENT);\r\n private readonly _ngnMovable = inject(NgnMovable, { optional: true });\r\n private _isPointerDown = false;\r\n\r\n /**\r\n * Whether the element is resizable.\r\n */\r\n public readonly ngnResizable = input<boolean | null | undefined | ''>(true);\r\n /**\r\n * The maximum size of the resizable element.\r\n */\r\n public readonly ngnResizableSizeLimits = input<{\r\n minWidth: string | number | null | undefined;\r\n minHeight: string | number | null | undefined;\r\n maxWidth: string | number | null | undefined;\r\n maxHeight: string | number | null | undefined;\r\n }>();\r\n\r\n protected readonly resized = signal(false);\r\n\r\n private readonly _pointerDownSignal = domEventSignal(this._el, 'pointerdown');\r\n private readonly _pointerUpSignal = domEventSignal(this._document, 'pointerup');\r\n\r\n private readonly _resizeEvent = elementSizeSignal(this._el);\r\n\r\n /**\r\n * Formats a size value from string | number | null | undefined to a CSS string.\r\n * @param value The size value to format\r\n * @returns The formatted CSS string or null if the value is null/undefined\r\n */\r\n private formatSizeValue(value: string | number | null | undefined): string | null {\r\n if (value === null || value === undefined) {\r\n return null;\r\n }\r\n return typeof value === 'number' ? `${value}px` : value;\r\n }\r\n\r\n constructor() {\r\n effect(() => {\r\n if (this._pointerDownSignal()) {\r\n this._isPointerDown = true;\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (this._pointerUpSignal()) {\r\n this._isPointerDown = false;\r\n }\r\n });\r\n\r\n effect(() => {\r\n if (!this._isBrowser) {\r\n return;\r\n }\r\n const _size = this._resizeEvent(); // just as the trigger\r\n if (!this._isPointerDown) {\r\n // only react to resize events when the pointer is down (user is resizing)\r\n return;\r\n }\r\n\r\n // If the element is also movable, bake its position to avoid misplacement after resizing\r\n this._ngnMovable?.bakePosition();\r\n\r\n // calculate the max width & height of the element based on the size, position & body\r\n\r\n const bodyWidth = this._document.body.clientWidth;\r\n const bodyHeight = this._document.body.clientHeight;\r\n\r\n const elRect = this._el.nativeElement.getBoundingClientRect();\r\n\r\n const maxWidth = bodyWidth - elRect.left;\r\n const maxHeight = bodyHeight - elRect.top;\r\n\r\n const inputMaxWidth = this.ngnResizableSizeLimits()?.maxWidth;\r\n const inputMaxHeight = this.ngnResizableSizeLimits()?.maxHeight;\r\n const formattedMaxWidth = this.formatSizeValue(inputMaxWidth);\r\n const formattedMaxHeight = this.formatSizeValue(inputMaxHeight);\r\n\r\n this._el.nativeElement.style.maxWidth = formattedMaxWidth\r\n ? `min(${formattedMaxWidth}, ${maxWidth}px)`\r\n : `${maxWidth}px`;\r\n this._el.nativeElement.style.maxHeight = formattedMaxHeight\r\n ? `min(${formattedMaxHeight}, ${maxHeight}px)`\r\n : `${maxHeight}px`;\r\n\r\n const inputMinWidth = this.ngnResizableSizeLimits()?.minWidth;\r\n const inputMinHeight = this.ngnResizableSizeLimits()?.minHeight;\r\n const formattedMinWidth = this.formatSizeValue(inputMinWidth);\r\n const formattedMinHeight = this.formatSizeValue(inputMinHeight);\r\n\r\n if (formattedMinWidth) {\r\n this._el.nativeElement.style.minWidth = formattedMinWidth;\r\n }\r\n if (formattedMinHeight) {\r\n this._el.nativeElement.style.minHeight = formattedMinHeight;\r\n }\r\n\r\n this.resized.set(true);\r\n });\r\n }\r\n}\r\n","import {\r\n afterRenderEffect,\r\n computed,\r\n Directive,\r\n ElementRef,\r\n inject,\r\n input,\r\n signal,\r\n} from '@angular/core';\r\nimport { domEventObservable } from '@ngneers/controls/api/ng';\r\nimport { map } from 'rxjs';\r\n\r\n@Directive({\r\n selector: '[ngnScrollAmount]',\r\n})\r\nexport class NgnScrollAmount {\r\n private readonly _el = inject<ElementRef<HTMLElement>>(ElementRef);\r\n\r\n /**\r\n * Optional external scroll container. When set, scroll events and\r\n * dimensions are tracked on this element instead of the host element.\r\n */\r\n public readonly scrollContainer = input<HTMLElement | undefined>();\r\n\r\n public readonly scrollTarget = computed(() => this.scrollContainer() ?? this._el.nativeElement);\r\n public readonly scrollTop = signal(this._el.nativeElement.scrollTop);\r\n public readonly scrollLeft = signal(this._el.nativeElement.scrollLeft);\r\n\r\n private readonly _scrollEvent = domEventObservable(this.scrollTarget, 'scroll');\r\n\r\n constructor() {\r\n afterRenderEffect(() => {\r\n const obs = this._scrollEvent.pipe(\r\n map(e => {\r\n const target = e.target as HTMLElement;\r\n return {\r\n top: target.scrollTop,\r\n left: target.scrollLeft,\r\n };\r\n })\r\n );\r\n obs.subscribe(scroll => {\r\n this.scrollTop.set(scroll.top);\r\n this.scrollLeft.set(scroll.left);\r\n });\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -39,10 +39,10 @@ class DrawerTemplates extends NgnBase {
|
|
|
39
39
|
* Types for the drawer templates.
|
|
40
40
|
*/
|
|
41
41
|
templateTypes = templateTypesFn();
|
|
42
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
43
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.
|
|
42
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawerTemplates, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
43
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.10", type: DrawerTemplates, isStandalone: true, inputs: { templateHeader: { classPropertyName: "templateHeader", publicName: "templateHeader", isSignal: true, isRequired: false, transformFunction: null }, templateFooter: { classPropertyName: "templateFooter", publicName: "templateFooter", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_userHeaderTemplate", first: true, predicate: ["header"], descendants: true, isSignal: true }, { propertyName: "_userFooterTemplate", first: true, predicate: ["footer"], descendants: true, isSignal: true }, { propertyName: "_userContentTemplate", first: true, predicate: ["content"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_defaultHeaderTemplate", first: true, predicate: ["defaultHeaderTemplate"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
44
44
|
}
|
|
45
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: DrawerTemplates, decorators: [{
|
|
46
46
|
type: Directive
|
|
47
47
|
}], propDecorators: { _defaultHeaderTemplate: [{ type: i0.ViewChild, args: ['defaultHeaderTemplate', { isSignal: true }] }], _userHeaderTemplate: [{ type: i0.ContentChild, args: ['header', { isSignal: true }] }], templateHeader: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateHeader", required: false }] }], _userFooterTemplate: [{ type: i0.ContentChild, args: ['footer', { isSignal: true }] }], templateFooter: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateFooter", required: false }] }], _userContentTemplate: [{ type: i0.ContentChild, args: ['content', { isSignal: true }] }], content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }] } });
|
|
48
48
|
|
|
@@ -210,10 +210,10 @@ class NgnDrawer extends DrawerTemplates {
|
|
|
210
210
|
this.isFullyClosed.set(false);
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
214
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
213
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDrawer, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
214
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: NgnDrawer, isStandalone: true, selector: "ngn-drawer", inputs: { open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, closeBy: { classPropertyName: "closeBy", publicName: "closeBy", isSignal: true, isRequired: false, transformFunction: null }, modal: { classPropertyName: "modal", publicName: "modal", isSignal: true, isRequired: false, transformFunction: null }, position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, iconClose: { classPropertyName: "iconClose", publicName: "iconClose", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, cache: { classPropertyName: "cache", publicName: "cache", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { closed: "closed", open: "openChange" }, host: { attributes: { "role": "complementary" }, listeners: { "toggle": "onToggle($event)" }, properties: { "attr.popover": "closeByPopover()", "ariaModal": "modal() ? \"true\" : undefined", "attr.data-position": "position()" } }, providers: [provideSelf(NgnDrawer)], usesInheritance: true, ngImport: i0, template: "<header [ptInt]=\"this\" [ptClass]=\"'header'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { close: doClose, text: this.header() } }\r\n \"\r\n />\r\n</header>\r\n<ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"open() || !isFullyClosed()\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n>\r\n <ng-content />\r\n</ngn-defer>\r\n@if (footerTemplate(); as footerTemplate) {\r\n <footer [ptInt]=\"this\" [ptClass]=\"'footer'\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\" />\r\n </footer>\r\n}\r\n\r\n<ng-template #defaultHeaderTemplate [ngnTemplate]=\"templateTypes.header\" let-header>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-header'\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-header-text'\">{{ header.text }}</span>\r\n <button\r\n ngnButton\r\n [kind]=\"'icon'\"\r\n [attr.aria-label]=\"i18n['drawer_close']()\"\r\n (click)=\"header.close()\"\r\n >\r\n <ngn-icon defaultIcon=\"drawer-close\" [icon]=\"iconClose()\" />\r\n </button>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgnPt, selector: "[ptInt]", inputs: ["ptInt", "ptClass"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: NgnDefer, selector: "ngn-defer", inputs: ["lazyContent", "lazyContentContext", "open", "lazy", "cache", "hiddenOnClosed"] }, { kind: "directive", type: NgnButton, selector: "button[ngnButton], a[ngnButton]", inputs: ["inline"], exportAs: ["ngnButton"] }, { kind: "component", type: NgnIcon, selector: "ngn-icon", inputs: ["defaultIcon", "icon"] }, { kind: "directive", type: NgnTemplate, selector: "ng-template[ngnTemplate]", inputs: ["ngnTemplate"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
215
215
|
}
|
|
216
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
216
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnDrawer, decorators: [{
|
|
217
217
|
type: Component,
|
|
218
218
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ngn-drawer', imports: [NgnPt, NgTemplateOutlet, NgnDefer, NgnButton, NgnIcon, NgnTemplate], providers: [provideSelf(NgnDrawer)], host: {
|
|
219
219
|
'[attr.popover]': 'closeByPopover()',
|
|
@@ -221,7 +221,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
221
221
|
'[ariaModal]': 'modal() ? "true" : undefined',
|
|
222
222
|
role: 'complementary',
|
|
223
223
|
'[attr.data-position]': 'position()',
|
|
224
|
-
}, template: "<header [ptInt]=\"this\" [ptClass]=\"'header'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { close: doClose, text: this.header() } }\r\n \"\r\n />\r\n</header>\r\n<ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"open() || !isFullyClosed()\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n>\r\n <ng-content />\r\n</ngn-defer>\r\n@if (footerTemplate(); as footerTemplate) {\r\n <footer [ptInt]=\"this\" [ptClass]=\"'footer'\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\" />\r\n </footer>\r\n}\r\n\r\n<ng-template #defaultHeaderTemplate [ngnTemplate]=\"templateTypes.header\" let-header>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-header'\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-header-text'\">{{ header.text }}</span>\r\n <button\r\n ngnButton\r\n [kind]=\"'icon'\"\r\n [attr.aria-label]=\"i18n['drawer_close']()\"\r\n (click)=\"header.close()\"\r\n >\r\n <ngn-icon defaultIcon=\"
|
|
224
|
+
}, template: "<header [ptInt]=\"this\" [ptClass]=\"'header'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { close: doClose, text: this.header() } }\r\n \"\r\n />\r\n</header>\r\n<ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"open() || !isFullyClosed()\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n>\r\n <ng-content />\r\n</ngn-defer>\r\n@if (footerTemplate(); as footerTemplate) {\r\n <footer [ptInt]=\"this\" [ptClass]=\"'footer'\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\" />\r\n </footer>\r\n}\r\n\r\n<ng-template #defaultHeaderTemplate [ngnTemplate]=\"templateTypes.header\" let-header>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-header'\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-header-text'\">{{ header.text }}</span>\r\n <button\r\n ngnButton\r\n [kind]=\"'icon'\"\r\n [attr.aria-label]=\"i18n['drawer_close']()\"\r\n (click)=\"header.close()\"\r\n >\r\n <ngn-icon defaultIcon=\"drawer-close\" [icon]=\"iconClose()\" />\r\n </button>\r\n </div>\r\n</ng-template>\r\n" }]
|
|
225
225
|
}], ctorParameters: () => [], propDecorators: { closed: [{ type: i0.Output, args: ["closed"] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], closeBy: [{ type: i0.Input, args: [{ isSignal: true, alias: "closeBy", required: false }] }], modal: [{ type: i0.Input, args: [{ isSignal: true, alias: "modal", required: false }] }], position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], header: [{ type: i0.Input, args: [{ isSignal: true, alias: "header", required: false }] }], iconClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "iconClose", required: false }] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], cache: [{ type: i0.Input, args: [{ isSignal: true, alias: "cache", required: false }] }] } });
|
|
226
226
|
|
|
227
227
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngneers-controls-drawer.mjs","sources":["../../src/drawer/drawer-templates.ts","../../src/drawer/drawer.ts","../../src/drawer/drawer.html","../../src/drawer/ngneers-controls-drawer.ts"],"sourcesContent":["import { computed, contentChild, Directive, input, TemplateRef, viewChild } from '@angular/core';\r\nimport { templateTypesFn } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\n\r\nimport type { HeaderTemplateType } from './types';\r\n\r\n@Directive()\r\nexport abstract class DrawerTemplates extends NgnBase<'drawer'> {\r\n // Header template\r\n private readonly _defaultHeaderTemplate =\r\n viewChild.required<TemplateRef<typeof this.templateTypes.header>>('defaultHeaderTemplate');\r\n private readonly _userHeaderTemplate =\r\n contentChild<TemplateRef<typeof this.templateTypes.header>>('header');\r\n /**\r\n * Set a custom template for the header.\r\n * Can also be set using an `<ng-template>` element with `#header` template reference variable.\r\n */\r\n public readonly templateHeader = input<TemplateRef<typeof this.templateTypes.header> | null>(\r\n null\r\n );\r\n protected readonly headerTemplate = computed(\r\n () => this._userHeaderTemplate() ?? this.templateHeader() ?? this._defaultHeaderTemplate()\r\n );\r\n\r\n // Footer template\r\n private readonly _userFooterTemplate = contentChild<TemplateRef<unknown>>('footer');\r\n /**\r\n * Set a custom template for the footer.\r\n * Can also be set using an `<ng-template>` element with `#footer` template reference variable.\r\n */\r\n public readonly templateFooter = input<TemplateRef<unknown> | null>(null);\r\n protected readonly footerTemplate = computed(\r\n () => this._userFooterTemplate() ?? this.templateFooter()\r\n );\r\n\r\n // Content template\r\n private readonly _userContentTemplate = contentChild<TemplateRef<unknown>>('content');\r\n /**\r\n * Set a custom template for the content.\r\n * Can also be set using an `<ng-template>` element with `#content` template reference variable.\r\n */\r\n public readonly content = input<TemplateRef<unknown> | null>(null);\r\n protected readonly contentTemplate = computed(\r\n () => this._userContentTemplate() ?? this.content()\r\n );\r\n\r\n /**\r\n * Types for the drawer templates.\r\n */\r\n public readonly templateTypes = templateTypesFn<{\r\n /**\r\n * Type of the template variable for the header template.\r\n */\r\n header: HeaderTemplateType;\r\n }>();\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRenderEffect,\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport {\r\n NgnTemplate,\r\n type Openable,\r\n Platform,\r\n type PopoverCloseBy,\r\n toPopoverCloseBy,\r\n} from '@ngneers/controls/api/ng';\r\nimport { NgnPt, provideSelf } from '@ngneers/controls/base';\r\nimport { NgnButton } from '@ngneers/controls/button';\r\nimport { NgnDefer } from '@ngneers/controls/defer';\r\nimport { I18n } from '@ngneers/controls/i18n';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { drawerControlTemplate } from '@ngneers/controls-themes/templates/drawer';\r\n\r\nimport { DrawerTemplates } from './drawer-templates';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ngn-drawer',\r\n templateUrl: './drawer.html',\r\n imports: [NgnPt, NgTemplateOutlet, NgnDefer, NgnButton, NgnIcon, NgnTemplate],\r\n providers: [provideSelf(NgnDrawer)],\r\n host: {\r\n '[attr.popover]': 'closeByPopover()',\r\n '(toggle)': 'onToggle($event)',\r\n '[ariaModal]': 'modal() ? \"true\" : undefined',\r\n role: 'complementary',\r\n '[attr.data-position]': 'position()',\r\n },\r\n})\r\nexport class NgnDrawer extends DrawerTemplates implements Openable {\r\n protected readonly theme = this.injectThemeTemplate(drawerControlTemplate, {\r\n root: true,\r\n horizontal: () => this.horizontal(),\r\n });\r\n protected readonly i18n = inject(I18n).translations;\r\n\r\n /**\r\n * Emits when the drawer has fully closed.\r\n */\r\n public readonly closed = output();\r\n /**\r\n * Shows or hides the drawer.\r\n *\r\n * You probably want to react to openChange events from outside to update your variable accordingly.\r\n */\r\n public readonly open = model<boolean>(false);\r\n /**\r\n * How the drawer closes depending on user interaction.\r\n * @default 'any'\r\n */\r\n public readonly closeBy = input<PopoverCloseBy>('any');\r\n /**\r\n * Whether the drawer is a modal or not.\r\n * A modal drawer prevents interaction with the rest of the page while open.\r\n * @default false\r\n */\r\n public readonly modal = input(false, { transform: booleanAttribute });\r\n /**\r\n * Position of the drawer\r\n * @default 'left'\r\n */\r\n public readonly position = input<'top' | 'right' | 'bottom' | 'left' | 'fullscreen'>('left');\r\n /**\r\n * The width or height of the drawer depending on its position\r\n * @default '300px'\r\n */\r\n public readonly size = input<string>('300px');\r\n /**\r\n * Header text of the drawer\r\n */\r\n public readonly header = input<string>();\r\n /**\r\n * The icon to use for the close button in the default header template\r\n */\r\n public readonly iconClose = input<IconType>();\r\n /**\r\n * Lazy load the drawer content\r\n * @default false\r\n */\r\n public readonly lazy = input(false, { transform: booleanAttribute });\r\n /**\r\n * Whether to cache the lazy loaded content\r\n * @default false\r\n */\r\n public readonly cache = input(false, { transform: booleanAttribute });\r\n\r\n protected readonly appliedPosition = computed(() => {\r\n const position = this.position();\r\n if (this.platform.windowSize().height < 600 || this.platform.windowSize().width < 600) {\r\n return 'fullscreen';\r\n }\r\n return position;\r\n });\r\n\r\n private readonly platform = inject(Platform);\r\n private _togglingTriggeredByInput = false;\r\n protected readonly isFullyClosed = signal(true);\r\n protected readonly closeByPopover = computed(() => toPopoverCloseBy(this.closeBy()));\r\n protected readonly horizontal = computed(\r\n () => this.position() === 'top' || this.position() === 'bottom'\r\n );\r\n protected readonly doClose = this.hide.bind(this);\r\n\r\n constructor() {\r\n super();\r\n afterRenderEffect(() => {\r\n if (this.open()) {\r\n this._togglingTriggeredByInput = true;\r\n this.show();\r\n } else {\r\n this._togglingTriggeredByInput = true;\r\n this.hide();\r\n }\r\n });\r\n\r\n effect(() => {\r\n const position = this.appliedPosition();\r\n\r\n if (position === 'fullscreen') {\r\n this.element.nativeElement.style.top = '0';\r\n this.element.nativeElement.style.bottom = '0';\r\n this.element.nativeElement.style.left = '0';\r\n this.element.nativeElement.style.right = '0';\r\n this.element.nativeElement.style.width = '100%';\r\n this.element.nativeElement.style.height = '100%';\r\n return;\r\n }\r\n\r\n this.element.nativeElement.style.top = position !== 'bottom' ? '0' : 'unset';\r\n this.element.nativeElement.style.bottom = position !== 'top' ? '0' : 'unset';\r\n this.element.nativeElement.style.left = position !== 'right' ? '0' : 'unset';\r\n this.element.nativeElement.style.right = position !== 'left' ? '0' : 'unset';\r\n if (position === 'left' || position === 'right') {\r\n this.element.nativeElement.style.width = this.size();\r\n this.element.nativeElement.style.height = '100%';\r\n } else {\r\n this.element.nativeElement.style.height = this.size();\r\n this.element.nativeElement.style.width = '100%';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Opens the drawer. Alternatively, you can also set the `open` input to `true`.\r\n */\r\n public show() {\r\n untracked(() => {\r\n if (this.open() && !this._togglingTriggeredByInput) {\r\n return;\r\n }\r\n this._togglingTriggeredByInput = false;\r\n this.element.nativeElement.togglePopover(true);\r\n });\r\n }\r\n\r\n /**\r\n * Closes the drawer. Alternatively, you can also set the `open` input to `false`.\r\n */\r\n public hide() {\r\n untracked(() => {\r\n if (!this.open() && !this._togglingTriggeredByInput) {\r\n return;\r\n }\r\n this._togglingTriggeredByInput = false;\r\n this.element.nativeElement.togglePopover(false);\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the drawer open or closed. Alternatively, you can also set the `open` input accordingly.\r\n */\r\n public toggle() {\r\n if (untracked(this.open)) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n protected onToggle(event: Event) {\r\n const evt = event as ToggleEvent;\r\n if (evt.newState === 'closed') {\r\n this.open.set(false);\r\n\r\n requestAnimationFrame(() => {\r\n const allAnimationsDone = Promise.all(\r\n this.element.nativeElement.getAnimations().map(x => x.finished)\r\n );\r\n allAnimationsDone\r\n .then(() => {\r\n this.isFullyClosed.set(true);\r\n this.closed.emit();\r\n })\r\n .catch(() => {\r\n // ignore cancelled animation\r\n });\r\n });\r\n } else {\r\n this.open.set(true);\r\n this.isFullyClosed.set(false);\r\n }\r\n }\r\n}\r\n","<header [ptInt]=\"this\" [ptClass]=\"'header'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { close: doClose, text: this.header() } }\r\n \"\r\n />\r\n</header>\r\n<ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"open() || !isFullyClosed()\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n>\r\n <ng-content />\r\n</ngn-defer>\r\n@if (footerTemplate(); as footerTemplate) {\r\n <footer [ptInt]=\"this\" [ptClass]=\"'footer'\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\" />\r\n </footer>\r\n}\r\n\r\n<ng-template #defaultHeaderTemplate [ngnTemplate]=\"templateTypes.header\" let-header>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-header'\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-header-text'\">{{ header.text }}</span>\r\n <button\r\n ngnButton\r\n [kind]=\"'icon'\"\r\n [attr.aria-label]=\"i18n['drawer_close']()\"\r\n (click)=\"header.close()\"\r\n >\r\n <ngn-icon defaultIcon=\"xmark\" [icon]=\"iconClose()\" />\r\n </button>\r\n </div>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngneers-controls-drawer.mjs","sources":["../../src/drawer/drawer-templates.ts","../../src/drawer/drawer.ts","../../src/drawer/drawer.html","../../src/drawer/ngneers-controls-drawer.ts"],"sourcesContent":["import { computed, contentChild, Directive, input, TemplateRef, viewChild } from '@angular/core';\r\nimport { templateTypesFn } from '@ngneers/controls/api/ng';\r\nimport { NgnBase } from '@ngneers/controls/base';\r\n\r\nimport type { HeaderTemplateType } from './types';\r\n\r\n@Directive()\r\nexport abstract class DrawerTemplates extends NgnBase<'drawer'> {\r\n // Header template\r\n private readonly _defaultHeaderTemplate =\r\n viewChild.required<TemplateRef<typeof this.templateTypes.header>>('defaultHeaderTemplate');\r\n private readonly _userHeaderTemplate =\r\n contentChild<TemplateRef<typeof this.templateTypes.header>>('header');\r\n /**\r\n * Set a custom template for the header.\r\n * Can also be set using an `<ng-template>` element with `#header` template reference variable.\r\n */\r\n public readonly templateHeader = input<TemplateRef<typeof this.templateTypes.header> | null>(\r\n null\r\n );\r\n protected readonly headerTemplate = computed(\r\n () => this._userHeaderTemplate() ?? this.templateHeader() ?? this._defaultHeaderTemplate()\r\n );\r\n\r\n // Footer template\r\n private readonly _userFooterTemplate = contentChild<TemplateRef<unknown>>('footer');\r\n /**\r\n * Set a custom template for the footer.\r\n * Can also be set using an `<ng-template>` element with `#footer` template reference variable.\r\n */\r\n public readonly templateFooter = input<TemplateRef<unknown> | null>(null);\r\n protected readonly footerTemplate = computed(\r\n () => this._userFooterTemplate() ?? this.templateFooter()\r\n );\r\n\r\n // Content template\r\n private readonly _userContentTemplate = contentChild<TemplateRef<unknown>>('content');\r\n /**\r\n * Set a custom template for the content.\r\n * Can also be set using an `<ng-template>` element with `#content` template reference variable.\r\n */\r\n public readonly content = input<TemplateRef<unknown> | null>(null);\r\n protected readonly contentTemplate = computed(\r\n () => this._userContentTemplate() ?? this.content()\r\n );\r\n\r\n /**\r\n * Types for the drawer templates.\r\n */\r\n public readonly templateTypes = templateTypesFn<{\r\n /**\r\n * Type of the template variable for the header template.\r\n */\r\n header: HeaderTemplateType;\r\n }>();\r\n}\r\n","import { NgTemplateOutlet } from '@angular/common';\r\nimport {\r\n afterRenderEffect,\r\n booleanAttribute,\r\n Component,\r\n computed,\r\n effect,\r\n inject,\r\n input,\r\n model,\r\n output,\r\n signal,\r\n untracked,\r\n ChangeDetectionStrategy,\r\n} from '@angular/core';\r\nimport {\r\n NgnTemplate,\r\n type Openable,\r\n Platform,\r\n type PopoverCloseBy,\r\n toPopoverCloseBy,\r\n} from '@ngneers/controls/api/ng';\r\nimport { NgnPt, provideSelf } from '@ngneers/controls/base';\r\nimport { NgnButton } from '@ngneers/controls/button';\r\nimport { NgnDefer } from '@ngneers/controls/defer';\r\nimport { I18n } from '@ngneers/controls/i18n';\r\nimport { NgnIcon } from '@ngneers/controls/icon';\r\nimport { drawerControlTemplate } from '@ngneers/controls-themes/templates/drawer';\r\n\r\nimport { DrawerTemplates } from './drawer-templates';\r\n\r\nimport type { IconType } from '@ngneers/controls-custom-types';\r\n\r\n/**\r\n * @category control\r\n */\r\n@Component({\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n selector: 'ngn-drawer',\r\n templateUrl: './drawer.html',\r\n imports: [NgnPt, NgTemplateOutlet, NgnDefer, NgnButton, NgnIcon, NgnTemplate],\r\n providers: [provideSelf(NgnDrawer)],\r\n host: {\r\n '[attr.popover]': 'closeByPopover()',\r\n '(toggle)': 'onToggle($event)',\r\n '[ariaModal]': 'modal() ? \"true\" : undefined',\r\n role: 'complementary',\r\n '[attr.data-position]': 'position()',\r\n },\r\n})\r\nexport class NgnDrawer extends DrawerTemplates implements Openable {\r\n protected readonly theme = this.injectThemeTemplate(drawerControlTemplate, {\r\n root: true,\r\n horizontal: () => this.horizontal(),\r\n });\r\n protected readonly i18n = inject(I18n).translations;\r\n\r\n /**\r\n * Emits when the drawer has fully closed.\r\n */\r\n public readonly closed = output();\r\n /**\r\n * Shows or hides the drawer.\r\n *\r\n * You probably want to react to openChange events from outside to update your variable accordingly.\r\n */\r\n public readonly open = model<boolean>(false);\r\n /**\r\n * How the drawer closes depending on user interaction.\r\n * @default 'any'\r\n */\r\n public readonly closeBy = input<PopoverCloseBy>('any');\r\n /**\r\n * Whether the drawer is a modal or not.\r\n * A modal drawer prevents interaction with the rest of the page while open.\r\n * @default false\r\n */\r\n public readonly modal = input(false, { transform: booleanAttribute });\r\n /**\r\n * Position of the drawer\r\n * @default 'left'\r\n */\r\n public readonly position = input<'top' | 'right' | 'bottom' | 'left' | 'fullscreen'>('left');\r\n /**\r\n * The width or height of the drawer depending on its position\r\n * @default '300px'\r\n */\r\n public readonly size = input<string>('300px');\r\n /**\r\n * Header text of the drawer\r\n */\r\n public readonly header = input<string>();\r\n /**\r\n * The icon to use for the close button in the default header template\r\n */\r\n public readonly iconClose = input<IconType>();\r\n /**\r\n * Lazy load the drawer content\r\n * @default false\r\n */\r\n public readonly lazy = input(false, { transform: booleanAttribute });\r\n /**\r\n * Whether to cache the lazy loaded content\r\n * @default false\r\n */\r\n public readonly cache = input(false, { transform: booleanAttribute });\r\n\r\n protected readonly appliedPosition = computed(() => {\r\n const position = this.position();\r\n if (this.platform.windowSize().height < 600 || this.platform.windowSize().width < 600) {\r\n return 'fullscreen';\r\n }\r\n return position;\r\n });\r\n\r\n private readonly platform = inject(Platform);\r\n private _togglingTriggeredByInput = false;\r\n protected readonly isFullyClosed = signal(true);\r\n protected readonly closeByPopover = computed(() => toPopoverCloseBy(this.closeBy()));\r\n protected readonly horizontal = computed(\r\n () => this.position() === 'top' || this.position() === 'bottom'\r\n );\r\n protected readonly doClose = this.hide.bind(this);\r\n\r\n constructor() {\r\n super();\r\n afterRenderEffect(() => {\r\n if (this.open()) {\r\n this._togglingTriggeredByInput = true;\r\n this.show();\r\n } else {\r\n this._togglingTriggeredByInput = true;\r\n this.hide();\r\n }\r\n });\r\n\r\n effect(() => {\r\n const position = this.appliedPosition();\r\n\r\n if (position === 'fullscreen') {\r\n this.element.nativeElement.style.top = '0';\r\n this.element.nativeElement.style.bottom = '0';\r\n this.element.nativeElement.style.left = '0';\r\n this.element.nativeElement.style.right = '0';\r\n this.element.nativeElement.style.width = '100%';\r\n this.element.nativeElement.style.height = '100%';\r\n return;\r\n }\r\n\r\n this.element.nativeElement.style.top = position !== 'bottom' ? '0' : 'unset';\r\n this.element.nativeElement.style.bottom = position !== 'top' ? '0' : 'unset';\r\n this.element.nativeElement.style.left = position !== 'right' ? '0' : 'unset';\r\n this.element.nativeElement.style.right = position !== 'left' ? '0' : 'unset';\r\n if (position === 'left' || position === 'right') {\r\n this.element.nativeElement.style.width = this.size();\r\n this.element.nativeElement.style.height = '100%';\r\n } else {\r\n this.element.nativeElement.style.height = this.size();\r\n this.element.nativeElement.style.width = '100%';\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Opens the drawer. Alternatively, you can also set the `open` input to `true`.\r\n */\r\n public show() {\r\n untracked(() => {\r\n if (this.open() && !this._togglingTriggeredByInput) {\r\n return;\r\n }\r\n this._togglingTriggeredByInput = false;\r\n this.element.nativeElement.togglePopover(true);\r\n });\r\n }\r\n\r\n /**\r\n * Closes the drawer. Alternatively, you can also set the `open` input to `false`.\r\n */\r\n public hide() {\r\n untracked(() => {\r\n if (!this.open() && !this._togglingTriggeredByInput) {\r\n return;\r\n }\r\n this._togglingTriggeredByInput = false;\r\n this.element.nativeElement.togglePopover(false);\r\n });\r\n }\r\n\r\n /**\r\n * Toggles the drawer open or closed. Alternatively, you can also set the `open` input accordingly.\r\n */\r\n public toggle() {\r\n if (untracked(this.open)) {\r\n this.hide();\r\n } else {\r\n this.show();\r\n }\r\n }\r\n\r\n protected onToggle(event: Event) {\r\n const evt = event as ToggleEvent;\r\n if (evt.newState === 'closed') {\r\n this.open.set(false);\r\n\r\n requestAnimationFrame(() => {\r\n const allAnimationsDone = Promise.all(\r\n this.element.nativeElement.getAnimations().map(x => x.finished)\r\n );\r\n allAnimationsDone\r\n .then(() => {\r\n this.isFullyClosed.set(true);\r\n this.closed.emit();\r\n })\r\n .catch(() => {\r\n // ignore cancelled animation\r\n });\r\n });\r\n } else {\r\n this.open.set(true);\r\n this.isFullyClosed.set(false);\r\n }\r\n }\r\n}\r\n","<header [ptInt]=\"this\" [ptClass]=\"'header'\">\r\n <ng-container\r\n *ngTemplateOutlet=\"\r\n headerTemplate();\r\n context: { $implicit: { close: doClose, text: this.header() } }\r\n \"\r\n />\r\n</header>\r\n<ngn-defer\r\n [lazyContent]=\"contentTemplate()\"\r\n [open]=\"open() || !isFullyClosed()\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'content'\"\r\n>\r\n <ng-content />\r\n</ngn-defer>\r\n@if (footerTemplate(); as footerTemplate) {\r\n <footer [ptInt]=\"this\" [ptClass]=\"'footer'\">\r\n <ng-container *ngTemplateOutlet=\"footerTemplate\" />\r\n </footer>\r\n}\r\n\r\n<ng-template #defaultHeaderTemplate [ngnTemplate]=\"templateTypes.header\" let-header>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-header'\">\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-header-text'\">{{ header.text }}</span>\r\n <button\r\n ngnButton\r\n [kind]=\"'icon'\"\r\n [attr.aria-label]=\"i18n['drawer_close']()\"\r\n (click)=\"header.close()\"\r\n >\r\n <ngn-icon defaultIcon=\"drawer-close\" [icon]=\"iconClose()\" />\r\n </button>\r\n </div>\r\n</ng-template>\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -34,10 +34,10 @@ class EditInplaceTemplates extends ValueControlBase {
|
|
|
34
34
|
* Types for the drawer templates.
|
|
35
35
|
*/
|
|
36
36
|
templateTypes = templateTypesFn();
|
|
37
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
38
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.
|
|
37
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: EditInplaceTemplates, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
38
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.2.10", type: EditInplaceTemplates, isStandalone: true, inputs: { templateDisplay: { classPropertyName: "templateDisplay", publicName: "templateDisplay", isSignal: true, isRequired: false, transformFunction: null }, templateEdit: { classPropertyName: "templateEdit", publicName: "templateEdit", isSignal: true, isRequired: false, transformFunction: null } }, queries: [{ propertyName: "_userDisplayTemplate", first: true, predicate: ["display"], descendants: true, isSignal: true }, { propertyName: "_userEditTemplate", first: true, predicate: ["edit"], descendants: true, isSignal: true }], viewQueries: [{ propertyName: "_defaultDisplayTemplate", first: true, predicate: ["defaultDisplayTemplate"], descendants: true, isSignal: true }, { propertyName: "_defaultEditTemplate", first: true, predicate: ["defaultEditTemplate"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0 });
|
|
39
39
|
}
|
|
40
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
40
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: EditInplaceTemplates, decorators: [{
|
|
41
41
|
type: Directive
|
|
42
42
|
}], propDecorators: { _defaultDisplayTemplate: [{ type: i0.ViewChild, args: ['defaultDisplayTemplate', { isSignal: true }] }], _userDisplayTemplate: [{ type: i0.ContentChild, args: ['display', { isSignal: true }] }], templateDisplay: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateDisplay", required: false }] }], _defaultEditTemplate: [{ type: i0.ViewChild, args: ['defaultEditTemplate', { isSignal: true }] }], _userEditTemplate: [{ type: i0.ContentChild, args: ['edit', { isSignal: true }] }], templateEdit: [{ type: i0.Input, args: [{ isSignal: true, alias: "templateEdit", required: false }] }] } });
|
|
43
43
|
|
|
@@ -95,10 +95,10 @@ class NgnEditInplace extends EditInplaceTemplates {
|
|
|
95
95
|
}
|
|
96
96
|
this.switchToDisplay();
|
|
97
97
|
}
|
|
98
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.
|
|
99
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.
|
|
98
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnEditInplace, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
99
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.10", type: NgnEditInplace, isStandalone: true, selector: "ngn-edit-inplace", inputs: { editVisible: { classPropertyName: "editVisible", publicName: "editVisible", isSignal: true, isRequired: false, transformFunction: null }, lazy: { classPropertyName: "lazy", publicName: "lazy", isSignal: true, isRequired: false, transformFunction: null }, cache: { classPropertyName: "cache", publicName: "cache", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { editVisible: "editVisibleChange" }, providers: [provideSelf(NgnEditInplace)], usesInheritance: true, ngImport: i0, template: "<ngn-inplace\r\n [templateDisplay]=\"displayTemplate()\"\r\n [templateDisplayContext]=\"{ $implicit: { value: value() } }\"\r\n [templateContent]=\"editTemplate()\"\r\n [templateContentContext]=\"{\r\n $implicit: {\r\n value: value(),\r\n update: value.set.bind(value),\r\n close: editVisible.set.bind(editVisible, false),\r\n },\r\n }\"\r\n [contentVisible]=\"editVisible()\"\r\n (contentVisibleChange)=\"editVisible.set($event)\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n (contentVisibleChange)=\"!$event && touched.set(true)\"\r\n/>\r\n\r\n<ng-template #defaultDisplayTemplate [ngnTemplate]=\"templateTypes.display\" let-display>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-display'\">\r\n @if (!display.value) {\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-fallback-display'\">{{\r\n i18n['editInplace_placeholder']()\r\n }}</span>\r\n } @else {\r\n <span>{{ display.value }}</span>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEditTemplate [ngnTemplate]=\"templateTypes.edit\" let-edit>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-edit'\">\r\n <ngn-input-field\r\n (focusout)=\"focusOut($event)\"\r\n [label]=\"label()\"\r\n [inputId]=\"inputId()\"\r\n [invalid]=\"invalid()\"\r\n [labelledBy]=\"labelledBy()\"\r\n >\r\n <input\r\n type=\"text\"\r\n ngnInput\r\n ngnAutofocus\r\n [value]=\"edit.value\"\r\n (valueChange)=\"edit.update($event ?? '')\"\r\n (keydown.enter)=\"edit.close()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'default-edit-input'\"\r\n (blur)=\"touched.set(true)\"\r\n />\r\n <button\r\n ngnButton\r\n type=\"button\"\r\n kind=\"icon\"\r\n [inline]=\"true\"\r\n (click)=\"edit.close()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'default-edit-close-button'\"\r\n >\r\n <ngn-icon defaultIcon=\"edit-confirm\" />\r\n </button>\r\n </ngn-input-field>\r\n </div>\r\n</ng-template>\r\n", dependencies: [{ kind: "directive", type: NgnPt, selector: "[ptInt]", inputs: ["ptInt", "ptClass"] }, { kind: "component", type: NgnInplace, selector: "ngn-inplace", inputs: ["contentVisible", "lazy", "cache", "disabled"], outputs: ["contentVisibleChange"] }, { kind: "directive", type: NgnTemplate, selector: "ng-template[ngnTemplate]", inputs: ["ngnTemplate"] }, { kind: "directive", type: NgnInput, selector: "input[ngnInput], textarea[ngnInput]", inputs: ["invalid", "value"], outputs: ["valueChange"], exportAs: ["ngnInput"] }, { kind: "directive", type: NgnAutofocus, selector: "[ngnAutofocus]", inputs: ["ngnAutofocus"] }, { kind: "directive", type: NgnButton, selector: "button[ngnButton], a[ngnButton]", inputs: ["inline"], exportAs: ["ngnButton"] }, { kind: "component", type: NgnIcon, selector: "ngn-icon", inputs: ["defaultIcon", "icon"] }, { kind: "component", type: NgnInputField, selector: "ngn-input-field", inputs: ["label", "labelledBy", "labelKind", "inputId", "showClearButton", "iconClearButton", "tabindex", "invalid", "readonly", "disabled"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
100
100
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.
|
|
101
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.10", ngImport: i0, type: NgnEditInplace, decorators: [{
|
|
102
102
|
type: Component,
|
|
103
103
|
args: [{ changeDetection: ChangeDetectionStrategy.OnPush, selector: 'ngn-edit-inplace', imports: [
|
|
104
104
|
NgnPt,
|
|
@@ -109,7 +109,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.2", ngImpor
|
|
|
109
109
|
NgnButton,
|
|
110
110
|
NgnIcon,
|
|
111
111
|
NgnInputField,
|
|
112
|
-
], providers: [provideSelf(NgnEditInplace)], template: "<ngn-inplace\r\n [templateDisplay]=\"displayTemplate()\"\r\n [templateDisplayContext]=\"{ $implicit: { value: value() } }\"\r\n [templateContent]=\"editTemplate()\"\r\n [templateContentContext]=\"{\r\n $implicit: {\r\n value: value(),\r\n update: value.set.bind(value),\r\n close: editVisible.set.bind(editVisible, false),\r\n },\r\n }\"\r\n [contentVisible]=\"editVisible()\"\r\n (contentVisibleChange)=\"editVisible.set($event)\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n (contentVisibleChange)=\"!$event && touched.set(true)\"\r\n/>\r\n\r\n<ng-template #defaultDisplayTemplate [ngnTemplate]=\"templateTypes.display\" let-display>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-display'\">\r\n @if (!display.value) {\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-fallback-display'\">{{\r\n i18n['editInplace_placeholder']()\r\n }}</span>\r\n } @else {\r\n <span>{{ display.value }}</span>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEditTemplate [ngnTemplate]=\"templateTypes.edit\" let-edit>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-edit'\">\r\n <ngn-input-field\r\n (focusout)=\"focusOut($event)\"\r\n [label]=\"label()\"\r\n [inputId]=\"inputId()\"\r\n [invalid]=\"invalid()\"\r\n [labelledBy]=\"labelledBy()\"\r\n >\r\n <input\r\n type=\"text\"\r\n ngnInput\r\n ngnAutofocus\r\n [value]=\"edit.value\"\r\n (valueChange)=\"edit.update($event ?? '')\"\r\n (keydown.enter)=\"edit.close()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'default-edit-input'\"\r\n (blur)=\"touched.set(true)\"\r\n />\r\n <button\r\n ngnButton\r\n type=\"button\"\r\n kind=\"icon\"\r\n [inline]=\"true\"\r\n (click)=\"edit.close()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'default-edit-close-button'\"\r\n >\r\n <ngn-icon defaultIcon=\"
|
|
112
|
+
], providers: [provideSelf(NgnEditInplace)], template: "<ngn-inplace\r\n [templateDisplay]=\"displayTemplate()\"\r\n [templateDisplayContext]=\"{ $implicit: { value: value() } }\"\r\n [templateContent]=\"editTemplate()\"\r\n [templateContentContext]=\"{\r\n $implicit: {\r\n value: value(),\r\n update: value.set.bind(value),\r\n close: editVisible.set.bind(editVisible, false),\r\n },\r\n }\"\r\n [contentVisible]=\"editVisible()\"\r\n (contentVisibleChange)=\"editVisible.set($event)\"\r\n [lazy]=\"lazy()\"\r\n [cache]=\"cache()\"\r\n [disabled]=\"disabled() || readonly()\"\r\n (contentVisibleChange)=\"!$event && touched.set(true)\"\r\n/>\r\n\r\n<ng-template #defaultDisplayTemplate [ngnTemplate]=\"templateTypes.display\" let-display>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-display'\">\r\n @if (!display.value) {\r\n <span [ptInt]=\"this\" [ptClass]=\"'default-fallback-display'\">{{\r\n i18n['editInplace_placeholder']()\r\n }}</span>\r\n } @else {\r\n <span>{{ display.value }}</span>\r\n }\r\n </div>\r\n</ng-template>\r\n\r\n<ng-template #defaultEditTemplate [ngnTemplate]=\"templateTypes.edit\" let-edit>\r\n <div [ptInt]=\"this\" [ptClass]=\"'default-edit'\">\r\n <ngn-input-field\r\n (focusout)=\"focusOut($event)\"\r\n [label]=\"label()\"\r\n [inputId]=\"inputId()\"\r\n [invalid]=\"invalid()\"\r\n [labelledBy]=\"labelledBy()\"\r\n >\r\n <input\r\n type=\"text\"\r\n ngnInput\r\n ngnAutofocus\r\n [value]=\"edit.value\"\r\n (valueChange)=\"edit.update($event ?? '')\"\r\n (keydown.enter)=\"edit.close()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'default-edit-input'\"\r\n (blur)=\"touched.set(true)\"\r\n />\r\n <button\r\n ngnButton\r\n type=\"button\"\r\n kind=\"icon\"\r\n [inline]=\"true\"\r\n (click)=\"edit.close()\"\r\n [ptInt]=\"this\"\r\n [ptClass]=\"'default-edit-close-button'\"\r\n >\r\n <ngn-icon defaultIcon=\"edit-confirm\" />\r\n </button>\r\n </ngn-input-field>\r\n </div>\r\n</ng-template>\r\n" }]
|
|
113
113
|
}], propDecorators: { editVisible: [{ type: i0.Input, args: [{ isSignal: true, alias: "editVisible", required: false }] }, { type: i0.Output, args: ["editVisibleChange"] }], lazy: [{ type: i0.Input, args: [{ isSignal: true, alias: "lazy", required: false }] }], cache: [{ type: i0.Input, args: [{ isSignal: true, alias: "cache", required: false }] }] } });
|
|
114
114
|
|
|
115
115
|
/**
|