@nexterajs/ui 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +16 -0
  3. package/README.md +64 -0
  4. package/fesm2022/nexterajs-ui-animations.mjs +184 -0
  5. package/fesm2022/nexterajs-ui-animations.mjs.map +1 -0
  6. package/fesm2022/nexterajs-ui-core.mjs +326 -0
  7. package/fesm2022/nexterajs-ui-core.mjs.map +1 -0
  8. package/fesm2022/nexterajs-ui-dropdowns.mjs +953 -0
  9. package/fesm2022/nexterajs-ui-dropdowns.mjs.map +1 -0
  10. package/fesm2022/nexterajs-ui-excel.mjs +779 -0
  11. package/fesm2022/nexterajs-ui-excel.mjs.map +1 -0
  12. package/fesm2022/nexterajs-ui-file-uploader.mjs +125 -0
  13. package/fesm2022/nexterajs-ui-file-uploader.mjs.map +1 -0
  14. package/fesm2022/nexterajs-ui-forms.mjs +1113 -0
  15. package/fesm2022/nexterajs-ui-forms.mjs.map +1 -0
  16. package/fesm2022/nexterajs-ui-grid.mjs +4145 -0
  17. package/fesm2022/nexterajs-ui-grid.mjs.map +1 -0
  18. package/fesm2022/nexterajs-ui-intl.mjs +377 -0
  19. package/fesm2022/nexterajs-ui-intl.mjs.map +1 -0
  20. package/fesm2022/nexterajs-ui-pivot.mjs +4739 -0
  21. package/fesm2022/nexterajs-ui-pivot.mjs.map +1 -0
  22. package/fesm2022/nexterajs-ui-styling.mjs +59 -0
  23. package/fesm2022/nexterajs-ui-styling.mjs.map +1 -0
  24. package/fesm2022/nexterajs-ui-tree-view.mjs +202 -0
  25. package/fesm2022/nexterajs-ui-tree-view.mjs.map +1 -0
  26. package/fesm2022/nexterajs-ui-validation.mjs +269 -0
  27. package/fesm2022/nexterajs-ui-validation.mjs.map +1 -0
  28. package/fesm2022/nexterajs-ui.mjs +23 -0
  29. package/fesm2022/nexterajs-ui.mjs.map +1 -0
  30. package/package.json +100 -0
  31. package/styles/_button-directives.scss +39 -0
  32. package/styles/_dropdown.scss +113 -0
  33. package/styles/_editor.scss +146 -0
  34. package/styles/_mixins.scss +2 -0
  35. package/styles/_tokens.scss +77 -0
  36. package/styles/_widget.scss +58 -0
  37. package/styles/index.scss +83 -0
  38. package/types/nexterajs-ui-animations.d.ts +22 -0
  39. package/types/nexterajs-ui-core.d.ts +328 -0
  40. package/types/nexterajs-ui-dropdowns.d.ts +334 -0
  41. package/types/nexterajs-ui-excel.d.ts +159 -0
  42. package/types/nexterajs-ui-file-uploader.d.ts +47 -0
  43. package/types/nexterajs-ui-forms.d.ts +296 -0
  44. package/types/nexterajs-ui-grid.d.ts +1485 -0
  45. package/types/nexterajs-ui-intl.d.ts +125 -0
  46. package/types/nexterajs-ui-pivot.d.ts +1470 -0
  47. package/types/nexterajs-ui-styling.d.ts +40 -0
  48. package/types/nexterajs-ui-tree-view.d.ts +69 -0
  49. package/types/nexterajs-ui-validation.d.ts +102 -0
  50. package/types/nexterajs-ui.d.ts +12 -0
@@ -0,0 +1,296 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnDestroy } from '@angular/core';
3
+ import { NxeValidationResult, NxeFormControlBase } from '@nexterajs/ui/core';
4
+ import { DateTime } from 'luxon';
5
+ import { NxeCalendarZoom, NxePeriodCell } from '@nexterajs/ui/intl';
6
+
7
+ /** DevExtreme button `type` (style intent), as used in this codebase. */
8
+ type NxeButtonType = 'normal' | 'default' | 'success' | 'danger';
9
+ /**
10
+ * The `validationGroup` object carried on a {@link NxeButtonClickEvent}, mirroring the
11
+ * DevExtreme button-click `event.validationGroup`. Its `validate()` runs every member of the
12
+ * button's named group through the {@link NxeValidationGroupRegistry} and returns the
13
+ * DevExtreme-shaped result — so `const r = event.validationGroup.validate(); if (r.isValid) {...}`
14
+ * keeps working after the tag rename.
15
+ */
16
+ interface NxeButtonValidationGroup {
17
+ validate(): NxeValidationResult;
18
+ }
19
+ /**
20
+ * Payload emitted from `nxe-button`'s `onClick`, mirroring DevExtreme's button click event.
21
+ * Only `validationGroup` is read by existing handlers; `event`/`component`/`element` are
22
+ * provided for parity.
23
+ */
24
+ interface NxeButtonClickEvent {
25
+ event: Event;
26
+ validationGroup: NxeButtonValidationGroup;
27
+ component: NxeButtonComponent;
28
+ element: HTMLElement;
29
+ }
30
+ /**
31
+ * `nxe-button` — drop-in replacement for DevExtreme `dx-button`.
32
+ *
33
+ * The host element IS the button (mirrors DevExtreme's `dx-button` DOM: the host carries the
34
+ * styling classes and contains a single `.dx-button-content` child). This keeps every existing
35
+ * `.nxe-btn*` / `.dx-button-content` global rule matching verbatim, and — critically — keeps the
36
+ * shared `buttonLoading` directive working, which swaps `.dx-button-content` innerHTML for a
37
+ * spinner (`getElementsByClassName('dx-button-content')[0]`).
38
+ *
39
+ * Content is projected (`<nxe-icon> + <span>`, the dominant pattern). The legacy `text`/`type`
40
+ * inputs render a `.dx-button-text` label for the ~25 attribute-styled buttons.
41
+ *
42
+ * `onClick` emits {@link NxeButtonClickEvent}; native `(click)` also fires (27 sites bind it).
43
+ */
44
+ declare class NxeButtonComponent {
45
+ private readonly registry;
46
+ private readonly elementRef;
47
+ /** Legacy `text` label (rendered as `.dx-button-text` when set, no projected content). */
48
+ readonly text: _angular_core.InputSignal<string>;
49
+ /** Style intent (`default`=blue, `success`=green, `danger`=red, `normal`=white). */
50
+ readonly type: _angular_core.InputSignal<NxeButtonType>;
51
+ /** Disabled state (`[disabled]`); blocks `onClick` and dims the button. */
52
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
53
+ /** Named validation group resolved via {@link NxeValidationGroupRegistry} on click. */
54
+ readonly validationGroup: _angular_core.InputSignal<string>;
55
+ /** DevExtreme parity input; only ever `false` in this codebase (suppresses tab focus). */
56
+ readonly focusStateEnabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
57
+ /**
58
+ * dx `icon` — renders `<i class="dx-icon dx-icon-NAME">` as the first child of
59
+ * `.dx-button-content`, before any projected content. Projection is the dominant pattern
60
+ * here (a `mat-icon` plus a `span`), so the two must coexist rather than compete.
61
+ */
62
+ readonly icon: _angular_core.InputSignal<string>;
63
+ /** dx `height` — a bare number (or numeric string) means px; anything else passes through. */
64
+ readonly height: _angular_core.InputSignal<string | number>;
65
+ /** dx `width` — same coercion as {@link height}. */
66
+ readonly width: _angular_core.InputSignal<string | number>;
67
+ protected readonly heightStyle: _angular_core.Signal<string>;
68
+ protected readonly widthStyle: _angular_core.Signal<string>;
69
+ /** DevExtreme-compatible click event. */
70
+ readonly onClick: _angular_core.OutputEmitterRef<NxeButtonClickEvent>;
71
+ protected handleKeydown(event: KeyboardEvent): void;
72
+ protected handleClick(event: Event): void;
73
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeButtonComponent, never>;
74
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeButtonComponent, "nxe-button", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; "type": { "alias": "type"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "validationGroup": { "alias": "validationGroup"; "required": false; "isSignal": true; }; "focusStateEnabled": { "alias": "focusStateEnabled"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "width": { "alias": "width"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; }, never, ["*"], true, never>;
75
+ }
76
+
77
+ /** Text-box input mode (only `text`/`password` are used in this codebase). */
78
+ type NxeTextBoxMode = 'text' | 'password' | 'email' | 'tel' | 'search';
79
+ /**
80
+ * `nxe-text-box` — drop-in replacement for DevExtreme `dx-text-box`.
81
+ *
82
+ * A signal-CVA editor (extends {@link NxeFormControlBase}) supporting `formControlName`,
83
+ * `[(ngModel)]`, one-way `[value]`, and `[readOnly]`. Like DevExtreme's default
84
+ * (`valueChangeEvent='change'`), the value commits on **blur** — not on every keystroke.
85
+ *
86
+ * It provides {@link NXE_VALIDATION_TARGET} so a projected `nxe-validator` can read its value
87
+ * and push back the invalid message, which renders as the red `.nxe-invalid-message` bubble.
88
+ */
89
+ declare class NxeTextBoxComponent extends NxeFormControlBase<string> {
90
+ readonly mode: _angular_core.InputSignal<NxeTextBoxMode>;
91
+ readonly placeholderInput: _angular_core.InputSignal<string>;
92
+ readonly placeholder: _angular_core.Signal<string>;
93
+ /** DevExtreme parity input; cosmetic, unused in behaviour. */
94
+ readonly hoverStateEnabledInput: _angular_core.InputSignalWithTransform<boolean, unknown>;
95
+ readonly hoverStateEnabled: _angular_core.Signal<boolean>;
96
+ readonly focused: _angular_core.WritableSignal<boolean>;
97
+ readonly displayValue: _angular_core.Signal<string>;
98
+ protected onBlur(event: Event): void;
99
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeTextBoxComponent, never>;
100
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeTextBoxComponent, "nxe-text-box", never, { "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "hoverStateEnabledInput": { "alias": "hoverStateEnabled"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
101
+ }
102
+
103
+ /**
104
+ * `nxe-text-area` — drop-in replacement for DevExtreme `dx-text-area`.
105
+ *
106
+ * Identical to {@link NxeTextBoxComponent} but renders a `<textarea>`. Supports an optional fixed
107
+ * `[height]` (px) and `placeholder`; commits on blur. Hosts a projected `nxe-validator` via
108
+ * {@link NXE_VALIDATION_TARGET}.
109
+ */
110
+ declare class NxeTextAreaComponent extends NxeFormControlBase<string> {
111
+ readonly placeholderInput: _angular_core.InputSignal<string>;
112
+ readonly placeholder: _angular_core.Signal<string>;
113
+ /** Fixed height in px (DevExtreme `[height]`); unset = auto. */
114
+ readonly heightInput: _angular_core.InputSignal<number>;
115
+ readonly height: _angular_core.Signal<string | number>;
116
+ readonly focused: _angular_core.WritableSignal<boolean>;
117
+ readonly displayValue: _angular_core.Signal<string>;
118
+ protected onBlur(event: Event): void;
119
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeTextAreaComponent, never>;
120
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeTextAreaComponent, "nxe-text-area", never, { "placeholderInput": { "alias": "placeholder"; "required": false; "isSignal": true; }; "heightInput": { "alias": "height"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
121
+ }
122
+
123
+ /**
124
+ * `nxe-check-box` — drop-in replacement for DevExtreme `dx-check-box`.
125
+ *
126
+ * A boolean signal-CVA editor (extends {@link NxeFormControlBase}) — no tri-state, matching all
127
+ * usage. Supports `formControlName`/`[(ngModel)]`/`[(value)]`/`[value]`, `[readOnly]`,
128
+ * `[disabled]`, an inline `text` label, `(onValueChanged)` (`{value}`) and `(valueChange)` (raw
129
+ * boolean). Provides {@link NXE_VALIDATION_TARGET} for a projected `nxe-validator` (a `required`
130
+ * rule is invalid while unchecked, matching DevExtreme's RequiredRule treating `false` as empty).
131
+ */
132
+ declare class NxeCheckBoxComponent extends NxeFormControlBase<boolean> {
133
+ /** Inline label rendered next to the box. */
134
+ readonly text: _angular_core.InputSignal<string>;
135
+ protected toggle(event: Event): void;
136
+ protected onSpace(event: Event): void;
137
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeCheckBoxComponent, never>;
138
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeCheckBoxComponent, "nxe-check-box", never, { "text": { "alias": "text"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
139
+ }
140
+
141
+ /**
142
+ * `nxe-number-box` — drop-in replacement for DevExtreme `dx-number-box`.
143
+ *
144
+ * A numeric signal-CVA editor (extends {@link NxeFormControlBase}) storing/emitting `number | null`.
145
+ * Implements the DevExtreme number-format engine ({@link parseNumberFormat}/{@link formatNumber}):
146
+ * displays the masked, grouped string when blurred and a raw editable number while focused;
147
+ * commits (clamped to `[min,max]`, rounded to the format precision) on blur — never per keystroke.
148
+ *
149
+ * Supports `formControlName`/`[(ngModel)]`/`[(value)]`/`[value]`, `[readOnly]`, `[min]`/`[max]`,
150
+ * `format` (string LDML pattern), `(valueChange)` (numeric), and a projected `nxe-validator`.
151
+ */
152
+ declare class NxeNumberBoxComponent extends NxeFormControlBase<number> {
153
+ /** LDML format pattern (e.g. `#,##0.00`); empty = raw number. */
154
+ readonly formatInput: _angular_core.InputSignal<string>;
155
+ readonly format: _angular_core.Signal<string>;
156
+ readonly min: _angular_core.InputSignalWithTransform<number, unknown>;
157
+ readonly max: _angular_core.InputSignalWithTransform<number, unknown>;
158
+ readonly focused: _angular_core.WritableSignal<boolean>;
159
+ private readonly parsedFormat;
160
+ /** Locale characters, configured once by the application. Defaults to en-US. */
161
+ private readonly separators;
162
+ readonly displayValue: _angular_core.Signal<string>;
163
+ protected onBlur(event: Event): void;
164
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeNumberBoxComponent, never>;
165
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeNumberBoxComponent, "nxe-number-box", never, { "formatInput": { "alias": "format"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
166
+ }
167
+
168
+ /** DevExtreme date-box `type`. */
169
+ type NxeDateBoxType = 'date' | 'datetime' | 'time';
170
+ /**
171
+ * `nxe-date-box` — drop-in replacement for DevExtreme `dx-date-box`.
172
+ *
173
+ * A signal-CVA editor (extends {@link NxeFormControlBase}) whose value is the app-wide
174
+ * `"yyyy-MM-ddTHH:mm:ss"` string (preserving the global `dateSerializationFormat`). The field is
175
+ * typeable (parsed on blur per `displayFormat`) and opens a CDK-overlay calendar from the icon
176
+ * button. Built on Luxon. Default `displayFormat` is `dd-MMM-yyyy`. Hosts a projected
177
+ * `nxe-validator` via {@link NXE_VALIDATION_TARGET}.
178
+ */
179
+ declare class NxeDateBoxComponent extends NxeFormControlBase<string> implements OnDestroy {
180
+ private readonly overlay;
181
+ private readonly viewContainerRef;
182
+ private readonly calendarTemplate;
183
+ private readonly fieldRef;
184
+ readonly type: _angular_core.InputSignal<NxeDateBoxType>;
185
+ readonly displayFormat: _angular_core.InputSignal<string>;
186
+ readonly placeholder: _angular_core.InputSignal<string>;
187
+ /** DevExtreme `[min]`/`[max]` bounds: calendar days outside are disabled, typed values clamp. */
188
+ readonly min: _angular_core.InputSignal<string | Date>;
189
+ readonly max: _angular_core.InputSignal<string | Date>;
190
+ readonly focused: _angular_core.WritableSignal<boolean>;
191
+ readonly opened: _angular_core.WritableSignal<boolean>;
192
+ readonly viewMonth: _angular_core.WritableSignal<DateTime<boolean>>;
193
+ /** Calendar zoom level; caption clicks zoom out, cell picks zoom back in (dx-calendar parity). */
194
+ readonly zoomLevel: _angular_core.WritableSignal<NxeCalendarZoom>;
195
+ readonly weekdays: readonly ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"];
196
+ /** The format actually used, from `displayFormat` or the default for this `type`. */
197
+ readonly effectiveDisplayFormat: _angular_core.Signal<string>;
198
+ /** dx's default placeholder is '', but orbit's global default is the format itself. */
199
+ readonly effectivePlaceholder: _angular_core.Signal<string>;
200
+ private readonly selected;
201
+ readonly displayValue: _angular_core.Signal<string>;
202
+ readonly weeks: _angular_core.Signal<DateTime<boolean>[][]>;
203
+ /** Two-digit hour/minute for the popup's time strip; blank when nothing is selected. */
204
+ readonly hourText: _angular_core.Signal<string>;
205
+ readonly minuteText: _angular_core.Signal<string>;
206
+ /**
207
+ * The field's text as it stood when focus arrived. `onBlur` compares against it and commits
208
+ * nothing when the user only tabbed through — see the comment there.
209
+ */
210
+ private textAtFocus;
211
+ readonly caption: _angular_core.Signal<string>;
212
+ readonly periodCells: _angular_core.Signal<{
213
+ isNow: boolean;
214
+ disabled: boolean;
215
+ anchor: DateTime;
216
+ label: string;
217
+ other: boolean;
218
+ }[]>;
219
+ private readonly minDate;
220
+ private readonly maxDate;
221
+ protected isDisabledDay(day: DateTime): boolean;
222
+ private clampToBounds;
223
+ private overlayRef?;
224
+ private closeSub?;
225
+ private flipSub?;
226
+ protected isSelected(day: DateTime): boolean;
227
+ protected isToday(day: DateTime): boolean;
228
+ protected navigate(delta: number): void;
229
+ protected zoomOut(): void;
230
+ protected selectPeriod(cell: NxePeriodCell & {
231
+ disabled: boolean;
232
+ }): void;
233
+ protected onButtonMousedown(event: Event): void;
234
+ protected onFocus(event: Event): void;
235
+ /**
236
+ * Commit what the user TYPED — and nothing when they typed nothing.
237
+ *
238
+ * The unchanged-text guard is load-bearing, not an optimization. `displayFormat` renders a
239
+ * strict subset of the stored value: `dd-MMM-yyyy` shows `2026-08-12T09:00:00` as `12-Aug-2026`,
240
+ * and re-parsing that yields midnight. This method used to commit unconditionally, so simply
241
+ * focusing and tabbing past a field rewrote 09:00 to 00:00 and 09:30:45 to 09:30:00 — silently,
242
+ * because `commitValue` only no-ops on an identical string and these differ. Latent while
243
+ * nothing rendered a time; straight data loss the moment `type="datetime"` exists.
244
+ *
245
+ * A rejected entry keeps the previous value and repaints the field. The repaint is required:
246
+ * `[value]` is still bound to the same `displayValue()` Angular last wrote, so it will not
247
+ * re-render on its own and the unparseable text would sit there looking accepted.
248
+ */
249
+ protected onBlur(event: Event): void;
250
+ /**
251
+ * Repaint the field from the committed value and re-baseline {@link textAtFocus}.
252
+ *
253
+ * Called after every non-typed commit as well, so a later blur cannot replay stale typed text
254
+ * over a value the popup has since changed.
255
+ */
256
+ private syncField;
257
+ protected selectDay(day: DateTime): void;
258
+ /**
259
+ * Commit one part of the time from the popup strip.
260
+ *
261
+ * Writes straight through to the value rather than holding a draft: `selectDay` already commits
262
+ * immediately, the component keeps no other pending state, and a stray backdrop click must not
263
+ * discard a time the user has just set. dx buffers behind OK/Cancel; this is the divergence.
264
+ */
265
+ protected setTimePart(part: 'hour' | 'minute', event: Event): void;
266
+ protected setNow(): void;
267
+ private open;
268
+ /** Protected, not private: the time strip's Done button closes the popup from the template. */
269
+ protected close(): void;
270
+ ngOnDestroy(): void;
271
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeDateBoxComponent, never>;
272
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeDateBoxComponent, "nxe-date-box", never, { "type": { "alias": "type"; "required": false; "isSignal": true; }; "displayFormat": { "alias": "displayFormat"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
273
+ }
274
+
275
+ /**
276
+ * `nxe-scroll-view` — drop-in replacement for DevExtreme `dx-scroll-view`.
277
+ *
278
+ * In this app `dx-scroll-view` is used purely as a dumb scroll container: no `@ViewChild`, no
279
+ * `.instance` methods, no events (see survey). Every live tag is the same literal triple
280
+ * `[scrollByContent]="true" [scrollByThumb]="true" [showScrollbar]="'onScroll'"`. So this is a
281
+ * styled `overflow:auto` wrapper that projects its content inside a `.nxe-scrollview-content`
282
+ * flex-column box (matching dx's content layout, which some consumers' inner grids rely on for
283
+ * height) and renders a thin grey dx-style scrollbar. The three inputs are accepted for binding
284
+ * parity only — behaviour is native scrolling.
285
+ */
286
+ declare class NxeScrollViewComponent {
287
+ /** Accepted for parity with dx-scroll-view; behaviour is native overflow scrolling. */
288
+ readonly scrollByContent: _angular_core.InputSignal<boolean>;
289
+ readonly scrollByThumb: _angular_core.InputSignal<boolean>;
290
+ readonly showScrollbar: _angular_core.InputSignal<"onScroll" | "onHover" | "always" | "never">;
291
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<NxeScrollViewComponent, never>;
292
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<NxeScrollViewComponent, "nxe-scroll-view", never, { "scrollByContent": { "alias": "scrollByContent"; "required": false; "isSignal": true; }; "scrollByThumb": { "alias": "scrollByThumb"; "required": false; "isSignal": true; }; "showScrollbar": { "alias": "showScrollbar"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
293
+ }
294
+
295
+ export { NxeButtonComponent, NxeCheckBoxComponent, NxeDateBoxComponent, NxeNumberBoxComponent, NxeScrollViewComponent, NxeTextAreaComponent, NxeTextBoxComponent };
296
+ export type { NxeButtonClickEvent, NxeButtonType, NxeButtonValidationGroup, NxeDateBoxType, NxeTextBoxMode };