@ng-nest/ui 21.0.10 → 21.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/fesm2022/ng-nest-ui-auto-complete.mjs +11 -3
  2. package/fesm2022/ng-nest-ui-auto-complete.mjs.map +1 -1
  3. package/fesm2022/ng-nest-ui-base-form.mjs +25 -45
  4. package/fesm2022/ng-nest-ui-base-form.mjs.map +1 -1
  5. package/fesm2022/ng-nest-ui-cascade.mjs +10 -2
  6. package/fesm2022/ng-nest-ui-cascade.mjs.map +1 -1
  7. package/fesm2022/ng-nest-ui-color-picker.mjs +10 -2
  8. package/fesm2022/ng-nest-ui-color-picker.mjs.map +1 -1
  9. package/fesm2022/ng-nest-ui-contextmenu.mjs +441 -0
  10. package/fesm2022/ng-nest-ui-contextmenu.mjs.map +1 -0
  11. package/fesm2022/ng-nest-ui-core.mjs +2 -2
  12. package/fesm2022/ng-nest-ui-core.mjs.map +1 -1
  13. package/fesm2022/ng-nest-ui-date-picker.mjs +20 -4
  14. package/fesm2022/ng-nest-ui-date-picker.mjs.map +1 -1
  15. package/fesm2022/ng-nest-ui-dialog.mjs +2 -0
  16. package/fesm2022/ng-nest-ui-dialog.mjs.map +1 -1
  17. package/fesm2022/ng-nest-ui-divider.mjs +124 -0
  18. package/fesm2022/ng-nest-ui-divider.mjs.map +1 -0
  19. package/fesm2022/ng-nest-ui-dropdown.mjs +15 -3
  20. package/fesm2022/ng-nest-ui-dropdown.mjs.map +1 -1
  21. package/fesm2022/ng-nest-ui-find.mjs.map +1 -1
  22. package/fesm2022/ng-nest-ui-form.mjs +7 -12
  23. package/fesm2022/ng-nest-ui-form.mjs.map +1 -1
  24. package/fesm2022/ng-nest-ui-image.mjs +83 -44
  25. package/fesm2022/ng-nest-ui-image.mjs.map +1 -1
  26. package/fesm2022/ng-nest-ui-input-number.mjs +1 -1
  27. package/fesm2022/ng-nest-ui-input-number.mjs.map +1 -1
  28. package/fesm2022/ng-nest-ui-input.mjs +1 -3
  29. package/fesm2022/ng-nest-ui-input.mjs.map +1 -1
  30. package/fesm2022/ng-nest-ui-message-box.mjs.map +1 -1
  31. package/fesm2022/ng-nest-ui-select.mjs +50 -15
  32. package/fesm2022/ng-nest-ui-select.mjs.map +1 -1
  33. package/fesm2022/ng-nest-ui-sender.mjs +1 -1
  34. package/fesm2022/ng-nest-ui-sender.mjs.map +1 -1
  35. package/fesm2022/ng-nest-ui-splitter.mjs +407 -0
  36. package/fesm2022/ng-nest-ui-splitter.mjs.map +1 -0
  37. package/fesm2022/ng-nest-ui-textarea.mjs +1 -1
  38. package/fesm2022/ng-nest-ui-textarea.mjs.map +1 -1
  39. package/fesm2022/ng-nest-ui-time-picker.mjs +40 -21
  40. package/fesm2022/ng-nest-ui-time-picker.mjs.map +1 -1
  41. package/fesm2022/ng-nest-ui-tree-select.mjs +12 -4
  42. package/fesm2022/ng-nest-ui-tree-select.mjs.map +1 -1
  43. package/fesm2022/ng-nest-ui-watermark.mjs +378 -0
  44. package/fesm2022/ng-nest-ui-watermark.mjs.map +1 -0
  45. package/fesm2022/ng-nest-ui.mjs +4 -0
  46. package/fesm2022/ng-nest-ui.mjs.map +1 -1
  47. package/package.json +17 -1
  48. package/types/ng-nest-ui-attachments.d.ts +4 -5
  49. package/types/ng-nest-ui-auto-complete.d.ts +11 -12
  50. package/types/ng-nest-ui-base-form.d.ts +8 -9
  51. package/types/ng-nest-ui-cascade.d.ts +12 -13
  52. package/types/ng-nest-ui-checkbox.d.ts +4 -5
  53. package/types/ng-nest-ui-color-picker.d.ts +12 -13
  54. package/types/ng-nest-ui-contextmenu.d.ts +176 -0
  55. package/types/ng-nest-ui-core.d.ts +36 -1
  56. package/types/ng-nest-ui-coversations.d.ts +4 -5
  57. package/types/ng-nest-ui-date-picker.d.ts +23 -25
  58. package/types/ng-nest-ui-dialog.d.ts +12 -0
  59. package/types/ng-nest-ui-divider.d.ts +113 -0
  60. package/types/ng-nest-ui-dropdown.d.ts +12 -2
  61. package/types/ng-nest-ui-find.d.ts +6 -7
  62. package/types/ng-nest-ui-form.d.ts +9 -10
  63. package/types/ng-nest-ui-image.d.ts +2 -1
  64. package/types/ng-nest-ui-input-number.d.ts +8 -9
  65. package/types/ng-nest-ui-input.d.ts +8 -9
  66. package/types/ng-nest-ui-list.d.ts +4 -5
  67. package/types/ng-nest-ui-message-box.d.ts +2 -2
  68. package/types/ng-nest-ui-radio.d.ts +4 -5
  69. package/types/ng-nest-ui-rate.d.ts +4 -5
  70. package/types/ng-nest-ui-select.d.ts +36 -12
  71. package/types/ng-nest-ui-sender.d.ts +6 -7
  72. package/types/ng-nest-ui-slider-select.d.ts +4 -5
  73. package/types/ng-nest-ui-splitter.d.ts +163 -0
  74. package/types/ng-nest-ui-switch.d.ts +4 -5
  75. package/types/ng-nest-ui-textarea.d.ts +8 -9
  76. package/types/ng-nest-ui-theme.d.ts +4 -5
  77. package/types/ng-nest-ui-time-picker.d.ts +15 -14
  78. package/types/ng-nest-ui-transfer.d.ts +4 -5
  79. package/types/ng-nest-ui-tree-select.d.ts +12 -13
  80. package/types/ng-nest-ui-upload.d.ts +4 -5
  81. package/types/ng-nest-ui-watermark.d.ts +267 -0
  82. package/types/ng-nest-ui.d.ts +4 -0
@@ -0,0 +1,378 @@
1
+ import * as i0 from '@angular/core';
2
+ import { input, Component, signal, computed, ChangeDetectionStrategy, ViewEncapsulation, NgModule } from '@angular/core';
3
+ import { XPropertyFunction, XToNumber, XToBoolean } from '@ng-nest/ui/core';
4
+
5
+ /**
6
+ * Watermark
7
+ * @selector x-watermark
8
+ * @decorator component
9
+ */
10
+ const XWatermarkPrefix = 'x-watermark';
11
+ const X_WATERMARK_CONFIG_NAME = 'watermark';
12
+ /**
13
+ * Watermark Property
14
+ */
15
+ class XWatermarkProperty extends XPropertyFunction(X_WATERMARK_CONFIG_NAME) {
16
+ constructor() {
17
+ super(...arguments);
18
+ /**
19
+ * @zh_CN 水印内容
20
+ * @en_US Watermark content
21
+ * @example
22
+ *
23
+ * ```html
24
+ * <x-watermark content="NG-NEST"></x-watermark>
25
+ * ```
26
+ *
27
+ */
28
+ this.content = input('', ...(ngDevMode ? [{ debugName: "content" }] : []));
29
+ /**
30
+ * @zh_CN 水印宽度
31
+ * @en_US Watermark width
32
+ * @example
33
+ *
34
+ * ```html
35
+ * <x-watermark [width]="120"></x-watermark>
36
+ * ```
37
+ *
38
+ */
39
+ this.width = input(this.config?.width ?? 120, { ...(ngDevMode ? { debugName: "width" } : {}), transform: XToNumber });
40
+ /**
41
+ * @zh_CN 水印高度
42
+ * @en_US Watermark height
43
+ * @example
44
+ *
45
+ * ```html
46
+ * <x-watermark [height]="60"></x-watermark>
47
+ * ```
48
+ *
49
+ */
50
+ this.height = input(this.config?.height ?? 60, { ...(ngDevMode ? { debugName: "height" } : {}), transform: XToNumber });
51
+ /**
52
+ * @zh_CN 旋转角度
53
+ * @en_US Rotation angle
54
+ * @example
55
+ *
56
+ * ```html
57
+ * <x-watermark [rotate]="-22"></x-watermark>
58
+ * <x-watermark [rotate]="0"></x-watermark>
59
+ * ```
60
+ *
61
+ */
62
+ this.rotate = input(this.config?.rotate ?? -22, { ...(ngDevMode ? { debugName: "rotate" } : {}), transform: XToNumber });
63
+ /**
64
+ * @zh_CN 字体大小
65
+ * @en_US Font size
66
+ * @example
67
+ *
68
+ * ```html
69
+ * <x-watermark [fontSize]="14"></x-watermark>
70
+ * ```
71
+ *
72
+ */
73
+ this.fontSize = input(this.config?.fontSize ?? 14, { ...(ngDevMode ? { debugName: "fontSize" } : {}), transform: XToNumber });
74
+ /**
75
+ * @zh_CN 字体
76
+ * @en_US Font family
77
+ * @example
78
+ *
79
+ * ```html
80
+ * <x-watermark fontFamily="Varela Round"></x-watermark>
81
+ * ```
82
+ *
83
+ */
84
+ this.fontFamily = input(this.config?.fontFamily ?? 'Varela Round', ...(ngDevMode ? [{ debugName: "fontFamily" }] : []));
85
+ /**
86
+ * @zh_CN 字体颜色
87
+ * @en_US Font color
88
+ * @example
89
+ *
90
+ * ```html
91
+ * <x-watermark color="rgba(0, 0, 0, 0.12)"></x-watermark>
92
+ * ```
93
+ *
94
+ */
95
+ this.color = input(this.config?.color ?? 'rgba(0, 0, 0, 0.12)', ...(ngDevMode ? [{ debugName: "color" }] : []));
96
+ /**
97
+ * @zh_CN 层级
98
+ * @en_US Z-index
99
+ * @example
100
+ *
101
+ * ```html
102
+ * <x-watermark [zIndex]="9999"></x-watermark>
103
+ * ```
104
+ *
105
+ */
106
+ this.zIndex = input(this.config?.zIndex ?? 9999, { ...(ngDevMode ? { debugName: "zIndex" } : {}), transform: XToNumber });
107
+ /**
108
+ * @zh_CN 透明度
109
+ * @en_US Opacity
110
+ * @example
111
+ *
112
+ * ```html
113
+ * <x-watermark [alpha]="1"></x-watermark>
114
+ * <x-watermark [alpha]="0.5"></x-watermark>
115
+ * ```
116
+ *
117
+ */
118
+ this.alpha = input(this.config?.alpha ?? 1, { ...(ngDevMode ? { debugName: "alpha" } : {}), transform: XToNumber });
119
+ /**
120
+ * @zh_CN 水平间距
121
+ * @en_US Horizontal gap
122
+ * @example
123
+ *
124
+ * ```html
125
+ * <x-watermark [gapX]="100"></x-watermark>
126
+ * ```
127
+ *
128
+ */
129
+ this.gapX = input(this.config?.gapX ?? 100, { ...(ngDevMode ? { debugName: "gapX" } : {}), transform: XToNumber });
130
+ /**
131
+ * @zh_CN 垂直间距
132
+ * @en_US Vertical gap
133
+ * @example
134
+ *
135
+ * ```html
136
+ * <x-watermark [gapY]="100"></x-watermark>
137
+ * ```
138
+ *
139
+ */
140
+ this.gapY = input(this.config?.gapY ?? 100, { ...(ngDevMode ? { debugName: "gapY" } : {}), transform: XToNumber });
141
+ /**
142
+ * @zh_CN 水平偏移
143
+ * @en_US Horizontal offset
144
+ * @example
145
+ *
146
+ * ```html
147
+ * <x-watermark [offsetLeft]="0"></x-watermark>
148
+ * ```
149
+ *
150
+ */
151
+ this.offsetLeft = input(this.config?.offsetLeft ?? 0, { ...(ngDevMode ? { debugName: "offsetLeft" } : {}), transform: XToNumber });
152
+ /**
153
+ * @zh_CN 垂直偏移
154
+ * @en_US Vertical offset
155
+ * @example
156
+ *
157
+ * ```html
158
+ * <x-watermark [offsetTop]="0"></x-watermark>
159
+ * ```
160
+ *
161
+ */
162
+ this.offsetTop = input(this.config?.offsetTop ?? 0, { ...(ngDevMode ? { debugName: "offsetTop" } : {}), transform: XToNumber });
163
+ /**
164
+ * @zh_CN 是否交错显示
165
+ * @en_US Whether to stagger display
166
+ * @example
167
+ *
168
+ * ```html
169
+ * <x-watermark [striped]="true"></x-watermark>
170
+ * <x-watermark [striped]="false"></x-watermark>
171
+ * ```
172
+ *
173
+ */
174
+ this.striped = input(this.config?.striped ?? false, { ...(ngDevMode ? { debugName: "striped" } : {}), transform: XToBoolean });
175
+ /**
176
+ * @zh_CN 是否禁用
177
+ * @en_US Whether to disable
178
+ * @example
179
+ *
180
+ * ```html
181
+ * <x-watermark [disabled]="true"></x-watermark>
182
+ * <x-watermark [disabled]="false"></x-watermark>
183
+ * ```
184
+ *
185
+ */
186
+ this.disabled = input(this.config?.disabled ?? false, { ...(ngDevMode ? { debugName: "disabled" } : {}), transform: XToBoolean });
187
+ /**
188
+ * @zh_CN 图片/图标 URL
189
+ * @en_US Image/icon URL
190
+ * @example
191
+ *
192
+ * ```html
193
+ * <x-watermark imageSrc="/assets/logo.png"></x-watermark>
194
+ * ```
195
+ *
196
+ */
197
+ this.imageSrc = input('', ...(ngDevMode ? [{ debugName: "imageSrc" }] : []));
198
+ /**
199
+ * @zh_CN 图片宽度
200
+ * @en_US Image width
201
+ * @example
202
+ *
203
+ * ```html
204
+ * <x-watermark [imageWidth]="40"></x-watermark>
205
+ * ```
206
+ *
207
+ */
208
+ this.imageWidth = input(0, { ...(ngDevMode ? { debugName: "imageWidth" } : {}), transform: XToNumber });
209
+ /**
210
+ * @zh_CN 图片高度
211
+ * @en_US Image height
212
+ * @example
213
+ *
214
+ * ```html
215
+ * <x-watermark [imageHeight]="40"></x-watermark>
216
+ * ```
217
+ *
218
+ */
219
+ this.imageHeight = input(0, { ...(ngDevMode ? { debugName: "imageHeight" } : {}), transform: XToNumber });
220
+ /**
221
+ * @zh_CN 图片相对文本的位置
222
+ * @en_US Image position relative to text
223
+ * @example
224
+ *
225
+ * ```html
226
+ * <x-watermark imagePosition="top"></x-watermark>
227
+ * <x-watermark imagePosition="center"></x-watermark>
228
+ * <x-watermark imagePosition="bottom"></x-watermark>
229
+ * ```
230
+ *
231
+ */
232
+ this.imagePosition = input('center', ...(ngDevMode ? [{ debugName: "imagePosition" }] : []));
233
+ }
234
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkProperty, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
235
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "21.1.1", type: XWatermarkProperty, isStandalone: true, selector: "x-watermark-property", inputs: { content: { classPropertyName: "content", publicName: "content", isSignal: true, isRequired: false, transformFunction: null }, width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, rotate: { classPropertyName: "rotate", publicName: "rotate", isSignal: true, isRequired: false, transformFunction: null }, fontSize: { classPropertyName: "fontSize", publicName: "fontSize", isSignal: true, isRequired: false, transformFunction: null }, fontFamily: { classPropertyName: "fontFamily", publicName: "fontFamily", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, zIndex: { classPropertyName: "zIndex", publicName: "zIndex", isSignal: true, isRequired: false, transformFunction: null }, alpha: { classPropertyName: "alpha", publicName: "alpha", isSignal: true, isRequired: false, transformFunction: null }, gapX: { classPropertyName: "gapX", publicName: "gapX", isSignal: true, isRequired: false, transformFunction: null }, gapY: { classPropertyName: "gapY", publicName: "gapY", isSignal: true, isRequired: false, transformFunction: null }, offsetLeft: { classPropertyName: "offsetLeft", publicName: "offsetLeft", isSignal: true, isRequired: false, transformFunction: null }, offsetTop: { classPropertyName: "offsetTop", publicName: "offsetTop", isSignal: true, isRequired: false, transformFunction: null }, striped: { classPropertyName: "striped", publicName: "striped", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, imageSrc: { classPropertyName: "imageSrc", publicName: "imageSrc", isSignal: true, isRequired: false, transformFunction: null }, imageWidth: { classPropertyName: "imageWidth", publicName: "imageWidth", isSignal: true, isRequired: false, transformFunction: null }, imageHeight: { classPropertyName: "imageHeight", publicName: "imageHeight", isSignal: true, isRequired: false, transformFunction: null }, imagePosition: { classPropertyName: "imagePosition", publicName: "imagePosition", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: '', isInline: true }); }
236
+ }
237
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkProperty, decorators: [{
238
+ type: Component,
239
+ args: [{ selector: `${XWatermarkPrefix}-property`, template: '' }]
240
+ }], propDecorators: { content: [{ type: i0.Input, args: [{ isSignal: true, alias: "content", required: false }] }], width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], rotate: [{ type: i0.Input, args: [{ isSignal: true, alias: "rotate", required: false }] }], fontSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "fontSize", required: false }] }], fontFamily: [{ type: i0.Input, args: [{ isSignal: true, alias: "fontFamily", required: false }] }], color: [{ type: i0.Input, args: [{ isSignal: true, alias: "color", required: false }] }], zIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "zIndex", required: false }] }], alpha: [{ type: i0.Input, args: [{ isSignal: true, alias: "alpha", required: false }] }], gapX: [{ type: i0.Input, args: [{ isSignal: true, alias: "gapX", required: false }] }], gapY: [{ type: i0.Input, args: [{ isSignal: true, alias: "gapY", required: false }] }], offsetLeft: [{ type: i0.Input, args: [{ isSignal: true, alias: "offsetLeft", required: false }] }], offsetTop: [{ type: i0.Input, args: [{ isSignal: true, alias: "offsetTop", required: false }] }], striped: [{ type: i0.Input, args: [{ isSignal: true, alias: "striped", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], imageSrc: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageSrc", required: false }] }], imageWidth: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageWidth", required: false }] }], imageHeight: [{ type: i0.Input, args: [{ isSignal: true, alias: "imageHeight", required: false }] }], imagePosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "imagePosition", required: false }] }] } });
241
+
242
+ class XWatermarkComponent extends XWatermarkProperty {
243
+ constructor() {
244
+ super();
245
+ this.backgroundImage = signal('', ...(ngDevMode ? [{ debugName: "backgroundImage" }] : []));
246
+ this.font = computed(() => {
247
+ return `${this.fontSize()}px ${this.fontFamily()}`;
248
+ }, ...(ngDevMode ? [{ debugName: "font" }] : []));
249
+ this.textWidth = computed(() => {
250
+ const canvas = document.createElement('canvas');
251
+ const ctx = canvas.getContext('2d');
252
+ if (ctx) {
253
+ ctx.font = this.font();
254
+ return ctx.measureText(this.content()).width;
255
+ }
256
+ return this.width();
257
+ }, ...(ngDevMode ? [{ debugName: "textWidth" }] : []));
258
+ this.watermarkWidth = computed(() => {
259
+ const imgW = this.imageSrc() && this.imageWidth() ? this.imageWidth() : this.textWidth();
260
+ return Math.max(imgW, this.textWidth()) + this.gapX();
261
+ }, ...(ngDevMode ? [{ debugName: "watermarkWidth" }] : []));
262
+ this.watermarkHeight = computed(() => {
263
+ const imgH = this.imageSrc() && this.imageHeight() ? this.imageHeight() : this.height();
264
+ return Math.max(imgH, this.height()) + this.gapY();
265
+ }, ...(ngDevMode ? [{ debugName: "watermarkHeight" }] : []));
266
+ }
267
+ ngAfterViewInit() {
268
+ this.createWatermark();
269
+ }
270
+ ngOnDestroy() { }
271
+ createWatermark() {
272
+ if (this.imageSrc()) {
273
+ this.drawWatermarkWithImage();
274
+ }
275
+ else {
276
+ this.drawWatermarkText();
277
+ }
278
+ }
279
+ loadImage(src) {
280
+ return new Promise((resolve, reject) => {
281
+ const img = new Image();
282
+ img.crossOrigin = 'anonymous';
283
+ img.onload = () => resolve(img);
284
+ img.onerror = reject;
285
+ img.src = src;
286
+ });
287
+ }
288
+ async drawWatermarkWithImage() {
289
+ const w = this.watermarkWidth();
290
+ const h = this.watermarkHeight();
291
+ const canvas = document.createElement('canvas');
292
+ canvas.width = w;
293
+ canvas.height = h;
294
+ const ctx = canvas.getContext('2d');
295
+ if (!ctx)
296
+ return;
297
+ try {
298
+ const img = await this.loadImage(this.imageSrc());
299
+ const imgW = this.imageWidth() || this.width();
300
+ const imgH = this.imageHeight() || this.height();
301
+ ctx.save();
302
+ ctx.rotate((this.rotate() * Math.PI) / 180);
303
+ ctx.globalAlpha = this.alpha();
304
+ // 绘制图片
305
+ const imgX = (w - imgW) / 2;
306
+ const imgY = (h - imgH) / 2;
307
+ ctx.drawImage(img, imgX, imgY, imgW, imgH);
308
+ // 绘制文本
309
+ if (this.content()) {
310
+ ctx.font = this.font();
311
+ ctx.fillStyle = this.color();
312
+ ctx.textAlign = 'center';
313
+ ctx.textBaseline = 'middle';
314
+ let textY = h / 2;
315
+ if (this.imagePosition() === 'top') {
316
+ textY = imgY - 10;
317
+ }
318
+ else if (this.imagePosition() === 'bottom') {
319
+ textY = imgY + imgH + 10;
320
+ }
321
+ ctx.fillText(this.content(), w / 2, textY);
322
+ }
323
+ ctx.restore();
324
+ this.backgroundImage.set(canvas.toDataURL());
325
+ }
326
+ catch {
327
+ // 图片加载失败,降级为纯文本
328
+ this.drawWatermarkText();
329
+ }
330
+ }
331
+ drawWatermarkText() {
332
+ const w = this.watermarkWidth();
333
+ const h = this.watermarkHeight();
334
+ const canvas = document.createElement('canvas');
335
+ canvas.width = w;
336
+ canvas.height = h;
337
+ const ctx = canvas.getContext('2d');
338
+ if (!ctx)
339
+ return;
340
+ ctx.save();
341
+ ctx.rotate((this.rotate() * Math.PI) / 180);
342
+ ctx.font = this.font();
343
+ ctx.fillStyle = this.color();
344
+ ctx.globalAlpha = this.alpha();
345
+ ctx.textAlign = 'center';
346
+ ctx.textBaseline = 'middle';
347
+ ctx.fillText(this.content(), w / 2, h / 2);
348
+ ctx.restore();
349
+ const dataUrl = canvas.toDataURL();
350
+ this.backgroundImage.set(dataUrl);
351
+ }
352
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
353
+ /** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "21.1.1", type: XWatermarkComponent, isStandalone: true, selector: "x-watermark", usesInheritance: true, ngImport: i0, template: "<div\n class=\"x-watermark\"\n [class.x-watermark-disabled]=\"disabled()\"\n [style.z-index]=\"zIndex()\"\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\n [style.background-repeat]=\"'repeat'\"\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\n>\n <ng-content></ng-content>\n</div>", styles: [".x-watermark{margin:0;padding:0}.x-watermark{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;position:relative}.x-watermark-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }
354
+ }
355
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkComponent, decorators: [{
356
+ type: Component,
357
+ args: [{ selector: XWatermarkPrefix, imports: [], encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, template: "<div\n class=\"x-watermark\"\n [class.x-watermark-disabled]=\"disabled()\"\n [style.z-index]=\"zIndex()\"\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\n [style.background-repeat]=\"'repeat'\"\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\n>\n <ng-content></ng-content>\n</div>", styles: [".x-watermark{margin:0;padding:0}.x-watermark{font-size:var(--x-font-size);display:inline-block;box-sizing:border-box;position:relative}.x-watermark-disabled{pointer-events:none;-webkit-user-select:none;user-select:none}\n"] }]
358
+ }], ctorParameters: () => [] });
359
+
360
+ class XWatermarkModule {
361
+ /** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
362
+ /** @nocollapse */ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkModule, imports: [XWatermarkComponent], exports: [XWatermarkComponent] }); }
363
+ /** @nocollapse */ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkModule }); }
364
+ }
365
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.1", ngImport: i0, type: XWatermarkModule, decorators: [{
366
+ type: NgModule,
367
+ args: [{
368
+ exports: [XWatermarkComponent],
369
+ imports: [XWatermarkComponent]
370
+ }]
371
+ }] });
372
+
373
+ /**
374
+ * Generated bundle index. Do not edit.
375
+ */
376
+
377
+ export { XWatermarkComponent, XWatermarkModule, XWatermarkPrefix, XWatermarkProperty };
378
+ //# sourceMappingURL=ng-nest-ui-watermark.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ng-nest-ui-watermark.mjs","sources":["../../../../lib/ng-nest/ui/watermark/watermark.property.ts","../../../../lib/ng-nest/ui/watermark/watermark.component.ts","../../../../lib/ng-nest/ui/watermark/watermark.component.html","../../../../lib/ng-nest/ui/watermark/watermark.module.ts","../../../../lib/ng-nest/ui/watermark/ng-nest-ui-watermark.ts"],"sourcesContent":["import { Component, input } from '@angular/core';\r\nimport { XToNumber, XToBoolean, XPropertyFunction } from '@ng-nest/ui/core';\r\nimport type { XNumber, XBoolean } from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Watermark\r\n * @selector x-watermark\r\n * @decorator component\r\n */\r\nexport const XWatermarkPrefix = 'x-watermark';\r\nconst X_WATERMARK_CONFIG_NAME = 'watermark';\r\n\r\n/**\r\n * Watermark Property\r\n */\r\n@Component({ selector: `${XWatermarkPrefix}-property`, template: '' })\r\nexport class XWatermarkProperty extends XPropertyFunction(X_WATERMARK_CONFIG_NAME) {\r\n /**\r\n * @zh_CN 水印内容\r\n * @en_US Watermark content\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark content=\"NG-NEST\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly content = input<string>('');\r\n /**\r\n * @zh_CN 水印宽度\r\n * @en_US Watermark width\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [width]=\"120\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly width = input<number, XNumber>(this.config?.width ?? 120, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水印高度\r\n * @en_US Watermark height\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [height]=\"60\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly height = input<number, XNumber>(this.config?.height ?? 60, { transform: XToNumber });\r\n /**\r\n * @zh_CN 旋转角度\r\n * @en_US Rotation angle\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [rotate]=\"-22\"></x-watermark>\r\n * <x-watermark [rotate]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly rotate = input<number, XNumber>(this.config?.rotate ?? -22, { transform: XToNumber });\r\n /**\r\n * @zh_CN 字体大小\r\n * @en_US Font size\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [fontSize]=\"14\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly fontSize = input<number, XNumber>(this.config?.fontSize ?? 14, { transform: XToNumber });\r\n /**\r\n * @zh_CN 字体\r\n * @en_US Font family\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark fontFamily=\"Varela Round\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly fontFamily = input<string>(this.config?.fontFamily ?? 'Varela Round');\r\n /**\r\n * @zh_CN 字体颜色\r\n * @en_US Font color\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark color=\"rgba(0, 0, 0, 0.12)\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly color = input<string>(this.config?.color ?? 'rgba(0, 0, 0, 0.12)');\r\n /**\r\n * @zh_CN 层级\r\n * @en_US Z-index\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [zIndex]=\"9999\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly zIndex = input<number, XNumber>(this.config?.zIndex ?? 9999, { transform: XToNumber });\r\n /**\r\n * @zh_CN 透明度\r\n * @en_US Opacity\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [alpha]=\"1\"></x-watermark>\r\n * <x-watermark [alpha]=\"0.5\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly alpha = input<number, XNumber>(this.config?.alpha ?? 1, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水平间距\r\n * @en_US Horizontal gap\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [gapX]=\"100\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly gapX = input<number, XNumber>(this.config?.gapX ?? 100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 垂直间距\r\n * @en_US Vertical gap\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [gapY]=\"100\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly gapY = input<number, XNumber>(this.config?.gapY ?? 100, { transform: XToNumber });\r\n /**\r\n * @zh_CN 水平偏移\r\n * @en_US Horizontal offset\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [offsetLeft]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly offsetLeft = input<number, XNumber>(this.config?.offsetLeft ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 垂直偏移\r\n * @en_US Vertical offset\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [offsetTop]=\"0\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly offsetTop = input<number, XNumber>(this.config?.offsetTop ?? 0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 是否交错显示\r\n * @en_US Whether to stagger display\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [striped]=\"true\"></x-watermark>\r\n * <x-watermark [striped]=\"false\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly striped = input<boolean, XBoolean>(this.config?.striped ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 是否禁用\r\n * @en_US Whether to disable\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [disabled]=\"true\"></x-watermark>\r\n * <x-watermark [disabled]=\"false\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly disabled = input<boolean, XBoolean>(this.config?.disabled ?? false, { transform: XToBoolean });\r\n /**\r\n * @zh_CN 图片/图标 URL\r\n * @en_US Image/icon URL\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark imageSrc=\"/assets/logo.png\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageSrc = input<string>('');\r\n /**\r\n * @zh_CN 图片宽度\r\n * @en_US Image width\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [imageWidth]=\"40\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageWidth = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 图片高度\r\n * @en_US Image height\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark [imageHeight]=\"40\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imageHeight = input<number, XNumber>(0, { transform: XToNumber });\r\n /**\r\n * @zh_CN 图片相对文本的位置\r\n * @en_US Image position relative to text\r\n * @example\r\n *\r\n * ```html\r\n * <x-watermark imagePosition=\"top\"></x-watermark>\r\n * <x-watermark imagePosition=\"center\"></x-watermark>\r\n * <x-watermark imagePosition=\"bottom\"></x-watermark>\r\n * ```\r\n *\r\n */\r\n readonly imagePosition = input<XWatermarkImagePosition>('center');\r\n}\r\n\r\n/**\r\n * @zh_CN 图片相对文本的位置\r\n * @en_US Image position relative to text\r\n */\r\nexport type XWatermarkImagePosition = 'top' | 'center' | 'bottom';\r\n","import {\n Component,\n ViewEncapsulation,\n ChangeDetectionStrategy,\n computed,\n signal,\n AfterViewInit,\n OnDestroy\n} from '@angular/core';\nimport { XWatermarkProperty, XWatermarkPrefix } from './watermark.property';\n\n@Component({\n selector: XWatermarkPrefix,\n imports: [],\n templateUrl: './watermark.component.html',\n styleUrls: ['./watermark.component.scss'],\n encapsulation: ViewEncapsulation.None,\n changeDetection: ChangeDetectionStrategy.OnPush\n})\nexport class XWatermarkComponent extends XWatermarkProperty implements AfterViewInit, OnDestroy {\n backgroundImage = signal<string>('');\n\n private font = computed(() => {\n return `${this.fontSize()}px ${this.fontFamily()}`;\n });\n\n private textWidth = computed(() => {\n const canvas = document.createElement('canvas');\n const ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.font = this.font();\n return ctx.measureText(this.content()).width;\n }\n return this.width();\n });\n\n watermarkWidth = computed(() => {\n const imgW = this.imageSrc() && this.imageWidth() ? this.imageWidth() : this.textWidth();\n return Math.max(imgW, this.textWidth()) + this.gapX();\n });\n \n watermarkHeight = computed(() => {\n const imgH = this.imageSrc() && this.imageHeight() ? this.imageHeight() : this.height();\n return Math.max(imgH, this.height()) + this.gapY();\n });\n\n constructor() {\n super();\n }\n\n ngAfterViewInit() {\n this.createWatermark();\n }\n\n ngOnDestroy() {}\n\n private createWatermark() {\n if (this.imageSrc()) {\n this.drawWatermarkWithImage();\n } else {\n this.drawWatermarkText();\n }\n }\n\n private loadImage(src: string): Promise<HTMLImageElement> {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'anonymous';\n img.onload = () => resolve(img);\n img.onerror = reject;\n img.src = src;\n });\n }\n\n private async drawWatermarkWithImage() {\n const w = this.watermarkWidth();\n const h = this.watermarkHeight();\n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n try {\n const img = await this.loadImage(this.imageSrc());\n const imgW = this.imageWidth() || this.width();\n const imgH = this.imageHeight() || this.height();\n \n ctx.save();\n ctx.rotate((this.rotate() * Math.PI) / 180);\n ctx.globalAlpha = this.alpha();\n \n // 绘制图片\n const imgX = (w - imgW) / 2;\n const imgY = (h - imgH) / 2;\n ctx.drawImage(img, imgX, imgY, imgW, imgH);\n \n // 绘制文本\n if (this.content()) {\n ctx.font = this.font();\n ctx.fillStyle = this.color();\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n \n let textY = h / 2;\n if (this.imagePosition() === 'top') {\n textY = imgY - 10;\n } else if (this.imagePosition() === 'bottom') {\n textY = imgY + imgH + 10;\n }\n \n ctx.fillText(this.content(), w / 2, textY);\n }\n \n ctx.restore();\n this.backgroundImage.set(canvas.toDataURL());\n } catch {\n // 图片加载失败,降级为纯文本\n this.drawWatermarkText();\n }\n }\n\n private drawWatermarkText() {\n const w = this.watermarkWidth();\n const h = this.watermarkHeight();\n\n const canvas = document.createElement('canvas');\n canvas.width = w;\n canvas.height = h;\n\n const ctx = canvas.getContext('2d');\n if (!ctx) return;\n\n ctx.save();\n ctx.rotate((this.rotate() * Math.PI) / 180);\n ctx.font = this.font();\n ctx.fillStyle = this.color();\n ctx.globalAlpha = this.alpha();\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n ctx.fillText(this.content(), w / 2, h / 2);\n ctx.restore();\n\n const dataUrl = canvas.toDataURL();\n this.backgroundImage.set(dataUrl);\n }\n}\n","<div\n class=\"x-watermark\"\n [class.x-watermark-disabled]=\"disabled()\"\n [style.z-index]=\"zIndex()\"\n [style.background-image]=\"backgroundImage() ? 'url(' + backgroundImage() + ')' : 'none'\"\n [style.background-repeat]=\"'repeat'\"\n [style.background-size]=\"watermarkWidth() + 'px ' + watermarkHeight() + 'px'\"\n [style.background-position]=\"offsetLeft() + 'px ' + offsetTop() + 'px'\"\n>\n <ng-content></ng-content>\n</div>","import { NgModule } from '@angular/core';\nimport { XWatermarkComponent } from './watermark.component';\n\n@NgModule({\n exports: [XWatermarkComponent],\n imports: [XWatermarkComponent]\n})\nexport class XWatermarkModule {}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -71,6 +71,7 @@ export * from '@ng-nest/ui/affix';
71
71
  export * from '@ng-nest/ui/anchor';
72
72
  export * from '@ng-nest/ui/back-top';
73
73
  export * from '@ng-nest/ui/crumb';
74
+ export * from '@ng-nest/ui/contextmenu';
74
75
  export * from '@ng-nest/ui/dropdown';
75
76
  export * from '@ng-nest/ui/menu';
76
77
  export * from '@ng-nest/ui/page-header';
@@ -85,6 +86,7 @@ export * from '@ng-nest/ui/attachments';
85
86
  export * from '@ng-nest/ui/suggestion';
86
87
  export * from '@ng-nest/ui/thought-chain';
87
88
  export * from '@ng-nest/ui/doc';
89
+ export * from '@ng-nest/ui/divider';
88
90
  export * from '@ng-nest/ui/examples';
89
91
  export * from '@ng-nest/ui/api';
90
92
  export * from '@ng-nest/ui/pattern';
@@ -92,6 +94,8 @@ export * from '@ng-nest/ui/slider';
92
94
  export * from '@ng-nest/ui/scrollable';
93
95
  export * from '@ng-nest/ui/highlight';
94
96
  export * from '@ng-nest/ui/inner';
97
+ export * from '@ng-nest/ui/watermark';
98
+ export * from '@ng-nest/ui/splitter';
95
99
 
96
100
  /**
97
101
  * Core
@@ -1 +1 @@
1
- {"version":3,"file":"ng-nest-ui.mjs","sources":["../../../../lib/ng-nest/ui/index.ts","../../../../lib/ng-nest/ui/ng-nest-ui.ts"],"sourcesContent":["/**\r\n * Core\r\n */\r\nexport * from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Basic\r\n */\r\nexport * from '@ng-nest/ui/button';\r\nexport * from '@ng-nest/ui/color';\r\nexport * from '@ng-nest/ui/container';\r\nexport * from '@ng-nest/ui/layout';\r\nexport * from '@ng-nest/ui/icon';\r\nexport * from '@ng-nest/ui/i18n';\r\nexport * from '@ng-nest/ui/link';\r\nexport * from '@ng-nest/ui/theme';\r\n\r\n/**\r\n * Data\r\n */\r\nexport * from '@ng-nest/ui/avatar';\r\nexport * from '@ng-nest/ui/badge';\r\nexport * from '@ng-nest/ui/card';\r\nexport * from '@ng-nest/ui/carousel';\r\nexport * from '@ng-nest/ui/collapse';\r\nexport * from '@ng-nest/ui/calendar';\r\nexport * from '@ng-nest/ui/comment';\r\nexport * from '@ng-nest/ui/description';\r\nexport * from '@ng-nest/ui/empty';\r\nexport * from '@ng-nest/ui/image';\r\nexport * from '@ng-nest/ui/outlet';\r\nexport * from '@ng-nest/ui/pagination';\r\nexport * from '@ng-nest/ui/progress';\r\nexport * from '@ng-nest/ui/ripple';\r\nexport * from '@ng-nest/ui/resizable';\r\nexport * from '@ng-nest/ui/drag';\r\nexport * from '@ng-nest/ui/statistic';\r\nexport * from '@ng-nest/ui/table';\r\nexport * from '@ng-nest/ui/table-view';\r\nexport * from '@ng-nest/ui/tag';\r\nexport * from '@ng-nest/ui/text-retract';\r\nexport * from '@ng-nest/ui/time-ago';\r\nexport * from '@ng-nest/ui/time-range';\r\nexport * from '@ng-nest/ui/timeline';\r\nexport * from '@ng-nest/ui/tree';\r\nexport * from '@ng-nest/ui/tree-file';\r\nexport * from '@ng-nest/ui/keyword';\r\n\r\n/**\r\n * Feedback\r\n */\r\nexport * from '@ng-nest/ui/alert';\r\nexport * from '@ng-nest/ui/dialog';\r\nexport * from '@ng-nest/ui/drawer';\r\nexport * from '@ng-nest/ui/loading';\r\nexport * from '@ng-nest/ui/message';\r\nexport * from '@ng-nest/ui/message-box';\r\nexport * from '@ng-nest/ui/notification';\r\nexport * from '@ng-nest/ui/popconfirm';\r\nexport * from '@ng-nest/ui/popover';\r\nexport * from '@ng-nest/ui/result';\r\nexport * from '@ng-nest/ui/skeleton';\r\nexport * from '@ng-nest/ui/tooltip';\r\n\r\n/**\r\n * Form\r\n */\r\nexport * from '@ng-nest/ui/auto-complete';\r\nexport * from '@ng-nest/ui/base-form';\r\nexport * from '@ng-nest/ui/cascade';\r\nexport * from '@ng-nest/ui/checkbox';\r\nexport * from '@ng-nest/ui/color-picker';\r\nexport * from '@ng-nest/ui/date-picker';\r\nexport * from '@ng-nest/ui/form';\r\nexport * from '@ng-nest/ui/find';\r\nexport * from '@ng-nest/ui/input';\r\nexport * from '@ng-nest/ui/input-number';\r\nexport * from '@ng-nest/ui/list';\r\nexport * from '@ng-nest/ui/radio';\r\nexport * from '@ng-nest/ui/rate';\r\nexport * from '@ng-nest/ui/select';\r\nexport * from '@ng-nest/ui/slider-select';\r\nexport * from '@ng-nest/ui/switch';\r\nexport * from '@ng-nest/ui/time-picker';\r\nexport * from '@ng-nest/ui/transfer';\r\nexport * from '@ng-nest/ui/tree-select';\r\nexport * from '@ng-nest/ui/textarea';\r\nexport * from '@ng-nest/ui/upload';\r\n\r\n/**\r\n * Navigation\r\n */\r\nexport * from '@ng-nest/ui/affix';\r\nexport * from '@ng-nest/ui/anchor';\r\nexport * from '@ng-nest/ui/back-top';\r\nexport * from '@ng-nest/ui/crumb';\r\nexport * from '@ng-nest/ui/dropdown';\r\nexport * from '@ng-nest/ui/menu';\r\nexport * from '@ng-nest/ui/page-header';\r\nexport * from '@ng-nest/ui/steps';\r\nexport * from '@ng-nest/ui/tabs';\r\n\r\n/**\r\n * AI\r\n */\r\nexport * from '@ng-nest/ui/bubble';\r\nexport * from '@ng-nest/ui/sender';\r\nexport * from '@ng-nest/ui/coversations';\r\nexport * from '@ng-nest/ui/welcome';\r\nexport * from '@ng-nest/ui/prompts';\r\nexport * from '@ng-nest/ui/attachments';\r\nexport * from '@ng-nest/ui/suggestion';\r\nexport * from '@ng-nest/ui/thought-chain';\r\n\r\n/**\r\n * Others\r\n */\r\nexport * from '@ng-nest/ui/doc';\r\nexport * from '@ng-nest/ui/examples';\r\nexport * from '@ng-nest/ui/api';\r\nexport * from '@ng-nest/ui/pattern';\r\nexport * from '@ng-nest/ui/slider';\r\nexport * from '@ng-nest/ui/scrollable';\r\nexport * from '@ng-nest/ui/highlight';\r\nexport * from '@ng-nest/ui/inner';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
1
+ {"version":3,"file":"ng-nest-ui.mjs","sources":["../../../../lib/ng-nest/ui/index.ts","../../../../lib/ng-nest/ui/ng-nest-ui.ts"],"sourcesContent":["/**\r\n * Core\r\n */\r\nexport * from '@ng-nest/ui/core';\r\n\r\n/**\r\n * Basic\r\n */\r\nexport * from '@ng-nest/ui/button';\r\nexport * from '@ng-nest/ui/color';\r\nexport * from '@ng-nest/ui/container';\r\nexport * from '@ng-nest/ui/layout';\r\nexport * from '@ng-nest/ui/icon';\r\nexport * from '@ng-nest/ui/i18n';\r\nexport * from '@ng-nest/ui/link';\r\nexport * from '@ng-nest/ui/theme';\r\n\r\n/**\r\n * Data\r\n */\r\nexport * from '@ng-nest/ui/avatar';\r\nexport * from '@ng-nest/ui/badge';\r\nexport * from '@ng-nest/ui/card';\r\nexport * from '@ng-nest/ui/carousel';\r\nexport * from '@ng-nest/ui/collapse';\r\nexport * from '@ng-nest/ui/calendar';\r\nexport * from '@ng-nest/ui/comment';\r\nexport * from '@ng-nest/ui/description';\r\nexport * from '@ng-nest/ui/empty';\r\nexport * from '@ng-nest/ui/image';\r\nexport * from '@ng-nest/ui/outlet';\r\nexport * from '@ng-nest/ui/pagination';\r\nexport * from '@ng-nest/ui/progress';\r\nexport * from '@ng-nest/ui/ripple';\r\nexport * from '@ng-nest/ui/resizable';\r\nexport * from '@ng-nest/ui/drag';\r\nexport * from '@ng-nest/ui/statistic';\r\nexport * from '@ng-nest/ui/table';\r\nexport * from '@ng-nest/ui/table-view';\r\nexport * from '@ng-nest/ui/tag';\r\nexport * from '@ng-nest/ui/text-retract';\r\nexport * from '@ng-nest/ui/time-ago';\r\nexport * from '@ng-nest/ui/time-range';\r\nexport * from '@ng-nest/ui/timeline';\r\nexport * from '@ng-nest/ui/tree';\r\nexport * from '@ng-nest/ui/tree-file';\r\nexport * from '@ng-nest/ui/keyword';\r\n\r\n/**\r\n * Feedback\r\n */\r\nexport * from '@ng-nest/ui/alert';\r\nexport * from '@ng-nest/ui/dialog';\r\nexport * from '@ng-nest/ui/drawer';\r\nexport * from '@ng-nest/ui/loading';\r\nexport * from '@ng-nest/ui/message';\r\nexport * from '@ng-nest/ui/message-box';\r\nexport * from '@ng-nest/ui/notification';\r\nexport * from '@ng-nest/ui/popconfirm';\r\nexport * from '@ng-nest/ui/popover';\r\nexport * from '@ng-nest/ui/result';\r\nexport * from '@ng-nest/ui/skeleton';\r\nexport * from '@ng-nest/ui/tooltip';\r\n\r\n/**\r\n * Form\r\n */\r\nexport * from '@ng-nest/ui/auto-complete';\r\nexport * from '@ng-nest/ui/base-form';\r\nexport * from '@ng-nest/ui/cascade';\r\nexport * from '@ng-nest/ui/checkbox';\r\nexport * from '@ng-nest/ui/color-picker';\r\nexport * from '@ng-nest/ui/date-picker';\r\nexport * from '@ng-nest/ui/form';\r\nexport * from '@ng-nest/ui/find';\r\nexport * from '@ng-nest/ui/input';\r\nexport * from '@ng-nest/ui/input-number';\r\nexport * from '@ng-nest/ui/list';\r\nexport * from '@ng-nest/ui/radio';\r\nexport * from '@ng-nest/ui/rate';\r\nexport * from '@ng-nest/ui/select';\r\nexport * from '@ng-nest/ui/slider-select';\r\nexport * from '@ng-nest/ui/switch';\r\nexport * from '@ng-nest/ui/time-picker';\r\nexport * from '@ng-nest/ui/transfer';\r\nexport * from '@ng-nest/ui/tree-select';\r\nexport * from '@ng-nest/ui/textarea';\r\nexport * from '@ng-nest/ui/upload';\r\n\r\n/**\r\n * Navigation\r\n */\r\nexport * from '@ng-nest/ui/affix';\r\nexport * from '@ng-nest/ui/anchor';\r\nexport * from '@ng-nest/ui/back-top';\r\nexport * from '@ng-nest/ui/crumb';\r\nexport * from '@ng-nest/ui/contextmenu';\r\nexport * from '@ng-nest/ui/dropdown';\r\nexport * from '@ng-nest/ui/menu';\r\nexport * from '@ng-nest/ui/page-header';\r\nexport * from '@ng-nest/ui/steps';\r\nexport * from '@ng-nest/ui/tabs';\r\n\r\n/**\r\n * AI\r\n */\r\nexport * from '@ng-nest/ui/bubble';\r\nexport * from '@ng-nest/ui/sender';\r\nexport * from '@ng-nest/ui/coversations';\r\nexport * from '@ng-nest/ui/welcome';\r\nexport * from '@ng-nest/ui/prompts';\r\nexport * from '@ng-nest/ui/attachments';\r\nexport * from '@ng-nest/ui/suggestion';\r\nexport * from '@ng-nest/ui/thought-chain';\r\n\r\n/**\r\n * Others\r\n */\r\nexport * from '@ng-nest/ui/doc';\r\nexport * from '@ng-nest/ui/divider';\r\nexport * from '@ng-nest/ui/examples';\r\nexport * from '@ng-nest/ui/api';\r\nexport * from '@ng-nest/ui/pattern';\r\nexport * from '@ng-nest/ui/slider';\r\nexport * from '@ng-nest/ui/scrollable';\r\nexport * from '@ng-nest/ui/highlight';\r\nexport * from '@ng-nest/ui/inner';\r\nexport * from '@ng-nest/ui/watermark';\r\nexport * from '@ng-nest/ui/splitter';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;;AAEG;;ACFH;;AAEG"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ng-nest/ui",
3
- "version": "21.0.10",
3
+ "version": "21.0.12",
4
4
  "license": "MIT",
5
5
  "homepage": "https://www.ngnest.com",
6
6
  "author": "ng-nest",
@@ -120,6 +120,10 @@
120
120
  "types": "./types/ng-nest-ui-container.d.ts",
121
121
  "default": "./fesm2022/ng-nest-ui-container.mjs"
122
122
  },
123
+ "./contextmenu": {
124
+ "types": "./types/ng-nest-ui-contextmenu.d.ts",
125
+ "default": "./fesm2022/ng-nest-ui-contextmenu.mjs"
126
+ },
123
127
  "./core": {
124
128
  "types": "./types/ng-nest-ui-core.d.ts",
125
129
  "default": "./fesm2022/ng-nest-ui-core.mjs"
@@ -144,6 +148,10 @@
144
148
  "types": "./types/ng-nest-ui-dialog.d.ts",
145
149
  "default": "./fesm2022/ng-nest-ui-dialog.mjs"
146
150
  },
151
+ "./divider": {
152
+ "types": "./types/ng-nest-ui-divider.d.ts",
153
+ "default": "./fesm2022/ng-nest-ui-divider.mjs"
154
+ },
147
155
  "./doc": {
148
156
  "types": "./types/ng-nest-ui-doc.d.ts",
149
157
  "default": "./fesm2022/ng-nest-ui-doc.mjs"
@@ -320,6 +328,10 @@
320
328
  "types": "./types/ng-nest-ui-slider-select.d.ts",
321
329
  "default": "./fesm2022/ng-nest-ui-slider-select.mjs"
322
330
  },
331
+ "./splitter": {
332
+ "types": "./types/ng-nest-ui-splitter.d.ts",
333
+ "default": "./fesm2022/ng-nest-ui-splitter.mjs"
334
+ },
323
335
  "./statistic": {
324
336
  "types": "./types/ng-nest-ui-statistic.d.ts",
325
337
  "default": "./fesm2022/ng-nest-ui-statistic.mjs"
@@ -412,6 +424,10 @@
412
424
  "types": "./types/ng-nest-ui-upload.d.ts",
413
425
  "default": "./fesm2022/ng-nest-ui-upload.mjs"
414
426
  },
427
+ "./watermark": {
428
+ "types": "./types/ng-nest-ui-watermark.d.ts",
429
+ "default": "./fesm2022/ng-nest-ui-watermark.mjs"
430
+ },
415
431
  "./welcome": {
416
432
  "types": "./types/ng-nest-ui-welcome.d.ts",
417
433
  "default": "./fesm2022/ng-nest-ui-welcome.mjs"
@@ -18,19 +18,18 @@ declare const XAttachmentsProperty_base: new () => {
18
18
  invalidPattern: _angular_core.Signal<boolean>;
19
19
  requiredIsEmpty: _angular_core.Signal<boolean>;
20
20
  invalidMessage: _angular_core.Signal<string>;
21
- invalidIndex: _angular_core.Signal<number>;
22
21
  value: _angular_core.WritableSignal<any>;
23
22
  valueObservable: rxjs.Observable<any>;
24
23
  validatorSignal: _angular_core.WritableSignal<boolean>;
25
24
  disabledSignal: _angular_core.WritableSignal<boolean>;
26
25
  requiredSignal: _angular_core.WritableSignal<boolean>;
27
26
  patternSignal: _angular_core.WritableSignal<any>;
28
- messageSignal: _angular_core.WritableSignal<string | string[]>;
27
+ messageSignal: _angular_core.WritableSignal<string>;
29
28
  requiredComputed: _angular_core.Signal<boolean>;
30
29
  disabledComputed: _angular_core.Signal<boolean>;
31
30
  validatorComputed: _angular_core.Signal<boolean>;
32
31
  patternComputed: _angular_core.Signal<any>;
33
- messageComputed: _angular_core.Signal<string | string[]>;
32
+ messageComputed: _angular_core.Signal<string>;
34
33
  invalidInputValidator: _angular_core.WritableSignal<boolean>;
35
34
  onChange: (value: any) => void;
36
35
  onTouched: () => void;
@@ -55,8 +54,8 @@ declare const XAttachmentsProperty_base: new () => {
55
54
  readonly valueTplContext: _angular_core.InputSignal<unknown>;
56
55
  readonly before: _angular_core.InputSignal<XTemplate | undefined>;
57
56
  readonly after: _angular_core.InputSignal<XTemplate | undefined>;
58
- readonly pattern: _angular_core.InputSignal<RegExp | RegExp[]>;
59
- readonly message: _angular_core.InputSignal<string | string[]>;
57
+ readonly pattern: _angular_core.InputSignal<RegExp | null>;
58
+ readonly message: _angular_core.InputSignal<string>;
60
59
  readonly active: _angular_core.ModelSignal<boolean>;
61
60
  readonly pointer: _angular_core.InputSignalWithTransform<boolean, XBoolean>;
62
61
  readonly inputValidator: _angular_core.InputSignal<((value: any) => boolean) | undefined>;