@ngbase/adk 0.1.16 → 0.1.18
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/fesm2022/ngbase-adk-a11y.mjs +42 -42
- package/fesm2022/ngbase-adk-a11y.mjs.map +1 -1
- package/fesm2022/ngbase-adk-accordion.mjs +20 -26
- package/fesm2022/ngbase-adk-accordion.mjs.map +1 -1
- package/fesm2022/ngbase-adk-autocomplete.mjs +11 -11
- package/fesm2022/ngbase-adk-autocomplete.mjs.map +1 -1
- package/fesm2022/ngbase-adk-avatar.mjs +13 -13
- package/fesm2022/ngbase-adk-avatar.mjs.map +1 -1
- package/fesm2022/ngbase-adk-bidi.mjs +3 -3
- package/fesm2022/ngbase-adk-bidi.mjs.map +1 -1
- package/fesm2022/ngbase-adk-breadcrumb.mjs +14 -14
- package/fesm2022/ngbase-adk-breadcrumb.mjs.map +1 -1
- package/fesm2022/ngbase-adk-cache.mjs +3 -3
- package/fesm2022/ngbase-adk-cache.mjs.map +1 -1
- package/fesm2022/ngbase-adk-carousel.mjs +18 -18
- package/fesm2022/ngbase-adk-carousel.mjs.map +1 -1
- package/fesm2022/ngbase-adk-checkbox.mjs +15 -21
- package/fesm2022/ngbase-adk-checkbox.mjs.map +1 -1
- package/fesm2022/ngbase-adk-chip.mjs +12 -12
- package/fesm2022/ngbase-adk-chip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-clipboard.mjs +7 -5
- package/fesm2022/ngbase-adk-clipboard.mjs.map +1 -1
- package/fesm2022/ngbase-adk-collections.mjs.map +1 -1
- package/fesm2022/ngbase-adk-color-picker.mjs +44 -53
- package/fesm2022/ngbase-adk-color-picker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-cookies.mjs +3 -3
- package/fesm2022/ngbase-adk-cookies.mjs.map +1 -1
- package/fesm2022/ngbase-adk-datepicker.mjs +70 -89
- package/fesm2022/ngbase-adk-datepicker.mjs.map +1 -1
- package/fesm2022/ngbase-adk-dialog.mjs +17 -39
- package/fesm2022/ngbase-adk-dialog.mjs.map +1 -1
- package/fesm2022/ngbase-adk-drag.mjs +20 -20
- package/fesm2022/ngbase-adk-drag.mjs.map +1 -1
- package/fesm2022/ngbase-adk-form-field.mjs +65 -118
- package/fesm2022/ngbase-adk-form-field.mjs.map +1 -1
- package/fesm2022/ngbase-adk-hover-card.mjs +5 -5
- package/fesm2022/ngbase-adk-hover-card.mjs.map +1 -1
- package/fesm2022/ngbase-adk-icon.mjs +9 -11
- package/fesm2022/ngbase-adk-icon.mjs.map +1 -1
- package/fesm2022/ngbase-adk-inline-edit.mjs +27 -35
- package/fesm2022/ngbase-adk-inline-edit.mjs.map +1 -1
- package/fesm2022/ngbase-adk-jwt.mjs +319 -41
- package/fesm2022/ngbase-adk-jwt.mjs.map +1 -1
- package/fesm2022/ngbase-adk-keys.mjs +6 -6
- package/fesm2022/ngbase-adk-keys.mjs.map +1 -1
- package/fesm2022/ngbase-adk-layout.mjs.map +1 -1
- package/fesm2022/ngbase-adk-list.mjs +10 -10
- package/fesm2022/ngbase-adk-list.mjs.map +1 -1
- package/fesm2022/ngbase-adk-mask.mjs +8 -8
- package/fesm2022/ngbase-adk-mask.mjs.map +1 -1
- package/fesm2022/ngbase-adk-menu.mjs +69 -79
- package/fesm2022/ngbase-adk-menu.mjs.map +1 -1
- package/fesm2022/ngbase-adk-network.mjs +3 -3
- package/fesm2022/ngbase-adk-network.mjs.map +1 -1
- package/fesm2022/ngbase-adk-otp.mjs +24 -45
- package/fesm2022/ngbase-adk-otp.mjs.map +1 -1
- package/fesm2022/ngbase-adk-pagination.mjs +9 -9
- package/fesm2022/ngbase-adk-pagination.mjs.map +1 -1
- package/fesm2022/ngbase-adk-popover.mjs +120 -89
- package/fesm2022/ngbase-adk-popover.mjs.map +1 -1
- package/fesm2022/ngbase-adk-portal.mjs +134 -47
- package/fesm2022/ngbase-adk-portal.mjs.map +1 -1
- package/fesm2022/ngbase-adk-progress.mjs +7 -7
- package/fesm2022/ngbase-adk-progress.mjs.map +1 -1
- package/fesm2022/ngbase-adk-radio.mjs +20 -27
- package/fesm2022/ngbase-adk-radio.mjs.map +1 -1
- package/fesm2022/ngbase-adk-resizable.mjs +138 -48
- package/fesm2022/ngbase-adk-resizable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-scroll-area.mjs +28 -20
- package/fesm2022/ngbase-adk-scroll-area.mjs.map +1 -1
- package/fesm2022/ngbase-adk-select.mjs +58 -80
- package/fesm2022/ngbase-adk-select.mjs.map +1 -1
- package/fesm2022/ngbase-adk-selectable.mjs +19 -30
- package/fesm2022/ngbase-adk-selectable.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sheet.mjs +6 -20
- package/fesm2022/ngbase-adk-sheet.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sidenav.mjs +65 -46
- package/fesm2022/ngbase-adk-sidenav.mjs.map +1 -1
- package/fesm2022/ngbase-adk-slider.mjs +40 -53
- package/fesm2022/ngbase-adk-slider.mjs.map +1 -1
- package/fesm2022/ngbase-adk-sonner.mjs +12 -19
- package/fesm2022/ngbase-adk-sonner.mjs.map +1 -1
- package/fesm2022/ngbase-adk-stepper.mjs +17 -25
- package/fesm2022/ngbase-adk-stepper.mjs.map +1 -1
- package/fesm2022/ngbase-adk-switch.mjs +25 -32
- package/fesm2022/ngbase-adk-switch.mjs.map +1 -1
- package/fesm2022/ngbase-adk-table.mjs +581 -83
- package/fesm2022/ngbase-adk-table.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tabs.mjs +37 -35
- package/fesm2022/ngbase-adk-tabs.mjs.map +1 -1
- package/fesm2022/ngbase-adk-test.mjs.map +1 -1
- package/fesm2022/ngbase-adk-toggle-group.mjs +20 -34
- package/fesm2022/ngbase-adk-toggle-group.mjs.map +1 -1
- package/fesm2022/ngbase-adk-toggle.mjs +14 -19
- package/fesm2022/ngbase-adk-toggle.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tooltip.mjs +12 -19
- package/fesm2022/ngbase-adk-tooltip.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tour.mjs +52 -52
- package/fesm2022/ngbase-adk-tour.mjs.map +1 -1
- package/fesm2022/ngbase-adk-translate.mjs +8 -10
- package/fesm2022/ngbase-adk-translate.mjs.map +1 -1
- package/fesm2022/ngbase-adk-tree.mjs +20 -20
- package/fesm2022/ngbase-adk-tree.mjs.map +1 -1
- package/fesm2022/ngbase-adk-utils.mjs +30 -43
- package/fesm2022/ngbase-adk-utils.mjs.map +1 -1
- package/fesm2022/ngbase-adk-virtualizer.mjs +9 -9
- package/fesm2022/ngbase-adk-virtualizer.mjs.map +1 -1
- package/package.json +91 -91
- package/schematics/components/files/accordion/accordion.ts.template +9 -6
- package/schematics/components/files/audio/AudioPlayer.ts.template +245 -0
- package/schematics/components/files/audio/AudioRecorder.ts.template +377 -0
- package/schematics/components/files/audio/AudioVisualizer.ts.template +175 -0
- package/schematics/components/files/audio/index.ts.template +3 -0
- package/schematics/components/files/button/button-llm.md.template +3 -2
- package/schematics/components/files/charts/area-chart.component.ts.template +278 -0
- package/schematics/components/files/charts/bar-chart.component.ts.template +262 -0
- package/schematics/components/files/charts/chart-tooltip.component.ts.template +168 -0
- package/schematics/components/files/charts/index.ts.template +4 -0
- package/schematics/components/files/charts/line-chart.component.ts.template +238 -0
- package/schematics/components/files/charts/pie-chart.component.ts.template +283 -0
- package/schematics/components/files/checkbox/checkbox.ts.template +2 -2
- package/schematics/components/files/color-picker/color-picker.ts.template +2 -2
- package/schematics/components/files/dialog/dialog.ts.template +18 -14
- package/schematics/components/files/drawer/drawer.ts.template +30 -27
- package/schematics/components/files/form-field/form-field.ts.template +51 -23
- package/schematics/components/files/pagination/pagination.ts.template +4 -4
- package/schematics/components/files/picasa/picasa-base.component.ts.template +15 -30
- package/schematics/components/files/popover/popover.ts.template +15 -4
- package/schematics/components/files/select/list-selection.ts.template +0 -2
- package/schematics/components/files/select/option.ts.template +1 -1
- package/schematics/components/files/selectable/selectable.ts.template +2 -2
- package/schematics/components/files/sheet/sheet.ts.template +26 -14
- package/schematics/components/files/sidenav/sidenav.ts.template +7 -5
- package/schematics/components/files/sonner/sonner.ts.template +1 -2
- package/schematics/components/files/stepper/stepper.ts.template +2 -4
- package/schematics/components/files/switch/switch.ts.template +2 -2
- package/schematics/components/files/table/table.ts.template +43 -3
- package/schematics/components/files/tabs/tab.ts.template +3 -3
- package/schematics/components/files/theme/theme.service.ts.template +3 -3
- package/schematics/components/files/toggle/toggle.ts.template +1 -1
- package/schematics/components/files/toggle-group/toggle-group.ts.template +1 -1
- package/schematics/components/files/tooltip/tooltip.ts.template +2 -3
- package/schematics/components/schema.json +2 -0
- package/{accordion/index.d.ts → types/ngbase-adk-accordion.d.ts} +1 -3
- package/{autocomplete/index.d.ts → types/ngbase-adk-autocomplete.d.ts} +2 -7
- package/{checkbox/index.d.ts → types/ngbase-adk-checkbox.d.ts} +8 -14
- package/types/ngbase-adk-clipboard.d.ts +12 -0
- package/{color-picker/index.d.ts → types/ngbase-adk-color-picker.d.ts} +14 -26
- package/{datepicker/index.d.ts → types/ngbase-adk-datepicker.d.ts} +9 -18
- package/{dialog/index.d.ts → types/ngbase-adk-dialog.d.ts} +3 -8
- package/types/ngbase-adk-form-field.d.ts +88 -0
- package/{inline-edit/index.d.ts → types/ngbase-adk-inline-edit.d.ts} +8 -16
- package/types/ngbase-adk-jwt.d.ts +64 -0
- package/{menu/index.d.ts → types/ngbase-adk-menu.d.ts} +6 -5
- package/{otp/index.d.ts → types/ngbase-adk-otp.d.ts} +8 -16
- package/{popover/index.d.ts → types/ngbase-adk-popover.d.ts} +14 -2
- package/{portal/index.d.ts → types/ngbase-adk-portal.d.ts} +29 -8
- package/{radio/index.d.ts → types/ngbase-adk-radio.d.ts} +9 -12
- package/{resizable/index.d.ts → types/ngbase-adk-resizable.d.ts} +4 -4
- package/{scroll-area/index.d.ts → types/ngbase-adk-scroll-area.d.ts} +2 -1
- package/{select/index.d.ts → types/ngbase-adk-select.d.ts} +8 -22
- package/{selectable/index.d.ts → types/ngbase-adk-selectable.d.ts} +6 -10
- package/{sheet/index.d.ts → types/ngbase-adk-sheet.d.ts} +4 -3
- package/{sidenav/index.d.ts → types/ngbase-adk-sidenav.d.ts} +6 -6
- package/{slider/index.d.ts → types/ngbase-adk-slider.d.ts} +8 -17
- package/{sonner/index.d.ts → types/ngbase-adk-sonner.d.ts} +1 -3
- package/{stepper/index.d.ts → types/ngbase-adk-stepper.d.ts} +1 -4
- package/{switch/index.d.ts → types/ngbase-adk-switch.d.ts} +7 -14
- package/{table/index.d.ts → types/ngbase-adk-table.d.ts} +126 -3
- package/{test/index.d.ts → types/ngbase-adk-test.d.ts} +1 -1
- package/{toggle-group/index.d.ts → types/ngbase-adk-toggle-group.d.ts} +5 -10
- package/types/ngbase-adk-toggle.d.ts +14 -0
- package/{tooltip/index.d.ts → types/ngbase-adk-tooltip.d.ts} +9 -11
- package/{tour/index.d.ts → types/ngbase-adk-tour.d.ts} +4 -6
- package/{utils/index.d.ts → types/ngbase-adk-utils.d.ts} +15 -11
- package/clipboard/index.d.ts +0 -11
- package/form-field/index.d.ts +0 -97
- package/jwt/index.d.ts +0 -20
- package/toggle/index.d.ts +0 -16
- /package/{a11y/index.d.ts → types/ngbase-adk-a11y.d.ts} +0 -0
- /package/{avatar/index.d.ts → types/ngbase-adk-avatar.d.ts} +0 -0
- /package/{bidi/index.d.ts → types/ngbase-adk-bidi.d.ts} +0 -0
- /package/{breadcrumb/index.d.ts → types/ngbase-adk-breadcrumb.d.ts} +0 -0
- /package/{cache/index.d.ts → types/ngbase-adk-cache.d.ts} +0 -0
- /package/{carousel/index.d.ts → types/ngbase-adk-carousel.d.ts} +0 -0
- /package/{chip/index.d.ts → types/ngbase-adk-chip.d.ts} +0 -0
- /package/{collections/index.d.ts → types/ngbase-adk-collections.d.ts} +0 -0
- /package/{cookies/index.d.ts → types/ngbase-adk-cookies.d.ts} +0 -0
- /package/{drag/index.d.ts → types/ngbase-adk-drag.d.ts} +0 -0
- /package/{hover-card/index.d.ts → types/ngbase-adk-hover-card.d.ts} +0 -0
- /package/{icon/index.d.ts → types/ngbase-adk-icon.d.ts} +0 -0
- /package/{keys/index.d.ts → types/ngbase-adk-keys.d.ts} +0 -0
- /package/{layout/index.d.ts → types/ngbase-adk-layout.d.ts} +0 -0
- /package/{list/index.d.ts → types/ngbase-adk-list.d.ts} +0 -0
- /package/{mask/index.d.ts → types/ngbase-adk-mask.d.ts} +0 -0
- /package/{network/index.d.ts → types/ngbase-adk-network.d.ts} +0 -0
- /package/{pagination/index.d.ts → types/ngbase-adk-pagination.d.ts} +0 -0
- /package/{progress/index.d.ts → types/ngbase-adk-progress.d.ts} +0 -0
- /package/{tabs/index.d.ts → types/ngbase-adk-tabs.d.ts} +0 -0
- /package/{translate/index.d.ts → types/ngbase-adk-translate.d.ts} +0 -0
- /package/{tree/index.d.ts → types/ngbase-adk-tree.d.ts} +0 -0
- /package/{virtualizer/index.d.ts → types/ngbase-adk-virtualizer.d.ts} +0 -0
- /package/{index.d.ts → types/ngbase-adk.d.ts} +0 -0
|
@@ -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/currency-mask.ng.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(NgControl, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = statusChange(this._control);\n private readonly _invalid = computed(\n () => this.status() === 'INVALID' && this._control()?.touched,\n );\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control?.statusChanges) {\n const sub = control.statusChanges.subscribe(() => statusChanges.set(control.status));\n cleanup(() => sub?.unsubscribe());\n } else if ((control as any)?.field) {\n // For standalone controls without statusChanges observable\n statusChanges.set((control as any).field().valid() ? 'VALID' : 'INVALID');\n }\n });\n return statusChanges;\n}\n","import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbError]',\n host: {\n '[hidden]': '!animate() && !isInvalid()',\n },\n})\nexport class NgbInputError {\n private readonly formField = inject(NgbFormField);\n /* the input can have comma separated error names like\n * 'required' or '!required && minlength'\n */\n readonly ngbError = input.required<string>();\n readonly invalid = input<boolean>();\n readonly animate = signal(false);\n\n private readonly errorNames = computed(() => {\n const names = (this.ngbError() ?? '').split('&&');\n return names.reduce(\n (acc, n) => {\n const trimmed = n.trim();\n if (trimmed) {\n const negated = trimmed.startsWith('!');\n acc.push({ name: trimmed.slice(negated ? 1 : 0), negated });\n }\n return acc;\n },\n [] as { name: string; negated: boolean }[],\n );\n });\n\n readonly isFieldInvalid = computed(() => {\n const control = (this.formField as any).__control?.();\n return control ? this.fieldInvalidFn(control) : this.oldIsFieldInvalid();\n });\n\n oldIsFieldInvalid() {\n const control = this.formField._control();\n const status = this.formField.status();\n const names = this.errorNames();\n\n return (\n status === 'INVALID' &&\n control?.touched &&\n names.every(n => !!control.errors?.[n.name] !== n.negated)\n );\n }\n\n fieldInvalidFn(control: any) {\n // const control = this.formField.__control();\n const names = this.errorNames();\n const field = control?.field()();\n\n return (\n field?.touched() &&\n names.every(n => !!field?.errors().some((x: any) => x.kind == n.name) !== n.negated)\n );\n }\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n\nexport const toggleDiv = trigger('toggleDiv', [\n state('hidden', style({ opacity: 0, height: '0px', visibility: 'hidden' })),\n state('visible', style({ opacity: 1, height: '*', visibility: 'visible' })),\n transition('hidden <=> visible', [animate('150ms ease-in-out')]),\n]);\n","import { Directive, inject, model } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor, uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: 'input[ngbInputBase]',\n providers: [provideValueAccessor(InputBase)],\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'value()',\n '(input)': 'setInputValue($event)',\n },\n})\nexport class InputBase<T = unknown> implements ControlValueAccessor {\n readonly formField = inject(NgbFormField, { optional: true });\n readonly value = model<T>('' as any);\n\n readonly id = this.formField?._id ?? uniqueId();\n\n onChange?: (_: string) => void;\n onTouched?: () => void;\n\n protected setInputValue(ev: Event): void {\n const value = (ev.target as HTMLInputElement).value;\n this.setValue(value, true);\n }\n\n setValue(value: any, fromInput = false): void {\n this.value.set(value);\n if (fromInput) {\n this.onChange?.(value);\n this.onTouched?.();\n }\n }\n\n writeValue(value: string): void {\n this.setValue(value);\n }\n\n registerOnChange(fn: (value: string) => void): void {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: VoidFunction): void {\n this.onTouched = fn;\n }\n}\n","import {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from './input';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n private ngbInput = inject(InputBase, { optional: true });\n\n readonly maxHeight = input<number>();\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n\n effect(() => {\n const _ = this.ngbInput?.value();\n this.update();\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n const height = el.scrollHeight + borderHeight;\n const maxHeight = this.maxHeight();\n if (maxHeight) {\n el.style.height = Math.min(height, maxHeight) + 'px';\n } else {\n el.style.height = height + 'px';\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","import { Directive, ElementRef, input, inject } from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { provideValueAccessor } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[numberFormat]',\n providers: [provideValueAccessor(NumberFormat)],\n host: {\n '(input)': 'onInput($event)',\n '(blur)': 'onBlur()',\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class NumberFormat implements ControlValueAccessor {\n // Input signals with default values\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n readonly decimals = input<number>(2);\n readonly decimalSeparator = input<string>('.');\n readonly thousandSeparator = input<string>(',');\n\n // Private members\n private onChange = (_: any) => {};\n private onTouched = () => {};\n private rawValue = '';\n\n private readonly specialKeys = [\n 'Backspace',\n 'Tab',\n 'End',\n 'Home',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n ];\n\n // Handles input changes\n onInput(ev: Event) {\n const value = (ev.target as any).value.toString();\n const position = this.el.nativeElement.selectionStart;\n const cleanedValue = this.cleanValue(value);\n\n if (this.isValidNumber(cleanedValue)) {\n this.rawValue = cleanedValue;\n this.formatDisplayValue(cleanedValue);\n this.onChange(this.rawValue);\n this.onTouched();\n this.updateCursorPosition(value, position ?? 0);\n }\n }\n\n // Handles keydown events to validate input\n onKeyDown(event: KeyboardEvent) {\n if (this.specialKeys.includes(event.key)) return;\n\n const value = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n\n // Handle decimal separator\n if (event.key === this.decimalSeparator()) {\n if (value.includes(this.decimalSeparator())) {\n event.preventDefault();\n }\n return;\n }\n\n // Only allow digits\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n // Check decimal digits limit\n if (this.isDecimalPartFull(value, position ?? 0)) {\n event.preventDefault();\n }\n }\n\n // Handle blur event\n onBlur() {\n if (this.rawValue) {\n this.formatDisplayValue(this.rawValue);\n }\n this.onTouched();\n }\n\n // ControlValueAccessor implementation\n writeValue(value: string) {\n if (value) {\n const cleanValue = this.cleanValue(value);\n this.rawValue = cleanValue;\n this.formatDisplayValue(cleanValue);\n } else {\n this.reset();\n }\n }\n\n private reset() {\n this.el.nativeElement.value = '';\n this.rawValue = '';\n }\n\n registerOnChange(fn: any) {\n this.onChange = fn;\n }\n\n registerOnTouched(fn: any) {\n this.onTouched = fn;\n }\n\n setDisabledState(isDisabled: boolean) {\n this.el.nativeElement.disabled = isDisabled;\n }\n\n // Private helper methods\n private cleanValue(value: string | number): string {\n return value\n .toString()\n .replace(new RegExp(`[^\\\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');\n }\n\n private isValidNumber(value: string): boolean {\n const parts = value.split(this.decimalSeparator());\n return parts.length <= 2 && parts.every(part => /^\\d*$/.test(part));\n }\n\n private formatDisplayValue(value: string) {\n if (!value) {\n this.reset();\n return;\n }\n\n const parts = value.split(this.decimalSeparator());\n let integerPart = parts[0]\n .replace(/^0+(?=\\d)/, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandSeparator());\n const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;\n\n this.el.nativeElement.value =\n decimalPart !== undefined\n ? `${integerPart}${this.decimalSeparator()}${decimalPart}`\n : integerPart;\n }\n\n private updateCursorPosition(originalValue: string, originalPosition: number) {\n setTimeout(() => {\n const el = this.el.nativeElement;\n if (originalPosition === originalValue.length) {\n // If cursor was at the end, keep it at the end\n el.setSelectionRange(el.value.length, el.value.length);\n return;\n }\n\n // Calculate new cursor position based on thousand separators\n const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));\n const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);\n const newSeparatorCount = this.countSeparators(newValueUpToOldPos);\n\n const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);\n el.setSelectionRange(newPosition, newPosition);\n }, 0);\n }\n\n private countSeparators(value: string): number {\n const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');\n return (value.match(regex) || []).length;\n }\n\n private isDecimalPartFull(value: string, position: number): boolean {\n const decimalPos = value.indexOf(this.decimalSeparator());\n return (\n decimalPos !== -1 &&\n position > decimalPos &&\n value.substring(decimalPos + 1).length >= this.decimals()\n );\n }\n\n private escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ngbase-adk-form-field.mjs","sources":["../../../projects/adk/form-field/form-field.ts","../../../projects/adk/form-field/error.ts","../../../projects/adk/form-field/input.ts","../../../projects/adk/form-field/auto-height.ts","../../../projects/adk/form-field/label.ts","../../../projects/adk/form-field/currency-mask.ng.ts","../../../projects/adk/form-field/ngbase-adk-form-field.ts"],"sourcesContent":["import {\n computed,\n contentChild,\n contentChildren,\n Directive,\n effect,\n forwardRef,\n signal,\n Signal,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbInputError } from './error';\nimport { FormField } from '@angular/forms/signals';\n\n@Directive({\n selector: 'ngb-form-field, [ngbFormField]',\n})\nexport class NgbFormField {\n readonly _control = contentChild(FormField, { descendants: true });\n readonly _id = uniqueId();\n\n // we need to forwardRef the error component to avoid circular dependency\n readonly status = computed(() => this._control()?.state());\n private readonly _invalid = computed(() => this.status()?.invalid() && this.status()?.touched());\n\n readonly errors = contentChildren<NgbInputError>(forwardRef(() => NgbInputError));\n readonly hasErrors = computed(() => this._invalid() || this.errors().some(e => e.isInvalid()));\n}\n\nfunction statusChange(sControl: Signal<NgControl | undefined>): Signal<string | null> {\n const statusChanges = signal<string | null>(null, { equal: () => false });\n effect(cleanup => {\n const control = sControl();\n if (control?.statusChanges) {\n const sub = control.statusChanges.subscribe(() => statusChanges.set(control.status));\n cleanup(() => sub?.unsubscribe());\n } else if ((control as any)?.field) {\n // For standalone controls without statusChanges observable\n statusChanges.set((control as any).field().valid() ? 'VALID' : 'INVALID');\n }\n });\n return statusChanges;\n}\n","import { computed, Directive, inject, input, signal } from '@angular/core';\nimport { AbstractControl, FormArray, FormGroup } from '@angular/forms';\nimport { NgbFormField } from './form-field';\nimport { FormField } from '@angular/forms/signals';\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 return control ? this.fieldInvalidFn(control) : false;\n });\n\n fieldInvalidFn(control: FormField<any>) {\n const names = this.errorNames();\n const field = control?.formField()();\n\n return (\n field?.touched() &&\n names.every(n => !!field?.errors().some((x: any) => x.kind == n.name) !== n.negated)\n );\n }\n\n readonly isInvalid = computed(() => {\n return this.invalid() ?? this.isFieldInvalid();\n });\n}\n\nexport function markControlsTouched(\n control: AbstractControl,\n options = { touched: true, dirty: false },\n) {\n if (control instanceof FormGroup || control instanceof FormArray) {\n Object.values(control.controls).forEach(c => markControlsTouched(c, options));\n }\n if (options.dirty) control.markAsTouched();\n if (options.touched) control.markAsTouched();\n control.updateValueAndValidity();\n}\n","import { computed, Directive, inject, input, model } from '@angular/core';\nimport { uniqueId } from '@ngbase/adk/utils';\nimport { NgbFormField } from './form-field';\nimport { FormValueControl } from '@angular/forms/signals';\n\n@Directive({\n selector: 'input[ngbInputBase]',\n host: {\n role: 'textbox',\n '[attr.id]': 'id',\n '[value]': 'displayValue()',\n '(input)': 'setInputValue($event)',\n '(blur)': 'onTouched()',\n '[disabled]': 'disabled() || undefined',\n },\n})\nexport class InputBase<T = unknown> implements FormValueControl<T> {\n readonly formField = inject(NgbFormField, { optional: true });\n\n readonly value = model<T>('' as any);\n readonly required = input(false);\n readonly touched = model<boolean>(false);\n readonly disabled = input(false);\n\n readonly id = this.formField?._id ?? uniqueId();\n readonly displayValue = computed<any>(() => this.value());\n\n protected setInputValue(ev: Event): void {\n const el = ev.target as HTMLInputElement;\n let value = el.value;\n if (el.type === 'checkbox') {\n this.setValue(el.checked as unknown as T);\n } else if (el.type === 'number') {\n this.setValue(el.valueAsNumber as unknown as T);\n }\n this.setValue(value);\n }\n\n onTouched() {\n this.touched.set(true);\n }\n\n setValue(value: any): void {\n this.value.set(value);\n }\n}\n","import {\n afterNextRender,\n Directive,\n effect,\n ElementRef,\n inject,\n Injector,\n input,\n} from '@angular/core';\nimport { NgControl } from '@angular/forms';\nimport { InputBase } from './input';\n\n@Directive({\n selector: 'textarea[ngbAutoHeight]',\n})\nexport class AutoHeight {\n private el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n private model = inject(NgControl, { optional: true });\n private ngbInput = inject(InputBase, { optional: true });\n\n readonly maxHeight = input<number>();\n\n constructor() {\n // Disable textarea resizing\n this.el.nativeElement.style.resize = 'none';\n\n const injector = inject(Injector);\n effect(cleanup => {\n // required for updating the height for the initial value\n this.update();\n\n const sub = this.model?.valueChanges?.subscribe(v => {\n if (v === this.el.nativeElement.value) {\n this.update();\n } else {\n // Wait for Angular to update the DOM with the new value\n // Use a settimeout to wait for the next tick\n afterNextRender(() => this.update(), { injector });\n }\n });\n cleanup(() => sub?.unsubscribe());\n\n const ro = new ResizeObserver(entries => {\n for (let entry of entries) {\n this.update();\n }\n });\n\n // Observe one or multiple elements\n ro.observe(this.el.nativeElement);\n cleanup(() => ro.disconnect());\n });\n\n effect(() => {\n const _ = this.ngbInput?.value();\n this.update();\n });\n }\n\n private update() {\n const el = this.el.nativeElement;\n el.style.height = 'auto';\n // also we need to consider the border so we need to calculate the border using height\n const borderHeight = el.offsetHeight - el.clientHeight;\n const height = el.scrollHeight + borderHeight;\n const maxHeight = this.maxHeight();\n if (maxHeight) {\n el.style.height = Math.min(height, maxHeight) + 'px';\n } else {\n el.style.height = height + 'px';\n }\n }\n}\n","import { Directive, inject } from '@angular/core';\nimport { NgbFormField } from './form-field';\n\n@Directive({\n selector: '[ngbLabel]',\n host: {\n '[attr.for]': 'id',\n },\n})\nexport class NgbLabel {\n private readonly formField = inject(NgbFormField);\n readonly id = this.formField._id;\n}\n","import { Directive, ElementRef, input, inject, computed } from '@angular/core';\nimport { InputBase } from './input';\n\n@Directive({\n selector: '[numberFormat]',\n host: {\n '(keydown)': 'onKeyDown($event)',\n },\n})\nexport class NumberFormat extends InputBase {\n // Input signals with default values\n private readonly el = inject<ElementRef<HTMLInputElement>>(ElementRef);\n\n // readonly value = model<any>();\n readonly decimals = input<number>(2);\n readonly decimalSeparator = input<string>('.');\n readonly thousandSeparator = input<string>(',');\n\n // Private members\n override displayValue = computed(() => this.formatDisplayValue(this.value() as any) as any);\n\n private readonly specialKeys = [\n 'Backspace',\n 'Tab',\n 'End',\n 'Home',\n 'ArrowLeft',\n 'ArrowRight',\n 'Delete',\n ];\n\n // Handles input changes\n override setValue(value: any) {\n const stringValue = value.toString();\n const position = this.el.nativeElement.selectionStart;\n const cleanedValue = this.cleanValue(stringValue);\n\n if (this.isValidNumber(cleanedValue)) {\n this.value.set(cleanedValue);\n this.updateCursorPosition(stringValue, position ?? 0);\n }\n }\n\n // Handles keydown events to validate input\n onKeyDown(event: KeyboardEvent) {\n if (this.specialKeys.includes(event.key)) return;\n\n const value = this.el.nativeElement.value;\n const position = this.el.nativeElement.selectionStart;\n\n // Handle decimal separator\n if (event.key === this.decimalSeparator()) {\n if (value.includes(this.decimalSeparator())) {\n event.preventDefault();\n }\n return;\n }\n\n // Only allow digits\n if (!/^\\d$/.test(event.key)) {\n event.preventDefault();\n return;\n }\n\n // Check decimal digits limit\n if (this.isDecimalPartFull(value, position ?? 0)) {\n event.preventDefault();\n }\n }\n\n // Private helper methods\n private cleanValue(value: string | number): string {\n return value\n .toString()\n .replace(new RegExp(`[^\\\\d${this.escapeRegExp(this.decimalSeparator())}]`, 'g'), '');\n }\n\n private isValidNumber(value: string): boolean {\n const parts = value.split(this.decimalSeparator());\n return parts.length <= 2 && parts.every(part => /^\\d*$/.test(part));\n }\n\n private formatDisplayValue(value: string) {\n const parts = value.split(this.decimalSeparator());\n let integerPart = parts[0]\n .replace(/^0+(?=\\d)/, '')\n .replace(/\\B(?=(\\d{3})+(?!\\d))/g, this.thousandSeparator());\n const decimalPart = parts.length > 1 ? parts[1].substring(0, this.decimals()) : undefined;\n\n const displayValue =\n decimalPart !== undefined\n ? `${integerPart}${this.decimalSeparator()}${decimalPart}`\n : integerPart;\n return displayValue || '';\n }\n\n private updateCursorPosition(originalValue: string, originalPosition: number) {\n setTimeout(() => {\n const el = this.el.nativeElement;\n if (originalPosition === originalValue.length) {\n // If cursor was at the end, keep it at the end\n el.setSelectionRange(el.value.length, el.value.length);\n return;\n }\n\n // Calculate new cursor position based on thousand separators\n const oldSeparatorCount = this.countSeparators(originalValue.substring(0, originalPosition));\n const newValueUpToOldPos = el.value.substring(0, originalPosition + 1);\n const newSeparatorCount = this.countSeparators(newValueUpToOldPos);\n\n const newPosition = originalPosition + (newSeparatorCount - oldSeparatorCount);\n el.setSelectionRange(newPosition, newPosition);\n }, 0);\n }\n\n private countSeparators(value: string): number {\n const regex = new RegExp(this.escapeRegExp(this.thousandSeparator()), 'g');\n return (value.match(regex) || []).length;\n }\n\n private isDecimalPartFull(value: string, position: number): boolean {\n const decimalPos = value.indexOf(this.decimalSeparator());\n return (\n decimalPos !== -1 &&\n position > decimalPos &&\n value.substring(decimalPos + 1).length >= this.decimals()\n );\n }\n\n private escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ class NgbHoverCard {
|
|
|
8
8
|
this.el = inject(ElementRef);
|
|
9
9
|
this.ngbHoverCard = input.required(...(ngDevMode ? [{ debugName: "ngbHoverCard" }] : []));
|
|
10
10
|
this.options = input(...(ngDevMode ? [undefined, { debugName: "options" }] : []));
|
|
11
|
-
this.delay = input(400, ...(ngDevMode ?
|
|
11
|
+
this.delay = input(400, { ...(ngDevMode ? { debugName: "delay" } : {}), transform: numberAttribute });
|
|
12
12
|
this.close = null;
|
|
13
13
|
}
|
|
14
14
|
open() {
|
|
@@ -52,10 +52,10 @@ class NgbHoverCard {
|
|
|
52
52
|
this.outTimer = null;
|
|
53
53
|
}, this.delay());
|
|
54
54
|
}
|
|
55
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
56
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
55
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbHoverCard, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
56
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbHoverCard, isStandalone: true, selector: "[ngbHoverCard]", inputs: { ngbHoverCard: { classPropertyName: "ngbHoverCard", publicName: "ngbHoverCard", isSignal: true, isRequired: true, transformFunction: null }, options: { classPropertyName: "options", publicName: "options", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mouseenter": "open()", "mouseleave": "closePopup()" } }, exportAs: ["ngbHoverCard"], ngImport: i0 }); }
|
|
57
57
|
}
|
|
58
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
58
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbHoverCard, decorators: [{
|
|
59
59
|
type: Directive,
|
|
60
60
|
args: [{
|
|
61
61
|
selector: '[ngbHoverCard]',
|
|
@@ -65,7 +65,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
|
|
|
65
65
|
'(mouseleave)': 'closePopup()',
|
|
66
66
|
},
|
|
67
67
|
}]
|
|
68
|
-
}] });
|
|
68
|
+
}], propDecorators: { ngbHoverCard: [{ type: i0.Input, args: [{ isSignal: true, alias: "ngbHoverCard", required: true }] }], options: [{ type: i0.Input, args: [{ isSignal: true, alias: "options", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }] } });
|
|
69
69
|
|
|
70
70
|
/*
|
|
71
71
|
* Public API Surface of hover-card
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-hover-card.mjs","sources":["../../../projects/adk/hover-card/hover-card.ts","../../../projects/adk/hover-card/public-api.ts","../../../projects/adk/hover-card/ngbase-adk-hover-card.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, inject, input, numberAttribute } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { PopoverOptions, ngbPopoverPortal } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbHoverCard]',\n exportAs: 'ngbHoverCard',\n host: {\n '(mouseenter)': 'open()',\n '(mouseleave)': 'closePopup()',\n },\n})\nexport class NgbHoverCard<T = any> {\n private popoverPortal = ngbPopoverPortal();\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbHoverCard = input.required<TemplateRef<T>>();\n readonly options = input<PopoverOptions>();\n readonly delay = input(400, { transform: numberAttribute });\n\n private close: DialogRef | null = null;\n private inTimer: any;\n private outTimer: any;\n\n open() {\n // if the user is hovering over the popover, we don't want to open a new one\n if (this.outTimer) {\n this.resetOut();\n return;\n }\n\n // we need to delay the opening of the popover to ensure that the user is hovering over the popover\n this.inTimer = setTimeout(() => {\n const options = this.options() ?? {};\n const { diaRef, events } = this.popoverPortal.open(this.ngbHoverCard(), {\n target: this.el.nativeElement,\n position: 'top',\n backdrop: false,\n ...options,\n });\n this.close = diaRef;\n events.subscribe(e => {\n if (e.type === 'mouseleave') {\n this.closePopup();\n } else {\n this.resetOut();\n }\n });\n }, this.delay());\n }\n\n private resetOut() {\n clearTimeout(this.outTimer);\n this.outTimer = null;\n }\n\n closePopup() {\n clearTimeout(this.inTimer);\n this.inTimer = null;\n if (!this.close) return;\n this.outTimer = setTimeout(() => {\n this.close?.close();\n this.close = null;\n this.outTimer = null;\n }, this.delay());\n }\n}\n","/*\n * Public API Surface of hover-card\n */\n\nexport * from './hover-card';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;MAYa,YAAY,CAAA;AARzB,IAAA,WAAA,GAAA;QASU,
|
|
1
|
+
{"version":3,"file":"ngbase-adk-hover-card.mjs","sources":["../../../projects/adk/hover-card/hover-card.ts","../../../projects/adk/hover-card/public-api.ts","../../../projects/adk/hover-card/ngbase-adk-hover-card.ts"],"sourcesContent":["import { Directive, ElementRef, TemplateRef, inject, input, numberAttribute } from '@angular/core';\nimport { DialogRef } from '@ngbase/adk/portal';\nimport { PopoverOptions, ngbPopoverPortal } from '@ngbase/adk/popover';\n\n@Directive({\n selector: '[ngbHoverCard]',\n exportAs: 'ngbHoverCard',\n host: {\n '(mouseenter)': 'open()',\n '(mouseleave)': 'closePopup()',\n },\n})\nexport class NgbHoverCard<T = any> {\n private popoverPortal = ngbPopoverPortal();\n private el = inject<ElementRef<HTMLElement>>(ElementRef);\n\n readonly ngbHoverCard = input.required<TemplateRef<T>>();\n readonly options = input<PopoverOptions>();\n readonly delay = input(400, { transform: numberAttribute });\n\n private close: DialogRef | null = null;\n private inTimer: any;\n private outTimer: any;\n\n open() {\n // if the user is hovering over the popover, we don't want to open a new one\n if (this.outTimer) {\n this.resetOut();\n return;\n }\n\n // we need to delay the opening of the popover to ensure that the user is hovering over the popover\n this.inTimer = setTimeout(() => {\n const options = this.options() ?? {};\n const { diaRef, events } = this.popoverPortal.open(this.ngbHoverCard(), {\n target: this.el.nativeElement,\n position: 'top',\n backdrop: false,\n ...options,\n });\n this.close = diaRef;\n events.subscribe(e => {\n if (e.type === 'mouseleave') {\n this.closePopup();\n } else {\n this.resetOut();\n }\n });\n }, this.delay());\n }\n\n private resetOut() {\n clearTimeout(this.outTimer);\n this.outTimer = null;\n }\n\n closePopup() {\n clearTimeout(this.inTimer);\n this.inTimer = null;\n if (!this.close) return;\n this.outTimer = setTimeout(() => {\n this.close?.close();\n this.close = null;\n this.outTimer = null;\n }, this.delay());\n }\n}\n","/*\n * Public API Surface of hover-card\n */\n\nexport * from './hover-card';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -47,10 +47,10 @@ class IconService {
|
|
|
47
47
|
}
|
|
48
48
|
return pendingRequest;
|
|
49
49
|
}
|
|
50
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
51
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
50
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: IconService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
51
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: IconService, providedIn: 'root' }); }
|
|
52
52
|
}
|
|
53
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
53
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: IconService, decorators: [{
|
|
54
54
|
type: Injectable,
|
|
55
55
|
args: [{ providedIn: 'root' }]
|
|
56
56
|
}] });
|
|
@@ -60,19 +60,17 @@ class NgbIcon {
|
|
|
60
60
|
this.service = inject(IconService);
|
|
61
61
|
this.sanitizer = inject(DomSanitizer);
|
|
62
62
|
this.name = input.required(...(ngDevMode ? [{ debugName: "name" }] : []));
|
|
63
|
-
this.icon = resource({
|
|
64
|
-
params: this.
|
|
65
|
-
loader: ({ params: request }) => this.service.getIcon(request),
|
|
66
|
-
});
|
|
63
|
+
this.icon = resource({ ...(ngDevMode ? { debugName: "icon" } : {}), params: this.name,
|
|
64
|
+
loader: ({ params: request }) => this.service.getIcon(request) });
|
|
67
65
|
this.svg = computed(() => {
|
|
68
66
|
const txt = this.icon.value() || '';
|
|
69
67
|
return this.sanitizer.bypassSecurityTrustHtml(txt);
|
|
70
68
|
}, ...(ngDevMode ? [{ debugName: "svg" }] : []));
|
|
71
69
|
}
|
|
72
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
73
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
70
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbIcon, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
71
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "21.1.0", type: NgbIcon, isStandalone: true, selector: "[ngbIcon]", inputs: { name: { classPropertyName: "name", publicName: "name", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "innerHTML": "svg()" } }, ngImport: i0 }); }
|
|
74
72
|
}
|
|
75
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
73
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbIcon, decorators: [{
|
|
76
74
|
type: Directive,
|
|
77
75
|
args: [{
|
|
78
76
|
selector: '[ngbIcon]',
|
|
@@ -80,7 +78,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.0", ngImpor
|
|
|
80
78
|
'[innerHTML]': 'svg()',
|
|
81
79
|
},
|
|
82
80
|
}]
|
|
83
|
-
}] });
|
|
81
|
+
}], propDecorators: { name: [{ type: i0.Input, args: [{ isSignal: true, alias: "name", required: true }] }] } });
|
|
84
82
|
|
|
85
83
|
/**
|
|
86
84
|
* Generated bundle index. Do not edit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-icon.mjs","sources":["../../../projects/adk/icon/icon.service.ts","../../../projects/adk/icon/icon.ts","../../../projects/adk/icon/ngbase-adk-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\nexport type IconLoaderFn = (name: string) => Promise<string>;\n\nexport const ICON_LOADER = new InjectionToken<IconLoaderFn>('ICON_LOADER', {\n providedIn: 'root',\n factory: iconLoader,\n});\n\nfunction iconLoader(): IconLoaderFn {\n const http = inject(HttpClient, { optional: true });\n return async (name: string) => {\n try {\n if (http) {\n const icon = await firstValueFrom(\n http?.get(`/icons/${name}.svg`, { responseType: 'text' }),\n );\n return icon;\n }\n } catch {}\n return '';\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IconService {\n readonly loader = inject(ICON_LOADER);\n readonly icons = new Map<string, string>();\n private readonly pendingRequests = new Map<string, Promise<string>>();\n\n async getIcon(name: string): Promise<string> {\n const cachedIcon = this.icons.get(name);\n\n if (cachedIcon) {\n return cachedIcon;\n }\n\n let pendingRequest = this.pendingRequests.get(name);\n if (!pendingRequest) {\n pendingRequest = this.loader(name);\n this.pendingRequests.set(name, pendingRequest);\n\n try {\n const icon = await pendingRequest;\n this.icons.set(name, icon);\n return icon;\n } finally {\n this.pendingRequests.delete(name);\n }\n }\n\n return pendingRequest;\n }\n}\n","import { computed, Directive, inject, input, resource } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[ngbIcon]',\n host: {\n '[innerHTML]': 'svg()',\n },\n})\nexport class NgbIcon {\n readonly service = inject(IconService);\n readonly sanitizer = inject(DomSanitizer);\n\n readonly name = input.required<string>();\n\n private readonly icon = resource({\n params: this.name,\n loader: ({ params: request }) => this.service.getIcon(request),\n });\n\n readonly svg = computed(() => {\n const txt = this.icon.value() || '';\n return this.sanitizer.bypassSecurityTrustHtml(txt);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;;MAMa,WAAW,GAAG,IAAI,cAAc,CAAe,aAAa,EAAE;AACzE,IAAA,UAAU,EAAE,MAAM;AAClB,IAAA,OAAO,EAAE,UAAU;AACpB,CAAA;AAED,SAAS,UAAU,GAAA;AACjB,IAAA,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;AACnD,IAAA,OAAO,OAAO,IAAY,KAAI;AAC5B,QAAA,IAAI;YACF,IAAI,IAAI,EAAE;gBACR,MAAM,IAAI,GAAG,MAAM,cAAc,CAC/B,IAAI,EAAE,GAAG,CAAC,CAAA,OAAA,EAAU,IAAI,
|
|
1
|
+
{"version":3,"file":"ngbase-adk-icon.mjs","sources":["../../../projects/adk/icon/icon.service.ts","../../../projects/adk/icon/icon.ts","../../../projects/adk/icon/ngbase-adk-icon.ts"],"sourcesContent":["import { HttpClient } from '@angular/common/http';\nimport { Injectable, InjectionToken, inject } from '@angular/core';\nimport { firstValueFrom } from 'rxjs';\n\nexport type IconLoaderFn = (name: string) => Promise<string>;\n\nexport const ICON_LOADER = new InjectionToken<IconLoaderFn>('ICON_LOADER', {\n providedIn: 'root',\n factory: iconLoader,\n});\n\nfunction iconLoader(): IconLoaderFn {\n const http = inject(HttpClient, { optional: true });\n return async (name: string) => {\n try {\n if (http) {\n const icon = await firstValueFrom(\n http?.get(`/icons/${name}.svg`, { responseType: 'text' }),\n );\n return icon;\n }\n } catch {}\n return '';\n };\n}\n\n@Injectable({ providedIn: 'root' })\nexport class IconService {\n readonly loader = inject(ICON_LOADER);\n readonly icons = new Map<string, string>();\n private readonly pendingRequests = new Map<string, Promise<string>>();\n\n async getIcon(name: string): Promise<string> {\n const cachedIcon = this.icons.get(name);\n\n if (cachedIcon) {\n return cachedIcon;\n }\n\n let pendingRequest = this.pendingRequests.get(name);\n if (!pendingRequest) {\n pendingRequest = this.loader(name);\n this.pendingRequests.set(name, pendingRequest);\n\n try {\n const icon = await pendingRequest;\n this.icons.set(name, icon);\n return icon;\n } finally {\n this.pendingRequests.delete(name);\n }\n }\n\n return pendingRequest;\n }\n}\n","import { computed, Directive, inject, input, resource } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { IconService } from './icon.service';\n\n@Directive({\n selector: '[ngbIcon]',\n host: {\n '[innerHTML]': 'svg()',\n },\n})\nexport class NgbIcon {\n readonly service = inject(IconService);\n readonly sanitizer = inject(DomSanitizer);\n\n readonly name = input.required<string>();\n\n private readonly icon = resource({\n params: this.name,\n loader: ({ params: request }) => this.service.getIcon(request),\n });\n\n readonly svg = computed(() => {\n const txt = this.icon.value() || '';\n return this.sanitizer.bypassSecurityTrustHtml(txt);\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { inject, Directive, ElementRef, viewChild, input, output, linkedSignal, signal } from '@angular/core';
|
|
2
|
+
import { inject, Directive, ElementRef, viewChild, model, input, output, linkedSignal, signal } from '@angular/core';
|
|
3
3
|
import * as i1 from '@ngbase/adk/form-field';
|
|
4
4
|
import { InputBase } from '@ngbase/adk/form-field';
|
|
5
|
-
import { disposals
|
|
5
|
+
import { disposals } from '@ngbase/adk/utils';
|
|
6
6
|
|
|
7
7
|
class NgbInlineInput {
|
|
8
8
|
constructor() {
|
|
@@ -13,10 +13,10 @@ class NgbInlineInput {
|
|
|
13
13
|
this.ie.updateValue(v);
|
|
14
14
|
});
|
|
15
15
|
}
|
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
17
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbInlineInput, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
17
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgbInlineInput, isStandalone: true, selector: "[ngbInlineInput]", host: { listeners: { "blur": "ie.onBlur()", "keydown.enter": "ie.onEnter($event)", "keydown.escape": "ie.onEnter($event)" }, properties: { "style.width.px": "ie.inputWidth()" } }, hostDirectives: [{ directive: i1.InputBase }], ngImport: i0 }); }
|
|
18
18
|
}
|
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbInlineInput, decorators: [{
|
|
20
20
|
type: Directive,
|
|
21
21
|
args: [{
|
|
22
22
|
selector: '[ngbInlineInput]',
|
|
@@ -33,10 +33,10 @@ class NgbInlineValue {
|
|
|
33
33
|
constructor() {
|
|
34
34
|
this.ie = inject(NgbInlineEdit);
|
|
35
35
|
}
|
|
36
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
37
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
36
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbInlineValue, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
37
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.0", type: NgbInlineValue, isStandalone: true, selector: "[ngbInlineValue]", host: { listeners: { "click": "ie.onClick()", "dblclick": "ie.onDoubleClick()" } }, ngImport: i0 }); }
|
|
38
38
|
}
|
|
39
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
39
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbInlineValue, decorators: [{
|
|
40
40
|
type: Directive,
|
|
41
41
|
args: [{
|
|
42
42
|
selector: '[ngbInlineValue]',
|
|
@@ -51,25 +51,28 @@ class NgbInlineEdit {
|
|
|
51
51
|
// Dependencies
|
|
52
52
|
this.el = inject(ElementRef);
|
|
53
53
|
this.disposals = disposals();
|
|
54
|
-
this.inputElement = viewChild(NgbInlineInput, ...(ngDevMode ?
|
|
55
|
-
read: ElementRef,
|
|
56
|
-
}]));
|
|
54
|
+
this.inputElement = viewChild(NgbInlineInput, { ...(ngDevMode ? { debugName: "inputElement" } : {}), read: ElementRef });
|
|
57
55
|
// Inputs
|
|
58
|
-
this.value =
|
|
56
|
+
this.value = model('', ...(ngDevMode ? [{ debugName: "value" }] : []));
|
|
57
|
+
this.touched = model(false, ...(ngDevMode ? [{ debugName: "touched" }] : []));
|
|
58
|
+
this.disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled" }] : []));
|
|
59
59
|
this.editOn = input('dblclick', ...(ngDevMode ? [{ debugName: "editOn" }] : []));
|
|
60
|
-
this.valueChange = output();
|
|
61
60
|
this.afterEdit = output();
|
|
62
61
|
// State
|
|
63
|
-
this.localValue = linkedSignal(this.value);
|
|
62
|
+
this.localValue = linkedSignal(this.value, ...(ngDevMode ? [{ debugName: "localValue" }] : []));
|
|
64
63
|
this.isEditing = signal(false, ...(ngDevMode ? [{ debugName: "isEditing" }] : []));
|
|
65
64
|
this.inputWidth = signal(0, ...(ngDevMode ? [{ debugName: "inputWidth" }] : []));
|
|
66
65
|
}
|
|
67
66
|
onClick() {
|
|
67
|
+
if (this.disabled())
|
|
68
|
+
return;
|
|
68
69
|
if (this.editOn() === 'click') {
|
|
69
70
|
this.startEditing();
|
|
70
71
|
}
|
|
71
72
|
}
|
|
72
73
|
onDoubleClick() {
|
|
74
|
+
if (this.disabled())
|
|
75
|
+
return;
|
|
73
76
|
if (this.editOn() === 'dblclick') {
|
|
74
77
|
this.startEditing();
|
|
75
78
|
}
|
|
@@ -81,6 +84,7 @@ class NgbInlineEdit {
|
|
|
81
84
|
}
|
|
82
85
|
onBlur() {
|
|
83
86
|
this.isEditing.set(false);
|
|
87
|
+
this.touched.set(true);
|
|
84
88
|
if (this.localValue() !== this.value()) {
|
|
85
89
|
this.afterEdit.emit(this.localValue());
|
|
86
90
|
}
|
|
@@ -91,34 +95,22 @@ class NgbInlineEdit {
|
|
|
91
95
|
}
|
|
92
96
|
updateValue(newValue) {
|
|
93
97
|
this.localValue.set(newValue);
|
|
94
|
-
this.
|
|
95
|
-
this.
|
|
96
|
-
this.onTouched?.();
|
|
98
|
+
this.value.set(newValue);
|
|
99
|
+
this.touched.set(true);
|
|
97
100
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
}
|
|
101
|
-
registerOnTouched(fn) {
|
|
102
|
-
this.onTouched = fn;
|
|
103
|
-
}
|
|
104
|
-
writeValue(value) {
|
|
105
|
-
this.localValue.set(value);
|
|
106
|
-
}
|
|
107
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.0", ngImport: i0, type: NgbInlineEdit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
108
|
-
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "20.2.0", type: NgbInlineEdit, isStandalone: true, selector: "[ngbInlineEdit]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, editOn: { classPropertyName: "editOn", publicName: "editOn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { valueChange: "valueChange", afterEdit: "afterEdit" }, providers: [_provide()], viewQueries: [{ propertyName: "inputElement", first: true, predicate: NgbInlineInput, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
|
|
101
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbInlineEdit, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
|
|
102
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.2.0", version: "21.1.0", type: NgbInlineEdit, isStandalone: true, selector: "[ngbInlineEdit]", inputs: { value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, touched: { classPropertyName: "touched", publicName: "touched", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, editOn: { classPropertyName: "editOn", publicName: "editOn", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { value: "valueChange", touched: "touchedChange", afterEdit: "afterEdit" }, viewQueries: [{ propertyName: "inputElement", first: true, predicate: NgbInlineInput, descendants: true, read: ElementRef, isSignal: true }], ngImport: i0 }); }
|
|
109
103
|
}
|
|
110
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
104
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.0", ngImport: i0, type: NgbInlineEdit, decorators: [{
|
|
111
105
|
type: Directive,
|
|
112
106
|
args: [{
|
|
113
107
|
selector: '[ngbInlineEdit]',
|
|
114
|
-
providers: [_provide()],
|
|
115
108
|
}]
|
|
116
|
-
}]
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
}
|
|
109
|
+
}], propDecorators: { inputElement: [{ type: i0.ViewChild, args: [i0.forwardRef(() => NgbInlineInput), { ...{
|
|
110
|
+
read: ElementRef,
|
|
111
|
+
}, isSignal: true }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }, { type: i0.Output, args: ["valueChange"] }], touched: [{ type: i0.Input, args: [{ isSignal: true, alias: "touched", required: false }] }, { type: i0.Output, args: ["touchedChange"] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], editOn: [{ type: i0.Input, args: [{ isSignal: true, alias: "editOn", required: false }] }], afterEdit: [{ type: i0.Output, args: ["afterEdit"] }] } });
|
|
120
112
|
function aliasInlineEdit(inlineEdit) {
|
|
121
|
-
return [
|
|
113
|
+
return [{ provide: NgbInlineEdit, useExisting: inlineEdit }];
|
|
122
114
|
}
|
|
123
115
|
|
|
124
116
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ngbase-adk-inline-edit.mjs","sources":["../../../projects/adk/inline-edit/inline-edit.ts","../../../projects/adk/inline-edit/ngbase-adk-inline-edit.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport {
|
|
1
|
+
{"version":3,"file":"ngbase-adk-inline-edit.mjs","sources":["../../../projects/adk/inline-edit/inline-edit.ts","../../../projects/adk/inline-edit/ngbase-adk-inline-edit.ts"],"sourcesContent":["import {\n Directive,\n ElementRef,\n inject,\n input,\n linkedSignal,\n model,\n output,\n signal,\n viewChild,\n} from '@angular/core';\nimport { FormValueControl } from '@angular/forms/signals';\nimport { InputBase } from '@ngbase/adk/form-field';\nimport { disposals } from '@ngbase/adk/utils';\n\n@Directive({\n selector: '[ngbInlineInput]',\n hostDirectives: [InputBase],\n host: {\n '(blur)': 'ie.onBlur()',\n '(keydown.enter)': 'ie.onEnter($event)',\n '(keydown.escape)': 'ie.onEnter($event)',\n '[style.width.px]': 'ie.inputWidth()',\n },\n})\nexport class NgbInlineInput {\n readonly ie = inject(NgbInlineEdit);\n readonly inputBase = inject(InputBase);\n\n constructor() {\n this.inputBase.value.set(this.ie.localValue());\n this.inputBase.value.subscribe(v => {\n this.ie.updateValue(v);\n });\n }\n}\n\n@Directive({\n selector: '[ngbInlineValue]',\n host: {\n '(click)': 'ie.onClick()',\n '(dblclick)': 'ie.onDoubleClick()',\n },\n})\nexport class NgbInlineValue {\n readonly ie = inject(NgbInlineEdit);\n}\n\n@Directive({\n selector: '[ngbInlineEdit]',\n})\nexport class NgbInlineEdit implements FormValueControl<string> {\n // Dependencies\n private readonly el = inject(ElementRef);\n private readonly disposals = disposals();\n readonly inputElement = viewChild<NgbInlineInput, ElementRef>(NgbInlineInput, {\n read: ElementRef,\n });\n\n // Inputs\n readonly value = model('');\n readonly touched = model(false);\n readonly disabled = input(false);\n readonly editOn = input<'click' | 'dblclick'>('dblclick');\n readonly afterEdit = output<string>();\n\n // State\n readonly localValue = linkedSignal(this.value);\n readonly isEditing = signal(false);\n readonly inputWidth = signal(0);\n\n onClick() {\n if (this.disabled()) return;\n if (this.editOn() === 'click') {\n this.startEditing();\n }\n }\n\n onDoubleClick() {\n if (this.disabled()) return;\n if (this.editOn() === 'dblclick') {\n this.startEditing();\n }\n }\n\n startEditing() {\n this.isEditing.set(true);\n this.inputWidth.set(this.el.nativeElement.offsetWidth);\n this.disposals.afterNextRender(() => this.inputElement()?.nativeElement.focus());\n }\n\n onBlur() {\n this.isEditing.set(false);\n this.touched.set(true);\n if (this.localValue() !== this.value()) {\n this.afterEdit.emit(this.localValue());\n }\n }\n\n onEnter(ev: Event) {\n ev.stopPropagation();\n this.onBlur();\n }\n\n updateValue(newValue: string) {\n this.localValue.set(newValue);\n this.value.set(newValue);\n this.touched.set(true);\n }\n}\n\nexport function aliasInlineEdit(inlineEdit: typeof NgbInlineEdit) {\n return [{ provide: NgbInlineEdit, useExisting: inlineEdit }];\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|