@ngbase/adk 0.1.1 → 0.1.3
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/accessibility-group.d.ts +2 -5
- package/accordion/accordion-item.d.ts +7 -1
- package/accordion/public-api.d.ts +1 -1
- package/autocomplete/autocomplete-input.d.ts +2 -4
- package/autocomplete/autocomplete.d.ts +13 -4
- package/avatar/avatar.d.ts +1 -1
- package/breadcrumb/breadcrumb.d.ts +2 -3
- package/breadcrumb/public-api.d.ts +1 -1
- package/carousel/carousel.d.ts +3 -3
- package/checkbox/checkbox.d.ts +11 -3
- package/checkbox/public-api.d.ts +1 -1
- package/chip/chip.d.ts +2 -2
- package/datepicker/calendar.d.ts +3 -3
- package/datepicker/datepicker-trigger.d.ts +22 -5
- package/datepicker/datepicker.d.ts +4 -3
- package/datepicker/time.d.ts +2 -2
- package/dialog/dialog.d.ts +1 -1
- package/drag/drag.d.ts +1 -2
- package/fesm2022/ngbase-adk-a11y.mjs +29 -26
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-accordion.mjs +16 -3
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +23 -52
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-avatar.mjs +2 -2
- package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
- package/fesm2022/ngbase-adk-breadcrumb.mjs +2 -2
- package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +7 -7
- package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
- package/fesm2022/ngbase-adk-checkbox.mjs +8 -6
- package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
- package/fesm2022/ngbase-adk-chip.mjs +4 -2
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-datepicker.mjs +187 -350
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +14 -15
- package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
- package/fesm2022/ngbase-adk-drag.mjs +1 -2
- package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
- package/fesm2022/ngbase-adk-form-field.mjs +2 -156
- package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
- package/fesm2022/ngbase-adk-list.mjs +2 -2
- package/fesm2022/ngbase-adk-list.mjs.map +1 -1
- package/fesm2022/ngbase-adk-mask.mjs +5 -3
- package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
- package/fesm2022/ngbase-adk-menu.mjs +34 -34
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-otp.mjs +164 -0
- package/fesm2022/ngbase-adk-otp.mjs.map +1 -0
- package/fesm2022/ngbase-adk-pagination.mjs +10 -67
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +434 -556
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +5 -10
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +8 -19
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs +10 -43
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +87 -185
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sheet.mjs +95 -0
- package/fesm2022/ngbase-adk-sheet.mjs.map +1 -0
- package/fesm2022/ngbase-adk-sidenav.mjs +2 -2
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +12 -23
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sonner.mjs +13 -63
- package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs +16 -114
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-switch.mjs +2 -2
- package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +17 -35
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs +14 -94
- package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
- package/fesm2022/ngbase-adk-test.mjs +11 -1
- package/fesm2022/ngbase-adk-test.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tooltip.mjs +49 -39
- package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +3 -3
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tree.mjs +11 -43
- package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +12 -9
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/form-field/public-api.d.ts +0 -1
- package/mask/mask.d.ts +1 -2
- package/menu/menu-trigger.d.ts +3 -3
- package/menu/menu.d.ts +13 -7
- package/otp/index.d.ts +5 -0
- package/{form-field → otp}/otp.d.ts +1 -1
- package/otp/public-api.d.ts +1 -0
- package/package.json +27 -19
- package/pagination/pagination.d.ts +7 -3
- package/popover/base-popover.service.d.ts +1 -1
- package/popover/popover-arrow.ng.d.ts +34 -0
- package/popover/popover.d.ts +17 -7
- package/popover/popover.service.d.ts +5 -4
- package/popover/public-api.d.ts +1 -0
- package/popover/utils.d.ts +32 -48
- package/portal/dialog-ref.d.ts +0 -1
- package/portal/portal-base.service.d.ts +3 -3
- package/portal/portal-close.directive.d.ts +3 -2
- package/radio/radio.d.ts +5 -1
- package/resizable/resizable-group.d.ts +2 -2
- package/resizable/resizable.d.ts +2 -2
- package/select/option-group.d.ts +3 -3
- package/select/option.d.ts +1 -1
- package/select/select-base.d.ts +8 -6
- package/select/select.d.ts +6 -3
- package/sheet/index.d.ts +5 -0
- package/sheet/public-api.d.ts +2 -0
- package/sheet/sheet.d.ts +26 -0
- package/sheet/sheet.service.d.ts +13 -0
- package/sidenav/public-api.d.ts +1 -1
- package/sidenav/sidenav.d.ts +1 -1
- package/slider/public-api.d.ts +1 -1
- package/slider/slider.d.ts +6 -5
- package/sonner/sonner.d.ts +2 -1
- package/stepper/animation.d.ts +1 -1
- package/stepper/step.d.ts +1 -1
- package/stepper/stepper.d.ts +2 -2
- package/switch/switch.d.ts +1 -1
- package/table/body-row.d.ts +3 -3
- package/table/head-row.d.ts +3 -3
- package/table/table.d.ts +3 -3
- package/tabs/tab-group.d.ts +4 -4
- package/tabs/tab.d.ts +2 -2
- package/test/utils.d.ts +19 -3
- package/tooltip/public-api.d.ts +1 -1
- package/tooltip/tooltip.d.ts +5 -1
- package/tooltip/tooltip.directive.d.ts +1 -1
- package/tooltip/tooltip.service.d.ts +4 -2
- package/tour/tour.service.d.ts +3 -4
- package/tree/public-api.d.ts +2 -2
- package/tree/tree-node.d.ts +2 -2
- package/tree/tree.d.ts +2 -2
- package/utils/utils.d.ts +5 -4
- package/schematics/collection.json +0 -15
- package/schematics/components/files/accordion/accordion.ts.template +0 -55
- package/schematics/components/files/accordion/index.ts.template +0 -5
- package/schematics/components/files/alert/alert.ts.template +0 -62
- package/schematics/components/files/alert/index.ts.template +0 -1
- package/schematics/components/files/autocomplete/autocomplete.ts.template +0 -48
- package/schematics/components/files/autocomplete/index.ts.template +0 -5
- package/schematics/components/files/avatar/avatar.ts.template +0 -31
- package/schematics/components/files/avatar/index.ts.template +0 -1
- package/schematics/components/files/badge/badge.ts.template +0 -11
- package/schematics/components/files/badge/index.ts.template +0 -1
- package/schematics/components/files/breadcrumb/breadcrumb.ts.template +0 -49
- package/schematics/components/files/breadcrumb/index.ts.template +0 -1
- package/schematics/components/files/button/button.ts.template +0 -29
- package/schematics/components/files/button/index.ts.template +0 -5
- package/schematics/components/files/card/card.ts.template +0 -11
- package/schematics/components/files/card/index.ts.template +0 -5
- package/schematics/components/files/carousel/carousel.ts.template +0 -44
- package/schematics/components/files/carousel/index.ts.template +0 -1
- package/schematics/components/files/checkbox/checkbox.ts.template +0 -46
- package/schematics/components/files/checkbox/focus-style.directive.ts.template +0 -12
- package/schematics/components/files/checkbox/index.ts.template +0 -6
- package/schematics/components/files/chip/chip.ts.template +0 -36
- package/schematics/components/files/chip/index.ts.template +0 -1
- package/schematics/components/files/color-picker/color-picker.ts.template +0 -104
- package/schematics/components/files/color-picker/index.ts.template +0 -5
- package/schematics/components/files/command/command.ts.template +0 -82
- package/schematics/components/files/command/index.ts.template +0 -1
- package/schematics/components/files/datepicker/calendar.ts.template +0 -117
- package/schematics/components/files/datepicker/datepicker-trigger.ts.template +0 -27
- package/schematics/components/files/datepicker/datepicker.ts.template +0 -28
- package/schematics/components/files/datepicker/index.ts.template +0 -3
- package/schematics/components/files/datepicker/time.ts.template +0 -46
- package/schematics/components/files/dialog/dialog.ts.template +0 -89
- package/schematics/components/files/dialog/index.ts.template +0 -5
- package/schematics/components/files/drawer/drawer.ts.template +0 -104
- package/schematics/components/files/drawer/index.ts.template +0 -5
- package/schematics/components/files/form-field/index.ts.template +0 -7
- package/schematics/components/files/form-field/input-style.directive.ts.template +0 -11
- package/schematics/components/files/form-field/input.ts.template +0 -100
- package/schematics/components/files/form-field/otp.ts.template +0 -37
- package/schematics/components/files/hover-card/hover-card.ts.template +0 -13
- package/schematics/components/files/hover-card/index.ts.template +0 -5
- package/schematics/components/files/icon/icon.ts.template +0 -16
- package/schematics/components/files/icon/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/index.ts.template +0 -1
- package/schematics/components/files/inline-edit/inline-edit.ts.template +0 -24
- package/schematics/components/files/keys/index.ts.template +0 -5
- package/schematics/components/files/keys/key.ts.template +0 -35
- package/schematics/components/files/list/index.ts.template +0 -5
- package/schematics/components/files/list/list.ts.template +0 -28
- package/schematics/components/files/mask/index.ts.template +0 -1
- package/schematics/components/files/mask/mask.ts.template +0 -8
- package/schematics/components/files/menu/context-menu.ts.template +0 -14
- package/schematics/components/files/menu/index.ts.template +0 -8
- package/schematics/components/files/menu/mention.ts.template +0 -14
- package/schematics/components/files/menu/menu.ts.template +0 -37
- package/schematics/components/files/menu/navigation-menu.ts.template +0 -8
- package/schematics/components/files/pagination/index.ts.template +0 -1
- package/schematics/components/files/pagination/pagination.ts.template +0 -71
- package/schematics/components/files/picasa/index.ts.template +0 -1
- package/schematics/components/files/picasa/picasa-base.component.ts.template +0 -80
- package/schematics/components/files/picasa/picasa.component.ts.template +0 -57
- package/schematics/components/files/picasa/picasa.directive.ts.template +0 -41
- package/schematics/components/files/picasa/picase.service.ts.template +0 -24
- package/schematics/components/files/popover/index.ts.template +0 -1
- package/schematics/components/files/popover/popover.ts.template +0 -87
- package/schematics/components/files/progress/index.ts.template +0 -5
- package/schematics/components/files/progress/progress.ts.template +0 -14
- package/schematics/components/files/radio/index.ts.template +0 -5
- package/schematics/components/files/radio/radio.ts.template +0 -40
- package/schematics/components/files/resizable/index.ts.template +0 -5
- package/schematics/components/files/resizable/resizable.ts.template +0 -56
- package/schematics/components/files/scroll-area/index.ts.template +0 -1
- package/schematics/components/files/scroll-area/scroll-area.ts.template +0 -40
- package/schematics/components/files/select/index.ts.template +0 -8
- package/schematics/components/files/select/list-selection.ts.template +0 -15
- package/schematics/components/files/select/option.ts.template +0 -34
- package/schematics/components/files/select/select-input.ts.template +0 -21
- package/schematics/components/files/select/select.ts.template +0 -96
- package/schematics/components/files/selectable/index.ts.template +0 -1
- package/schematics/components/files/selectable/selectable.ts.template +0 -34
- package/schematics/components/files/separator/index.ts.template +0 -5
- package/schematics/components/files/separator/separator.ts.template +0 -19
- package/schematics/components/files/sheet/index.ts.template +0 -5
- package/schematics/components/files/sheet/sheet.ts.template +0 -134
- package/schematics/components/files/sidenav/index.ts.template +0 -1
- package/schematics/components/files/sidenav/sidenav.ts.template +0 -48
- package/schematics/components/files/skeleton/index.ts.template +0 -1
- package/schematics/components/files/skeleton/skeleton.ts.template +0 -15
- package/schematics/components/files/slider/index.ts.template +0 -5
- package/schematics/components/files/slider/slider.ts.template +0 -42
- package/schematics/components/files/sonner/index.ts.template +0 -5
- package/schematics/components/files/sonner/sonner.ts.template +0 -58
- package/schematics/components/files/spinner/index.ts.template +0 -1
- package/schematics/components/files/spinner/spinner.ts.template +0 -79
- package/schematics/components/files/stepper/index.ts.template +0 -1
- package/schematics/components/files/stepper/stepper.ts.template +0 -88
- package/schematics/components/files/switch/index.ts.template +0 -5
- package/schematics/components/files/switch/switch.ts.template +0 -29
- package/schematics/components/files/table/body-cell.ts.template +0 -19
- package/schematics/components/files/table/body-row.ts.template +0 -21
- package/schematics/components/files/table/column.ts.template +0 -8
- package/schematics/components/files/table/head-cell.ts.template +0 -19
- package/schematics/components/files/table/head-row.ts.template +0 -27
- package/schematics/components/files/table/index.ts.template +0 -26
- package/schematics/components/files/table/table.ts.template +0 -20
- package/schematics/components/files/tabs/index.ts.template +0 -5
- package/schematics/components/files/tabs/tab.ts.template +0 -89
- package/schematics/components/files/theme/index.ts.template +0 -2
- package/schematics/components/files/theme/theme-button.component.ts.template +0 -26
- package/schematics/components/files/theme/theme.component.ts.template +0 -165
- package/schematics/components/files/theme/theme.service.ts.template +0 -44
- package/schematics/components/files/toggle/index.ts.template +0 -5
- package/schematics/components/files/toggle/toggle.ts.template +0 -13
- package/schematics/components/files/toggle-group/index.ts.template +0 -5
- package/schematics/components/files/toggle-group/toggle-group.ts.template +0 -25
- package/schematics/components/files/tooltip/index.ts.template +0 -5
- package/schematics/components/files/tooltip/tooltip.ts.template +0 -40
- package/schematics/components/files/tour/index.ts.template +0 -3
- package/schematics/components/files/tour/tour-step.ts.template +0 -8
- package/schematics/components/files/tour/tour.service.ts.template +0 -7
- package/schematics/components/files/tour/tour.ts.template +0 -8
- package/schematics/components/files/tree/index.ts.template +0 -1
- package/schematics/components/files/tree/tree.ts.template +0 -66
- package/schematics/components/index.d.ts +0 -3
- package/schematics/components/index.js +0 -17
- package/schematics/components/index.js.map +0 -1
- package/schematics/components/index.ts +0 -29
- package/schematics/components/schema.d.ts +0 -6
- package/schematics/components/schema.js +0 -3
- package/schematics/components/schema.js.map +0 -1
- package/schematics/components/schema.json +0 -137
- package/schematics/components/schema.ts +0 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-drag.mjs","sources":["../../../projects/adk/drag/drag.ts","../../../projects/adk/drag/drag-move.ts","../../../projects/adk/drag/drag-drop.ts","../../../projects/adk/drag/public-api.ts","../../../projects/adk/drag/ngbase-adk-drag.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n NgZone,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\n\nexport class DragData {\n constructor(\n public x = 0,\n public y = 0,\n public dx = 0,\n public dy = 0,\n public type: 'start' | 'move' | 'end' = 'start',\n public event?: PointerEvent,\n public clientX?: number,\n public clientY?: number,\n public direction?: 'left' | 'right',\n public velocity = 0, // pixels per millisecond\n public time = Date.now(),\n ) {}\n}\n\n@Directive({\n selector: '[ngbDragHandle]',\n exportAs: 'ngbDragHandle',\n host: {\n class: 'cursor-move',\n },\n})\nexport class DragHandle {}\n\n@Directive({\n selector: '[ngbDrag]',\n exportAs: 'ngbDrag',\n})\nexport class Drag {\n readonly el = inject(ElementRef);\n readonly zone = inject(NgZone);\n readonly document = inject(DOCUMENT);\n\n readonly handle = contentChild(DragHandle, { read: ElementRef, descendants: true });\n readonly events = new Subject<DragData>();\n readonly ngbDrag = outputFromObservable(this.events);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly lockAxis = input<'x' | 'y'>();\n readonly dragBoundary = input<string>();\n\n // hacky: we need this for host directives\n _lockAxis = linkedSignal(this.lockAxis);\n _dragBoundary = linkedSignal(this.dragBoundary);\n _disabled = linkedSignal(this.disabled);\n\n private readonly dragBoundaryElement = computed(() => {\n const id = this._dragBoundary();\n return id ? this.document.querySelector(id) : null;\n });\n private boundaryRect: { left: number; top: number; right: number; bottom: number } | undefined;\n startEvent!: PointerEvent;\n lastValue = new DragData();\n isDragging = false;\n\n constructor() {\n effect(cleanup => {\n if (!this._disabled()) {\n const handle = this.handle() || this.el;\n handle.nativeElement.addEventListener('pointerdown', this.onPointerDown);\n cleanup(() => handle.nativeElement.removeEventListener('pointerdown', this.onPointerDown));\n }\n });\n this.el.nativeElement.style.touchAction = 'none';\n }\n\n private onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) return; // Only trigger on left click\n\n this.startDrag(event);\n this.document.addEventListener('pointermove', this.onPointerMove);\n this.document.addEventListener('pointerup', this.onPointerUp);\n };\n\n private onPointerMove = (event: PointerEvent) => {\n if (this.isDragging) {\n event.preventDefault();\n event.stopPropagation();\n this.moveDrag(event);\n }\n };\n\n private onPointerUp = (event: PointerEvent) => {\n this.endDrag(event);\n this.document.removeEventListener('pointermove', this.onPointerMove);\n this.document.removeEventListener('pointerup', this.onPointerUp);\n };\n\n private startDrag(event: PointerEvent) {\n this.startEvent = event;\n this.isDragging = true;\n const rect = this.el.nativeElement.getBoundingClientRect();\n const parentRect = this.dragBoundaryElement()?.getBoundingClientRect();\n if (parentRect) {\n const left = rect.left - parentRect.left;\n const top = rect.top - parentRect.top;\n this.boundaryRect = {\n left,\n top,\n right: parentRect.width - rect.width - left,\n bottom: parentRect.height - rect.height - top,\n };\n // console.log(this.boundaryRect);\n }\n this.lastValue = this.getDragEvent(event, 'start');\n this.events.next(this.lastValue);\n this.toggleUserSelect();\n }\n\n private moveDrag(event: PointerEvent) {\n this.lastValue = this.getDragEvent(event, 'move');\n // prevent unnecessary events when the drag is outside the boundary\n if (this.lastValue.dx !== 0 || this.lastValue.dy !== 0) {\n this.events.next(this.lastValue);\n }\n }\n\n private endDrag(event: PointerEvent) {\n this.isDragging = false;\n const value = this.getDragEvent(event, 'end');\n this.events.next(value);\n this.lastValue = new DragData();\n this.toggleUserSelect(false);\n }\n\n private toggleUserSelect(active = true) {\n const value = active ? 'none' : '';\n this.document.body.style.userSelect = value;\n this.document.body.style.webkitUserSelect = value;\n this.document.body.style.pointerEvents = value;\n }\n\n private getDirection(ev: PointerEvent) {\n let dir = this.lastValue.direction || 'left';\n if (ev.clientX > this.lastValue.clientX!) {\n dir = 'right';\n } else if (ev.clientX < this.lastValue.clientX!) {\n dir = 'left';\n }\n return dir;\n }\n\n private getDragEvent(ev: PointerEvent, type: 'start' | 'move' | 'end') {\n const now = Date.now();\n const dt = now - this.lastValue.time;\n const startClientX = this.startEvent.clientX;\n const startClientY = this.startEvent.clientY;\n\n let x = ev.clientX - startClientX;\n let y = ev.clientY - startClientY;\n\n // it is to make sure that the drag is always in the drag point\n if (this.boundaryRect) {\n const { left, top, right, bottom } = this.boundaryRect;\n x = Math.max(-left, Math.min(x, right));\n y = Math.max(-top, Math.min(y, bottom));\n }\n\n if (this._lockAxis() === 'x') {\n y = 0;\n } else if (this._lockAxis() === 'y') {\n x = 0;\n }\n\n const dx = x - (this.lastValue.x ?? 0);\n const dy = y - (this.lastValue.y ?? 0);\n\n let velocity = 0;\n if (type === 'move' && dt > 0) {\n const distance = Math.sqrt(dx * dx + dy * dy);\n velocity = (distance / dt) * 0.6;\n } else if (type === 'end') {\n velocity = this.lastValue.velocity;\n }\n this.lastValue.time = now;\n\n return new DragData(\n x,\n y,\n dx,\n dy,\n type,\n ev,\n ev.clientX,\n ev.clientY,\n this.getDirection(ev),\n velocity,\n now,\n );\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { Drag } from './drag';\n\n@Directive({\n selector: '[ngbDragMove]',\n hostDirectives: [{ directive: Drag, inputs: ['dragBoundary'] }],\n})\nexport class DragMove {\n private drag = inject(Drag);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly target = input<HTMLElement>();\n private scale = 1;\n private x = 0;\n private y = 0;\n private lastX = 0;\n private lastY = 0;\n\n constructor() {\n this.drag.events.subscribe(data => {\n data.event?.preventDefault();\n requestAnimationFrame(() => {\n if (data.type === 'move') {\n this.x = data.x + this.lastX;\n this.y = data.y + this.lastY;\n this.updateTransform();\n } else if (data.type === 'end') {\n this.lastX = this.x;\n this.lastY = this.y;\n }\n });\n });\n\n // this.el.nativeElement.addEventListener('wheel', e => {\n // e.preventDefault();\n // const rect = this.element.getBoundingClientRect();\n // const mouseX = e.clientX - rect.left;\n // const mouseY = e.clientY - rect.top;\n\n // const prevScale = this.scale;\n // this.scale = Math.max(0.1, Math.min(10, this.scale + e.deltaY * -0.001));\n\n // const scaleRatio = this.scale / prevScale;\n\n // this.x += ((mouseX - this.x) * (1 - scaleRatio)) / this.scale;\n // this.y += ((mouseY - this.y) * (1 - scaleRatio)) / this.scale;\n\n // this.updateTransform();\n // });\n }\n\n private get element() {\n return this.target() ?? this.el.nativeElement;\n }\n\n private updateTransform() {\n this.element.style.transform = `translate(${this.x}px, ${this.y}px) scale(${this.scale})`;\n }\n}\n","import {\n Directive,\n ElementRef,\n contentChildren,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { Drag, DragData } from './drag';\n\nexport interface DropEvent<T> {\n previousIndex: number;\n currentIndex: number;\n container: { data: T };\n previousContainer: { data: T };\n}\n\n@Directive({\n selector: '[ngbDrop]',\n})\nexport class DragDrop<T> {\n readonly el = inject(ElementRef);\n readonly dragItems = contentChildren(Drag);\n\n readonly data = input<T>();\n readonly orderChanged = output<DropEvent<T>>();\n\n private sortableElements: HTMLElement[] = [];\n private previousIndex!: number;\n private currentIndex!: number;\n private height!: number; // height is required for testing\n\n constructor() {\n effect(cleanup => {\n const items = this.dragItems();\n this.sortableElements = [];\n const subs = items.map(item => {\n this.sortableElements.push(item.el.nativeElement);\n return item.ngbDrag.subscribe(data => this.onDrag(data, item));\n });\n cleanup(() => subs.forEach(sub => sub.unsubscribe()));\n });\n }\n\n private onDrag(dragData: DragData, item: Drag) {\n const element = item.el.nativeElement;\n if (dragData.type === 'start') {\n this.onDragStart(element);\n } else if (dragData.type === 'move') {\n this.onDragMove(element, dragData, item);\n } else if (dragData.type === 'end') {\n this.onDragEnd(element);\n }\n }\n\n fromThis(dragData: DragData) {\n return isIntersecting(\n { x: dragData.clientX!, y: dragData.clientY!, w: 0.1, h: 0.1 },\n this.el.nativeElement.getBoundingClientRect(),\n );\n }\n\n private onDragStart(element: HTMLElement) {\n element.style.zIndex = '1000';\n element.style.transition = 'none';\n element.style.position = 'relative';\n\n // original index\n this.previousIndex = this.dragItems().findIndex(item => item.el.nativeElement === element);\n this.currentIndex = this.previousIndex;\n this.height = element.offsetHeight;\n }\n\n private onDragMove(element: HTMLElement, dragData: DragData, drag: Drag) {\n const deltaX = dragData.x;\n const deltaY = dragData.y;\n element.style.transform = `translate(${deltaX}px, ${deltaY}px)`;\n\n // we have to find the new index by checking clientXY of the mouse\n const mouseY = dragData.clientY!;\n const mouseX = dragData.clientX!;\n const ci = this.currentIndex ?? this.previousIndex;\n let newIndex = this.sortableElements.findIndex((el, index) => {\n const rect = el.getBoundingClientRect();\n return index !== ci && isIntersecting({ x: mouseX, y: mouseY, w: 0.1, h: 0.1 }, rect);\n });\n newIndex = newIndex === -1 ? ci : newIndex;\n\n if (newIndex !== this.currentIndex) {\n this.rearrangeItems(drag, newIndex);\n this.currentIndex = newIndex;\n }\n }\n\n private onDragEnd(element: HTMLElement) {\n // Emit the new order\n this.resetPositions();\n this.emitNewOrder();\n\n // element.style.transition = 'transform 0.3s ease-out';\n // element.addEventListener(\n // 'transitionend',\n // () => {\n element.style.zIndex = '';\n element.style.position = '';\n // },\n // { once: true },\n // );\n }\n\n private rearrangeItems(dragger: Drag, newIndex: number) {\n const draggedItem = dragger.el.nativeElement;\n const oldIndex = this.sortableElements.indexOf(draggedItem);\n if (oldIndex === newIndex) return;\n\n // Move the dragged item in the array\n this.sortableElements.splice(oldIndex, 1);\n this.sortableElements.splice(newIndex, 0, draggedItem);\n\n // Update positions of all items\n this.updateItemPositions(draggedItem, newIndex);\n }\n\n private updateItemPositions(draggedItem: HTMLElement, newIndex: number) {\n const originalIndex = this.previousIndex;\n this.sortableElements.forEach((el, index) => {\n if (el !== draggedItem) {\n const v =\n (originalIndex >= newIndex && (index > originalIndex || index < newIndex)) ||\n (originalIndex <= newIndex && (index < originalIndex || index > newIndex))\n ? 0\n : index > newIndex\n ? 1\n : -1;\n const shift = v * this.height;\n el.style.transform = `translateY(${shift}px)`;\n // el.style.transition = 'transform 0.3s ease-out';\n }\n });\n }\n\n private resetPositions() {\n this.sortableElements.forEach(el => {\n el.style.transform = '';\n el.style.transition = '';\n });\n }\n\n private emitNewOrder() {\n if (this.currentIndex !== this.previousIndex) {\n const containerData = { data: this.data()! };\n this.orderChanged.emit({\n previousIndex: this.previousIndex,\n currentIndex: this.currentIndex,\n container: containerData,\n previousContainer: containerData,\n });\n }\n }\n}\n\ninterface Boundary {\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\n// We need to check if the mouse is intersecting with the element\nfunction isIntersecting(rect1: Boundary | DOMRect, rect2: Boundary | DOMRect) {\n if (rect1 instanceof DOMRect) {\n rect1 = { x: rect1.x, y: rect1.y, w: rect1.width, h: rect1.height };\n }\n if (rect2 instanceof DOMRect) {\n rect2 = { x: rect2.x, y: rect2.y, w: rect2.width, h: rect2.height };\n }\n return (\n rect1.x <= rect2.x + rect2.w &&\n rect1.x + rect1.w >= rect2.x &&\n rect1.y <= rect2.y + rect2.h &&\n rect1.y + rect1.h >= rect2.y\n );\n}\n\nexport function moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\n if (fromIndex === toIndex) return;\n\n const item = array[fromIndex];\n const diff = fromIndex - toIndex;\n\n if (diff > 0) {\n // Moving towards the start of the array\n for (let i = fromIndex; i > toIndex; i--) {\n array[i] = array[i - 1];\n }\n } else {\n // Moving towards the end of the array\n for (let i = fromIndex; i < toIndex; i++) {\n array[i] = array[i + 1];\n }\n }\n\n array[toIndex] = item;\n}\n\nexport function transferArrayItem<T>(\n fromArray: T[],\n toArray: T[],\n fromIndex: number,\n toIndex: number,\n): void {\n const item = fromArray[fromIndex];\n fromArray.splice(fromIndex, 1);\n toArray.splice(toIndex, 0, item);\n}\n","/*\n * Public API Surface of drag\n */\n\nexport * from './drag';\nexport * from './drag-move';\nexport * from './drag-drop';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Drag"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-drag.mjs","sources":["../../../projects/adk/drag/drag.ts","../../../projects/adk/drag/drag-move.ts","../../../projects/adk/drag/drag-drop.ts","../../../projects/adk/drag/public-api.ts","../../../projects/adk/drag/ngbase-adk-drag.ts"],"sourcesContent":["import { DOCUMENT } from '@angular/common';\nimport {\n Directive,\n ElementRef,\n booleanAttribute,\n computed,\n contentChild,\n effect,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { outputFromObservable } from '@angular/core/rxjs-interop';\nimport { Subject } from 'rxjs';\n\nexport class DragData {\n constructor(\n public x = 0,\n public y = 0,\n public dx = 0,\n public dy = 0,\n public type: 'start' | 'move' | 'end' = 'start',\n public event?: PointerEvent,\n public clientX?: number,\n public clientY?: number,\n public direction?: 'left' | 'right',\n public velocity = 0, // pixels per millisecond\n public time = Date.now(),\n ) {}\n}\n\n@Directive({\n selector: '[ngbDragHandle]',\n exportAs: 'ngbDragHandle',\n host: {\n class: 'cursor-move',\n },\n})\nexport class DragHandle {}\n\n@Directive({\n selector: '[ngbDrag]',\n exportAs: 'ngbDrag',\n})\nexport class Drag {\n readonly el = inject(ElementRef);\n readonly document = inject(DOCUMENT);\n\n readonly handle = contentChild(DragHandle, { read: ElementRef, descendants: true });\n readonly events = new Subject<DragData>();\n readonly ngbDrag = outputFromObservable(this.events);\n\n readonly disabled = input(false, { transform: booleanAttribute });\n readonly lockAxis = input<'x' | 'y'>();\n readonly dragBoundary = input<string>();\n\n // hacky: we need this for host directives\n _lockAxis = linkedSignal(this.lockAxis);\n _dragBoundary = linkedSignal(this.dragBoundary);\n _disabled = linkedSignal(this.disabled);\n\n private readonly dragBoundaryElement = computed(() => {\n const id = this._dragBoundary();\n return id ? this.document.querySelector(id) : null;\n });\n private boundaryRect: { left: number; top: number; right: number; bottom: number } | undefined;\n startEvent!: PointerEvent;\n lastValue = new DragData();\n isDragging = false;\n\n constructor() {\n effect(cleanup => {\n if (!this._disabled()) {\n const handle = this.handle() || this.el;\n handle.nativeElement.addEventListener('pointerdown', this.onPointerDown);\n cleanup(() => handle.nativeElement.removeEventListener('pointerdown', this.onPointerDown));\n }\n });\n this.el.nativeElement.style.touchAction = 'none';\n }\n\n private onPointerDown = (event: PointerEvent) => {\n if (event.button !== 0) return; // Only trigger on left click\n\n this.startDrag(event);\n this.document.addEventListener('pointermove', this.onPointerMove);\n this.document.addEventListener('pointerup', this.onPointerUp);\n };\n\n private onPointerMove = (event: PointerEvent) => {\n if (this.isDragging) {\n event.preventDefault();\n event.stopPropagation();\n this.moveDrag(event);\n }\n };\n\n private onPointerUp = (event: PointerEvent) => {\n this.endDrag(event);\n this.document.removeEventListener('pointermove', this.onPointerMove);\n this.document.removeEventListener('pointerup', this.onPointerUp);\n };\n\n private startDrag(event: PointerEvent) {\n this.startEvent = event;\n this.isDragging = true;\n const rect = this.el.nativeElement.getBoundingClientRect();\n const parentRect = this.dragBoundaryElement()?.getBoundingClientRect();\n if (parentRect) {\n const left = rect.left - parentRect.left;\n const top = rect.top - parentRect.top;\n this.boundaryRect = {\n left,\n top,\n right: parentRect.width - rect.width - left,\n bottom: parentRect.height - rect.height - top,\n };\n // console.log(this.boundaryRect);\n }\n this.lastValue = this.getDragEvent(event, 'start');\n this.events.next(this.lastValue);\n this.toggleUserSelect();\n }\n\n private moveDrag(event: PointerEvent) {\n this.lastValue = this.getDragEvent(event, 'move');\n // prevent unnecessary events when the drag is outside the boundary\n if (this.lastValue.dx !== 0 || this.lastValue.dy !== 0) {\n this.events.next(this.lastValue);\n }\n }\n\n private endDrag(event: PointerEvent) {\n this.isDragging = false;\n const value = this.getDragEvent(event, 'end');\n this.events.next(value);\n this.lastValue = new DragData();\n this.toggleUserSelect(false);\n }\n\n private toggleUserSelect(active = true) {\n const value = active ? 'none' : '';\n this.document.body.style.userSelect = value;\n this.document.body.style.webkitUserSelect = value;\n this.document.body.style.pointerEvents = value;\n }\n\n private getDirection(ev: PointerEvent) {\n let dir = this.lastValue.direction || 'left';\n if (ev.clientX > this.lastValue.clientX!) {\n dir = 'right';\n } else if (ev.clientX < this.lastValue.clientX!) {\n dir = 'left';\n }\n return dir;\n }\n\n private getDragEvent(ev: PointerEvent, type: 'start' | 'move' | 'end') {\n const now = Date.now();\n const dt = now - this.lastValue.time;\n const startClientX = this.startEvent.clientX;\n const startClientY = this.startEvent.clientY;\n\n let x = ev.clientX - startClientX;\n let y = ev.clientY - startClientY;\n\n // it is to make sure that the drag is always in the drag point\n if (this.boundaryRect) {\n const { left, top, right, bottom } = this.boundaryRect;\n x = Math.max(-left, Math.min(x, right));\n y = Math.max(-top, Math.min(y, bottom));\n }\n\n if (this._lockAxis() === 'x') {\n y = 0;\n } else if (this._lockAxis() === 'y') {\n x = 0;\n }\n\n const dx = x - (this.lastValue.x ?? 0);\n const dy = y - (this.lastValue.y ?? 0);\n\n let velocity = 0;\n if (type === 'move' && dt > 0) {\n const distance = Math.sqrt(dx * dx + dy * dy);\n velocity = (distance / dt) * 0.6;\n } else if (type === 'end') {\n velocity = this.lastValue.velocity;\n }\n this.lastValue.time = now;\n\n return new DragData(\n x,\n y,\n dx,\n dy,\n type,\n ev,\n ev.clientX,\n ev.clientY,\n this.getDirection(ev),\n velocity,\n now,\n );\n }\n}\n","import { Directive, ElementRef, inject, input } from '@angular/core';\nimport { Drag } from './drag';\n\n@Directive({\n selector: '[ngbDragMove]',\n hostDirectives: [{ directive: Drag, inputs: ['dragBoundary'] }],\n})\nexport class DragMove {\n private drag = inject(Drag);\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly target = input<HTMLElement>();\n private scale = 1;\n private x = 0;\n private y = 0;\n private lastX = 0;\n private lastY = 0;\n\n constructor() {\n this.drag.events.subscribe(data => {\n data.event?.preventDefault();\n requestAnimationFrame(() => {\n if (data.type === 'move') {\n this.x = data.x + this.lastX;\n this.y = data.y + this.lastY;\n this.updateTransform();\n } else if (data.type === 'end') {\n this.lastX = this.x;\n this.lastY = this.y;\n }\n });\n });\n\n // this.el.nativeElement.addEventListener('wheel', e => {\n // e.preventDefault();\n // const rect = this.element.getBoundingClientRect();\n // const mouseX = e.clientX - rect.left;\n // const mouseY = e.clientY - rect.top;\n\n // const prevScale = this.scale;\n // this.scale = Math.max(0.1, Math.min(10, this.scale + e.deltaY * -0.001));\n\n // const scaleRatio = this.scale / prevScale;\n\n // this.x += ((mouseX - this.x) * (1 - scaleRatio)) / this.scale;\n // this.y += ((mouseY - this.y) * (1 - scaleRatio)) / this.scale;\n\n // this.updateTransform();\n // });\n }\n\n private get element() {\n return this.target() ?? this.el.nativeElement;\n }\n\n private updateTransform() {\n this.element.style.transform = `translate(${this.x}px, ${this.y}px) scale(${this.scale})`;\n }\n}\n","import {\n Directive,\n ElementRef,\n contentChildren,\n effect,\n inject,\n input,\n output,\n} from '@angular/core';\nimport { Drag, DragData } from './drag';\n\nexport interface DropEvent<T> {\n previousIndex: number;\n currentIndex: number;\n container: { data: T };\n previousContainer: { data: T };\n}\n\n@Directive({\n selector: '[ngbDrop]',\n})\nexport class DragDrop<T> {\n readonly el = inject(ElementRef);\n readonly dragItems = contentChildren(Drag);\n\n readonly data = input<T>();\n readonly orderChanged = output<DropEvent<T>>();\n\n private sortableElements: HTMLElement[] = [];\n private previousIndex!: number;\n private currentIndex!: number;\n private height!: number; // height is required for testing\n\n constructor() {\n effect(cleanup => {\n const items = this.dragItems();\n this.sortableElements = [];\n const subs = items.map(item => {\n this.sortableElements.push(item.el.nativeElement);\n return item.ngbDrag.subscribe(data => this.onDrag(data, item));\n });\n cleanup(() => subs.forEach(sub => sub.unsubscribe()));\n });\n }\n\n private onDrag(dragData: DragData, item: Drag) {\n const element = item.el.nativeElement;\n if (dragData.type === 'start') {\n this.onDragStart(element);\n } else if (dragData.type === 'move') {\n this.onDragMove(element, dragData, item);\n } else if (dragData.type === 'end') {\n this.onDragEnd(element);\n }\n }\n\n fromThis(dragData: DragData) {\n return isIntersecting(\n { x: dragData.clientX!, y: dragData.clientY!, w: 0.1, h: 0.1 },\n this.el.nativeElement.getBoundingClientRect(),\n );\n }\n\n private onDragStart(element: HTMLElement) {\n element.style.zIndex = '1000';\n element.style.transition = 'none';\n element.style.position = 'relative';\n\n // original index\n this.previousIndex = this.dragItems().findIndex(item => item.el.nativeElement === element);\n this.currentIndex = this.previousIndex;\n this.height = element.offsetHeight;\n }\n\n private onDragMove(element: HTMLElement, dragData: DragData, drag: Drag) {\n const deltaX = dragData.x;\n const deltaY = dragData.y;\n element.style.transform = `translate(${deltaX}px, ${deltaY}px)`;\n\n // we have to find the new index by checking clientXY of the mouse\n const mouseY = dragData.clientY!;\n const mouseX = dragData.clientX!;\n const ci = this.currentIndex ?? this.previousIndex;\n let newIndex = this.sortableElements.findIndex((el, index) => {\n const rect = el.getBoundingClientRect();\n return index !== ci && isIntersecting({ x: mouseX, y: mouseY, w: 0.1, h: 0.1 }, rect);\n });\n newIndex = newIndex === -1 ? ci : newIndex;\n\n if (newIndex !== this.currentIndex) {\n this.rearrangeItems(drag, newIndex);\n this.currentIndex = newIndex;\n }\n }\n\n private onDragEnd(element: HTMLElement) {\n // Emit the new order\n this.resetPositions();\n this.emitNewOrder();\n\n // element.style.transition = 'transform 0.3s ease-out';\n // element.addEventListener(\n // 'transitionend',\n // () => {\n element.style.zIndex = '';\n element.style.position = '';\n // },\n // { once: true },\n // );\n }\n\n private rearrangeItems(dragger: Drag, newIndex: number) {\n const draggedItem = dragger.el.nativeElement;\n const oldIndex = this.sortableElements.indexOf(draggedItem);\n if (oldIndex === newIndex) return;\n\n // Move the dragged item in the array\n this.sortableElements.splice(oldIndex, 1);\n this.sortableElements.splice(newIndex, 0, draggedItem);\n\n // Update positions of all items\n this.updateItemPositions(draggedItem, newIndex);\n }\n\n private updateItemPositions(draggedItem: HTMLElement, newIndex: number) {\n const originalIndex = this.previousIndex;\n this.sortableElements.forEach((el, index) => {\n if (el !== draggedItem) {\n const v =\n (originalIndex >= newIndex && (index > originalIndex || index < newIndex)) ||\n (originalIndex <= newIndex && (index < originalIndex || index > newIndex))\n ? 0\n : index > newIndex\n ? 1\n : -1;\n const shift = v * this.height;\n el.style.transform = `translateY(${shift}px)`;\n // el.style.transition = 'transform 0.3s ease-out';\n }\n });\n }\n\n private resetPositions() {\n this.sortableElements.forEach(el => {\n el.style.transform = '';\n el.style.transition = '';\n });\n }\n\n private emitNewOrder() {\n if (this.currentIndex !== this.previousIndex) {\n const containerData = { data: this.data()! };\n this.orderChanged.emit({\n previousIndex: this.previousIndex,\n currentIndex: this.currentIndex,\n container: containerData,\n previousContainer: containerData,\n });\n }\n }\n}\n\ninterface Boundary {\n x: number;\n y: number;\n w: number;\n h: number;\n}\n\n// We need to check if the mouse is intersecting with the element\nfunction isIntersecting(rect1: Boundary | DOMRect, rect2: Boundary | DOMRect) {\n if (rect1 instanceof DOMRect) {\n rect1 = { x: rect1.x, y: rect1.y, w: rect1.width, h: rect1.height };\n }\n if (rect2 instanceof DOMRect) {\n rect2 = { x: rect2.x, y: rect2.y, w: rect2.width, h: rect2.height };\n }\n return (\n rect1.x <= rect2.x + rect2.w &&\n rect1.x + rect1.w >= rect2.x &&\n rect1.y <= rect2.y + rect2.h &&\n rect1.y + rect1.h >= rect2.y\n );\n}\n\nexport function moveItemInArray<T>(array: T[], fromIndex: number, toIndex: number): void {\n if (fromIndex === toIndex) return;\n\n const item = array[fromIndex];\n const diff = fromIndex - toIndex;\n\n if (diff > 0) {\n // Moving towards the start of the array\n for (let i = fromIndex; i > toIndex; i--) {\n array[i] = array[i - 1];\n }\n } else {\n // Moving towards the end of the array\n for (let i = fromIndex; i < toIndex; i++) {\n array[i] = array[i + 1];\n }\n }\n\n array[toIndex] = item;\n}\n\nexport function transferArrayItem<T>(\n fromArray: T[],\n toArray: T[],\n fromIndex: number,\n toIndex: number,\n): void {\n const item = fromArray[fromIndex];\n fromArray.splice(fromIndex, 1);\n toArray.splice(toIndex, 0, item);\n}\n","/*\n * Public API Surface of drag\n */\n\nexport * from './drag';\nexport * from './drag-move';\nexport * from './drag-drop';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1.Drag"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { trigger, state, style, transition, animate } from '@angular/animations';
|
|
2
2
|
import * as i0 from '@angular/core';
|
|
3
|
-
import { contentChild, computed, contentChildren, forwardRef, Directive, signal, effect, inject, input, model, ElementRef, Injector, afterNextRender
|
|
3
|
+
import { contentChild, computed, contentChildren, forwardRef, Directive, signal, effect, inject, input, model, ElementRef, Injector, afterNextRender } from '@angular/core';
|
|
4
4
|
import { NgControl, FormGroup, FormArray } from '@angular/forms';
|
|
5
5
|
import { uniqueId, provideValueAccessor } from '@ngbase/adk/utils';
|
|
6
6
|
|
|
@@ -202,163 +202,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImpor
|
|
|
202
202
|
}]
|
|
203
203
|
}] });
|
|
204
204
|
|
|
205
|
-
class NgbOtpInput {
|
|
206
|
-
constructor() {
|
|
207
|
-
this.otp = inject(NgbInputOtp);
|
|
208
|
-
this.el = inject(ElementRef);
|
|
209
|
-
}
|
|
210
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
211
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbOtpInput, isStandalone: true, selector: "input[ngbOtpInput]", host: { properties: { "disabled": "otp.disabled() || undefined" }, styleAttribute: "position: absolute; inset: 0; border: none; background: transparent; caret-color: transparent; outline: none; color: transparent; letter-spacing: -0.5rem;" }, ngImport: i0 }); }
|
|
212
|
-
}
|
|
213
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpInput, decorators: [{
|
|
214
|
-
type: Directive,
|
|
215
|
-
args: [{
|
|
216
|
-
selector: 'input[ngbOtpInput]',
|
|
217
|
-
host: {
|
|
218
|
-
'[disabled]': 'otp.disabled() || undefined',
|
|
219
|
-
style: 'position: absolute; inset: 0; border: none; background: transparent; caret-color: transparent; outline: none; color: transparent; letter-spacing: -0.5rem;',
|
|
220
|
-
},
|
|
221
|
-
}]
|
|
222
|
-
}] });
|
|
223
|
-
class NgbOtpValue {
|
|
224
|
-
constructor() {
|
|
225
|
-
this.otp = inject(NgbInputOtp);
|
|
226
|
-
this.el = inject(ElementRef);
|
|
227
|
-
this.index = computed(() => this.otp._otpValues().findIndex(v => this.el === v.el));
|
|
228
|
-
this.value = computed(() => this.otp.values()[this.index()] || '');
|
|
229
|
-
this.focused = computed(() => {
|
|
230
|
-
return (this.otp.focused() && this.index() === Math.min(this.otp.values().length, this.otp.no() - 1));
|
|
231
|
-
});
|
|
232
|
-
effect(() => {
|
|
233
|
-
const value = this.value();
|
|
234
|
-
this.el.nativeElement.textContent = value && this.otp.masked() ? '•' : value;
|
|
235
|
-
});
|
|
236
|
-
}
|
|
237
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpValue, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
238
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.0.0", type: NgbOtpValue, isStandalone: true, selector: "[ngbOtpValue]", host: { attributes: { "aria-hidden": "true", "tabindex": "-1" }, properties: { "attr.data-focus": "focused() || undefined", "attr.data-disabled": "otp.disabled() || undefined" }, styleAttribute: "pointer-events: none" }, ngImport: i0 }); }
|
|
239
|
-
}
|
|
240
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbOtpValue, decorators: [{
|
|
241
|
-
type: Directive,
|
|
242
|
-
args: [{
|
|
243
|
-
selector: '[ngbOtpValue]',
|
|
244
|
-
host: {
|
|
245
|
-
style: `pointer-events: none`,
|
|
246
|
-
'[attr.data-focus]': 'focused() || undefined',
|
|
247
|
-
'[attr.data-disabled]': 'otp.disabled() || undefined',
|
|
248
|
-
'aria-hidden': 'true',
|
|
249
|
-
tabindex: '-1',
|
|
250
|
-
},
|
|
251
|
-
}]
|
|
252
|
-
}], ctorParameters: () => [] });
|
|
253
|
-
class NgbInputOtp {
|
|
254
|
-
constructor() {
|
|
255
|
-
this.inputs = viewChild.required(NgbOtpInput);
|
|
256
|
-
this._otpValues = viewChildren(NgbOtpValue);
|
|
257
|
-
// private readonly
|
|
258
|
-
this.size = input([4]);
|
|
259
|
-
this.masked = input(false, { transform: booleanAttribute });
|
|
260
|
-
this.disabled = input(false);
|
|
261
|
-
this.no = computed(() => this.size().reduce((a, b) => a + b, 0));
|
|
262
|
-
this.lastValue = '';
|
|
263
|
-
this.values = signal('');
|
|
264
|
-
this.focused = signal(false);
|
|
265
|
-
afterRenderEffect(cleanup => {
|
|
266
|
-
const inputEl = this.inputs().el.nativeElement;
|
|
267
|
-
const inputListener = () => {
|
|
268
|
-
const value = inputEl.value;
|
|
269
|
-
this.updateValue(value);
|
|
270
|
-
};
|
|
271
|
-
const keydownListener = (e) => {
|
|
272
|
-
const value = inputEl.value.length === this.no();
|
|
273
|
-
// const isPaste = (e.ctrlKey || e.metaKey) && e.key === 'v';
|
|
274
|
-
// if (isPaste || ['Tab', 'Enter'].includes(e.key)) {
|
|
275
|
-
// // prevent default behavior for tab key
|
|
276
|
-
// return;
|
|
277
|
-
// } else
|
|
278
|
-
if (value && !['Tab', 'Enter', 'Backspace'].includes(e.key)) {
|
|
279
|
-
// prevent default behavior for non-numeric characters
|
|
280
|
-
e.preventDefault();
|
|
281
|
-
}
|
|
282
|
-
};
|
|
283
|
-
const pasteListener = (e) => {
|
|
284
|
-
e.preventDefault();
|
|
285
|
-
const pastedText = e.clipboardData?.getData('text') || '';
|
|
286
|
-
const numbers = pastedText.replace(/\D/g, '');
|
|
287
|
-
// Only process if we have valid numbers
|
|
288
|
-
if (numbers.length === 0)
|
|
289
|
-
return;
|
|
290
|
-
this.updateNewValue(numbers.slice(0, this.no()));
|
|
291
|
-
this.updateValue(inputEl.value);
|
|
292
|
-
};
|
|
293
|
-
const blurListener = () => {
|
|
294
|
-
// We have to use untracked because the blur is triggered by the input element when we make it disabled
|
|
295
|
-
// so we are getting cannot update signal inside computed error
|
|
296
|
-
untracked(() => this.focused.set(false));
|
|
297
|
-
};
|
|
298
|
-
const focusListener = () => {
|
|
299
|
-
this.focused.set(true);
|
|
300
|
-
// set the cursor to the end of the input
|
|
301
|
-
inputEl.selectionStart = inputEl.selectionEnd = inputEl.value.length;
|
|
302
|
-
};
|
|
303
|
-
inputEl.addEventListener('input', inputListener);
|
|
304
|
-
inputEl.addEventListener('focus', focusListener);
|
|
305
|
-
inputEl.addEventListener('blur', blurListener);
|
|
306
|
-
inputEl.addEventListener('keydown', keydownListener);
|
|
307
|
-
inputEl.addEventListener('paste', pasteListener);
|
|
308
|
-
cleanup(() => {
|
|
309
|
-
inputEl.removeEventListener('input', inputListener);
|
|
310
|
-
inputEl.removeEventListener('focus', focusListener);
|
|
311
|
-
inputEl.removeEventListener('blur', blurListener);
|
|
312
|
-
inputEl.removeEventListener('keydown', keydownListener);
|
|
313
|
-
inputEl.removeEventListener('paste', pasteListener);
|
|
314
|
-
});
|
|
315
|
-
});
|
|
316
|
-
}
|
|
317
|
-
updateNewValue(value) {
|
|
318
|
-
this.values.set(value);
|
|
319
|
-
this.inputs().el.nativeElement.value = value;
|
|
320
|
-
}
|
|
321
|
-
writeValue(value) {
|
|
322
|
-
const values = value || '';
|
|
323
|
-
this.lastValue = value;
|
|
324
|
-
this.updateNewValue(values);
|
|
325
|
-
}
|
|
326
|
-
updateValue(values) {
|
|
327
|
-
this.values.set(values);
|
|
328
|
-
// const value = values.length === this.no() ? values : '';
|
|
329
|
-
// if (this.lastValue === value) {
|
|
330
|
-
// return;
|
|
331
|
-
// }
|
|
332
|
-
this.lastValue = values;
|
|
333
|
-
this.onChange?.(values);
|
|
334
|
-
this.onTouched?.();
|
|
335
|
-
}
|
|
336
|
-
registerOnChange(fn) {
|
|
337
|
-
this.onChange = fn;
|
|
338
|
-
}
|
|
339
|
-
registerOnTouched(fn) {
|
|
340
|
-
this.onTouched = fn;
|
|
341
|
-
}
|
|
342
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbInputOtp, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
343
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "19.0.0", type: NgbInputOtp, isStandalone: true, selector: "[ngbInputOtp]", inputs: { size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, masked: { classPropertyName: "masked", publicName: "masked", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, providers: [_provide(NgbInputOtp)], viewQueries: [{ propertyName: "inputs", first: true, predicate: NgbOtpInput, descendants: true, isSignal: true }, { propertyName: "_otpValues", predicate: NgbOtpValue, descendants: true, isSignal: true }], ngImport: i0 }); }
|
|
344
|
-
}
|
|
345
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbInputOtp, decorators: [{
|
|
346
|
-
type: Directive,
|
|
347
|
-
args: [{
|
|
348
|
-
selector: '[ngbInputOtp]',
|
|
349
|
-
providers: [_provide(NgbInputOtp)],
|
|
350
|
-
}]
|
|
351
|
-
}], ctorParameters: () => [] });
|
|
352
|
-
function _provide(otp) {
|
|
353
|
-
return [provideValueAccessor(otp)];
|
|
354
|
-
}
|
|
355
|
-
function provideInputOtp(otp) {
|
|
356
|
-
return [_provide(otp), { provide: NgbInputOtp, useExisting: otp }];
|
|
357
|
-
}
|
|
358
|
-
|
|
359
205
|
/**
|
|
360
206
|
* Generated bundle index. Do not edit.
|
|
361
207
|
*/
|
|
362
208
|
|
|
363
|
-
export { AutoHeight, InputBase, NgbFormField, NgbInputError,
|
|
209
|
+
export { AutoHeight, InputBase, NgbFormField, NgbInputError, NgbLabel, markControlsTouched, toggleDiv };
|
|
364
210
|
//# 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/otp.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","import {\n afterRenderEffect,\n booleanAttribute,\n ChangeDetectionStrategy,\n Component,\n computed,\n Directive,\n effect,\n ElementRef,\n inject,\n input,\n signal,\n untracked,\n viewChild,\n viewChildren,\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: 'input[ngbOtpInput]',\n host: {\n '[disabled]': 'otp.disabled() || undefined',\n style:\n 'position: absolute; inset: 0; border: none; background: transparent; caret-color: transparent; outline: none; color: transparent; letter-spacing: -0.5rem;',\n },\n})\nexport class NgbOtpInput {\n readonly otp = inject(NgbInputOtp);\n readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n}\n\n@Directive({\n selector: '[ngbOtpValue]',\n host: {\n style: `pointer-events: none`,\n '[attr.data-focus]': 'focused() || undefined',\n '[attr.data-disabled]': 'otp.disabled() || undefined',\n 'aria-hidden': 'true',\n tabindex: '-1',\n },\n})\nexport class NgbOtpValue {\n readonly otp = inject(NgbInputOtp);\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n readonly index = computed(() => this.otp._otpValues().findIndex(v => this.el === v.el));\n readonly value = computed(() => this.otp.values()[this.index()] || '');\n\n readonly focused = computed(() => {\n return (\n this.otp.focused() && this.index() === Math.min(this.otp.values().length, this.otp.no() - 1)\n );\n });\n\n constructor() {\n effect(() => {\n const value = this.value();\n this.el.nativeElement.textContent = value && this.otp.masked() ? '•' : value;\n });\n }\n}\n\n@Directive({\n selector: '[ngbInputOtp]',\n providers: [_provide(NgbInputOtp)],\n})\nexport class NgbInputOtp implements ControlValueAccessor {\n private readonly inputs = viewChild.required<NgbOtpInput>(NgbOtpInput);\n readonly _otpValues = viewChildren<NgbOtpValue>(NgbOtpValue);\n // private readonly\n\n readonly size = input<number[]>([4]);\n readonly masked = input(false, { transform: booleanAttribute });\n readonly disabled = input<boolean>(false);\n\n readonly no = computed(() => this.size().reduce((a, b) => a + b, 0));\n private onChange?: (value: string) => void;\n private onTouched?: () => void;\n private lastValue = '';\n readonly values = signal<string>('');\n readonly focused = signal<boolean>(false);\n\n constructor() {\n afterRenderEffect(cleanup => {\n const inputEl = this.inputs().el.nativeElement;\n\n const inputListener = () => {\n const value = inputEl.value;\n this.updateValue(value);\n };\n\n const keydownListener = (e: KeyboardEvent) => {\n const value = inputEl.value.length === this.no();\n // const isPaste = (e.ctrlKey || e.metaKey) && e.key === 'v';\n // if (isPaste || ['Tab', 'Enter'].includes(e.key)) {\n // // prevent default behavior for tab key\n // return;\n // } else\n if (value && !['Tab', 'Enter', 'Backspace'].includes(e.key)) {\n // prevent default behavior for non-numeric characters\n e.preventDefault();\n }\n };\n\n const pasteListener = (e: ClipboardEvent) => {\n e.preventDefault();\n\n const pastedText = e.clipboardData?.getData('text') || '';\n const numbers = pastedText.replace(/\\D/g, '');\n\n // Only process if we have valid numbers\n if (numbers.length === 0) return;\n\n this.updateNewValue(numbers.slice(0, this.no()));\n this.updateValue(inputEl.value);\n };\n\n const blurListener = () => {\n // We have to use untracked because the blur is triggered by the input element when we make it disabled\n // so we are getting cannot update signal inside computed error\n untracked(() => this.focused.set(false));\n };\n\n const focusListener = () => {\n this.focused.set(true);\n // set the cursor to the end of the input\n inputEl.selectionStart = inputEl.selectionEnd = inputEl.value.length;\n };\n\n inputEl.addEventListener('input', inputListener);\n inputEl.addEventListener('focus', focusListener);\n inputEl.addEventListener('blur', blurListener);\n inputEl.addEventListener('keydown', keydownListener);\n inputEl.addEventListener('paste', pasteListener);\n\n cleanup(() => {\n inputEl.removeEventListener('input', inputListener);\n inputEl.removeEventListener('focus', focusListener);\n inputEl.removeEventListener('blur', blurListener);\n inputEl.removeEventListener('keydown', keydownListener);\n inputEl.removeEventListener('paste', pasteListener);\n });\n });\n }\n\n private updateNewValue(value: string) {\n this.values.set(value);\n this.inputs().el.nativeElement.value = value;\n }\n\n writeValue(value: string) {\n const values = value || '';\n this.lastValue = value;\n this.updateNewValue(values);\n }\n\n updateValue(values: string) {\n this.values.set(values);\n // const value = values.length === this.no() ? values : '';\n // if (this.lastValue === value) {\n // return;\n // }\n this.lastValue = values;\n this.onChange?.(values);\n this.onTouched?.();\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n}\n\nfunction _provide(otp: typeof NgbInputOtp) {\n return [provideValueAccessor(otp)];\n}\n\nexport function provideInputOtp(otp: typeof NgbInputOtp) {\n return [_provide(otp), { provide: NgbInputOtp, useExisting: otp }];\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/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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"}
|
|
@@ -22,10 +22,10 @@ class NgbList {
|
|
|
22
22
|
}
|
|
23
23
|
focus() {
|
|
24
24
|
this.el.nativeElement.scrollIntoView({ block: 'nearest' });
|
|
25
|
-
this.el.nativeElement.classList.add('bg-muted
|
|
25
|
+
this.el.nativeElement.classList.add('bg-muted');
|
|
26
26
|
}
|
|
27
27
|
unselect() {
|
|
28
|
-
this.el.nativeElement.classList.remove('bg-muted
|
|
28
|
+
this.el.nativeElement.classList.remove('bg-muted');
|
|
29
29
|
}
|
|
30
30
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: NgbList, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
31
31
|
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: NgbList, isStandalone: true, selector: "[ngbList]", inputs: { ayId: { classPropertyName: "ayId", publicName: "ayId", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { attributes: { "role": "list" } }, hostDirectives: [{ directive: i1.AccessibleItem, inputs: ["role", "role", "disabled", "disabled"] }], ngImport: i0 }); }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-list.mjs","sources":["../../../projects/adk/list/list.ts","../../../projects/adk/list/list.directive.ts","../../../projects/adk/list/public-api.ts","../../../projects/adk/list/ngbase-adk-list.ts"],"sourcesContent":["import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n WritableSignal,\n} from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\n\n@Directive({\n selector: '[ngbList]',\n hostDirectives: [{ directive: AccessibleItem, inputs: ['role', 'disabled'] }],\n host: {\n role: 'list',\n },\n})\nexport class NgbList {\n // Dependencies\n private readonly allyItem = inject(AccessibleItem);\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // Inputs\n readonly ayId = input<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n\n constructor() {\n this.allyItem._ayId = linkedSignal(this.ayId) as WritableSignal<string>;\n }\n\n setAyId(id: string) {\n this.allyItem._ayId.set(id);\n }\n\n select() {\n this.el.nativeElement.click();\n }\n\n focus() {\n this.el.nativeElement.scrollIntoView({ block: 'nearest' });\n this.el.nativeElement.classList.add('bg-muted
|
|
1
|
+
{"version":3,"file":"ngbase-adk-list.mjs","sources":["../../../projects/adk/list/list.ts","../../../projects/adk/list/list.directive.ts","../../../projects/adk/list/public-api.ts","../../../projects/adk/list/ngbase-adk-list.ts"],"sourcesContent":["import {\n booleanAttribute,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n WritableSignal,\n} from '@angular/core';\nimport { AccessibleItem } from '@ngbase/adk/a11y';\n\n@Directive({\n selector: '[ngbList]',\n hostDirectives: [{ directive: AccessibleItem, inputs: ['role', 'disabled'] }],\n host: {\n role: 'list',\n },\n})\nexport class NgbList {\n // Dependencies\n private readonly allyItem = inject(AccessibleItem);\n readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n // Inputs\n readonly ayId = input<string>();\n readonly disabled = input(false, { transform: booleanAttribute });\n\n constructor() {\n this.allyItem._ayId = linkedSignal(this.ayId) as WritableSignal<string>;\n }\n\n setAyId(id: string) {\n this.allyItem._ayId.set(id);\n }\n\n select() {\n this.el.nativeElement.click();\n }\n\n focus() {\n this.el.nativeElement.scrollIntoView({ block: 'nearest' });\n this.el.nativeElement.classList.add('bg-muted');\n }\n\n unselect() {\n this.el.nativeElement.classList.remove('bg-muted');\n }\n}\n\nexport function provideList(list: typeof NgbList) {\n return {\n provide: NgbList,\n useExisting: list,\n };\n}\n","import {\n Directive,\n afterNextRender,\n contentChildren,\n effect,\n signal,\n untracked,\n} from '@angular/core';\nimport { documentListener } from '@ngbase/adk/utils';\nimport { NgbList } from './list';\n\n@Directive({\n selector: '[ngbActionGroup]',\n})\nexport class NgbListActionGroup {\n readonly options = contentChildren(NgbList, { descendants: true });\n\n private readonly activeIndex = signal<NgbList | undefined>(undefined);\n private readonly optionsMap = new WeakMap<NgbList, number>();\n\n constructor() {\n documentListener('keydown', this.handleKeyDown);\n afterNextRender(() => this.afterAction());\n\n effect(() => {\n const options = this.options();\n options.forEach((x, i) => this.optionsMap.set(x, i));\n untracked(() => {\n const lastIndex = this.activeIndex();\n this.activeIndex.set(options[0]);\n this.afterAction(lastIndex);\n });\n });\n }\n\n private handleKeyDown = (event: KeyboardEvent) => {\n const options = this.options();\n const lastIndex = this.activeIndex();\n const i = this.optionsMap.get(this.activeIndex() || options[0])!;\n if (event.key === 'ArrowDown') {\n this.activeIndex.set(options[Math.min(i + 1, options.length - 1)]);\n } else if (event.key === 'ArrowUp') {\n this.activeIndex.set(options[Math.max(i - 1, 0)]);\n } else if (event.key === 'Enter') {\n lastIndex?.select();\n }\n if (lastIndex !== this.activeIndex()) {\n event.preventDefault();\n this.afterAction(lastIndex);\n }\n };\n\n private afterAction(lastIndex?: NgbList) {\n const option = this.activeIndex();\n lastIndex?.unselect();\n option?.focus();\n }\n}\n","/*\n * Public API Surface of list\n */\n\nexport * from './list';\nexport * from './list.directive';\n// export * from './list-selection.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAkBa,OAAO,CAAA;AASlB,IAAA,WAAA,GAAA;;AAPiB,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;AACzC,QAAA,IAAA,CAAA,EAAE,GAAG,MAAM,CAA0B,UAAU,CAAC;;QAGhD,IAAI,CAAA,IAAA,GAAG,KAAK,EAAU;QACtB,IAAQ,CAAA,QAAA,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;QAG/D,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAA2B;;AAGzE,IAAA,OAAO,CAAC,EAAU,EAAA;QAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;;IAG7B,MAAM,GAAA;AACJ,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,EAAE;;IAG/B,KAAK,GAAA;AACH,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QAC1D,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,CAAC;;IAGjD,QAAQ,GAAA;QACN,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;;8GA3BzC,OAAO,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAP,OAAO,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,EAAA,IAAA,EAAA,EAAA,iBAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,QAAA,EAAA,EAAA,iBAAA,EAAA,UAAA,EAAA,UAAA,EAAA,UAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,MAAA,EAAA,MAAA,EAAA,EAAA,EAAA,cAAA,EAAA,CAAA,EAAA,SAAA,EAAA,EAAA,CAAA,cAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBAPnB,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,WAAW;AACrB,oBAAA,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;AAC7E,oBAAA,IAAI,EAAE;AACJ,wBAAA,IAAI,EAAE,MAAM;AACb,qBAAA;AACF,iBAAA;;AAgCK,SAAU,WAAW,CAAC,IAAoB,EAAA;IAC9C,OAAO;AACL,QAAA,OAAO,EAAE,OAAO;AAChB,QAAA,WAAW,EAAE,IAAI;KAClB;AACH;;MCxCa,kBAAkB,CAAA;AAM7B,IAAA,WAAA,GAAA;QALS,IAAO,CAAA,OAAA,GAAG,eAAe,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AAEjD,QAAA,IAAA,CAAA,WAAW,GAAG,MAAM,CAAsB,SAAS,CAAC;AACpD,QAAA,IAAA,CAAA,UAAU,GAAG,IAAI,OAAO,EAAmB;AAiBpD,QAAA,IAAA,CAAA,aAAa,GAAG,CAAC,KAAoB,KAAI;AAC/C,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AAC9B,YAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;AACpC,YAAA,MAAM,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC,CAAE;AAChE,YAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;gBAC7B,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;;AAC7D,iBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS,EAAE;AAClC,gBAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;;AAC5C,iBAAA,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE;gBAChC,SAAS,EAAE,MAAM,EAAE;;AAErB,YAAA,IAAI,SAAS,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE;gBACpC,KAAK,CAAC,cAAc,EAAE;AACtB,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;;AAE/B,SAAC;AA7BC,QAAA,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC;QAC/C,eAAe,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAEzC,MAAM,CAAC,MAAK;AACV,YAAA,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;YAC9B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACpD,SAAS,CAAC,MAAK;AACb,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE;gBACpC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAChC,gBAAA,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC;AAC7B,aAAC,CAAC;AACJ,SAAC,CAAC;;AAoBI,IAAA,WAAW,CAAC,SAAmB,EAAA;AACrC,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE;QACjC,SAAS,EAAE,QAAQ,EAAE;QACrB,MAAM,EAAE,KAAK,EAAE;;8GAzCN,kBAAkB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAlB,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,kBAAkB,oGACM,OAAO,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAD/B,kBAAkB,EAAA,UAAA,EAAA,CAAA;kBAH9B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;;ACbD;;AAEG;AAIH;;ACNA;;AAEG;;;;"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { inject, ElementRef, input, linkedSignal, afterRenderEffect, Directive, Pipe } from '@angular/core';
|
|
3
3
|
import { NgControl } from '@angular/forms';
|
|
4
|
-
import * as i1 from '@ngbase/adk/form-field';
|
|
5
4
|
import { InputBase } from '@ngbase/adk/form-field';
|
|
6
5
|
|
|
7
6
|
class Mask {
|
|
@@ -46,6 +45,10 @@ class Mask {
|
|
|
46
45
|
].includes(keyCode)) {
|
|
47
46
|
return;
|
|
48
47
|
}
|
|
48
|
+
// allow selecting all text
|
|
49
|
+
if (keyCode === 'a' && (event.metaKey || event.ctrlKey)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
49
52
|
event.preventDefault();
|
|
50
53
|
const cursorPos = input.selectionStart || 0;
|
|
51
54
|
const key = event.key;
|
|
@@ -146,13 +149,12 @@ class Mask {
|
|
|
146
149
|
return unmaskedValue;
|
|
147
150
|
}
|
|
148
151
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: Mask, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
149
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: Mask, isStandalone: true, selector: "[ngbMask]", inputs: { ngbMask: { classPropertyName: "ngbMask", publicName: "ngbMask", isSignal: true, isRequired: false, transformFunction: null }, showMaskType: { classPropertyName: "showMaskType", publicName: "showMaskType", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } },
|
|
152
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "19.0.0", type: Mask, isStandalone: true, selector: "[ngbMask]", inputs: { ngbMask: { classPropertyName: "ngbMask", publicName: "ngbMask", isSignal: true, isRequired: false, transformFunction: null }, showMaskType: { classPropertyName: "showMaskType", publicName: "showMaskType", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "keydown": "onKeyDown($event)", "paste": "onPaste($event)" } }, ngImport: i0 }); }
|
|
150
153
|
}
|
|
151
154
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.0", ngImport: i0, type: Mask, decorators: [{
|
|
152
155
|
type: Directive,
|
|
153
156
|
args: [{
|
|
154
157
|
selector: '[ngbMask]',
|
|
155
|
-
hostDirectives: [InputBase],
|
|
156
158
|
host: {
|
|
157
159
|
'(keydown)': 'onKeyDown($event)',
|
|
158
160
|
'(paste)': 'onPaste($event)',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-mask.mjs","sources":["../../../projects/adk/mask/mask.ts","../../../projects/adk/mask/mask-pipe.ts","../../../projects/adk/mask/ngbase-adk-mask.ts"],"sourcesContent":["import {\n afterRenderEffect,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from '@ngbase/adk/form-field';\n\n@Directive({\n selector: '[ngbMask]',\n hostDirectives: [InputBase],\n host: {\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n },\n})\nexport class Mask {\n // Dependencies\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly control = inject(NgControl, { optional: true });\n private readonly inputC = inject(InputBase);\n\n // Inputs\n readonly ngbMask = input<string>('');\n readonly showMaskType = input(false);\n\n readonly localValue = linkedSignal(() => (this.inputC.value() as string) ?? '');\n // private lastValue = '';\n\n constructor() {\n // this.control?.valueChanges?.subscribe(value => {\n // if (value !== this.lastValue) this.handleValue(value);\n // });\n\n afterRenderEffect(() => {\n const mask = this.ngbMask();\n const value = this.localValue();\n this.el.nativeElement.value = this.updateView(value, mask);\n });\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // console.log('onKeyDown', event);\n const input = event.target as HTMLInputElement;\n const keyCode = event.key;\n\n // Allow navigation keys\n if (\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Tab',\n 'Backspace',\n 'Delete',\n 'Shift',\n 'Meta',\n 'Control',\n 'Alt',\n 'Escape',\n 'CapsLock',\n ].includes(keyCode)\n ) {\n return;\n }\n\n event.preventDefault();\n const cursorPos = input.selectionStart || 0;\n const key = event.key;\n\n // Get the current value and mask\n const currentValue = input.value;\n const mask = this.ngbMask();\n\n // Check if the key matches the mask at current position\n if (this.isValidChar(key, this.getCurrentMaskChar(mask, cursorPos))) {\n // Insert the character at cursor position\n const newValue =\n currentValue.substring(0, cursorPos) + key + currentValue.substring(cursorPos);\n\n this.handleValue(newValue, cursorPos);\n }\n }\n\n getCurrentMaskChar(mask: string, cursorPos: number): string {\n // we only have to check cursor position and have to skip non-mask characters\n for (let i = cursorPos; i < mask.length; i++) {\n if (mask[i] !== '#' && mask[i] !== 'a' && mask[i] !== '*') {\n continue;\n }\n return mask[i];\n }\n return '';\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart || 0;\n const pastedText = event.clipboardData?.getData('text') || '';\n\n const currentValue = input.value;\n const beforeCursor = currentValue.substring(0, cursorPos);\n const afterCursor = currentValue.substring(cursorPos);\n\n const newValue = beforeCursor + pastedText + afterCursor;\n this.handleValue(newValue, cursorPos);\n }\n\n private isValidChar(char: string, maskChar: string): boolean {\n switch (maskChar) {\n case '#':\n return /\\d/.test(char);\n case 'a':\n return /[a-zA-Z]/.test(char);\n case '*':\n return /[a-zA-Z0-9]/.test(char);\n default:\n return char === maskChar;\n }\n }\n\n handleValue(value: string, cursorPos?: number) {\n // Apply mask and update view\n const maskedValue = this.updateView(value);\n // Update actualValue\n const actualValue = this.unmask(maskedValue);\n\n this.updateLocalValue(actualValue, actualValue !== value);\n\n // Set cursor position after update\n // if (cursorPos !== undefined) {\n // setTimeout(() => {\n // const newPos = this.calculateCursorPosition(maskedValue, cursorPos);\n // this.el.nativeElement.setSelectionRange(newPos, newPos);\n // });\n // }\n }\n\n private calculateCursorPosition(maskedValue: string, oldPos: number): number {\n const mask = this.ngbMask();\n let newPos = oldPos;\n\n // Move cursor past any fixed mask characters\n while (newPos < mask.length && !'#a*'.includes(mask[newPos])) {\n newPos++;\n }\n\n return Math.min(newPos, maskedValue.length);\n }\n\n private updateLocalValue(value: string, emit = true) {\n this.inputC.setValue(value);\n // this.lastValue = value;\n this.localValue.set(value);\n if (emit) this.control?.control?.setValue(value);\n }\n\n writeValue(value: string): void {\n this.handleValue(value);\n }\n\n private updateView(value: string, mask = this.ngbMask()): string {\n return maskTransform(value, mask);\n }\n\n private unmask(value: string): string {\n const mask = this.ngbMask();\n let unmaskedValue = '';\n let valueIndex = 0;\n\n for (let maskIndex = 0; maskIndex < mask.length && valueIndex < value.length; maskIndex++) {\n const maskChar = mask[maskIndex];\n const valueChar = value[valueIndex];\n\n if ('#a*'.includes(maskChar)) {\n unmaskedValue += valueChar;\n valueIndex++;\n } else if (maskChar === valueChar) {\n valueIndex++;\n }\n }\n\n return unmaskedValue;\n }\n}\n\nexport function maskTransform(value: string, mask: string, showMaskType = false): string {\n let result = '';\n let valueIndex = 0;\n\n for (let maskIndex = 0; maskIndex < mask.length && valueIndex < value.length; maskIndex++) {\n const maskChar = mask[maskIndex];\n const valueChar = value[valueIndex];\n\n switch (maskChar) {\n case '#':\n if (/\\d/.test(valueChar)) {\n result += valueChar;\n valueIndex++;\n } else if (showMaskType) {\n result += '_';\n } else {\n return result;\n }\n break;\n case 'a':\n if (/[a-zA-Z]/.test(valueChar)) {\n result += valueChar;\n valueIndex++;\n } else if (showMaskType) {\n result += '_';\n } else {\n return result;\n }\n break;\n case '*':\n if (/[a-zA-Z0-9]/.test(valueChar)) {\n result += valueChar;\n valueIndex++;\n } else if (showMaskType) {\n result += '_';\n } else {\n return result;\n }\n break;\n default:\n result += maskChar;\n if (maskChar === valueChar && valueIndex === maskIndex) {\n valueIndex++;\n }\n }\n }\n\n return result;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { maskTransform } from './mask';\n\n@Pipe({\n name: 'mask',\n})\nexport class MaskPipe implements PipeTransform {\n transform(value: string, mask: string): string {\n return maskTransform(value, mask);\n }\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-mask.mjs","sources":["../../../projects/adk/mask/mask.ts","../../../projects/adk/mask/mask-pipe.ts","../../../projects/adk/mask/ngbase-adk-mask.ts"],"sourcesContent":["import {\n afterRenderEffect,\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from '@ngbase/adk/form-field';\n\n@Directive({\n selector: '[ngbMask]',\n host: {\n '(keydown)': 'onKeyDown($event)',\n '(paste)': 'onPaste($event)',\n },\n})\nexport class Mask {\n // Dependencies\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n readonly control = inject(NgControl, { optional: true });\n private readonly inputC = inject(InputBase);\n\n // Inputs\n readonly ngbMask = input<string>('');\n readonly showMaskType = input(false);\n\n readonly localValue = linkedSignal(() => (this.inputC.value() as string) ?? '');\n // private lastValue = '';\n\n constructor() {\n // this.control?.valueChanges?.subscribe(value => {\n // if (value !== this.lastValue) this.handleValue(value);\n // });\n\n afterRenderEffect(() => {\n const mask = this.ngbMask();\n const value = this.localValue();\n this.el.nativeElement.value = this.updateView(value, mask);\n });\n }\n\n onKeyDown(event: KeyboardEvent): void {\n // console.log('onKeyDown', event);\n const input = event.target as HTMLInputElement;\n const keyCode = event.key;\n\n // Allow navigation keys\n if (\n [\n 'ArrowLeft',\n 'ArrowRight',\n 'Home',\n 'End',\n 'Tab',\n 'Backspace',\n 'Delete',\n 'Shift',\n 'Meta',\n 'Control',\n 'Alt',\n 'Escape',\n 'CapsLock',\n ].includes(keyCode)\n ) {\n return;\n }\n\n // allow selecting all text\n if (keyCode === 'a' && (event.metaKey || event.ctrlKey)) {\n return;\n }\n\n event.preventDefault();\n const cursorPos = input.selectionStart || 0;\n const key = event.key;\n\n // Get the current value and mask\n const currentValue = input.value;\n const mask = this.ngbMask();\n\n // Check if the key matches the mask at current position\n if (this.isValidChar(key, this.getCurrentMaskChar(mask, cursorPos))) {\n // Insert the character at cursor position\n const newValue =\n currentValue.substring(0, cursorPos) + key + currentValue.substring(cursorPos);\n\n this.handleValue(newValue, cursorPos);\n }\n }\n\n getCurrentMaskChar(mask: string, cursorPos: number): string {\n // we only have to check cursor position and have to skip non-mask characters\n for (let i = cursorPos; i < mask.length; i++) {\n if (mask[i] !== '#' && mask[i] !== 'a' && mask[i] !== '*') {\n continue;\n }\n return mask[i];\n }\n return '';\n }\n\n onPaste(event: ClipboardEvent): void {\n event.preventDefault();\n const input = event.target as HTMLInputElement;\n const cursorPos = input.selectionStart || 0;\n const pastedText = event.clipboardData?.getData('text') || '';\n\n const currentValue = input.value;\n const beforeCursor = currentValue.substring(0, cursorPos);\n const afterCursor = currentValue.substring(cursorPos);\n\n const newValue = beforeCursor + pastedText + afterCursor;\n this.handleValue(newValue, cursorPos);\n }\n\n private isValidChar(char: string, maskChar: string): boolean {\n switch (maskChar) {\n case '#':\n return /\\d/.test(char);\n case 'a':\n return /[a-zA-Z]/.test(char);\n case '*':\n return /[a-zA-Z0-9]/.test(char);\n default:\n return char === maskChar;\n }\n }\n\n handleValue(value: string, cursorPos?: number) {\n // Apply mask and update view\n const maskedValue = this.updateView(value);\n // Update actualValue\n const actualValue = this.unmask(maskedValue);\n\n this.updateLocalValue(actualValue, actualValue !== value);\n\n // Set cursor position after update\n // if (cursorPos !== undefined) {\n // setTimeout(() => {\n // const newPos = this.calculateCursorPosition(maskedValue, cursorPos);\n // this.el.nativeElement.setSelectionRange(newPos, newPos);\n // });\n // }\n }\n\n private calculateCursorPosition(maskedValue: string, oldPos: number): number {\n const mask = this.ngbMask();\n let newPos = oldPos;\n\n // Move cursor past any fixed mask characters\n while (newPos < mask.length && !'#a*'.includes(mask[newPos])) {\n newPos++;\n }\n\n return Math.min(newPos, maskedValue.length);\n }\n\n private updateLocalValue(value: string, emit = true) {\n this.inputC.setValue(value);\n // this.lastValue = value;\n this.localValue.set(value);\n if (emit) this.control?.control?.setValue(value);\n }\n\n writeValue(value: string): void {\n this.handleValue(value);\n }\n\n private updateView(value: string, mask = this.ngbMask()): string {\n return maskTransform(value, mask);\n }\n\n private unmask(value: string): string {\n const mask = this.ngbMask();\n let unmaskedValue = '';\n let valueIndex = 0;\n\n for (let maskIndex = 0; maskIndex < mask.length && valueIndex < value.length; maskIndex++) {\n const maskChar = mask[maskIndex];\n const valueChar = value[valueIndex];\n\n if ('#a*'.includes(maskChar)) {\n unmaskedValue += valueChar;\n valueIndex++;\n } else if (maskChar === valueChar) {\n valueIndex++;\n }\n }\n\n return unmaskedValue;\n }\n}\n\nexport function maskTransform(value: string, mask: string, showMaskType = false): string {\n let result = '';\n let valueIndex = 0;\n\n for (let maskIndex = 0; maskIndex < mask.length && valueIndex < value.length; maskIndex++) {\n const maskChar = mask[maskIndex];\n const valueChar = value[valueIndex];\n\n switch (maskChar) {\n case '#':\n if (/\\d/.test(valueChar)) {\n result += valueChar;\n valueIndex++;\n } else if (showMaskType) {\n result += '_';\n } else {\n return result;\n }\n break;\n case 'a':\n if (/[a-zA-Z]/.test(valueChar)) {\n result += valueChar;\n valueIndex++;\n } else if (showMaskType) {\n result += '_';\n } else {\n return result;\n }\n break;\n case '*':\n if (/[a-zA-Z0-9]/.test(valueChar)) {\n result += valueChar;\n valueIndex++;\n } else if (showMaskType) {\n result += '_';\n } else {\n return result;\n }\n break;\n default:\n result += maskChar;\n if (maskChar === valueChar && valueIndex === maskIndex) {\n valueIndex++;\n }\n }\n }\n\n return result;\n}\n","import { Pipe, PipeTransform } from '@angular/core';\nimport { maskTransform } from './mask';\n\n@Pipe({\n name: 'mask',\n})\nexport class MaskPipe implements PipeTransform {\n transform(value: string, mask: string): string {\n return maskTransform(value, mask);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|