@ngbase/adk 0.1.11 → 0.1.14
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/a11y/index.d.ts +151 -5
- package/accordion/index.d.ts +44 -5
- package/autocomplete/index.d.ts +54 -5
- package/avatar/index.d.ts +25 -5
- package/bidi/index.d.ts +17 -5
- package/breadcrumb/index.d.ts +36 -5
- package/cache/index.d.ts +46 -5
- package/carousel/index.d.ts +79 -5
- package/checkbox/index.d.ts +33 -5
- package/chip/index.d.ts +28 -5
- package/clipboard/index.d.ts +11 -5
- package/collections/index.d.ts +23 -5
- package/color-picker/index.d.ts +119 -5
- package/cookies/index.d.ts +35 -5
- package/datepicker/index.d.ts +317 -5
- package/dialog/index.d.ts +63 -5
- package/drag/index.d.ts +107 -5
- package/fesm2022/ngbase-adk-a11y.mjs +100 -74
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-accordion.mjs +31 -19
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +17 -17
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-avatar.mjs +16 -16
- package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
- package/fesm2022/ngbase-adk-bidi.mjs +6 -7
- package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
- package/fesm2022/ngbase-adk-breadcrumb.mjs +15 -15
- package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngbase-adk-cache.mjs +3 -3
- package/fesm2022/ngbase-adk-carousel.mjs +24 -24
- package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
- package/fesm2022/ngbase-adk-checkbox.mjs +10 -10
- package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
- package/fesm2022/ngbase-adk-chip.mjs +13 -13
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-clipboard.mjs +27 -12
- package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
- package/fesm2022/ngbase-adk-collections.mjs +5 -5
- package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
- package/fesm2022/ngbase-adk-color-picker.mjs +39 -39
- package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-cookies.mjs +3 -3
- package/fesm2022/ngbase-adk-datepicker.mjs +107 -107
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +39 -113
- package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
- package/fesm2022/ngbase-adk-drag.mjs +21 -22
- package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
- package/fesm2022/ngbase-adk-form-field.mjs +229 -41
- package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
- package/fesm2022/ngbase-adk-hover-card.mjs +6 -6
- package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
- package/fesm2022/ngbase-adk-icon.mjs +10 -10
- package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
- package/fesm2022/ngbase-adk-inline-edit.mjs +29 -27
- package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
- package/fesm2022/ngbase-adk-jwt.mjs +6 -6
- package/fesm2022/ngbase-adk-keys.mjs +7 -8
- package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
- package/fesm2022/ngbase-adk-layout.mjs +1 -1
- package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
- package/fesm2022/ngbase-adk-list.mjs +10 -10
- package/fesm2022/ngbase-adk-list.mjs.map +1 -1
- package/fesm2022/ngbase-adk-mask.mjs +8 -8
- package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
- package/fesm2022/ngbase-adk-menu.mjs +41 -41
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-network.mjs +4 -4
- package/fesm2022/ngbase-adk-network.mjs.map +1 -1
- package/fesm2022/ngbase-adk-otp.mjs +19 -19
- package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
- package/fesm2022/ngbase-adk-pagination.mjs +20 -20
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +28 -28
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +14 -15
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-progress.mjs +8 -8
- package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +15 -15
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs +19 -20
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-scroll-area.mjs +31 -31
- package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +73 -75
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-selectable.mjs +9 -9
- package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sheet.mjs +9 -7
- package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sidenav.mjs +37 -37
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +26 -26
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sonner.mjs +11 -11
- package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs +28 -28
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-switch.mjs +16 -16
- package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +98 -78
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs +44 -44
- package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
- package/fesm2022/ngbase-adk-toggle-group.mjs +15 -15
- package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
- package/fesm2022/ngbase-adk-toggle.mjs +4 -4
- package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tooltip.mjs +15 -15
- package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +28 -28
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-translate.mjs +13 -13
- package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tree.mjs +27 -27
- package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +43 -20
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/fesm2022/ngbase-adk-virtualizer.mjs +20 -20
- package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
- package/form-field/index.d.ts +97 -5
- package/hover-card/index.d.ts +21 -5
- package/icon/index.d.ts +28 -5
- package/index.d.ts +2 -5
- package/inline-edit/index.d.ts +53 -5
- package/jwt/index.d.ts +20 -5
- package/keys/index.d.ts +54 -5
- package/layout/index.d.ts +20 -5
- package/list/index.d.ts +34 -5
- package/mask/index.d.ts +33 -5
- package/menu/index.d.ts +145 -5
- package/network/index.d.ts +29 -5
- package/otp/index.d.ts +51 -5
- package/package.json +57 -57
- package/pagination/index.d.ts +35 -5
- package/popover/index.d.ts +212 -5
- package/portal/index.d.ts +113 -5
- package/progress/index.d.ts +17 -5
- package/radio/index.d.ts +45 -5
- package/resizable/index.d.ts +73 -5
- package/schematics/components/files/accordion/accordion.ts.template +2 -2
- package/schematics/components/files/alert/alert.ts.template +2 -2
- package/schematics/components/files/autocomplete/autocomplete.ts.template +1 -0
- package/schematics/components/files/avatar/avatar.ts.template +32 -5
- package/schematics/components/files/badge/badge.ts.template +4 -2
- package/schematics/components/files/button/button.ts.template +32 -13
- package/schematics/components/files/command/command.ts.template +10 -9
- package/schematics/components/files/datepicker/datepicker-llm.md.template +15 -2
- package/schematics/components/files/dialog/dialog-llm.md.template +24 -13
- package/schematics/components/files/dialog/dialog.ts.template +11 -2
- package/schematics/components/files/drawer/drawer.ts.template +1 -1
- package/schematics/components/files/form-field/form-field.ts.template +10 -1
- package/schematics/components/files/form-field/input-style.directive.ts.template +1 -1
- package/schematics/components/files/icon/icon-llm.md.template +0 -1
- package/schematics/components/files/inline-edit/inline-edit.ts.template +2 -2
- package/schematics/components/files/otp/otp.ts.template +1 -1
- package/schematics/components/files/picasa/picasa-base.component.ts.template +1 -2
- package/schematics/components/files/picasa/picasa.component.ts.template +4 -4
- package/schematics/components/files/select/select.ts.template +5 -18
- package/schematics/components/files/sheet/sheet.ts.template +1 -1
- package/schematics/components/files/sidenav/sidenav-llm.md.template +0 -1
- package/schematics/components/files/spinner/spinner.ts.template +1 -29
- package/scroll-area/index.d.ts +60 -5
- package/select/index.d.ts +177 -5
- package/selectable/index.d.ts +32 -5
- package/sheet/index.d.ts +44 -5
- package/sidenav/index.d.ts +74 -5
- package/slider/index.d.ts +79 -5
- package/sonner/index.d.ts +50 -5
- package/stepper/index.d.ts +54 -5
- package/switch/index.d.ts +47 -5
- package/table/index.d.ts +143 -5
- package/tabs/index.d.ts +85 -5
- package/test/index.d.ts +81 -5
- package/toggle/index.d.ts +16 -5
- package/toggle-group/index.d.ts +39 -5
- package/tooltip/index.d.ts +60 -5
- package/tour/index.d.ts +70 -5
- package/translate/index.d.ts +58 -5
- package/tree/index.d.ts +95 -5
- package/utils/index.d.ts +82 -5
- package/virtualizer/index.d.ts +45 -5
- package/a11y/accessibility-group.d.ts +0 -46
- package/a11y/accessibility-item.d.ts +0 -49
- package/a11y/accessibility.service.d.ts +0 -17
- package/a11y/autofocus.d.ts +0 -18
- package/a11y/focus-trap.d.ts +0 -15
- package/a11y/public-api.d.ts +0 -4
- package/accordion/accordion-content.d.ts +0 -8
- package/accordion/accordion-group.d.ts +0 -10
- package/accordion/accordion-header.d.ts +0 -7
- package/accordion/accordion-item.d.ts +0 -16
- package/accordion/public-api.d.ts +0 -4
- package/autocomplete/autocomplete-input.d.ts +0 -19
- package/autocomplete/autocomplete.d.ts +0 -34
- package/autocomplete/public-api.d.ts +0 -2
- package/avatar/avatar.d.ts +0 -22
- package/avatar/public-api.d.ts +0 -1
- package/bidi/direction.service.d.ts +0 -14
- package/bidi/public-api.d.ts +0 -1
- package/breadcrumb/breadcrumb-link.d.ts +0 -7
- package/breadcrumb/breadcrumb-separator.d.ts +0 -6
- package/breadcrumb/breadcrumb.d.ts +0 -12
- package/breadcrumb/breadcrumbs.d.ts +0 -9
- package/breadcrumb/public-api.d.ts +0 -4
- package/cache/cache-config.d.ts +0 -22
- package/cache/cache.d.ts +0 -17
- package/cache/cache.interecptor.d.ts +0 -2
- package/cache/public-api.d.ts +0 -3
- package/carousel/carousel-item.d.ts +0 -7
- package/carousel/carousel-next.d.ts +0 -8
- package/carousel/carousel.d.ts +0 -61
- package/carousel/public-api.d.ts +0 -3
- package/checkbox/checkbox.d.ts +0 -30
- package/checkbox/public-api.d.ts +0 -1
- package/chip/chip-group.d.ts +0 -7
- package/chip/chip.d.ts +0 -19
- package/chip/public-api.d.ts +0 -2
- package/clipboard/clipboard.d.ts +0 -7
- package/clipboard/public-api.d.ts +0 -1
- package/collections/SelectionModel.d.ts +0 -19
- package/collections/public-api.d.ts +0 -1
- package/color-picker/color-input.d.ts +0 -16
- package/color-picker/color-picker-trigger.d.ts +0 -30
- package/color-picker/color-picker.d.ts +0 -72
- package/color-picker/public-api.d.ts +0 -3
- package/color-picker/utils.d.ts +0 -21
- package/cookies/cookie.service.d.ts +0 -32
- package/cookies/public-api.d.ts +0 -1
- package/datepicker/calendar.d.ts +0 -121
- package/datepicker/datepicker-trigger.d.ts +0 -66
- package/datepicker/datepicker.d.ts +0 -55
- package/datepicker/native-date-adapter.d.ts +0 -33
- package/datepicker/public-api.d.ts +0 -5
- package/datepicker/time.d.ts +0 -42
- package/dialog/dialog.animation.d.ts +0 -3
- package/dialog/dialog.d.ts +0 -49
- package/dialog/dialog.service.d.ts +0 -7
- package/dialog/public-api.d.ts +0 -3
- package/drag/drag-drop.d.ts +0 -37
- package/drag/drag-move.d.ts +0 -17
- package/drag/drag.d.ts +0 -52
- package/drag/public-api.d.ts +0 -3
- package/form-field/auto-height.d.ts +0 -9
- package/form-field/error.d.ts +0 -18
- package/form-field/form-field.d.ts +0 -14
- package/form-field/input.d.ts +0 -16
- package/form-field/label.d.ts +0 -7
- package/form-field/public-api.d.ts +0 -5
- package/hover-card/hover-card.d.ts +0 -18
- package/hover-card/public-api.d.ts +0 -1
- package/icon/icon.d.ts +0 -12
- package/icon/icon.service.d.ts +0 -12
- package/icon/public-api.d.ts +0 -2
- package/inline-edit/inline-edit.d.ts +0 -47
- package/inline-edit/public-api.d.ts +0 -1
- package/jwt/jwt.service.d.ts +0 -27
- package/jwt/public-api.d.ts +0 -1
- package/keys/keys.service.d.ts +0 -13
- package/keys/public-api.d.ts +0 -2
- package/keys/shortcuts.service.d.ts +0 -38
- package/layout/layout.d.ts +0 -16
- package/layout/public-api.d.ts +0 -1
- package/list/list.d.ts +0 -20
- package/list/list.directive.d.ts +0 -12
- package/list/public-api.d.ts +0 -2
- package/mask/mask-pipe.d.ts +0 -7
- package/mask/mask.d.ts +0 -24
- package/mask/public-api.d.ts +0 -2
- package/menu/context-menu.d.ts +0 -21
- package/menu/mention.d.ts +0 -18
- package/menu/menu-trigger.d.ts +0 -34
- package/menu/menu.d.ts +0 -58
- package/menu/navigation-menu.d.ts +0 -19
- package/menu/public-api.d.ts +0 -5
- package/network/network.interceptor.d.ts +0 -6
- package/network/network.service.d.ts +0 -18
- package/network/public-api.d.ts +0 -2
- package/otp/otp.d.ts +0 -48
- package/otp/public-api.d.ts +0 -1
- package/pagination/pagination.d.ts +0 -32
- package/pagination/public-api.d.ts +0 -1
- package/popover/base-popover.service.d.ts +0 -16
- package/popover/popover-arrow.ng.d.ts +0 -34
- package/popover/popover-trigger.d.ts +0 -21
- package/popover/popover.d.ts +0 -60
- package/popover/popover.service.d.ts +0 -43
- package/popover/public-api.d.ts +0 -6
- package/popover/utils.d.ts +0 -69
- package/portal/dialog-ref.d.ts +0 -70
- package/portal/portal-base.service.d.ts +0 -19
- package/portal/portal-close.directive.d.ts +0 -9
- package/portal/portal.component.d.ts +0 -7
- package/portal/portal.service.d.ts +0 -16
- package/portal/public-api.d.ts +0 -5
- package/progress/progress.d.ts +0 -13
- package/progress/public-api.d.ts +0 -1
- package/public-api.d.ts +0 -2
- package/radio/public-api.d.ts +0 -2
- package/radio/radio-group.d.ts +0 -19
- package/radio/radio.d.ts +0 -26
- package/resizable/public-api.d.ts +0 -2
- package/resizable/resizable-group.d.ts +0 -22
- package/resizable/resizable.d.ts +0 -50
- package/scroll-area/public-api.d.ts +0 -1
- package/scroll-area/scroll-area.d.ts +0 -56
- package/select/list-selection.d.ts +0 -7
- package/select/option-group.d.ts +0 -7
- package/select/option.d.ts +0 -25
- package/select/public-api.d.ts +0 -6
- package/select/select-base.d.ts +0 -66
- package/select/select-input.d.ts +0 -23
- package/select/select.d.ts +0 -53
- package/selectable/public-api.d.ts +0 -2
- package/selectable/selectable-item.d.ts +0 -12
- package/selectable/selectable.d.ts +0 -19
- package/sheet/public-api.d.ts +0 -2
- package/sheet/sheet.d.ts +0 -26
- package/sheet/sheet.service.d.ts +0 -13
- package/sidenav/public-api.d.ts +0 -3
- package/sidenav/sidenav-header.d.ts +0 -31
- package/sidenav/sidenav.d.ts +0 -23
- package/sidenav/sidenav.service.d.ts +0 -18
- package/slider/public-api.d.ts +0 -1
- package/slider/slider.d.ts +0 -76
- package/sonner/public-api.d.ts +0 -2
- package/sonner/sonner.d.ts +0 -25
- package/sonner/sonner.service.d.ts +0 -21
- package/stepper/animation.d.ts +0 -1
- package/stepper/public-api.d.ts +0 -3
- package/stepper/step.d.ts +0 -24
- package/stepper/stepper.d.ts +0 -26
- package/switch/public-api.d.ts +0 -1
- package/switch/switch.d.ts +0 -44
- package/table/body-cell.d.ts +0 -11
- package/table/body-row.d.ts +0 -25
- package/table/column.d.ts +0 -10
- package/table/head-cell.d.ts +0 -12
- package/table/head-row.d.ts +0 -24
- package/table/public-api.d.ts +0 -8
- package/table/sort.d.ts +0 -40
- package/table/table.d.ts +0 -38
- package/tabs/public-api.d.ts +0 -2
- package/tabs/tab-group.d.ts +0 -52
- package/tabs/tab.d.ts +0 -31
- package/test/public-api.d.ts +0 -1
- package/test/utils.d.ts +0 -78
- package/toggle/public-api.d.ts +0 -1
- package/toggle/toggle.d.ts +0 -13
- package/toggle-group/public-api.d.ts +0 -2
- package/toggle-group/toggle-group.d.ts +0 -25
- package/toggle-group/toggle-item.d.ts +0 -14
- package/tooltip/public-api.d.ts +0 -2
- package/tooltip/tooltip.d.ts +0 -24
- package/tooltip/tooltip.directive.d.ts +0 -34
- package/tooltip/tooltip.service.d.ts +0 -28
- package/tour/animation.d.ts +0 -2
- package/tour/public-api.d.ts +0 -5
- package/tour/tour-base.d.ts +0 -21
- package/tour/tour-step.d.ts +0 -11
- package/tour/tour.d.ts +0 -9
- package/tour/tour.service.d.ts +0 -29
- package/translate/config.d.ts +0 -16
- package/translate/public-api.d.ts +0 -3
- package/translate/translate.d.ts +0 -11
- package/translate/translate.service.d.ts +0 -31
- package/tree/public-api.d.ts +0 -3
- package/tree/tree-node.d.ts +0 -28
- package/tree/tree-toggle.d.ts +0 -16
- package/tree/tree.d.ts +0 -55
- package/utils/animation.d.ts +0 -3
- package/utils/disposals.d.ts +0 -7
- package/utils/number-only.d.ts +0 -22
- package/utils/public-api.d.ts +0 -6
- package/utils/range.pipe.d.ts +0 -7
- package/utils/ssr.d.ts +0 -2
- package/utils/utils.d.ts +0 -28
- package/virtualizer/public-api.d.ts +0 -1
- package/virtualizer/virtualizer.d.ts +0 -42
|
@@ -6,33 +6,35 @@ import { uniqueId, provideValueAccessor } from '@ngbase/adk/utils';
|
|
|
6
6
|
|
|
7
7
|
class NgbFormField {
|
|
8
8
|
constructor() {
|
|
9
|
-
this._control = contentChild(NgControl, { descendants: true });
|
|
9
|
+
this._control = contentChild(NgControl, ...(ngDevMode ? [{ debugName: "_control", descendants: true }] : [{ descendants: true }]));
|
|
10
10
|
this._id = uniqueId();
|
|
11
11
|
// we need to forwardRef the error component to avoid circular dependency
|
|
12
12
|
this.status = statusChange(this._control);
|
|
13
|
-
this._invalid = computed(() => this.status() === 'INVALID' && this._control()?.touched);
|
|
14
|
-
this.errors = contentChildren(forwardRef(() => NgbInputError));
|
|
15
|
-
this.hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));
|
|
13
|
+
this._invalid = computed(() => this.status() === 'INVALID' && this._control()?.touched, ...(ngDevMode ? [{ debugName: "_invalid" }] : []));
|
|
14
|
+
this.errors = contentChildren(forwardRef(() => NgbInputError), ...(ngDevMode ? [{ debugName: "errors" }] : []));
|
|
15
|
+
this.hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()), ...(ngDevMode ? [{ debugName: "hasErrors" }] : []));
|
|
16
16
|
}
|
|
17
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
18
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "
|
|
17
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbFormField, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
18
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbFormField, isStandalone: true, selector: "ngb-form-field, [ngbFormField]", queries: [{ propertyName: "_control", first: true, predicate: NgControl, descendants: true, isSignal: true }, { propertyName: "errors", predicate: i0.forwardRef(() => NgbInputError), isSignal: true }], ngImport: i0 }); }
|
|
19
19
|
}
|
|
20
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
20
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbFormField, decorators: [{
|
|
21
21
|
type: Directive,
|
|
22
22
|
args: [{
|
|
23
23
|
selector: 'ngb-form-field, [ngbFormField]',
|
|
24
24
|
}]
|
|
25
25
|
}] });
|
|
26
26
|
function statusChange(sControl) {
|
|
27
|
-
const statusChanges = signal(null, { equal: () => false });
|
|
27
|
+
const statusChanges = signal(null, ...(ngDevMode ? [{ debugName: "statusChanges", equal: () => false }] : [{ equal: () => false }]));
|
|
28
28
|
effect(cleanup => {
|
|
29
29
|
const control = sControl();
|
|
30
|
-
if (control) {
|
|
31
|
-
const sub = control.statusChanges
|
|
32
|
-
statusChanges.set(control.status);
|
|
33
|
-
});
|
|
30
|
+
if (control?.statusChanges) {
|
|
31
|
+
const sub = control.statusChanges.subscribe(() => statusChanges.set(control.status));
|
|
34
32
|
cleanup(() => sub?.unsubscribe());
|
|
35
33
|
}
|
|
34
|
+
else if (control?.field) {
|
|
35
|
+
// For standalone controls without statusChanges observable
|
|
36
|
+
statusChanges.set(control.field().valid() ? 'VALID' : 'INVALID');
|
|
37
|
+
}
|
|
36
38
|
});
|
|
37
39
|
return statusChanges;
|
|
38
40
|
}
|
|
@@ -43,9 +45,9 @@ class NgbInputError {
|
|
|
43
45
|
/* the input can have comma separated error names like
|
|
44
46
|
* 'required' or '!required && minlength'
|
|
45
47
|
*/
|
|
46
|
-
this.ngbError = input.required();
|
|
47
|
-
this.invalid = input();
|
|
48
|
-
this.animate = signal(false);
|
|
48
|
+
this.ngbError = input.required(...(ngDevMode ? [{ debugName: "ngbError" }] : []));
|
|
49
|
+
this.invalid = input(...(ngDevMode ? [undefined, { debugName: "invalid" }] : []));
|
|
50
|
+
this.animate = signal(false, ...(ngDevMode ? [{ debugName: "animate" }] : []));
|
|
49
51
|
this.errorNames = computed(() => {
|
|
50
52
|
const names = (this.ngbError() ?? '').split('&&');
|
|
51
53
|
return names.reduce((acc, n) => {
|
|
@@ -56,23 +58,34 @@ class NgbInputError {
|
|
|
56
58
|
}
|
|
57
59
|
return acc;
|
|
58
60
|
}, []);
|
|
59
|
-
});
|
|
61
|
+
}, ...(ngDevMode ? [{ debugName: "errorNames" }] : []));
|
|
60
62
|
this.isFieldInvalid = computed(() => {
|
|
61
|
-
const control = this.formField.
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
return (status === 'INVALID' &&
|
|
65
|
-
control?.touched &&
|
|
66
|
-
names.every(n => !!control.errors?.[n.name] !== n.negated));
|
|
67
|
-
});
|
|
63
|
+
const control = this.formField.__control?.();
|
|
64
|
+
return control ? this.fieldInvalidFn(control) : this.oldIsFieldInvalid();
|
|
65
|
+
}, ...(ngDevMode ? [{ debugName: "isFieldInvalid" }] : []));
|
|
68
66
|
this.isInvalid = computed(() => {
|
|
69
67
|
return this.invalid() ?? this.isFieldInvalid();
|
|
70
|
-
});
|
|
68
|
+
}, ...(ngDevMode ? [{ debugName: "isInvalid" }] : []));
|
|
69
|
+
}
|
|
70
|
+
oldIsFieldInvalid() {
|
|
71
|
+
const control = this.formField._control();
|
|
72
|
+
const status = this.formField.status();
|
|
73
|
+
const names = this.errorNames();
|
|
74
|
+
return (status === 'INVALID' &&
|
|
75
|
+
control?.touched &&
|
|
76
|
+
names.every(n => !!control.errors?.[n.name] !== n.negated));
|
|
77
|
+
}
|
|
78
|
+
fieldInvalidFn(control) {
|
|
79
|
+
// const control = this.formField.__control();
|
|
80
|
+
const names = this.errorNames();
|
|
81
|
+
const field = control?.field()();
|
|
82
|
+
return (field?.touched() &&
|
|
83
|
+
names.every(n => !!field?.errors().some((x) => x.kind == n.name) !== n.negated));
|
|
71
84
|
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
73
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
85
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbInputError, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
86
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbInputError, isStandalone: true, selector: "[ngbError]", inputs: { ngbError: { classPropertyName: "ngbError", publicName: "ngbError", isSignal: true, isRequired: true, transformFunction: null }, invalid: { classPropertyName: "invalid", publicName: "invalid", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "hidden": "!animate() && !isInvalid()" } }, ngImport: i0 }); }
|
|
74
87
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
88
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbInputError, decorators: [{
|
|
76
89
|
type: Directive,
|
|
77
90
|
args: [{
|
|
78
91
|
selector: '[ngbError]',
|
|
@@ -100,9 +113,13 @@ const toggleDiv = trigger('toggleDiv', [
|
|
|
100
113
|
class InputBase {
|
|
101
114
|
constructor() {
|
|
102
115
|
this.formField = inject(NgbFormField, { optional: true });
|
|
103
|
-
this.value = model('');
|
|
116
|
+
this.value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
104
117
|
this.id = this.formField?._id ?? uniqueId();
|
|
105
118
|
}
|
|
119
|
+
setInputValue(ev) {
|
|
120
|
+
const value = ev.target.value;
|
|
121
|
+
this.setValue(value, true);
|
|
122
|
+
}
|
|
106
123
|
setValue(value, fromInput = false) {
|
|
107
124
|
this.value.set(value);
|
|
108
125
|
if (fromInput) {
|
|
@@ -119,19 +136,19 @@ class InputBase {
|
|
|
119
136
|
registerOnTouched(fn) {
|
|
120
137
|
this.onTouched = fn;
|
|
121
138
|
}
|
|
122
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
123
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
139
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: InputBase, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
140
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: InputBase, isStandalone: true, selector: "input[ngbInputBase]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange" }, host: { attributes: { "role": "textbox" }, listeners: { "input": "setInputValue($event)" }, properties: { "attr.id": "id", "value": "value()" } }, providers: [provideValueAccessor(InputBase)], ngImport: i0 }); }
|
|
124
141
|
}
|
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
142
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: InputBase, decorators: [{
|
|
126
143
|
type: Directive,
|
|
127
144
|
args: [{
|
|
128
|
-
selector: '[ngbInputBase]',
|
|
145
|
+
selector: 'input[ngbInputBase]',
|
|
129
146
|
providers: [provideValueAccessor(InputBase)],
|
|
130
147
|
host: {
|
|
131
148
|
role: 'textbox',
|
|
132
149
|
'[attr.id]': 'id',
|
|
133
150
|
'[value]': 'value()',
|
|
134
|
-
'(input)': '
|
|
151
|
+
'(input)': 'setInputValue($event)',
|
|
135
152
|
},
|
|
136
153
|
}]
|
|
137
154
|
}] });
|
|
@@ -140,6 +157,8 @@ class AutoHeight {
|
|
|
140
157
|
constructor() {
|
|
141
158
|
this.el = inject(ElementRef);
|
|
142
159
|
this.model = inject(NgControl, { optional: true });
|
|
160
|
+
this.ngbInput = inject(InputBase, { optional: true });
|
|
161
|
+
this.maxHeight = input(...(ngDevMode ? [undefined, { debugName: "maxHeight" }] : []));
|
|
143
162
|
// Disable textarea resizing
|
|
144
163
|
this.el.nativeElement.style.resize = 'none';
|
|
145
164
|
const injector = inject(Injector);
|
|
@@ -166,18 +185,29 @@ class AutoHeight {
|
|
|
166
185
|
ro.observe(this.el.nativeElement);
|
|
167
186
|
cleanup(() => ro.disconnect());
|
|
168
187
|
});
|
|
188
|
+
effect(() => {
|
|
189
|
+
const _ = this.ngbInput?.value();
|
|
190
|
+
this.update();
|
|
191
|
+
});
|
|
169
192
|
}
|
|
170
193
|
update() {
|
|
171
194
|
const el = this.el.nativeElement;
|
|
172
195
|
el.style.height = 'auto';
|
|
173
196
|
// also we need to consider the border so we need to calculate the border using height
|
|
174
197
|
const borderHeight = el.offsetHeight - el.clientHeight;
|
|
175
|
-
|
|
198
|
+
const height = el.scrollHeight + borderHeight;
|
|
199
|
+
const maxHeight = this.maxHeight();
|
|
200
|
+
if (maxHeight) {
|
|
201
|
+
el.style.height = Math.min(height, maxHeight) + 'px';
|
|
202
|
+
}
|
|
203
|
+
else {
|
|
204
|
+
el.style.height = height + 'px';
|
|
205
|
+
}
|
|
176
206
|
}
|
|
177
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
178
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "
|
|
207
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AutoHeight, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
208
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: AutoHeight, isStandalone: true, selector: "textarea[ngbAutoHeight]", inputs: { maxHeight: { classPropertyName: "maxHeight", publicName: "maxHeight", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 }); }
|
|
179
209
|
}
|
|
180
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
210
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: AutoHeight, decorators: [{
|
|
181
211
|
type: Directive,
|
|
182
212
|
args: [{
|
|
183
213
|
selector: 'textarea[ngbAutoHeight]',
|
|
@@ -189,10 +219,10 @@ class NgbLabel {
|
|
|
189
219
|
this.formField = inject(NgbFormField);
|
|
190
220
|
this.id = this.formField._id;
|
|
191
221
|
}
|
|
192
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
193
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
222
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbLabel, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
223
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "20.2.0", type: NgbLabel, isStandalone: true, selector: "[ngbLabel]", host: { properties: { "attr.for": "id" } }, ngImport: i0 }); }
|
|
194
224
|
}
|
|
195
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
225
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbLabel, decorators: [{
|
|
196
226
|
type: Directive,
|
|
197
227
|
args: [{
|
|
198
228
|
selector: '[ngbLabel]',
|
|
@@ -202,9 +232,167 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
202
232
|
}]
|
|
203
233
|
}] });
|
|
204
234
|
|
|
235
|
+
class NumberFormat {
|
|
236
|
+
constructor() {
|
|
237
|
+
// Input signals with default values
|
|
238
|
+
this.el = inject(ElementRef);
|
|
239
|
+
this.decimals = input(2, ...(ngDevMode ? [{ debugName: "decimals" }] : []));
|
|
240
|
+
this.decimalSeparator = input('.', ...(ngDevMode ? [{ debugName: "decimalSeparator" }] : []));
|
|
241
|
+
this.thousandSeparator = input(',', ...(ngDevMode ? [{ debugName: "thousandSeparator" }] : []));
|
|
242
|
+
// Private members
|
|
243
|
+
this.onChange = (_) => { };
|
|
244
|
+
this.onTouched = () => { };
|
|
245
|
+
this.rawValue = '';
|
|
246
|
+
this.specialKeys = [
|
|
247
|
+
'Backspace',
|
|
248
|
+
'Tab',
|
|
249
|
+
'End',
|
|
250
|
+
'Home',
|
|
251
|
+
'ArrowLeft',
|
|
252
|
+
'ArrowRight',
|
|
253
|
+
'Delete',
|
|
254
|
+
];
|
|
255
|
+
}
|
|
256
|
+
// Handles input changes
|
|
257
|
+
onInput(ev) {
|
|
258
|
+
const value = ev.target.value.toString();
|
|
259
|
+
const position = this.el.nativeElement.selectionStart;
|
|
260
|
+
const cleanedValue = this.cleanValue(value);
|
|
261
|
+
if (this.isValidNumber(cleanedValue)) {
|
|
262
|
+
this.rawValue = cleanedValue;
|
|
263
|
+
this.formatDisplayValue(cleanedValue);
|
|
264
|
+
this.onChange(this.rawValue);
|
|
265
|
+
this.onTouched();
|
|
266
|
+
this.updateCursorPosition(value, position ?? 0);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
// Handles keydown events to validate input
|
|
270
|
+
onKeyDown(event) {
|
|
271
|
+
if (this.specialKeys.includes(event.key))
|
|
272
|
+
return;
|
|
273
|
+
const value = this.el.nativeElement.value;
|
|
274
|
+
const position = this.el.nativeElement.selectionStart;
|
|
275
|
+
// Handle decimal separator
|
|
276
|
+
if (event.key === this.decimalSeparator()) {
|
|
277
|
+
if (value.includes(this.decimalSeparator())) {
|
|
278
|
+
event.preventDefault();
|
|
279
|
+
}
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
// Only allow digits
|
|
283
|
+
if (!/^\d$/.test(event.key)) {
|
|
284
|
+
event.preventDefault();
|
|
285
|
+
return;
|
|
286
|
+
}
|
|
287
|
+
// Check decimal digits limit
|
|
288
|
+
if (this.isDecimalPartFull(value, position ?? 0)) {
|
|
289
|
+
event.preventDefault();
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
// Handle blur event
|
|
293
|
+
onBlur() {
|
|
294
|
+
if (this.rawValue) {
|
|
295
|
+
this.formatDisplayValue(this.rawValue);
|
|
296
|
+
}
|
|
297
|
+
this.onTouched();
|
|
298
|
+
}
|
|
299
|
+
// ControlValueAccessor implementation
|
|
300
|
+
writeValue(value) {
|
|
301
|
+
if (value) {
|
|
302
|
+
const cleanValue = this.cleanValue(value);
|
|
303
|
+
this.rawValue = cleanValue;
|
|
304
|
+
this.formatDisplayValue(cleanValue);
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
this.reset();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
reset() {
|
|
311
|
+
this.el.nativeElement.value = '';
|
|
312
|
+
this.rawValue = '';
|
|
313
|
+
}
|
|
314
|
+
registerOnChange(fn) {
|
|
315
|
+
this.onChange = fn;
|
|
316
|
+
}
|
|
317
|
+
registerOnTouched(fn) {
|
|
318
|
+
this.onTouched = fn;
|
|
319
|
+
}
|
|
320
|
+
setDisabledState(isDisabled) {
|
|
321
|
+
this.el.nativeElement.disabled = isDisabled;
|
|
322
|
+
}
|
|
323
|
+
// Private helper methods
|
|
324
|
+
cleanValue(value) {
|
|
325
|
+
return value
|
|
326
|
+
.toString()
|
|
327
|
+
.replace(new RegExp(`[^\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');
|
|
328
|
+
}
|
|
329
|
+
isValidNumber(value) {
|
|
330
|
+
const parts = value.split(this.decimalSeparator());
|
|
331
|
+
return parts.length <= 2 && parts.every(part => /^\d*$/.test(part));
|
|
332
|
+
}
|
|
333
|
+
formatDisplayValue(value) {
|
|
334
|
+
if (!value) {
|
|
335
|
+
this.reset();
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
const parts = value.split(this.decimalSeparator());
|
|
339
|
+
let integerPart = parts[0]
|
|
340
|
+
.replace(/^0+(?=\d)/, '')
|
|
341
|
+
.replace(/\B(?=(\d{3})+(?!\d))/g, this.thousandSeparator());
|
|
342
|
+
const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;
|
|
343
|
+
this.el.nativeElement.value =
|
|
344
|
+
decimalPart !== undefined
|
|
345
|
+
? `${integerPart}${this.decimalSeparator()}${decimalPart}`
|
|
346
|
+
: integerPart;
|
|
347
|
+
}
|
|
348
|
+
updateCursorPosition(originalValue, originalPosition) {
|
|
349
|
+
setTimeout(() => {
|
|
350
|
+
const el = this.el.nativeElement;
|
|
351
|
+
if (originalPosition === originalValue.length) {
|
|
352
|
+
// If cursor was at the end, keep it at the end
|
|
353
|
+
el.setSelectionRange(el.value.length, el.value.length);
|
|
354
|
+
return;
|
|
355
|
+
}
|
|
356
|
+
// Calculate new cursor position based on thousand separators
|
|
357
|
+
const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));
|
|
358
|
+
const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);
|
|
359
|
+
const newSeparatorCount = this.countSeparators(newValueUpToOldPos);
|
|
360
|
+
const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);
|
|
361
|
+
el.setSelectionRange(newPosition, newPosition);
|
|
362
|
+
}, 0);
|
|
363
|
+
}
|
|
364
|
+
countSeparators(value) {
|
|
365
|
+
const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');
|
|
366
|
+
return (value.match(regex) || []).length;
|
|
367
|
+
}
|
|
368
|
+
isDecimalPartFull(value, position) {
|
|
369
|
+
const decimalPos = value.indexOf(this.decimalSeparator());
|
|
370
|
+
return (decimalPos !== -1 &&
|
|
371
|
+
position > decimalPos &&
|
|
372
|
+
value.substring(decimalPos + 1).length >= this.decimals());
|
|
373
|
+
}
|
|
374
|
+
escapeRegExp(str) {
|
|
375
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
376
|
+
}
|
|
377
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NumberFormat, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
378
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NumberFormat, isStandalone: true, selector: "[numberFormat]", inputs: { decimals: { classPropertyName: "decimals", publicName: "decimals", isSignal: true, isRequired: false, transformFunction: null }, decimalSeparator: { classPropertyName: "decimalSeparator", publicName: "decimalSeparator", isSignal: true, isRequired: false, transformFunction: null }, thousandSeparator: { classPropertyName: "thousandSeparator", publicName: "thousandSeparator", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "input": "onInput($event)", "blur": "onBlur()", "keydown": "onKeyDown($event)" } }, providers: [provideValueAccessor(NumberFormat)], ngImport: i0 }); }
|
|
379
|
+
}
|
|
380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NumberFormat, decorators: [{
|
|
381
|
+
type: Directive,
|
|
382
|
+
args: [{
|
|
383
|
+
selector: '[numberFormat]',
|
|
384
|
+
providers: [provideValueAccessor(NumberFormat)],
|
|
385
|
+
host: {
|
|
386
|
+
'(input)': 'onInput($event)',
|
|
387
|
+
'(blur)': 'onBlur()',
|
|
388
|
+
'(keydown)': 'onKeyDown($event)',
|
|
389
|
+
},
|
|
390
|
+
}]
|
|
391
|
+
}] });
|
|
392
|
+
|
|
205
393
|
/**
|
|
206
394
|
* Generated bundle index. Do not edit.
|
|
207
395
|
*/
|
|
208
396
|
|
|
209
|
-
export { AutoHeight, InputBase, NgbFormField, NgbInputError, NgbLabel, markControlsTouched, toggleDiv };
|
|
397
|
+
export { AutoHeight, InputBase, NgbFormField, NgbInputError, NgbLabel, NumberFormat, markControlsTouched, toggleDiv };
|
|
210
398
|
//# sourceMappingURL=ngbase-adk-form-field.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control) {\n const sub = control.statusChanges?.subscribe(() => {\n statusChanges.set(control.status);\n });\n cleanup(() => sub?.unsubscribe());\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n });\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setValue($event.target.value, true)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import { afterNextRender, Directive, effect, ElementRef, inject, Injector } from '@angular/core';\nimport { NgControl } from '@angular/forms';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n el.style.height = el.scrollHeight + borderHeight + 'px';\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/currency-mask.ng.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control?.statusChanges) {\n const sub = control.statusChanges.subscribe(() => statusChanges.set(control.status));\n cleanup(() => sub?.unsubscribe());\n } else if ((control as any)?.field) {\n // For standalone controls without statusChanges observable\n statusChanges.set((control as any).field().valid() ? 'VALID' : 'INVALID');\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = (this.formField as any).__control?.();\n return control ? this.fieldInvalidFn(control) : this.oldIsFieldInvalid();\n });\n\n oldIsFieldInvalid() {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n }\n\n fieldInvalidFn(control: any) {\n // const control = this.formField.__control();\n const names = this.errorNames();\n const field = control?.field()();\n\n return (\n field?.touched() &&\n names.every(n => !!field?.errors().some((x: any) => x.kind == n.name) !== n.negated)\n );\n }\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: 'input[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setInputValue($event)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n protected setInputValue(ev: Event): void {\n const value = (ev.target as HTMLInputElement).value;\n this.setValue(value, true);\n }\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from './input';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n private ngbInput = inject(InputBase, { optional: true });\n\n readonly maxHeight = input<number>();\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n\n effect(() => {\n const _ = this.ngbInput?.value();\n this.update();\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n const height = el.scrollHeight + borderHeight;\n const maxHeight = this.maxHeight();\n if (maxHeight) {\n el.style.height = Math.min(height, maxHeight) + 'px';\n } else {\n el.style.height = height + 'px';\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","import { Directive, ElementRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[numberFormat]',\n providers: [provideValueAccessor(NumberFormat)],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class NumberFormat implements ControlValueAccessor {\n // Input signals with default values\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n readonly decimals = input<number>(2);\n readonly decimalSeparator = input<string>('.');\n readonly thousandSeparator = input<string>(',');\n\n // Private members\n private onChange = (_: any) => {};\n private onTouched = () => {};\n private rawValue = '';\n\n private readonly specialKeys = [\n 'Backspace',\n 'Tab',\n 'End',\n 'Home',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n ];\n\n // Handles input changes\n onInput(ev: Event) {\n const value = (ev.target as any).value.toString();\n const position = this.el.nativeElement.selectionStart;\n const cleanedValue = this.cleanValue(value);\n\n if (this.isValidNumber(cleanedValue)) {\n this.rawValue = cleanedValue;\n this.formatDisplayValue(cleanedValue);\n this.onChange(this.rawValue);\n this.onTouched();\n this.updateCursorPosition(value, position ?? 0);\n }\n }\n\n // Handles keydown events to validate input\n onKeyDown(event: KeyboardEvent) {\n if (this.specialKeys.includes(event.key)) return;\n\n const value = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n\n // Handle decimal separator\n if (event.key === this.decimalSeparator()) {\n if (value.includes(this.decimalSeparator())) {\n event.preventDefault();\n }\n return;\n }\n\n // Only allow digits\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n // Check decimal digits limit\n if (this.isDecimalPartFull(value, position ?? 0)) {\n event.preventDefault();\n }\n }\n\n // Handle blur event\n onBlur() {\n if (this.rawValue) {\n this.formatDisplayValue(this.rawValue);\n }\n this.onTouched();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string) {\n if (value) {\n const cleanValue = this.cleanValue(value);\n this.rawValue = cleanValue;\n this.formatDisplayValue(cleanValue);\n } else {\n this.reset();\n }\n }\n\n private reset() {\n this.el.nativeElement.value = '';\n this.rawValue = '';\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.el.nativeElement.disabled = isDisabled;\n }\n\n // Private helper methods\n private cleanValue(value: string | number): string {\n return value\n .toString()\n .replace(new RegExp(`[^\\\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');\n }\n\n private isValidNumber(value: string): boolean {\n const parts = value.split(this.decimalSeparator());\n return parts.length <= 2 && parts.every(part => /^\\d*$/.test(part));\n }\n\n private formatDisplayValue(value: string) {\n if (!value) {\n this.reset();\n return;\n }\n\n const parts = value.split(this.decimalSeparator());\n let integerPart = parts[0]\n .replace(/^0+(?=\\d)/, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandSeparator());\n const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;\n\n this.el.nativeElement.value =\n decimalPart !== undefined\n ? `${integerPart}${this.decimalSeparator()}${decimalPart}`\n : integerPart;\n }\n\n private updateCursorPosition(originalValue: string, originalPosition: number) {\n setTimeout(() => {\n const el = this.el.nativeElement;\n if (originalPosition === originalValue.length) {\n // If cursor was at the end, keep it at the end\n el.setSelectionRange(el.value.length, el.value.length);\n return;\n }\n\n // Calculate new cursor position based on thousand separators\n const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));\n const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);\n const newSeparatorCount = this.countSeparators(newValueUpToOldPos);\n\n const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);\n el.setSelectionRange(newPosition, newPosition);\n }, 0);\n }\n\n private countSeparators(value: string): number {\n const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');\n return (value.match(regex) || []).length;\n }\n\n private isDecimalPartFull(value: string, position: number): boolean {\n const decimalPos = value.indexOf(this.decimalSeparator());\n return (\n decimalPos !== -1 &&\n position > decimalPos &&\n value.substring(decimalPos + 1).length >= this.decimals()\n );\n }\n\n private escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -6,9 +6,9 @@ class NgbHoverCard {
|
|
|
6
6
|
constructor() {
|
|
7
7
|
this.popoverPortal = ngbPopoverPortal();
|
|
8
8
|
this.el = inject(ElementRef);
|
|
9
|
-
this.ngbHoverCard = input.required();
|
|
10
|
-
this.options = input();
|
|
11
|
-
this.delay = input(400, { transform: numberAttribute });
|
|
9
|
+
this.ngbHoverCard = input.required(...(ngDevMode ? [{ debugName: "ngbHoverCard" }] : []));
|
|
10
|
+
this.options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
|
|
11
|
+
this.delay = input(400, ...(ngDevMode ? [{ debugName: "delay", transform: numberAttribute }] : [{ transform: numberAttribute }]));
|
|
12
12
|
this.close = null;
|
|
13
13
|
}
|
|
14
14
|
open() {
|
|
@@ -52,10 +52,10 @@ class NgbHoverCard {
|
|
|
52
52
|
this.outTimer = null;
|
|
53
53
|
}, this.delay());
|
|
54
54
|
}
|
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
56
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
56
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbHoverCard, isStandalone: true, selector: "[ngbHoverCard]", inputs: { ngbHoverCard: { classPropertyName: "ngbHoverCard", publicName: "ngbHoverCard", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "open()", "mouseleave": "closePopup()" } }, exportAs: ["ngbHoverCard"], ngImport: i0 }); }
|
|
57
57
|
}
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbHoverCard, decorators: [{
|
|
59
59
|
type: Directive,
|
|
60
60
|
args: [{
|
|
61
61
|
selector: '[ngbHoverCard]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-hover-card.mjs","sources":["../../../projects/adk/hover-card/hover-card.ts","../../../projects/adk/hover-card/public-api.ts","../../../projects/adk/hover-card/ngbase-adk-hover-card.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, inject, input, numberAttribute } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { PopoverOptions, ngbPopoverPortal } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbHoverCard]',\n exportAs: 'ngbHoverCard',\n host: {\n '(mouseenter)': 'open()',\n '(mouseleave)': 'closePopup()',\n },\n})\nexport class NgbHoverCard<T = any> {\n private popoverPortal = ngbPopoverPortal();\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbHoverCard = input.required<TemplateRef<T>>();\n readonly options = input<PopoverOptions>();\n readonly delay = input(400, { transform: numberAttribute });\n\n private close: DialogRef | null = null;\n private inTimer: any;\n private outTimer: any;\n\n open() {\n // if the user is hovering over the popover, we don't want to open a new one\n if (this.outTimer) {\n this.resetOut();\n return;\n }\n\n // we need to delay the opening of the popover to ensure that the user is hovering over the popover\n this.inTimer = setTimeout(() => {\n const options = this.options() ?? {};\n const { diaRef, events } = this.popoverPortal.open(this.ngbHoverCard(), {\n target: this.el.nativeElement,\n position: 'top',\n backdrop: false,\n ...options,\n });\n this.close = diaRef;\n events.subscribe(e => {\n if (e.type === 'mouseleave') {\n this.closePopup();\n } else {\n this.resetOut();\n }\n });\n }, this.delay());\n }\n\n private resetOut() {\n clearTimeout(this.outTimer);\n this.outTimer = null;\n }\n\n closePopup() {\n clearTimeout(this.inTimer);\n this.inTimer = null;\n if (!this.close) return;\n this.outTimer = setTimeout(() => {\n this.close?.close();\n this.close = null;\n this.outTimer = null;\n }, this.delay());\n }\n}\n","/*\n * Public API Surface of hover-card\n */\n\nexport * from './hover-card';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAYa,YAAY,CAAA;AARzB,IAAA,WAAA,GAAA;QASU,IAAa,CAAA,aAAA,GAAG,gBAAgB,EAAE;AAClC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;AAE/C,QAAA,IAAA,CAAA,YAAY,GAAG,KAAK,CAAC,QAAQ,
|
|
1
|
+
{"version":3,"file":"ngbase-adk-hover-card.mjs","sources":["../../../projects/adk/hover-card/hover-card.ts","../../../projects/adk/hover-card/public-api.ts","../../../projects/adk/hover-card/ngbase-adk-hover-card.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, inject, input, numberAttribute } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { PopoverOptions, ngbPopoverPortal } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbHoverCard]',\n exportAs: 'ngbHoverCard',\n host: {\n '(mouseenter)': 'open()',\n '(mouseleave)': 'closePopup()',\n },\n})\nexport class NgbHoverCard<T = any> {\n private popoverPortal = ngbPopoverPortal();\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbHoverCard = input.required<TemplateRef<T>>();\n readonly options = input<PopoverOptions>();\n readonly delay = input(400, { transform: numberAttribute });\n\n private close: DialogRef | null = null;\n private inTimer: any;\n private outTimer: any;\n\n open() {\n // if the user is hovering over the popover, we don't want to open a new one\n if (this.outTimer) {\n this.resetOut();\n return;\n }\n\n // we need to delay the opening of the popover to ensure that the user is hovering over the popover\n this.inTimer = setTimeout(() => {\n const options = this.options() ?? {};\n const { diaRef, events } = this.popoverPortal.open(this.ngbHoverCard(), {\n target: this.el.nativeElement,\n position: 'top',\n backdrop: false,\n ...options,\n });\n this.close = diaRef;\n events.subscribe(e => {\n if (e.type === 'mouseleave') {\n this.closePopup();\n } else {\n this.resetOut();\n }\n });\n }, this.delay());\n }\n\n private resetOut() {\n clearTimeout(this.outTimer);\n this.outTimer = null;\n }\n\n closePopup() {\n clearTimeout(this.inTimer);\n this.inTimer = null;\n if (!this.close) return;\n this.outTimer = setTimeout(() => {\n this.close?.close();\n this.close = null;\n this.outTimer = null;\n }, this.delay());\n }\n}\n","/*\n * Public API Surface of hover-card\n */\n\nexport * from './hover-card';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -47,10 +47,10 @@ class IconService {
|
|
|
47
47
|
}
|
|
48
48
|
return pendingRequest;
|
|
49
49
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
51
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
51
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IconService, providedIn: 'root' }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: IconService, decorators: [{
|
|
54
54
|
type: Injectable,
|
|
55
55
|
args: [{ providedIn: 'root' }]
|
|
56
56
|
}] });
|
|
@@ -59,20 +59,20 @@ class NgbIcon {
|
|
|
59
59
|
constructor() {
|
|
60
60
|
this.service = inject(IconService);
|
|
61
61
|
this.sanitizer = inject(DomSanitizer);
|
|
62
|
-
this.name = input.required();
|
|
62
|
+
this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
63
63
|
this.icon = resource({
|
|
64
|
-
|
|
65
|
-
loader: ({ request }) => this.service.getIcon(request),
|
|
64
|
+
params: this.name,
|
|
65
|
+
loader: ({ params: request }) => this.service.getIcon(request),
|
|
66
66
|
});
|
|
67
67
|
this.svg = computed(() => {
|
|
68
68
|
const txt = this.icon.value() || '';
|
|
69
69
|
return this.sanitizer.bypassSecurityTrustHtml(txt);
|
|
70
|
-
});
|
|
70
|
+
}, ...(ngDevMode ? [{ debugName: "svg" }] : []));
|
|
71
71
|
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
73
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
72
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
73
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.0", type: NgbIcon, isStandalone: true, selector: "[ngbIcon]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "innerHTML": "svg()" } }, ngImport: i0 }); }
|
|
74
74
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
75
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbIcon, decorators: [{
|
|
76
76
|
type: Directive,
|
|
77
77
|
args: [{
|
|
78
78
|
selector: '[ngbIcon]',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-icon.mjs","sources":["../../../projects/adk/icon/icon.service.ts","../../../projects/adk/icon/icon.ts","../../../projects/adk/icon/ngbase-adk-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\nexport type IconLoaderFn = (name: string) => Promise<string>;\n\nexport const ICON_LOADER = new InjectionToken<IconLoaderFn>('ICON_LOADER', {\n providedIn: 'root',\n factory: iconLoader,\n});\n\nfunction iconLoader(): IconLoaderFn {\n const http = inject(HttpClient, { optional: true });\n return async (name: string) => {\n try {\n if (http) {\n const icon = await firstValueFrom(\n http?.get(`/icons/${name}.svg`, { responseType: 'text' }),\n );\n return icon;\n }\n } catch {}\n return '';\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IconService {\n readonly loader = inject(ICON_LOADER);\n readonly icons = new Map<string, string>();\n private readonly pendingRequests = new Map<string, Promise<string>>();\n\n async getIcon(name: string): Promise<string> {\n const cachedIcon = this.icons.get(name);\n\n if (cachedIcon) {\n return cachedIcon;\n }\n\n let pendingRequest = this.pendingRequests.get(name);\n if (!pendingRequest) {\n pendingRequest = this.loader(name);\n this.pendingRequests.set(name, pendingRequest);\n\n try {\n const icon = await pendingRequest;\n this.icons.set(name, icon);\n return icon;\n } finally {\n this.pendingRequests.delete(name);\n }\n }\n\n return pendingRequest;\n }\n}\n","import { computed, Directive, inject, input, resource } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[ngbIcon]',\n host: {\n '[innerHTML]': 'svg()',\n },\n})\nexport class NgbIcon {\n readonly service = inject(IconService);\n readonly sanitizer = inject(DomSanitizer);\n\n readonly name = input.required<string>();\n\n private readonly icon = resource({\n
|
|
1
|
+
{"version":3,"file":"ngbase-adk-icon.mjs","sources":["../../../projects/adk/icon/icon.service.ts","../../../projects/adk/icon/icon.ts","../../../projects/adk/icon/ngbase-adk-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\nexport type IconLoaderFn = (name: string) => Promise<string>;\n\nexport const ICON_LOADER = new InjectionToken<IconLoaderFn>('ICON_LOADER', {\n providedIn: 'root',\n factory: iconLoader,\n});\n\nfunction iconLoader(): IconLoaderFn {\n const http = inject(HttpClient, { optional: true });\n return async (name: string) => {\n try {\n if (http) {\n const icon = await firstValueFrom(\n http?.get(`/icons/${name}.svg`, { responseType: 'text' }),\n );\n return icon;\n }\n } catch {}\n return '';\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IconService {\n readonly loader = inject(ICON_LOADER);\n readonly icons = new Map<string, string>();\n private readonly pendingRequests = new Map<string, Promise<string>>();\n\n async getIcon(name: string): Promise<string> {\n const cachedIcon = this.icons.get(name);\n\n if (cachedIcon) {\n return cachedIcon;\n }\n\n let pendingRequest = this.pendingRequests.get(name);\n if (!pendingRequest) {\n pendingRequest = this.loader(name);\n this.pendingRequests.set(name, pendingRequest);\n\n try {\n const icon = await pendingRequest;\n this.icons.set(name, icon);\n return icon;\n } finally {\n this.pendingRequests.delete(name);\n }\n }\n\n return pendingRequest;\n }\n}\n","import { computed, Directive, inject, input, resource } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[ngbIcon]',\n host: {\n '[innerHTML]': 'svg()',\n },\n})\nexport class NgbIcon {\n readonly service = inject(IconService);\n readonly sanitizer = inject(DomSanitizer);\n\n readonly name = input.required<string>();\n\n private readonly icon = resource({\n params: this.name,\n loader: ({ params: request }) => this.service.getIcon(request),\n });\n\n readonly svg = computed(() => {\n const txt = this.icon.value() || '';\n return this.sanitizer.bypassSecurityTrustHtml(txt);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|