ngx-kit 8.0.2 → 8.2.0
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/ngx-kit-core.mjs +1 -1
- package/fesm2022/ngx-kit-core.mjs.map +1 -1
- package/fesm2022/ngx-kit-dialog.mjs +2 -2
- package/fesm2022/ngx-kit-dialog.mjs.map +1 -1
- package/fesm2022/ngx-kit-drag-resize.mjs +277 -174
- package/fesm2022/ngx-kit-drag-resize.mjs.map +1 -1
- package/fesm2022/ngx-kit-infinite-scroll.mjs +4 -1
- package/fesm2022/ngx-kit-infinite-scroll.mjs.map +1 -1
- package/fesm2022/ngx-kit-message.mjs +43 -91
- package/fesm2022/ngx-kit-message.mjs.map +1 -1
- package/fesm2022/ngx-kit-tooltip.mjs +432 -0
- package/fesm2022/ngx-kit-tooltip.mjs.map +1 -0
- package/package.json +5 -1
- package/styles/all.css +125 -35
- package/styles/tootip.css +120 -0
- package/tooltip/README.md +1 -0
- package/types/ngx-kit-drag-resize.d.ts +52 -32
- package/types/ngx-kit-message.d.ts +9 -25
- package/types/ngx-kit-tooltip.d.ts +88 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngx-kit",
|
|
3
|
-
"version": "8.0
|
|
3
|
+
"version": "8.2.0",
|
|
4
4
|
"description": "Angular input components",
|
|
5
5
|
"author": "Mohammadreza Samani <mr.samani1368@gmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -117,6 +117,10 @@
|
|
|
117
117
|
"types": "./types/ngx-kit-time-picker.d.ts",
|
|
118
118
|
"default": "./fesm2022/ngx-kit-time-picker.mjs"
|
|
119
119
|
},
|
|
120
|
+
"./tooltip": {
|
|
121
|
+
"types": "./types/ngx-kit-tooltip.d.ts",
|
|
122
|
+
"default": "./fesm2022/ngx-kit-tooltip.mjs"
|
|
123
|
+
},
|
|
120
124
|
"./virtual-scroll": {
|
|
121
125
|
"types": "./types/ngx-kit-virtual-scroll.d.ts",
|
|
122
126
|
"default": "./fesm2022/ngx-kit-virtual-scroll.mjs"
|
package/styles/all.css
CHANGED
|
@@ -12,41 +12,6 @@
|
|
|
12
12
|
color-scheme: only dark;
|
|
13
13
|
}
|
|
14
14
|
|
|
15
|
-
dialog.ngx-ui-overlay::backdrop {
|
|
16
|
-
background: transparent;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
@keyframes menu-enter {
|
|
20
|
-
from {
|
|
21
|
-
opacity: 0;
|
|
22
|
-
transform: scale(0.8);
|
|
23
|
-
}
|
|
24
|
-
to {
|
|
25
|
-
opacity: 1;
|
|
26
|
-
transform: none;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
@keyframes menu-exit {
|
|
30
|
-
from {
|
|
31
|
-
opacity: 1;
|
|
32
|
-
}
|
|
33
|
-
to {
|
|
34
|
-
opacity: 0;
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
dialog.ngx-image-viewer-dialog {
|
|
38
|
-
border: none;
|
|
39
|
-
padding: 1rem;
|
|
40
|
-
max-inline-size: 96vw;
|
|
41
|
-
max-block-size: 96vh;
|
|
42
|
-
inline-size: min(900px, 96vw);
|
|
43
|
-
background: light-dark(#ffffff, #1c1c20);
|
|
44
|
-
border-radius: 12px;
|
|
45
|
-
}
|
|
46
|
-
dialog.ngx-image-viewer-dialog::backdrop {
|
|
47
|
-
background: rgba(0, 0, 0, 0.75);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
15
|
/* ---------- confetti (success only) ---------- */
|
|
51
16
|
.confetti {
|
|
52
17
|
position: absolute;
|
|
@@ -75,3 +40,128 @@ dialog.ngx-image-viewer-dialog::backdrop {
|
|
|
75
40
|
transform: translateY(340px) rotate(340deg);
|
|
76
41
|
}
|
|
77
42
|
}
|
|
43
|
+
.ngx-tooltip {
|
|
44
|
+
--ngx-tooltip-bg: light-dark(#f4f4f5, #18181b);
|
|
45
|
+
--ngx-tooltip-fg: light-dark(#18181b, #f4f4f5);
|
|
46
|
+
--ngx-tooltip-border: light-dark(#63636336, #ffffff1a);
|
|
47
|
+
--ngx-tooltip-shadow: 0 10px 30px rgb(0 0 0 / 0.25), 0 2px 8px rgb(0 0 0 / 0.18);
|
|
48
|
+
--ngx-tooltip-font-size: 12px;
|
|
49
|
+
--ngx-tooltip-radius: 7px;
|
|
50
|
+
--ngx-tooltip-arrow-size: 6px;
|
|
51
|
+
--ngx-tooltip-max-height: 200px;
|
|
52
|
+
position: fixed;
|
|
53
|
+
inset: auto;
|
|
54
|
+
margin: 0;
|
|
55
|
+
z-index: 2147483000;
|
|
56
|
+
display: block;
|
|
57
|
+
max-width: min(360px, 100vw - 16px);
|
|
58
|
+
padding: 8px 10px;
|
|
59
|
+
box-sizing: border-box;
|
|
60
|
+
background: var(--ngx-tooltip-bg);
|
|
61
|
+
color: var(--ngx-tooltip-fg);
|
|
62
|
+
border: 1px solid var(--ngx-tooltip-border);
|
|
63
|
+
border-radius: var(--ngx-tooltip-radius);
|
|
64
|
+
box-shadow: var(--ngx-tooltip-shadow);
|
|
65
|
+
font-size: var(--ngx-tooltip-font-size);
|
|
66
|
+
font-weight: 450;
|
|
67
|
+
line-height: 1.45;
|
|
68
|
+
text-align: start;
|
|
69
|
+
user-select: none;
|
|
70
|
+
opacity: 0;
|
|
71
|
+
visibility: hidden;
|
|
72
|
+
transform: scale(0.96);
|
|
73
|
+
transition: opacity 120ms ease, transform 120ms cubic-bezier(0.2, 0.8, 0.2, 1), visibility 120ms linear;
|
|
74
|
+
overflow-wrap: anywhere;
|
|
75
|
+
overflow: visible;
|
|
76
|
+
}
|
|
77
|
+
.ngx-tooltip[data-placement^=top] {
|
|
78
|
+
transform-origin: bottom center;
|
|
79
|
+
}
|
|
80
|
+
.ngx-tooltip[data-placement^=bottom] {
|
|
81
|
+
transform-origin: top center;
|
|
82
|
+
}
|
|
83
|
+
.ngx-tooltip[data-placement^=left] {
|
|
84
|
+
transform-origin: right center;
|
|
85
|
+
}
|
|
86
|
+
.ngx-tooltip[data-placement^=right] {
|
|
87
|
+
transform-origin: left center;
|
|
88
|
+
}
|
|
89
|
+
.ngx-tooltip.ngx-tooltip-visible {
|
|
90
|
+
opacity: 1;
|
|
91
|
+
visibility: visible;
|
|
92
|
+
transform: scale(1);
|
|
93
|
+
}
|
|
94
|
+
.ngx-tooltip .ngx-tooltip-content {
|
|
95
|
+
position: relative;
|
|
96
|
+
white-space: pre;
|
|
97
|
+
max-height: var(--ngx-tooltip-max-height);
|
|
98
|
+
overflow: auto;
|
|
99
|
+
padding: 1px;
|
|
100
|
+
}
|
|
101
|
+
.ngx-tooltip .ngx-tooltip-content p {
|
|
102
|
+
margin: 0 0 6px;
|
|
103
|
+
}
|
|
104
|
+
.ngx-tooltip .ngx-tooltip-content p:last-child {
|
|
105
|
+
margin-bottom: 0;
|
|
106
|
+
}
|
|
107
|
+
.ngx-tooltip .ngx-tooltip-content code {
|
|
108
|
+
padding: 1px 4px;
|
|
109
|
+
border-radius: 4px;
|
|
110
|
+
background: rgba(255, 255, 255, 0.08);
|
|
111
|
+
font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
|
|
112
|
+
font-size: 0.9em;
|
|
113
|
+
}
|
|
114
|
+
.ngx-tooltip .ngx-tooltip-content strong {
|
|
115
|
+
font-weight: 650;
|
|
116
|
+
}
|
|
117
|
+
.ngx-tooltip .ngx-tooltip-content a {
|
|
118
|
+
color: inherit;
|
|
119
|
+
text-decoration: underline;
|
|
120
|
+
text-underline-offset: 2px;
|
|
121
|
+
}
|
|
122
|
+
.ngx-tooltip::before {
|
|
123
|
+
content: " ";
|
|
124
|
+
position: absolute;
|
|
125
|
+
width: calc(var(--ngx-tooltip-arrow-size) * 2);
|
|
126
|
+
height: calc(var(--ngx-tooltip-arrow-size) * 2);
|
|
127
|
+
background: var(--ngx-tooltip-bg);
|
|
128
|
+
border: 1px solid var(--ngx-tooltip-border);
|
|
129
|
+
transform: rotate(45deg);
|
|
130
|
+
pointer-events: none;
|
|
131
|
+
}
|
|
132
|
+
.ngx-tooltip[data-placement^=top]:before {
|
|
133
|
+
left: var(--ngx-tooltip-arrow-offset, 50%);
|
|
134
|
+
bottom: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
135
|
+
transform: translateX(-50%) rotate(45deg);
|
|
136
|
+
border-left: 0;
|
|
137
|
+
border-top: 0;
|
|
138
|
+
}
|
|
139
|
+
.ngx-tooltip[data-placement^=bottom]:before {
|
|
140
|
+
left: var(--ngx-tooltip-arrow-offset, 50%);
|
|
141
|
+
top: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
142
|
+
transform: translateX(-50%) rotate(45deg);
|
|
143
|
+
border-right: 0;
|
|
144
|
+
border-bottom: 0;
|
|
145
|
+
}
|
|
146
|
+
.ngx-tooltip[data-placement^=left]:before {
|
|
147
|
+
right: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
148
|
+
top: var(--ngx-tooltip-arrow-offset, 50%);
|
|
149
|
+
transform: translateY(-50%) rotate(45deg);
|
|
150
|
+
border-left: 0;
|
|
151
|
+
border-bottom: 0;
|
|
152
|
+
}
|
|
153
|
+
.ngx-tooltip[data-placement^=right]:before {
|
|
154
|
+
left: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
155
|
+
top: var(--ngx-tooltip-arrow-offset, 50%);
|
|
156
|
+
transform: translateY(-50%) rotate(45deg);
|
|
157
|
+
border-right: 0;
|
|
158
|
+
border-top: 0;
|
|
159
|
+
}
|
|
160
|
+
@media (prefers-reduced-motion: reduce) {
|
|
161
|
+
.ngx-tooltip {
|
|
162
|
+
transition: none;
|
|
163
|
+
}
|
|
164
|
+
.ngx-tooltip.ngx-tooltip-visible {
|
|
165
|
+
transform: none;
|
|
166
|
+
}
|
|
167
|
+
}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
.ngx-tooltip {
|
|
2
|
+
--ngx-tooltip-bg: light-dark(#f4f4f5, #18181b);
|
|
3
|
+
--ngx-tooltip-fg: light-dark(#18181b, #f4f4f5);
|
|
4
|
+
--ngx-tooltip-border: #ffffff1a;
|
|
5
|
+
--ngx-tooltip-shadow: 0 10px 30px rgb(0 0 0 / 0.25), 0 2px 8px rgb(0 0 0 / 0.18);
|
|
6
|
+
--ngx-tooltip-radius: 7px;
|
|
7
|
+
--ngx-tooltip-arrow-size: 6px;
|
|
8
|
+
position: fixed;
|
|
9
|
+
inset: auto;
|
|
10
|
+
margin: 0;
|
|
11
|
+
z-index: 2147483000;
|
|
12
|
+
display: block;
|
|
13
|
+
max-width: min(360px, 100vw - 16px);
|
|
14
|
+
padding: 8px 10px;
|
|
15
|
+
box-sizing: border-box;
|
|
16
|
+
background: var(--ngx-tooltip-bg);
|
|
17
|
+
color: var(--ngx-tooltip-fg);
|
|
18
|
+
border: 1px solid var(--ngx-tooltip-border);
|
|
19
|
+
border-radius: var(--ngx-tooltip-radius);
|
|
20
|
+
box-shadow: var(--ngx-tooltip-shadow);
|
|
21
|
+
font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
|
|
22
|
+
font-size: 12px;
|
|
23
|
+
font-weight: 450;
|
|
24
|
+
line-height: 1.45;
|
|
25
|
+
text-align: start;
|
|
26
|
+
pointer-events: none;
|
|
27
|
+
user-select: none;
|
|
28
|
+
opacity: 0;
|
|
29
|
+
visibility: hidden;
|
|
30
|
+
transform: scale(0.96);
|
|
31
|
+
transition: opacity 120ms ease, transform 120ms cubic-bezier(0.2, 0.8, 0.2, 1), visibility 120ms linear;
|
|
32
|
+
overflow-wrap: anywhere;
|
|
33
|
+
}
|
|
34
|
+
.ngx-tooltip[data-placement^=top] {
|
|
35
|
+
transform-origin: bottom center;
|
|
36
|
+
}
|
|
37
|
+
.ngx-tooltip[data-placement^=bottom] {
|
|
38
|
+
transform-origin: top center;
|
|
39
|
+
}
|
|
40
|
+
.ngx-tooltip[data-placement^=left] {
|
|
41
|
+
transform-origin: right center;
|
|
42
|
+
}
|
|
43
|
+
.ngx-tooltip[data-placement^=right] {
|
|
44
|
+
transform-origin: left center;
|
|
45
|
+
}
|
|
46
|
+
.ngx-tooltip.ngx-tooltip-visible {
|
|
47
|
+
opacity: 1;
|
|
48
|
+
visibility: visible;
|
|
49
|
+
transform: scale(1);
|
|
50
|
+
}
|
|
51
|
+
.ngx-tooltip .ngx-tooltip-content {
|
|
52
|
+
position: relative;
|
|
53
|
+
max-width: inherit;
|
|
54
|
+
}
|
|
55
|
+
.ngx-tooltip .ngx-tooltip-content p {
|
|
56
|
+
margin: 0 0 6px;
|
|
57
|
+
}
|
|
58
|
+
.ngx-tooltip .ngx-tooltip-content p:last-child {
|
|
59
|
+
margin-bottom: 0;
|
|
60
|
+
}
|
|
61
|
+
.ngx-tooltip .ngx-tooltip-content code {
|
|
62
|
+
padding: 1px 4px;
|
|
63
|
+
border-radius: 4px;
|
|
64
|
+
background: rgba(255, 255, 255, 0.08);
|
|
65
|
+
font-family: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
|
|
66
|
+
font-size: 0.9em;
|
|
67
|
+
}
|
|
68
|
+
.ngx-tooltip .ngx-tooltip-content strong {
|
|
69
|
+
font-weight: 650;
|
|
70
|
+
}
|
|
71
|
+
.ngx-tooltip .ngx-tooltip-content a {
|
|
72
|
+
color: inherit;
|
|
73
|
+
text-decoration: underline;
|
|
74
|
+
text-underline-offset: 2px;
|
|
75
|
+
}
|
|
76
|
+
.ngx-tooltip .ngx-tooltip-arrow {
|
|
77
|
+
position: absolute;
|
|
78
|
+
width: calc(var(--ngx-tooltip-arrow-size) * 2);
|
|
79
|
+
height: calc(var(--ngx-tooltip-arrow-size) * 2);
|
|
80
|
+
background: var(--ngx-tooltip-bg);
|
|
81
|
+
border: 1px solid var(--ngx-tooltip-border);
|
|
82
|
+
transform: rotate(45deg);
|
|
83
|
+
pointer-events: none;
|
|
84
|
+
}
|
|
85
|
+
.ngx-tooltip[data-placement^=top] .ngx-tooltip-arrow {
|
|
86
|
+
left: var(--ngx-tooltip-arrow-offset, 50%);
|
|
87
|
+
bottom: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
88
|
+
transform: translateX(-50%) rotate(45deg);
|
|
89
|
+
border-left: 0;
|
|
90
|
+
border-top: 0;
|
|
91
|
+
}
|
|
92
|
+
.ngx-tooltip[data-placement^=bottom] .ngx-tooltip-arrow {
|
|
93
|
+
left: var(--ngx-tooltip-arrow-offset, 50%);
|
|
94
|
+
top: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
95
|
+
transform: translateX(-50%) rotate(45deg);
|
|
96
|
+
border-right: 0;
|
|
97
|
+
border-bottom: 0;
|
|
98
|
+
}
|
|
99
|
+
.ngx-tooltip[data-placement^=left] .ngx-tooltip-arrow {
|
|
100
|
+
right: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
101
|
+
top: var(--ngx-tooltip-arrow-offset, 50%);
|
|
102
|
+
transform: translateY(-50%) rotate(45deg);
|
|
103
|
+
border-left: 0;
|
|
104
|
+
border-bottom: 0;
|
|
105
|
+
}
|
|
106
|
+
.ngx-tooltip[data-placement^=right] .ngx-tooltip-arrow {
|
|
107
|
+
left: calc(var(--ngx-tooltip-arrow-size) * -1);
|
|
108
|
+
top: var(--ngx-tooltip-arrow-offset, 50%);
|
|
109
|
+
transform: translateY(-50%) rotate(45deg);
|
|
110
|
+
border-right: 0;
|
|
111
|
+
border-top: 0;
|
|
112
|
+
}
|
|
113
|
+
@media (prefers-reduced-motion: reduce) {
|
|
114
|
+
.ngx-tooltip {
|
|
115
|
+
transition: none;
|
|
116
|
+
}
|
|
117
|
+
.ngx-tooltip.ngx-tooltip-visible {
|
|
118
|
+
transform: none;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
# @ngx-kit/tooltip
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
|
-
import { TemplateRef, ApplicationRef, EventEmitter, InjectionToken, OnInit, OnDestroy, Renderer2, ElementRef
|
|
2
|
+
import { TemplateRef, ApplicationRef, EventEmitter, InjectionToken, OnInit, OnDestroy, AfterContentInit, Renderer2, ElementRef } from '@angular/core';
|
|
3
3
|
|
|
4
4
|
interface IPosition {
|
|
5
5
|
x: number;
|
|
@@ -19,17 +19,6 @@ declare class DropListGroupRef {
|
|
|
19
19
|
}
|
|
20
20
|
|
|
21
21
|
declare class PlaceHolderRef {
|
|
22
|
-
/**
|
|
23
|
-
* Custom placeholder content, from `*ngxPlaceholder` inside the `ngxDropList`. When unset,
|
|
24
|
-
* `attach()` falls back to a shallow clone of the dragged element (previous behaviour).
|
|
25
|
-
*
|
|
26
|
-
* Example:
|
|
27
|
-
*
|
|
28
|
-
* <div ngxDropList>
|
|
29
|
-
* <span class="my-placeholder" *ngxPlaceholder></span>
|
|
30
|
-
* ...
|
|
31
|
-
* </div>
|
|
32
|
-
*/
|
|
33
22
|
tpl?: TemplateRef<unknown>;
|
|
34
23
|
/** Set by `NgxPlaceholder` so the embedded view can join Angular's change-detection tree. */
|
|
35
24
|
appRef?: ApplicationRef;
|
|
@@ -200,19 +189,6 @@ declare class DragDropService {
|
|
|
200
189
|
readonly drags: _angular_core.WritableSignal<readonly DragRef<unknown>[]>;
|
|
201
190
|
readonly dropLists: _angular_core.WritableSignal<readonly DropListRef<any>[]>;
|
|
202
191
|
readonly activeDrag: _angular_core.WritableSignal<DragRef<unknown> | null>;
|
|
203
|
-
/**
|
|
204
|
-
* DOM-position registries, used to find the nearest enclosing list/group by walking real
|
|
205
|
-
* ancestor elements instead of Angular's element-injector tree.
|
|
206
|
-
*
|
|
207
|
-
* This matters for `ngTemplateOutlet`-based recursive trees (a list of items whose own
|
|
208
|
-
* children are rendered by re-invoking the SAME `<ng-template>`, as in a tree/outliner UI):
|
|
209
|
-
* each invocation gets a FRESH embedded view whose injector context is wherever the outlet
|
|
210
|
-
* was written in the template, not wherever its content ends up in the DOM. So `inject(TOKEN,
|
|
211
|
-
* {skipSelf})` from one recursion level can never see a provider from another level — the
|
|
212
|
-
* only fix within Angular's own DI is to manually thread `ngTemplateOutletInjector` through
|
|
213
|
-
* every recursive call, which isn't reasonable to require of every consumer of this library.
|
|
214
|
-
* A plain DOM walk has no such limitation: it only cares where elements actually ended up.
|
|
215
|
-
*/
|
|
216
192
|
private readonly listsByEl;
|
|
217
193
|
private readonly groupsByEl;
|
|
218
194
|
registerDragItem(ref: DragRef<any>): void;
|
|
@@ -224,7 +200,7 @@ declare class DragDropService {
|
|
|
224
200
|
/** Nearest registered drop list starting at (and including) `start`, walking up the DOM. */
|
|
225
201
|
findAncestorDropList(start: HTMLElement | ParentNode | null): DropListRef | null;
|
|
226
202
|
/** Nearest registered drop-list group starting at (and including) `start`, walking up the DOM. */
|
|
227
|
-
findAncestorGroup(start:
|
|
203
|
+
findAncestorGroup(start: Node | null): DropListGroupRef | null;
|
|
228
204
|
begin(ref: DragRef<any>): void;
|
|
229
205
|
end(ref: DragRef<any>): void;
|
|
230
206
|
cancelActive(): void;
|
|
@@ -247,6 +223,17 @@ declare class DragDropService {
|
|
|
247
223
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<DragDropService>;
|
|
248
224
|
}
|
|
249
225
|
|
|
226
|
+
declare class DragPreviewRef {
|
|
227
|
+
tpl?: TemplateRef<unknown>;
|
|
228
|
+
/** Set by `ngxDragPreview` so the embedded view can join Angular's change-detection tree. */
|
|
229
|
+
appRef?: ApplicationRef;
|
|
230
|
+
element?: HTMLElement;
|
|
231
|
+
isCustom: boolean;
|
|
232
|
+
private _view?;
|
|
233
|
+
attach(dragEl: HTMLElement, rect: DOMRect): HTMLElement;
|
|
234
|
+
detach(): void;
|
|
235
|
+
}
|
|
236
|
+
|
|
250
237
|
type DragAxis = 'x' | 'y' | undefined;
|
|
251
238
|
declare class DragRef<T = unknown> {
|
|
252
239
|
data?: T;
|
|
@@ -266,6 +253,7 @@ declare class DragRef<T = unknown> {
|
|
|
266
253
|
placeholder?: PlaceHolderRef;
|
|
267
254
|
originDropList: DropListRef<T> | null;
|
|
268
255
|
originIndex: number;
|
|
256
|
+
preview?: DragPreviewRef;
|
|
269
257
|
readonly isDragging: _angular_core.WritableSignal<boolean>;
|
|
270
258
|
readonly position: _angular_core.WritableSignal<IPosition>;
|
|
271
259
|
private startPointer;
|
|
@@ -276,9 +264,6 @@ declare class DragRef<T = unknown> {
|
|
|
276
264
|
private moveDx;
|
|
277
265
|
private moveDy;
|
|
278
266
|
private scrollCompensation;
|
|
279
|
-
private preview?;
|
|
280
|
-
private previewOffsetX;
|
|
281
|
-
private previewOffsetY;
|
|
282
267
|
private sourceVisibility;
|
|
283
268
|
private sourceDisplay;
|
|
284
269
|
private sourcePointerEvents;
|
|
@@ -391,7 +376,7 @@ interface IResizableOutput {
|
|
|
391
376
|
}
|
|
392
377
|
|
|
393
378
|
declare const NGX_DRAGGABLE: InjectionToken<NgxDraggable<unknown>>;
|
|
394
|
-
declare class NgxDraggable<T = unknown> implements OnInit, OnDestroy {
|
|
379
|
+
declare class NgxDraggable<T = unknown> implements OnInit, OnDestroy, AfterContentInit {
|
|
395
380
|
private readonly host;
|
|
396
381
|
readonly disabled: _angular_core.ModelSignal<boolean>;
|
|
397
382
|
/** Element whose rect constrains the drag. Now actually enforced. */
|
|
@@ -408,6 +393,7 @@ declare class NgxDraggable<T = unknown> implements OnInit, OnDestroy {
|
|
|
408
393
|
/** Auto-scroll the nearest scrollable ancestor while dragging near its edge. */
|
|
409
394
|
readonly autoScroll: _angular_core.InputSignal<boolean>;
|
|
410
395
|
set data(v: T);
|
|
396
|
+
private readonly customPreview?;
|
|
411
397
|
readonly dragStart: _angular_core.OutputEmitterRef<IPosition>;
|
|
412
398
|
readonly dragMove: _angular_core.OutputEmitterRef<IPosition>;
|
|
413
399
|
readonly dragEnd: _angular_core.OutputEmitterRef<IPosition>;
|
|
@@ -435,6 +421,7 @@ declare class NgxDraggable<T = unknown> implements OnInit, OnDestroy {
|
|
|
435
421
|
protected readonly renderer: Renderer2;
|
|
436
422
|
constructor(host: ElementRef<HTMLElement>);
|
|
437
423
|
ngOnInit(): void;
|
|
424
|
+
ngAfterContentInit(): void;
|
|
438
425
|
ngOnDestroy(): void;
|
|
439
426
|
private pointerDown;
|
|
440
427
|
private applyDragUpdate;
|
|
@@ -454,7 +441,7 @@ declare class NgxDraggable<T = unknown> implements OnInit, OnDestroy {
|
|
|
454
441
|
private isOnHandle;
|
|
455
442
|
private isInteractive;
|
|
456
443
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDraggable<any>, never>;
|
|
457
|
-
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxDraggable<any>, "[NgxDraggable],[ngxDraggable]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "boundary": { "alias": "boundary"; "required": false; "isSignal": true; }; "dragRootElement": { "alias": "dragRootElement"; "required": false; "isSignal": true; }; "dragHandle": { "alias": "dragHandle"; "required": false; "isSignal": true; }; "lockAxis": { "alias": "lockAxis"; "required": false; "isSignal": true; }; "dragThreshold": { "alias": "dragThreshold"; "required": false; "isSignal": true; }; "keyboardStep": { "alias": "keyboardStep"; "required": false; "isSignal": true; }; "autoScroll": { "alias": "autoScroll"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; }; }, { "disabled": "disabledChange"; "dragRootElement": "dragRootElementChange"; "dragHandle": "dragHandleChange"; "dragStart": "dragStart"; "dragMove": "dragMove"; "dragEnd": "dragEnd"; },
|
|
444
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxDraggable<any>, "[NgxDraggable],[ngxDraggable]", never, { "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "boundary": { "alias": "boundary"; "required": false; "isSignal": true; }; "dragRootElement": { "alias": "dragRootElement"; "required": false; "isSignal": true; }; "dragHandle": { "alias": "dragHandle"; "required": false; "isSignal": true; }; "lockAxis": { "alias": "lockAxis"; "required": false; "isSignal": true; }; "dragThreshold": { "alias": "dragThreshold"; "required": false; "isSignal": true; }; "keyboardStep": { "alias": "keyboardStep"; "required": false; "isSignal": true; }; "autoScroll": { "alias": "autoScroll"; "required": false; "isSignal": true; }; "data": { "alias": "data"; "required": false; }; }, { "disabled": "disabledChange"; "dragRootElement": "dragRootElementChange"; "dragHandle": "dragHandleChange"; "dragStart": "dragStart"; "dragMove": "dragMove"; "dragEnd": "dragEnd"; }, ["customPreview"], never, true, never>;
|
|
458
445
|
}
|
|
459
446
|
|
|
460
447
|
declare class NgxResizable {
|
|
@@ -533,6 +520,17 @@ declare class NgxDropListGroup implements OnInit, OnDestroy {
|
|
|
533
520
|
}
|
|
534
521
|
|
|
535
522
|
declare const NGX_PLACEHOLDER: InjectionToken<PlaceHolderRef>;
|
|
523
|
+
/**
|
|
524
|
+
* Custom placeholder content, from `*ngxPlaceholder` inside the `ngxDropList`.
|
|
525
|
+
*
|
|
526
|
+
* @example
|
|
527
|
+
* ```html
|
|
528
|
+
* <div ngxDropList>
|
|
529
|
+
* <span class="my-placeholder" *ngxPlaceholder></span>
|
|
530
|
+
* ...
|
|
531
|
+
* </div>
|
|
532
|
+
* ```
|
|
533
|
+
*/
|
|
536
534
|
declare class NgxPlaceholder {
|
|
537
535
|
readonly tpl: TemplateRef<unknown>;
|
|
538
536
|
readonly _ref: PlaceHolderRef;
|
|
@@ -542,6 +540,28 @@ declare class NgxPlaceholder {
|
|
|
542
540
|
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxPlaceholder, "[NgxPlaceholder],[ngxPlaceholder]", never, {}, {}, never, never, true, never>;
|
|
543
541
|
}
|
|
544
542
|
|
|
543
|
+
declare const NGX_DRAG_PREVIEW: InjectionToken<DragPreviewRef>;
|
|
544
|
+
/**
|
|
545
|
+
* Custom preview content, from `*ngxDragPreview` inside the `ngxDraggable`.
|
|
546
|
+
*
|
|
547
|
+
* @example
|
|
548
|
+
* ```html
|
|
549
|
+
* <div ngxDropList>
|
|
550
|
+
* <div ngxDraggable>
|
|
551
|
+
* <span class="my-preview" *ngxDragPreview></span>
|
|
552
|
+
* ...
|
|
553
|
+
* </div>
|
|
554
|
+
* </div>
|
|
555
|
+
* ```
|
|
556
|
+
*/
|
|
557
|
+
declare class NgxDragPreview {
|
|
558
|
+
readonly tpl: TemplateRef<unknown>;
|
|
559
|
+
readonly _ref: DragPreviewRef;
|
|
560
|
+
constructor(tpl: TemplateRef<unknown>);
|
|
561
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxDragPreview, never>;
|
|
562
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxDragPreview, "[ngxDragPreview]", never, {}, {}, never, never, true, never>;
|
|
563
|
+
}
|
|
564
|
+
|
|
545
565
|
/**
|
|
546
566
|
* True when `element` sits inside a right-to-left context.
|
|
547
567
|
*
|
|
@@ -621,5 +641,5 @@ declare function transferArrayItem<T>(src: T[], dst: T[], from: number, to: numb
|
|
|
621
641
|
*/
|
|
622
642
|
declare function copyArrayItem<T = any>(currentArray: T[], targetArray: T[], currentIndex: number, targetIndex: number): void;
|
|
623
643
|
|
|
624
|
-
export { AutoScroller, DragDropService, DragRef, DropListGroupRef, DropListRef, NGX_DRAGGABLE, NGX_DROPLIST, NGX_DROPLIST_GROUP, NGX_PLACEHOLDER, NgxDraggable, NgxDropList, NgxDropListGroup, NgxPlaceholder, NgxResizable, PlaceHolderRef, adjustForZoom, checkBoundX, checkBoundY, clampResizeWithinBoundary, copyArrayItem, findScrollableAncestor, getPageZoom, getScrollPosition, isRtl, moveItemInArray, resolveLogicalDirection, transferArrayItem };
|
|
644
|
+
export { AutoScroller, DragDropService, DragRef, DropListGroupRef, DropListRef, NGX_DRAGGABLE, NGX_DRAG_PREVIEW, NGX_DROPLIST, NGX_DROPLIST_GROUP, NGX_PLACEHOLDER, NgxDragPreview, NgxDraggable, NgxDropList, NgxDropListGroup, NgxPlaceholder, NgxResizable, PlaceHolderRef, adjustForZoom, checkBoundX, checkBoundY, clampResizeWithinBoundary, copyArrayItem, findScrollableAncestor, getPageZoom, getScrollPosition, isRtl, moveItemInArray, resolveLogicalDirection, transferArrayItem };
|
|
625
645
|
export type { DragAxis, IDropEvent, IPosition, IResizableOutput, LogicalResizeDirection, ResizeDirection };
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { EnvironmentProviders, Injector, EventEmitter, OnInit, AfterViewInit, ElementRef,
|
|
2
|
+
import { EnvironmentProviders, Injector, EventEmitter, OnInit, AfterViewInit, ElementRef, InjectionToken } from '@angular/core';
|
|
3
3
|
import * as ngx_kit_message from 'ngx-kit/message';
|
|
4
4
|
import * as rxjs from 'rxjs';
|
|
5
5
|
import { SafeHtml, DomSanitizer } from '@angular/platform-browser';
|
|
6
|
+
import { OverlayRef, OverlayService } from 'ngx-kit/core';
|
|
6
7
|
|
|
7
8
|
type MessageIcon = 'None' | 'success' | 'error' | 'warning' | 'info' | 'question' | 'loading';
|
|
8
9
|
|
|
@@ -34,13 +35,6 @@ interface IMessageOptions {
|
|
|
34
35
|
* @default ''
|
|
35
36
|
*/
|
|
36
37
|
html?: string | HTMLElement;
|
|
37
|
-
/**
|
|
38
|
-
* Whether or not should show a full screen click-to-dismiss backdrop.
|
|
39
|
-
* Either a boolean value or a css background value (hex, rgb, rgba, url, etc.)
|
|
40
|
-
*
|
|
41
|
-
* @default true
|
|
42
|
-
*/
|
|
43
|
-
backdrop?: boolean;
|
|
44
38
|
icon?: MessageIcon;
|
|
45
39
|
/**
|
|
46
40
|
* Popup width, including paddings (`box-sizing: border-box`).
|
|
@@ -157,6 +151,9 @@ interface IMessageOptions {
|
|
|
157
151
|
*/
|
|
158
152
|
showCloseButton?: boolean;
|
|
159
153
|
containerClass?: string;
|
|
154
|
+
ariaLabel?: string;
|
|
155
|
+
ariaLabelledby?: string;
|
|
156
|
+
ariaDescribedby?: string;
|
|
160
157
|
}
|
|
161
158
|
|
|
162
159
|
declare function provideMessage(options?: IMessageOptions): EnvironmentProviders;
|
|
@@ -227,37 +224,24 @@ declare class NgxMessageComponent implements OnInit, AfterViewInit {
|
|
|
227
224
|
}>;
|
|
228
225
|
ngOnInit(): void;
|
|
229
226
|
ngAfterViewInit(): void;
|
|
230
|
-
/**
|
|
231
|
-
* وقتی چند تا پیام همزمان باز باشن، هرکدوم listener خودشو روی document
|
|
232
|
-
* داشت — پس یه فشردن Escape/Enter، رویداد رو به *همهشون* همزمان میفرستاد،
|
|
233
|
-
* نه فقط آخرین پیامی که باز شده (رفتار طبیعیِ یه استکِ مودال باید این باشه
|
|
234
|
-
* که فقط بالاترین لایه به کیبورد واکنش نشون بده). این چک همون چیزیه که
|
|
235
|
-
* OverlayService با getLastDialog() برای اورلیها انجام میده.
|
|
236
|
-
*/
|
|
237
227
|
private isTopmost;
|
|
238
|
-
onScapeKey(event: Event): void;
|
|
239
228
|
onEnterKey(event: Event): void;
|
|
240
229
|
onConfirm(): void;
|
|
241
230
|
onCancel(): void;
|
|
242
231
|
onDeny(): void;
|
|
243
232
|
close(): void;
|
|
244
|
-
onOutSideClick(): void;
|
|
245
|
-
innerOnClick(ev: Event): void;
|
|
246
233
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxMessageComponent, never>;
|
|
247
234
|
static ɵcmp: i0.ɵɵComponentDeclaration<NgxMessageComponent, "ngx-message", never, {}, {}, never, never, true, never>;
|
|
248
235
|
}
|
|
249
236
|
|
|
250
237
|
declare class NgxMessageService {
|
|
251
|
-
private appRef;
|
|
252
238
|
private injector;
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
alerts: Map<number, ComponentRef<NgxMessageComponent>>;
|
|
239
|
+
alerts: Map<number, OverlayRef<NgxMessageComponent>>;
|
|
240
|
+
protected readonly overlay: OverlayService;
|
|
256
241
|
insertedId: number;
|
|
257
|
-
constructor(
|
|
242
|
+
constructor(injector: Injector);
|
|
258
243
|
show<T = any>(c?: IMessageOptions): MessageOutput<T>;
|
|
259
|
-
private
|
|
260
|
-
private appendDialogComponentToBody;
|
|
244
|
+
private remove;
|
|
261
245
|
closeAll(): void;
|
|
262
246
|
static ɵfac: i0.ɵɵFactoryDeclaration<NgxMessageService, never>;
|
|
263
247
|
static ɵprov: i0.ɵɵInjectableDeclaration<NgxMessageService>;
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import { OnDestroy, InjectionToken, EnvironmentProviders } from '@angular/core';
|
|
3
|
+
|
|
4
|
+
type NgxTooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
5
|
+
|
|
6
|
+
type NgxTooltipTrigger = 'hover' | 'focus' | 'hover-focus';
|
|
7
|
+
|
|
8
|
+
declare class NgxTooltip implements OnDestroy {
|
|
9
|
+
private readonly configs;
|
|
10
|
+
private readonly elementRef;
|
|
11
|
+
private readonly renderer;
|
|
12
|
+
private readonly sanitizer;
|
|
13
|
+
private readonly doc;
|
|
14
|
+
private readonly element;
|
|
15
|
+
private tooltip?;
|
|
16
|
+
private showTimer?;
|
|
17
|
+
private hideTimer?;
|
|
18
|
+
private rafId;
|
|
19
|
+
private visible;
|
|
20
|
+
private destroyed;
|
|
21
|
+
private removeMouseEnter?;
|
|
22
|
+
private removeMouseLeave?;
|
|
23
|
+
private removeFocusIn?;
|
|
24
|
+
private removeFocusOut?;
|
|
25
|
+
private removeScroll?;
|
|
26
|
+
private removeResize?;
|
|
27
|
+
readonly tooltipText: _angular_core.InputSignal<string>;
|
|
28
|
+
readonly ngxTooltipUseOverlay: _angular_core.InputSignal<boolean>;
|
|
29
|
+
readonly ngxTooltipPlacement: _angular_core.InputSignal<NgxTooltipPlacement>;
|
|
30
|
+
readonly ngxTooltipOffset: _angular_core.InputSignal<number>;
|
|
31
|
+
readonly ngxTooltipDelay: _angular_core.InputSignal<number>;
|
|
32
|
+
readonly ngxTooltipHideDelay: _angular_core.InputSignal<number>;
|
|
33
|
+
readonly ngxTooltipAllowHtml: _angular_core.InputSignal<boolean>;
|
|
34
|
+
readonly ngxTooltipTrigger: _angular_core.InputSignal<NgxTooltipTrigger>;
|
|
35
|
+
/**
|
|
36
|
+
* If true, the tooltip automatically changes placement
|
|
37
|
+
* when there is not enough room.
|
|
38
|
+
*/
|
|
39
|
+
readonly ngxTooltipFlip: _angular_core.InputSignal<boolean>;
|
|
40
|
+
/**
|
|
41
|
+
* Keeps the tooltip inside the viewport.
|
|
42
|
+
*/
|
|
43
|
+
readonly ngxTooltipShift: _angular_core.InputSignal<boolean>;
|
|
44
|
+
constructor();
|
|
45
|
+
ngOnDestroy(): void;
|
|
46
|
+
private bindEvents;
|
|
47
|
+
private scheduleShow;
|
|
48
|
+
private scheduleHide;
|
|
49
|
+
private show;
|
|
50
|
+
private hide;
|
|
51
|
+
private getOrCreateTooltip;
|
|
52
|
+
private updateContent;
|
|
53
|
+
private applyDirection;
|
|
54
|
+
private schedulePositionUpdate;
|
|
55
|
+
private positionTooltip;
|
|
56
|
+
private calculatePosition;
|
|
57
|
+
private findBestPlacement;
|
|
58
|
+
private getPlacementCandidates;
|
|
59
|
+
private shiftIntoViewport;
|
|
60
|
+
private fitsViewport;
|
|
61
|
+
private intersectsViewport;
|
|
62
|
+
private parsePlacement;
|
|
63
|
+
private addViewportListeners;
|
|
64
|
+
private removeViewportListeners;
|
|
65
|
+
private removeListeners;
|
|
66
|
+
private hasContent;
|
|
67
|
+
private clearTimers;
|
|
68
|
+
private clearShowTimer;
|
|
69
|
+
private clearHideTimer;
|
|
70
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<NgxTooltip, never>;
|
|
71
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<NgxTooltip, "[ngxTooltip]", never, { "tooltipText": { "alias": "ngxTooltip"; "required": true; "isSignal": true; }; "ngxTooltipUseOverlay": { "alias": "ngxTooltipUseOverlay"; "required": false; "isSignal": true; }; "ngxTooltipPlacement": { "alias": "ngxTooltipPlacement"; "required": false; "isSignal": true; }; "ngxTooltipOffset": { "alias": "ngxTooltipOffset"; "required": false; "isSignal": true; }; "ngxTooltipDelay": { "alias": "ngxTooltipDelay"; "required": false; "isSignal": true; }; "ngxTooltipHideDelay": { "alias": "ngxTooltipHideDelay"; "required": false; "isSignal": true; }; "ngxTooltipAllowHtml": { "alias": "ngxTooltipAllowHtml"; "required": false; "isSignal": true; }; "ngxTooltipTrigger": { "alias": "ngxTooltipTrigger"; "required": false; "isSignal": true; }; "ngxTooltipFlip": { "alias": "ngxTooltipFlip"; "required": false; "isSignal": true; }; "ngxTooltipShift": { "alias": "ngxTooltipShift"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
declare class NgxTooltipConfig {
|
|
75
|
+
placement: NgxTooltipPlacement;
|
|
76
|
+
offset: number;
|
|
77
|
+
delay: number;
|
|
78
|
+
hideDelay: number;
|
|
79
|
+
useHtml: boolean;
|
|
80
|
+
usePopOver: boolean;
|
|
81
|
+
trigger: NgxTooltipTrigger;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
declare const NGX_TOOLTIP_CONFIG: InjectionToken<NgxTooltipConfig>;
|
|
85
|
+
declare function provideTooltip(configs?: NgxTooltipConfig): EnvironmentProviders;
|
|
86
|
+
|
|
87
|
+
export { NGX_TOOLTIP_CONFIG, NgxTooltip, provideTooltip };
|
|
88
|
+
export type { NgxTooltipPlacement, NgxTooltipTrigger };
|