ux4g-components-angular 1.4.1 → 1.5.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/README.md +134 -0
- package/dist/accessibility-bar/README.md +134 -0
- package/dist/accordion/README.md +134 -0
- package/dist/alert/README.md +134 -0
- package/dist/avatar/README.md +134 -0
- package/dist/badge/README.md +134 -0
- package/dist/breadcrumb/README.md +134 -0
- package/dist/button/README.md +134 -0
- package/dist/card/README.md +134 -0
- package/dist/carousel/README.md +134 -0
- package/dist/checkbox/README.md +134 -0
- package/dist/chip/README.md +134 -0
- package/dist/chip-group/README.md +134 -0
- package/dist/combobox/README.md +134 -0
- package/dist/date-time-picker/README.md +134 -0
- package/dist/divider/README.md +134 -0
- package/dist/draft-status-banner/README.md +134 -0
- package/dist/drawer/README.md +134 -0
- package/dist/dropdown/README.md +134 -0
- package/dist/empty-state/README.md +134 -0
- package/dist/feedback/README.md +134 -0
- package/dist/file-upload/README.md +134 -0
- package/dist/footer/README.md +134 -0
- package/dist/form-field-group/README.md +134 -0
- package/dist/icon-button/README.md +134 -0
- package/dist/image/README.md +134 -0
- package/dist/input/README.md +134 -0
- package/dist/journey-timeline/README.md +134 -0
- package/dist/link/README.md +134 -0
- package/dist/list/README.md +134 -0
- package/dist/mega-menu/README.md +134 -0
- package/dist/modal/README.md +134 -0
- package/dist/native/accordion/README.md +1541 -0
- package/dist/native/accordion/fesm2022/ux4g-components-angular-native-accordion.mjs +85 -0
- package/dist/native/accordion/fesm2022/ux4g-components-angular-native-accordion.mjs.map +1 -0
- package/dist/native/accordion/index.d.ts +6 -0
- package/dist/native/accordion/public-api.d.ts +3 -0
- package/dist/native/accordion/public-api.d.ts.map +1 -0
- package/dist/native/accordion/ux4g-components-angular-native-accordion.d.ts.map +1 -0
- package/dist/native/accordion/ux4g-native-accordion.component.d.ts +31 -0
- package/dist/native/accordion/ux4g-native-accordion.component.d.ts.map +1 -0
- package/dist/native/accordion/ux4g-native-accordion.module.d.ts +12 -0
- package/dist/native/accordion/ux4g-native-accordion.module.d.ts.map +1 -0
- package/dist/native/avatar/README.md +1541 -0
- package/dist/native/avatar/fesm2022/ux4g-components-angular-native-avatar.mjs +81 -0
- package/dist/native/avatar/fesm2022/ux4g-components-angular-native-avatar.mjs.map +1 -0
- package/dist/native/avatar/index.d.ts +6 -0
- package/dist/native/avatar/public-api.d.ts +3 -0
- package/dist/native/avatar/public-api.d.ts.map +1 -0
- package/dist/native/avatar/ux4g-components-angular-native-avatar.d.ts.map +1 -0
- package/dist/native/avatar/ux4g-native-avatar.component.d.ts +34 -0
- package/dist/native/avatar/ux4g-native-avatar.component.d.ts.map +1 -0
- package/dist/native/avatar/ux4g-native-avatar.module.d.ts +8 -0
- package/dist/native/avatar/ux4g-native-avatar.module.d.ts.map +1 -0
- package/dist/native/carousel/README.md +1541 -0
- package/dist/native/carousel/fesm2022/ux4g-components-angular-native-carousel.mjs +91 -0
- package/dist/native/carousel/fesm2022/ux4g-components-angular-native-carousel.mjs.map +1 -0
- package/dist/native/carousel/index.d.ts +6 -0
- package/dist/native/carousel/public-api.d.ts +3 -0
- package/dist/native/carousel/public-api.d.ts.map +1 -0
- package/dist/native/carousel/ux4g-components-angular-native-carousel.d.ts.map +1 -0
- package/dist/native/carousel/ux4g-native-carousel.component.d.ts +34 -0
- package/dist/native/carousel/ux4g-native-carousel.component.d.ts.map +1 -0
- package/dist/native/carousel/ux4g-native-carousel.module.d.ts +8 -0
- package/dist/native/carousel/ux4g-native-carousel.module.d.ts.map +1 -0
- package/dist/native/chip/README.md +1541 -0
- package/dist/native/chip/fesm2022/ux4g-components-angular-native-chip.mjs +99 -0
- package/dist/native/chip/fesm2022/ux4g-components-angular-native-chip.mjs.map +1 -0
- package/dist/native/chip/index.d.ts +6 -0
- package/dist/native/chip/public-api.d.ts +3 -0
- package/dist/native/chip/public-api.d.ts.map +1 -0
- package/dist/native/chip/ux4g-components-angular-native-chip.d.ts.map +1 -0
- package/dist/native/chip/ux4g-native-chip.component.d.ts +34 -0
- package/dist/native/chip/ux4g-native-chip.component.d.ts.map +1 -0
- package/dist/native/chip/ux4g-native-chip.module.d.ts +8 -0
- package/dist/native/chip/ux4g-native-chip.module.d.ts.map +1 -0
- package/dist/native/combobox/README.md +1541 -0
- package/dist/native/combobox/fesm2022/ux4g-components-angular-native-combobox.mjs +107 -0
- package/dist/native/combobox/fesm2022/ux4g-components-angular-native-combobox.mjs.map +1 -0
- package/dist/native/combobox/index.d.ts +6 -0
- package/dist/native/combobox/public-api.d.ts +3 -0
- package/dist/native/combobox/public-api.d.ts.map +1 -0
- package/dist/native/combobox/ux4g-components-angular-native-combobox.d.ts.map +1 -0
- package/dist/native/combobox/ux4g-native-combobox.component.d.ts +30 -0
- package/dist/native/combobox/ux4g-native-combobox.component.d.ts.map +1 -0
- package/dist/native/combobox/ux4g-native-combobox.module.d.ts +8 -0
- package/dist/native/combobox/ux4g-native-combobox.module.d.ts.map +1 -0
- package/dist/native/date-picker/README.md +1541 -0
- package/dist/native/date-picker/fesm2022/ux4g-components-angular-native-date-picker.mjs +181 -0
- package/dist/native/date-picker/fesm2022/ux4g-components-angular-native-date-picker.mjs.map +1 -0
- package/dist/native/date-picker/index.d.ts +6 -0
- package/dist/native/date-picker/public-api.d.ts +3 -0
- package/dist/native/date-picker/public-api.d.ts.map +1 -0
- package/dist/native/date-picker/ux4g-components-angular-native-date-picker.d.ts.map +1 -0
- package/dist/native/date-picker/ux4g-native-date-picker.component.d.ts +39 -0
- package/dist/native/date-picker/ux4g-native-date-picker.component.d.ts.map +1 -0
- package/dist/native/date-picker/ux4g-native-date-picker.module.d.ts +12 -0
- package/dist/native/date-picker/ux4g-native-date-picker.module.d.ts.map +1 -0
- package/dist/native/drawer/README.md +1541 -0
- package/dist/native/drawer/fesm2022/ux4g-components-angular-native-drawer.mjs +159 -0
- package/dist/native/drawer/fesm2022/ux4g-components-angular-native-drawer.mjs.map +1 -0
- package/dist/native/drawer/index.d.ts +6 -0
- package/dist/native/drawer/public-api.d.ts +3 -0
- package/dist/native/drawer/public-api.d.ts.map +1 -0
- package/dist/native/drawer/ux4g-components-angular-native-drawer.d.ts.map +1 -0
- package/dist/native/drawer/ux4g-native-drawer.component.d.ts +37 -0
- package/dist/native/drawer/ux4g-native-drawer.component.d.ts.map +1 -0
- package/dist/native/drawer/ux4g-native-drawer.module.d.ts +12 -0
- package/dist/native/drawer/ux4g-native-drawer.module.d.ts.map +1 -0
- package/dist/native/dropdown/README.md +1541 -0
- package/dist/native/dropdown/fesm2022/ux4g-components-angular-native-dropdown.mjs +108 -0
- package/dist/native/dropdown/fesm2022/ux4g-components-angular-native-dropdown.mjs.map +1 -0
- package/dist/native/dropdown/index.d.ts +6 -0
- package/dist/native/dropdown/public-api.d.ts +3 -0
- package/dist/native/dropdown/public-api.d.ts.map +1 -0
- package/dist/native/dropdown/ux4g-components-angular-native-dropdown.d.ts.map +1 -0
- package/dist/native/dropdown/ux4g-native-dropdown.component.d.ts +32 -0
- package/dist/native/dropdown/ux4g-native-dropdown.component.d.ts.map +1 -0
- package/dist/native/dropdown/ux4g-native-dropdown.module.d.ts +8 -0
- package/dist/native/dropdown/ux4g-native-dropdown.module.d.ts.map +1 -0
- package/dist/native/file-upload/README.md +1541 -0
- package/dist/native/file-upload/fesm2022/ux4g-components-angular-native-file-upload.mjs +193 -0
- package/dist/native/file-upload/fesm2022/ux4g-components-angular-native-file-upload.mjs.map +1 -0
- package/dist/native/file-upload/index.d.ts +6 -0
- package/dist/native/file-upload/public-api.d.ts +3 -0
- package/dist/native/file-upload/public-api.d.ts.map +1 -0
- package/dist/native/file-upload/ux4g-components-angular-native-file-upload.d.ts.map +1 -0
- package/dist/native/file-upload/ux4g-native-file-upload.component.d.ts +40 -0
- package/dist/native/file-upload/ux4g-native-file-upload.component.d.ts.map +1 -0
- package/dist/native/file-upload/ux4g-native-file-upload.module.d.ts +8 -0
- package/dist/native/file-upload/ux4g-native-file-upload.module.d.ts.map +1 -0
- package/dist/native/modal/README.md +1541 -0
- package/dist/native/modal/fesm2022/ux4g-components-angular-native-modal.mjs +219 -0
- package/dist/native/modal/fesm2022/ux4g-components-angular-native-modal.mjs.map +1 -0
- package/dist/native/modal/index.d.ts +6 -0
- package/dist/native/modal/public-api.d.ts +3 -0
- package/dist/native/modal/public-api.d.ts.map +1 -0
- package/dist/native/modal/ux4g-components-angular-native-modal.d.ts.map +1 -0
- package/dist/native/modal/ux4g-native-modal.component.d.ts +42 -0
- package/dist/native/modal/ux4g-native-modal.component.d.ts.map +1 -0
- package/dist/native/modal/ux4g-native-modal.module.d.ts +12 -0
- package/dist/native/modal/ux4g-native-modal.module.d.ts.map +1 -0
- package/dist/native/otp/README.md +1541 -0
- package/dist/native/otp/fesm2022/ux4g-components-angular-native-otp.mjs +176 -0
- package/dist/native/otp/fesm2022/ux4g-components-angular-native-otp.mjs.map +1 -0
- package/dist/native/otp/index.d.ts +6 -0
- package/dist/native/otp/public-api.d.ts +3 -0
- package/dist/native/otp/public-api.d.ts.map +1 -0
- package/dist/native/otp/ux4g-components-angular-native-otp.d.ts.map +1 -0
- package/dist/native/otp/ux4g-native-otp.component.d.ts +32 -0
- package/dist/native/otp/ux4g-native-otp.component.d.ts.map +1 -0
- package/dist/native/otp/ux4g-native-otp.module.d.ts +8 -0
- package/dist/native/otp/ux4g-native-otp.module.d.ts.map +1 -0
- package/dist/native/popover/README.md +1541 -0
- package/dist/native/popover/fesm2022/ux4g-components-angular-native-popover.mjs +75 -0
- package/dist/native/popover/fesm2022/ux4g-components-angular-native-popover.mjs.map +1 -0
- package/dist/native/popover/index.d.ts +6 -0
- package/dist/native/popover/public-api.d.ts +3 -0
- package/dist/native/popover/public-api.d.ts.map +1 -0
- package/dist/native/popover/ux4g-components-angular-native-popover.d.ts.map +1 -0
- package/dist/native/popover/ux4g-native-popover.component.d.ts +29 -0
- package/dist/native/popover/ux4g-native-popover.component.d.ts.map +1 -0
- package/dist/native/popover/ux4g-native-popover.module.d.ts +8 -0
- package/dist/native/popover/ux4g-native-popover.module.d.ts.map +1 -0
- package/dist/native/progress/README.md +1541 -0
- package/dist/native/progress/fesm2022/ux4g-components-angular-native-progress.mjs +79 -0
- package/dist/native/progress/fesm2022/ux4g-components-angular-native-progress.mjs.map +1 -0
- package/dist/native/progress/index.d.ts +6 -0
- package/dist/native/progress/public-api.d.ts +3 -0
- package/dist/native/progress/public-api.d.ts.map +1 -0
- package/dist/native/progress/ux4g-components-angular-native-progress.d.ts.map +1 -0
- package/dist/native/progress/ux4g-native-progress.component.d.ts +29 -0
- package/dist/native/progress/ux4g-native-progress.component.d.ts.map +1 -0
- package/dist/native/progress/ux4g-native-progress.module.d.ts +8 -0
- package/dist/native/progress/ux4g-native-progress.module.d.ts.map +1 -0
- package/dist/native/search/README.md +1541 -0
- package/dist/native/search/fesm2022/ux4g-components-angular-native-search.mjs +148 -0
- package/dist/native/search/fesm2022/ux4g-components-angular-native-search.mjs.map +1 -0
- package/dist/native/search/index.d.ts +6 -0
- package/dist/native/search/public-api.d.ts +3 -0
- package/dist/native/search/public-api.d.ts.map +1 -0
- package/dist/native/search/ux4g-components-angular-native-search.d.ts.map +1 -0
- package/dist/native/search/ux4g-native-search.component.d.ts +46 -0
- package/dist/native/search/ux4g-native-search.component.d.ts.map +1 -0
- package/dist/native/search/ux4g-native-search.module.d.ts +8 -0
- package/dist/native/search/ux4g-native-search.module.d.ts.map +1 -0
- package/dist/native/shared/README.md +1541 -0
- package/dist/native/shared/base-native.component.d.ts +38 -0
- package/dist/native/shared/base-native.component.d.ts.map +1 -0
- package/dist/native/shared/fesm2022/ux4g-components-angular-native-shared.mjs +113 -0
- package/dist/native/shared/fesm2022/ux4g-components-angular-native-shared.mjs.map +1 -0
- package/dist/native/shared/index.d.ts +6 -0
- package/dist/native/shared/public-api.d.ts +3 -0
- package/dist/native/shared/public-api.d.ts.map +1 -0
- package/dist/native/shared/render-descriptor.d.ts +8 -0
- package/dist/native/shared/render-descriptor.d.ts.map +1 -0
- package/dist/native/shared/ux4g-components-angular-native-shared.d.ts.map +1 -0
- package/dist/native/stepper/README.md +1541 -0
- package/dist/native/stepper/fesm2022/ux4g-components-angular-native-stepper.mjs +92 -0
- package/dist/native/stepper/fesm2022/ux4g-components-angular-native-stepper.mjs.map +1 -0
- package/dist/native/stepper/index.d.ts +6 -0
- package/dist/native/stepper/public-api.d.ts +3 -0
- package/dist/native/stepper/public-api.d.ts.map +1 -0
- package/dist/native/stepper/ux4g-components-angular-native-stepper.d.ts.map +1 -0
- package/dist/native/stepper/ux4g-native-stepper.component.d.ts +35 -0
- package/dist/native/stepper/ux4g-native-stepper.component.d.ts.map +1 -0
- package/dist/native/stepper/ux4g-native-stepper.module.d.ts +8 -0
- package/dist/native/stepper/ux4g-native-stepper.module.d.ts.map +1 -0
- package/dist/native/table/README.md +1541 -0
- package/dist/native/table/fesm2022/ux4g-components-angular-native-table.mjs +91 -0
- package/dist/native/table/fesm2022/ux4g-components-angular-native-table.mjs.map +1 -0
- package/dist/native/table/index.d.ts +6 -0
- package/dist/native/table/public-api.d.ts +3 -0
- package/dist/native/table/public-api.d.ts.map +1 -0
- package/dist/native/table/ux4g-components-angular-native-table.d.ts.map +1 -0
- package/dist/native/table/ux4g-native-table.component.d.ts +32 -0
- package/dist/native/table/ux4g-native-table.component.d.ts.map +1 -0
- package/dist/native/table/ux4g-native-table.module.d.ts +12 -0
- package/dist/native/table/ux4g-native-table.module.d.ts.map +1 -0
- package/dist/native/tabs/README.md +1541 -0
- package/dist/native/tabs/fesm2022/ux4g-components-angular-native-tabs.mjs +190 -0
- package/dist/native/tabs/fesm2022/ux4g-components-angular-native-tabs.mjs.map +1 -0
- package/dist/native/tabs/index.d.ts +6 -0
- package/dist/native/tabs/public-api.d.ts +3 -0
- package/dist/native/tabs/public-api.d.ts.map +1 -0
- package/dist/native/tabs/ux4g-components-angular-native-tabs.d.ts.map +1 -0
- package/dist/native/tabs/ux4g-native-tabs.component.d.ts +43 -0
- package/dist/native/tabs/ux4g-native-tabs.component.d.ts.map +1 -0
- package/dist/native/tabs/ux4g-native-tabs.module.d.ts +12 -0
- package/dist/native/tabs/ux4g-native-tabs.module.d.ts.map +1 -0
- package/dist/native/time-picker/README.md +1541 -0
- package/dist/native/time-picker/fesm2022/ux4g-components-angular-native-time-picker.mjs +104 -0
- package/dist/native/time-picker/fesm2022/ux4g-components-angular-native-time-picker.mjs.map +1 -0
- package/dist/native/time-picker/index.d.ts +6 -0
- package/dist/native/time-picker/public-api.d.ts +3 -0
- package/dist/native/time-picker/public-api.d.ts.map +1 -0
- package/dist/native/time-picker/ux4g-components-angular-native-time-picker.d.ts.map +1 -0
- package/dist/native/time-picker/ux4g-native-time-picker.component.d.ts +27 -0
- package/dist/native/time-picker/ux4g-native-time-picker.component.d.ts.map +1 -0
- package/dist/native/time-picker/ux4g-native-time-picker.module.d.ts +8 -0
- package/dist/native/time-picker/ux4g-native-time-picker.module.d.ts.map +1 -0
- package/dist/native/tooltip/README.md +1541 -0
- package/dist/native/tooltip/fesm2022/ux4g-components-angular-native-tooltip.mjs +80 -0
- package/dist/native/tooltip/fesm2022/ux4g-components-angular-native-tooltip.mjs.map +1 -0
- package/dist/native/tooltip/index.d.ts +6 -0
- package/dist/native/tooltip/public-api.d.ts +3 -0
- package/dist/native/tooltip/public-api.d.ts.map +1 -0
- package/dist/native/tooltip/ux4g-components-angular-native-tooltip.d.ts.map +1 -0
- package/dist/native/tooltip/ux4g-native-tooltip.component.d.ts +31 -0
- package/dist/native/tooltip/ux4g-native-tooltip.component.d.ts.map +1 -0
- package/dist/native/tooltip/ux4g-native-tooltip.module.d.ts +8 -0
- package/dist/native/tooltip/ux4g-native-tooltip.module.d.ts.map +1 -0
- package/dist/navbar/README.md +134 -0
- package/dist/otp-input/README.md +134 -0
- package/dist/pagination/README.md +134 -0
- package/dist/popover/README.md +134 -0
- package/dist/progress-indicator/README.md +134 -0
- package/dist/radio/README.md +134 -0
- package/dist/result-list-row/README.md +134 -0
- package/dist/search/README.md +134 -0
- package/dist/sla-progress-indicator/README.md +134 -0
- package/dist/slider/README.md +134 -0
- package/dist/slot-grid/README.md +134 -0
- package/dist/social-links/README.md +134 -0
- package/dist/spinner/README.md +134 -0
- package/dist/status-pipeline/README.md +134 -0
- package/dist/stepper/README.md +134 -0
- package/dist/switch/README.md +134 -0
- package/dist/tab/README.md +134 -0
- package/dist/table/README.md +134 -0
- package/dist/tag/README.md +134 -0
- package/dist/tooltip/README.md +134 -0
- package/package.json +176 -3
|
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
|
|
|
1397
1397
|
|
|
1398
1398
|
---
|
|
1399
1399
|
|
|
1400
|
+
## Native Wrappers
|
|
1401
|
+
|
|
1402
|
+
In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
|
|
1403
|
+
|
|
1404
|
+
### Architecture Decision
|
|
1405
|
+
|
|
1406
|
+
> **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
|
|
1407
|
+
|
|
1408
|
+
- Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
|
|
1409
|
+
- Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
|
|
1410
|
+
- Both can coexist in the same application without conflicts
|
|
1411
|
+
|
|
1412
|
+
### Import Convention
|
|
1413
|
+
|
|
1414
|
+
```ts
|
|
1415
|
+
// Thin Wrapper (default — unchanged)
|
|
1416
|
+
import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
|
|
1417
|
+
|
|
1418
|
+
// Native Wrapper (opt-in)
|
|
1419
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
### Usage Example
|
|
1423
|
+
|
|
1424
|
+
```ts
|
|
1425
|
+
// app.component.ts
|
|
1426
|
+
import { Component } from '@angular/core';
|
|
1427
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1428
|
+
|
|
1429
|
+
@Component({
|
|
1430
|
+
selector: 'app-root',
|
|
1431
|
+
standalone: true,
|
|
1432
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1433
|
+
template: `
|
|
1434
|
+
<ux4g-native-dropdown
|
|
1435
|
+
[options]="options"
|
|
1436
|
+
[(ngModel)]="selected"
|
|
1437
|
+
placeholder="Select..."
|
|
1438
|
+
size="md"
|
|
1439
|
+
></ux4g-native-dropdown>
|
|
1440
|
+
`,
|
|
1441
|
+
})
|
|
1442
|
+
export class AppComponent {
|
|
1443
|
+
options = [
|
|
1444
|
+
{ label: 'Option 1', value: '1' },
|
|
1445
|
+
{ label: 'Option 2', value: '2' },
|
|
1446
|
+
{ label: 'Option 3', value: '3', disabled: true },
|
|
1447
|
+
];
|
|
1448
|
+
selected = '1';
|
|
1449
|
+
}
|
|
1450
|
+
```
|
|
1451
|
+
|
|
1452
|
+
Compare this to the thin wrapper approach, which requires manual HTML structure:
|
|
1453
|
+
|
|
1454
|
+
```html
|
|
1455
|
+
<!-- Thin wrapper — consumer provides all HTML structure -->
|
|
1456
|
+
<ux4g-dropdown type="selection" mode="single" size="md" state="default">
|
|
1457
|
+
<ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
|
|
1458
|
+
<ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
|
|
1459
|
+
<ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
|
|
1460
|
+
</ux4g-dropdown>
|
|
1461
|
+
```
|
|
1462
|
+
|
|
1463
|
+
### Available Native Wrapper Components (19)
|
|
1464
|
+
|
|
1465
|
+
| Import Path | Component |
|
|
1466
|
+
|---|---|
|
|
1467
|
+
| `ux4g-components-angular/native/dropdown` | Dropdown |
|
|
1468
|
+
| `ux4g-components-angular/native/accordion` | Accordion |
|
|
1469
|
+
| `ux4g-components-angular/native/tabs` | Tabs |
|
|
1470
|
+
| `ux4g-components-angular/native/modal` | Modal |
|
|
1471
|
+
| `ux4g-components-angular/native/carousel` | Carousel |
|
|
1472
|
+
| `ux4g-components-angular/native/date-picker` | Date Picker |
|
|
1473
|
+
| `ux4g-components-angular/native/time-picker` | Time Picker |
|
|
1474
|
+
| `ux4g-components-angular/native/drawer` | Drawer |
|
|
1475
|
+
| `ux4g-components-angular/native/combobox` | Combobox |
|
|
1476
|
+
| `ux4g-components-angular/native/search` | Search |
|
|
1477
|
+
| `ux4g-components-angular/native/otp` | OTP Input |
|
|
1478
|
+
| `ux4g-components-angular/native/progress` | Progress Indicator |
|
|
1479
|
+
| `ux4g-components-angular/native/file-upload` | File Upload |
|
|
1480
|
+
| `ux4g-components-angular/native/table` | Table |
|
|
1481
|
+
| `ux4g-components-angular/native/stepper` | Stepper |
|
|
1482
|
+
| `ux4g-components-angular/native/popover` | Popover |
|
|
1483
|
+
| `ux4g-components-angular/native/tooltip` | Tooltip |
|
|
1484
|
+
| `ux4g-components-angular/native/avatar` | Avatar |
|
|
1485
|
+
| `ux4g-components-angular/native/chip` | Chip |
|
|
1486
|
+
|
|
1487
|
+
### Key Differences from Thin Wrappers
|
|
1488
|
+
|
|
1489
|
+
| Feature | Thin Wrapper | Native Wrapper |
|
|
1490
|
+
|---|---|---|
|
|
1491
|
+
| DOM structure | Consumer provides HTML | Generated internally |
|
|
1492
|
+
| Data attributes | Consumer adds manually | Included automatically |
|
|
1493
|
+
| ARIA attributes | Consumer manages | Built-in |
|
|
1494
|
+
| Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
|
|
1495
|
+
| Angular Forms | N/A | `ControlValueAccessor` support |
|
|
1496
|
+
| Standalone | NgModule-based | `standalone: true` (NgModule also available) |
|
|
1497
|
+
|
|
1498
|
+
### Angular Forms Integration
|
|
1499
|
+
|
|
1500
|
+
Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
|
|
1501
|
+
|
|
1502
|
+
```html
|
|
1503
|
+
<!-- Template-driven -->
|
|
1504
|
+
<ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
|
|
1505
|
+
|
|
1506
|
+
<!-- Reactive forms -->
|
|
1507
|
+
<ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
|
|
1508
|
+
```
|
|
1509
|
+
|
|
1510
|
+
### Standalone and NgModule Support
|
|
1511
|
+
|
|
1512
|
+
Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
|
|
1513
|
+
|
|
1514
|
+
```ts
|
|
1515
|
+
// Standalone (Angular 17+)
|
|
1516
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1517
|
+
|
|
1518
|
+
@Component({
|
|
1519
|
+
standalone: true,
|
|
1520
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1521
|
+
// ...
|
|
1522
|
+
})
|
|
1523
|
+
|
|
1524
|
+
// NgModule (Angular 15–16)
|
|
1525
|
+
import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
|
|
1526
|
+
|
|
1527
|
+
@NgModule({
|
|
1528
|
+
imports: [UX4GNativeDropdownModule],
|
|
1529
|
+
})
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
---
|
|
1533
|
+
|
|
1400
1534
|
## Related Packages
|
|
1401
1535
|
|
|
1402
1536
|
- [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
|
package/dist/spinner/README.md
CHANGED
|
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
|
|
|
1397
1397
|
|
|
1398
1398
|
---
|
|
1399
1399
|
|
|
1400
|
+
## Native Wrappers
|
|
1401
|
+
|
|
1402
|
+
In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
|
|
1403
|
+
|
|
1404
|
+
### Architecture Decision
|
|
1405
|
+
|
|
1406
|
+
> **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
|
|
1407
|
+
|
|
1408
|
+
- Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
|
|
1409
|
+
- Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
|
|
1410
|
+
- Both can coexist in the same application without conflicts
|
|
1411
|
+
|
|
1412
|
+
### Import Convention
|
|
1413
|
+
|
|
1414
|
+
```ts
|
|
1415
|
+
// Thin Wrapper (default — unchanged)
|
|
1416
|
+
import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
|
|
1417
|
+
|
|
1418
|
+
// Native Wrapper (opt-in)
|
|
1419
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
### Usage Example
|
|
1423
|
+
|
|
1424
|
+
```ts
|
|
1425
|
+
// app.component.ts
|
|
1426
|
+
import { Component } from '@angular/core';
|
|
1427
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1428
|
+
|
|
1429
|
+
@Component({
|
|
1430
|
+
selector: 'app-root',
|
|
1431
|
+
standalone: true,
|
|
1432
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1433
|
+
template: `
|
|
1434
|
+
<ux4g-native-dropdown
|
|
1435
|
+
[options]="options"
|
|
1436
|
+
[(ngModel)]="selected"
|
|
1437
|
+
placeholder="Select..."
|
|
1438
|
+
size="md"
|
|
1439
|
+
></ux4g-native-dropdown>
|
|
1440
|
+
`,
|
|
1441
|
+
})
|
|
1442
|
+
export class AppComponent {
|
|
1443
|
+
options = [
|
|
1444
|
+
{ label: 'Option 1', value: '1' },
|
|
1445
|
+
{ label: 'Option 2', value: '2' },
|
|
1446
|
+
{ label: 'Option 3', value: '3', disabled: true },
|
|
1447
|
+
];
|
|
1448
|
+
selected = '1';
|
|
1449
|
+
}
|
|
1450
|
+
```
|
|
1451
|
+
|
|
1452
|
+
Compare this to the thin wrapper approach, which requires manual HTML structure:
|
|
1453
|
+
|
|
1454
|
+
```html
|
|
1455
|
+
<!-- Thin wrapper — consumer provides all HTML structure -->
|
|
1456
|
+
<ux4g-dropdown type="selection" mode="single" size="md" state="default">
|
|
1457
|
+
<ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
|
|
1458
|
+
<ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
|
|
1459
|
+
<ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
|
|
1460
|
+
</ux4g-dropdown>
|
|
1461
|
+
```
|
|
1462
|
+
|
|
1463
|
+
### Available Native Wrapper Components (19)
|
|
1464
|
+
|
|
1465
|
+
| Import Path | Component |
|
|
1466
|
+
|---|---|
|
|
1467
|
+
| `ux4g-components-angular/native/dropdown` | Dropdown |
|
|
1468
|
+
| `ux4g-components-angular/native/accordion` | Accordion |
|
|
1469
|
+
| `ux4g-components-angular/native/tabs` | Tabs |
|
|
1470
|
+
| `ux4g-components-angular/native/modal` | Modal |
|
|
1471
|
+
| `ux4g-components-angular/native/carousel` | Carousel |
|
|
1472
|
+
| `ux4g-components-angular/native/date-picker` | Date Picker |
|
|
1473
|
+
| `ux4g-components-angular/native/time-picker` | Time Picker |
|
|
1474
|
+
| `ux4g-components-angular/native/drawer` | Drawer |
|
|
1475
|
+
| `ux4g-components-angular/native/combobox` | Combobox |
|
|
1476
|
+
| `ux4g-components-angular/native/search` | Search |
|
|
1477
|
+
| `ux4g-components-angular/native/otp` | OTP Input |
|
|
1478
|
+
| `ux4g-components-angular/native/progress` | Progress Indicator |
|
|
1479
|
+
| `ux4g-components-angular/native/file-upload` | File Upload |
|
|
1480
|
+
| `ux4g-components-angular/native/table` | Table |
|
|
1481
|
+
| `ux4g-components-angular/native/stepper` | Stepper |
|
|
1482
|
+
| `ux4g-components-angular/native/popover` | Popover |
|
|
1483
|
+
| `ux4g-components-angular/native/tooltip` | Tooltip |
|
|
1484
|
+
| `ux4g-components-angular/native/avatar` | Avatar |
|
|
1485
|
+
| `ux4g-components-angular/native/chip` | Chip |
|
|
1486
|
+
|
|
1487
|
+
### Key Differences from Thin Wrappers
|
|
1488
|
+
|
|
1489
|
+
| Feature | Thin Wrapper | Native Wrapper |
|
|
1490
|
+
|---|---|---|
|
|
1491
|
+
| DOM structure | Consumer provides HTML | Generated internally |
|
|
1492
|
+
| Data attributes | Consumer adds manually | Included automatically |
|
|
1493
|
+
| ARIA attributes | Consumer manages | Built-in |
|
|
1494
|
+
| Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
|
|
1495
|
+
| Angular Forms | N/A | `ControlValueAccessor` support |
|
|
1496
|
+
| Standalone | NgModule-based | `standalone: true` (NgModule also available) |
|
|
1497
|
+
|
|
1498
|
+
### Angular Forms Integration
|
|
1499
|
+
|
|
1500
|
+
Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
|
|
1501
|
+
|
|
1502
|
+
```html
|
|
1503
|
+
<!-- Template-driven -->
|
|
1504
|
+
<ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
|
|
1505
|
+
|
|
1506
|
+
<!-- Reactive forms -->
|
|
1507
|
+
<ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
|
|
1508
|
+
```
|
|
1509
|
+
|
|
1510
|
+
### Standalone and NgModule Support
|
|
1511
|
+
|
|
1512
|
+
Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
|
|
1513
|
+
|
|
1514
|
+
```ts
|
|
1515
|
+
// Standalone (Angular 17+)
|
|
1516
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1517
|
+
|
|
1518
|
+
@Component({
|
|
1519
|
+
standalone: true,
|
|
1520
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1521
|
+
// ...
|
|
1522
|
+
})
|
|
1523
|
+
|
|
1524
|
+
// NgModule (Angular 15–16)
|
|
1525
|
+
import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
|
|
1526
|
+
|
|
1527
|
+
@NgModule({
|
|
1528
|
+
imports: [UX4GNativeDropdownModule],
|
|
1529
|
+
})
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
---
|
|
1533
|
+
|
|
1400
1534
|
## Related Packages
|
|
1401
1535
|
|
|
1402
1536
|
- [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
|
|
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
|
|
|
1397
1397
|
|
|
1398
1398
|
---
|
|
1399
1399
|
|
|
1400
|
+
## Native Wrappers
|
|
1401
|
+
|
|
1402
|
+
In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
|
|
1403
|
+
|
|
1404
|
+
### Architecture Decision
|
|
1405
|
+
|
|
1406
|
+
> **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
|
|
1407
|
+
|
|
1408
|
+
- Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
|
|
1409
|
+
- Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
|
|
1410
|
+
- Both can coexist in the same application without conflicts
|
|
1411
|
+
|
|
1412
|
+
### Import Convention
|
|
1413
|
+
|
|
1414
|
+
```ts
|
|
1415
|
+
// Thin Wrapper (default — unchanged)
|
|
1416
|
+
import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
|
|
1417
|
+
|
|
1418
|
+
// Native Wrapper (opt-in)
|
|
1419
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
### Usage Example
|
|
1423
|
+
|
|
1424
|
+
```ts
|
|
1425
|
+
// app.component.ts
|
|
1426
|
+
import { Component } from '@angular/core';
|
|
1427
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1428
|
+
|
|
1429
|
+
@Component({
|
|
1430
|
+
selector: 'app-root',
|
|
1431
|
+
standalone: true,
|
|
1432
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1433
|
+
template: `
|
|
1434
|
+
<ux4g-native-dropdown
|
|
1435
|
+
[options]="options"
|
|
1436
|
+
[(ngModel)]="selected"
|
|
1437
|
+
placeholder="Select..."
|
|
1438
|
+
size="md"
|
|
1439
|
+
></ux4g-native-dropdown>
|
|
1440
|
+
`,
|
|
1441
|
+
})
|
|
1442
|
+
export class AppComponent {
|
|
1443
|
+
options = [
|
|
1444
|
+
{ label: 'Option 1', value: '1' },
|
|
1445
|
+
{ label: 'Option 2', value: '2' },
|
|
1446
|
+
{ label: 'Option 3', value: '3', disabled: true },
|
|
1447
|
+
];
|
|
1448
|
+
selected = '1';
|
|
1449
|
+
}
|
|
1450
|
+
```
|
|
1451
|
+
|
|
1452
|
+
Compare this to the thin wrapper approach, which requires manual HTML structure:
|
|
1453
|
+
|
|
1454
|
+
```html
|
|
1455
|
+
<!-- Thin wrapper — consumer provides all HTML structure -->
|
|
1456
|
+
<ux4g-dropdown type="selection" mode="single" size="md" state="default">
|
|
1457
|
+
<ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
|
|
1458
|
+
<ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
|
|
1459
|
+
<ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
|
|
1460
|
+
</ux4g-dropdown>
|
|
1461
|
+
```
|
|
1462
|
+
|
|
1463
|
+
### Available Native Wrapper Components (19)
|
|
1464
|
+
|
|
1465
|
+
| Import Path | Component |
|
|
1466
|
+
|---|---|
|
|
1467
|
+
| `ux4g-components-angular/native/dropdown` | Dropdown |
|
|
1468
|
+
| `ux4g-components-angular/native/accordion` | Accordion |
|
|
1469
|
+
| `ux4g-components-angular/native/tabs` | Tabs |
|
|
1470
|
+
| `ux4g-components-angular/native/modal` | Modal |
|
|
1471
|
+
| `ux4g-components-angular/native/carousel` | Carousel |
|
|
1472
|
+
| `ux4g-components-angular/native/date-picker` | Date Picker |
|
|
1473
|
+
| `ux4g-components-angular/native/time-picker` | Time Picker |
|
|
1474
|
+
| `ux4g-components-angular/native/drawer` | Drawer |
|
|
1475
|
+
| `ux4g-components-angular/native/combobox` | Combobox |
|
|
1476
|
+
| `ux4g-components-angular/native/search` | Search |
|
|
1477
|
+
| `ux4g-components-angular/native/otp` | OTP Input |
|
|
1478
|
+
| `ux4g-components-angular/native/progress` | Progress Indicator |
|
|
1479
|
+
| `ux4g-components-angular/native/file-upload` | File Upload |
|
|
1480
|
+
| `ux4g-components-angular/native/table` | Table |
|
|
1481
|
+
| `ux4g-components-angular/native/stepper` | Stepper |
|
|
1482
|
+
| `ux4g-components-angular/native/popover` | Popover |
|
|
1483
|
+
| `ux4g-components-angular/native/tooltip` | Tooltip |
|
|
1484
|
+
| `ux4g-components-angular/native/avatar` | Avatar |
|
|
1485
|
+
| `ux4g-components-angular/native/chip` | Chip |
|
|
1486
|
+
|
|
1487
|
+
### Key Differences from Thin Wrappers
|
|
1488
|
+
|
|
1489
|
+
| Feature | Thin Wrapper | Native Wrapper |
|
|
1490
|
+
|---|---|---|
|
|
1491
|
+
| DOM structure | Consumer provides HTML | Generated internally |
|
|
1492
|
+
| Data attributes | Consumer adds manually | Included automatically |
|
|
1493
|
+
| ARIA attributes | Consumer manages | Built-in |
|
|
1494
|
+
| Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
|
|
1495
|
+
| Angular Forms | N/A | `ControlValueAccessor` support |
|
|
1496
|
+
| Standalone | NgModule-based | `standalone: true` (NgModule also available) |
|
|
1497
|
+
|
|
1498
|
+
### Angular Forms Integration
|
|
1499
|
+
|
|
1500
|
+
Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
|
|
1501
|
+
|
|
1502
|
+
```html
|
|
1503
|
+
<!-- Template-driven -->
|
|
1504
|
+
<ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
|
|
1505
|
+
|
|
1506
|
+
<!-- Reactive forms -->
|
|
1507
|
+
<ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
|
|
1508
|
+
```
|
|
1509
|
+
|
|
1510
|
+
### Standalone and NgModule Support
|
|
1511
|
+
|
|
1512
|
+
Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
|
|
1513
|
+
|
|
1514
|
+
```ts
|
|
1515
|
+
// Standalone (Angular 17+)
|
|
1516
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1517
|
+
|
|
1518
|
+
@Component({
|
|
1519
|
+
standalone: true,
|
|
1520
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1521
|
+
// ...
|
|
1522
|
+
})
|
|
1523
|
+
|
|
1524
|
+
// NgModule (Angular 15–16)
|
|
1525
|
+
import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
|
|
1526
|
+
|
|
1527
|
+
@NgModule({
|
|
1528
|
+
imports: [UX4GNativeDropdownModule],
|
|
1529
|
+
})
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
---
|
|
1533
|
+
|
|
1400
1534
|
## Related Packages
|
|
1401
1535
|
|
|
1402
1536
|
- [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
|
package/dist/stepper/README.md
CHANGED
|
@@ -1397,6 +1397,140 @@ Full list: `accessibility-bar`, `accordion`, `alert`, `avatar`, `badge`, `breadc
|
|
|
1397
1397
|
|
|
1398
1398
|
---
|
|
1399
1399
|
|
|
1400
|
+
## Native Wrappers
|
|
1401
|
+
|
|
1402
|
+
In addition to the default thin wrappers documented above, this package provides **Native Wrappers** — Angular components that internally generate the complete UX4G-compliant DOM structure. With Native Wrappers, you declare a single element with input bindings and get a fully rendered, accessible, interactive component without writing any HTML markup.
|
|
1403
|
+
|
|
1404
|
+
### Architecture Decision
|
|
1405
|
+
|
|
1406
|
+
> **Thin Wrappers are the default export. Native Wrappers are opt-in via `/native/` sub-paths.** This decision shall not be reversed without a major version bump.
|
|
1407
|
+
|
|
1408
|
+
- Existing thin wrapper imports (e.g., `ux4g-components-angular/dropdown`) remain unchanged
|
|
1409
|
+
- Native Wrappers use the `/native/` sub-path convention (e.g., `ux4g-components-angular/native/dropdown`)
|
|
1410
|
+
- Both can coexist in the same application without conflicts
|
|
1411
|
+
|
|
1412
|
+
### Import Convention
|
|
1413
|
+
|
|
1414
|
+
```ts
|
|
1415
|
+
// Thin Wrapper (default — unchanged)
|
|
1416
|
+
import { UX4GDropdownModule } from 'ux4g-components-angular/dropdown';
|
|
1417
|
+
|
|
1418
|
+
// Native Wrapper (opt-in)
|
|
1419
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
### Usage Example
|
|
1423
|
+
|
|
1424
|
+
```ts
|
|
1425
|
+
// app.component.ts
|
|
1426
|
+
import { Component } from '@angular/core';
|
|
1427
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1428
|
+
|
|
1429
|
+
@Component({
|
|
1430
|
+
selector: 'app-root',
|
|
1431
|
+
standalone: true,
|
|
1432
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1433
|
+
template: `
|
|
1434
|
+
<ux4g-native-dropdown
|
|
1435
|
+
[options]="options"
|
|
1436
|
+
[(ngModel)]="selected"
|
|
1437
|
+
placeholder="Select..."
|
|
1438
|
+
size="md"
|
|
1439
|
+
></ux4g-native-dropdown>
|
|
1440
|
+
`,
|
|
1441
|
+
})
|
|
1442
|
+
export class AppComponent {
|
|
1443
|
+
options = [
|
|
1444
|
+
{ label: 'Option 1', value: '1' },
|
|
1445
|
+
{ label: 'Option 2', value: '2' },
|
|
1446
|
+
{ label: 'Option 3', value: '3', disabled: true },
|
|
1447
|
+
];
|
|
1448
|
+
selected = '1';
|
|
1449
|
+
}
|
|
1450
|
+
```
|
|
1451
|
+
|
|
1452
|
+
Compare this to the thin wrapper approach, which requires manual HTML structure:
|
|
1453
|
+
|
|
1454
|
+
```html
|
|
1455
|
+
<!-- Thin wrapper — consumer provides all HTML structure -->
|
|
1456
|
+
<ux4g-dropdown type="selection" mode="single" size="md" state="default">
|
|
1457
|
+
<ux4g-dropdown-item value="1">Option 1</ux4g-dropdown-item>
|
|
1458
|
+
<ux4g-dropdown-item value="2">Option 2</ux4g-dropdown-item>
|
|
1459
|
+
<ux4g-dropdown-item value="3">Option 3</ux4g-dropdown-item>
|
|
1460
|
+
</ux4g-dropdown>
|
|
1461
|
+
```
|
|
1462
|
+
|
|
1463
|
+
### Available Native Wrapper Components (19)
|
|
1464
|
+
|
|
1465
|
+
| Import Path | Component |
|
|
1466
|
+
|---|---|
|
|
1467
|
+
| `ux4g-components-angular/native/dropdown` | Dropdown |
|
|
1468
|
+
| `ux4g-components-angular/native/accordion` | Accordion |
|
|
1469
|
+
| `ux4g-components-angular/native/tabs` | Tabs |
|
|
1470
|
+
| `ux4g-components-angular/native/modal` | Modal |
|
|
1471
|
+
| `ux4g-components-angular/native/carousel` | Carousel |
|
|
1472
|
+
| `ux4g-components-angular/native/date-picker` | Date Picker |
|
|
1473
|
+
| `ux4g-components-angular/native/time-picker` | Time Picker |
|
|
1474
|
+
| `ux4g-components-angular/native/drawer` | Drawer |
|
|
1475
|
+
| `ux4g-components-angular/native/combobox` | Combobox |
|
|
1476
|
+
| `ux4g-components-angular/native/search` | Search |
|
|
1477
|
+
| `ux4g-components-angular/native/otp` | OTP Input |
|
|
1478
|
+
| `ux4g-components-angular/native/progress` | Progress Indicator |
|
|
1479
|
+
| `ux4g-components-angular/native/file-upload` | File Upload |
|
|
1480
|
+
| `ux4g-components-angular/native/table` | Table |
|
|
1481
|
+
| `ux4g-components-angular/native/stepper` | Stepper |
|
|
1482
|
+
| `ux4g-components-angular/native/popover` | Popover |
|
|
1483
|
+
| `ux4g-components-angular/native/tooltip` | Tooltip |
|
|
1484
|
+
| `ux4g-components-angular/native/avatar` | Avatar |
|
|
1485
|
+
| `ux4g-components-angular/native/chip` | Chip |
|
|
1486
|
+
|
|
1487
|
+
### Key Differences from Thin Wrappers
|
|
1488
|
+
|
|
1489
|
+
| Feature | Thin Wrapper | Native Wrapper |
|
|
1490
|
+
|---|---|---|
|
|
1491
|
+
| DOM structure | Consumer provides HTML | Generated internally |
|
|
1492
|
+
| Data attributes | Consumer adds manually | Included automatically |
|
|
1493
|
+
| ARIA attributes | Consumer manages | Built-in |
|
|
1494
|
+
| Interactive behaviors | Consumer wires up | Works via Runtime JS auto-init |
|
|
1495
|
+
| Angular Forms | N/A | `ControlValueAccessor` support |
|
|
1496
|
+
| Standalone | NgModule-based | `standalone: true` (NgModule also available) |
|
|
1497
|
+
|
|
1498
|
+
### Angular Forms Integration
|
|
1499
|
+
|
|
1500
|
+
Native Wrappers for form control components implement `ControlValueAccessor`, so they work with both template-driven and reactive forms:
|
|
1501
|
+
|
|
1502
|
+
```html
|
|
1503
|
+
<!-- Template-driven -->
|
|
1504
|
+
<ux4g-native-dropdown [options]="options" [(ngModel)]="selected"></ux4g-native-dropdown>
|
|
1505
|
+
|
|
1506
|
+
<!-- Reactive forms -->
|
|
1507
|
+
<ux4g-native-dropdown [options]="options" formControlName="country"></ux4g-native-dropdown>
|
|
1508
|
+
```
|
|
1509
|
+
|
|
1510
|
+
### Standalone and NgModule Support
|
|
1511
|
+
|
|
1512
|
+
Native Wrappers are declared as `standalone: true` for Angular 17+ consumers. An NgModule is also provided for backward compatibility:
|
|
1513
|
+
|
|
1514
|
+
```ts
|
|
1515
|
+
// Standalone (Angular 17+)
|
|
1516
|
+
import { UX4GNativeDropdownComponent } from 'ux4g-components-angular/native/dropdown';
|
|
1517
|
+
|
|
1518
|
+
@Component({
|
|
1519
|
+
standalone: true,
|
|
1520
|
+
imports: [UX4GNativeDropdownComponent],
|
|
1521
|
+
// ...
|
|
1522
|
+
})
|
|
1523
|
+
|
|
1524
|
+
// NgModule (Angular 15–16)
|
|
1525
|
+
import { UX4GNativeDropdownModule } from 'ux4g-components-angular/native/dropdown';
|
|
1526
|
+
|
|
1527
|
+
@NgModule({
|
|
1528
|
+
imports: [UX4GNativeDropdownModule],
|
|
1529
|
+
})
|
|
1530
|
+
```
|
|
1531
|
+
|
|
1532
|
+
---
|
|
1533
|
+
|
|
1400
1534
|
## Related Packages
|
|
1401
1535
|
|
|
1402
1536
|
- [`ux4g-components-web`](https://www.npmjs.com/package/ux4g-components-web) — CSS bundle and shared types (required)
|