@bootkit/ng0 0.0.0-alpha.20 → 0.0.0-alpha.22

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.
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-select.mjs","sources":["../../../projects/ng0/components/select/select.component.ts","../../../projects/ng0/components/select/select.component.html","../../../projects/ng0/components/select/select.module.ts","../../../projects/ng0/components/select/public-api.ts","../../../projects/ng0/components/select/bootkit-ng0-components-select.ts"],"sourcesContent":["import { Component, ElementRef, Renderer2, input, OnInit, DestroyRef, signal, model, HostListener, inject, forwardRef, ViewChild, TemplateRef, ContentChild, ViewEncapsulation, DOCUMENT, ChangeDetectionStrategy, booleanAttribute, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { dataSourceAttribute, DataRequest, DataSource, DataSourceLike, ValueExtractorAttribute, defaultValueExtractor, stringFilter, FilterPredicate } from '@bootkit/ng0/data';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayModule, ScrollStrategy, ViewportRuler } from '@angular/cdk/overlay';\r\nimport { Subscription } from 'rxjs';\r\nimport { SelectOption, _IdGenerator } from '@bootkit/ng0/common';\r\nimport { ValueFormatterAttribute, defaultValueFormatter, LocalizationService } from '@bootkit/ng0/localization';\r\n\r\n/**\r\n * Select component that allows users to choose an option from a dropdown list.\r\n */\r\n@Component({\r\n selector: 'ng0-select',\r\n exportAs: 'ng0Select',\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n ],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n }],\r\n host: {\r\n '[class.ng0-select-open]': 'open()',\r\n '[class.ng0-select-loading]': 'source().isLoading()',\r\n '[attr.aria-activedescendant]': '_activeOptionIndex() > -1 ? (_options()[_activeOptionIndex()].id) : undefined',\r\n '[attr.disabled]': '_isDisabled()',\r\n '[attr.aria-disabled]': '_isDisabled()'\r\n }\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n private _viewportRuler = inject(ViewportRuler);\r\n private _overlay = inject(Overlay);\r\n private _document = inject(DOCUMENT);\r\n private _ls = inject(LocalizationService);\r\n private _changeDetector = inject(ChangeDetectorRef);\r\n private _resizeObserver?: ResizeObserver;\r\n private _resizeObserverInitialized = false;\r\n private _viewpoerRulerSubscription?: Subscription;\r\n protected _value = signal<any>(undefined);\r\n @ViewChild('filterInput') private _filterElementRef?: ElementRef;\r\n private _onChangeCallback!: (value: any) => void;\r\n private _onTouchedCallback!: (value: any) => void;\r\n\r\n protected readonly _options = signal<SelectOption[]>([]);\r\n protected readonly _isDisabled = signal<boolean>(false);\r\n protected readonly _selectedOptionIndex = signal<number>(-1);\r\n protected readonly _activeOptionIndex = signal<number>(-1);\r\n @ContentChild(TemplateRef) protected _optionTemplate?: TemplateRef<any>;\r\n protected _positionStrategy!: FlexibleConnectedPositionStrategy;\r\n protected _scrollStrategy!: ScrollStrategy;\r\n\r\n /**\r\n * The data source for the select component.\r\n * This can be an array of data, a function that returns an observable of data,\r\n * or an instance of DataSource.\r\n */\r\n public readonly source = input.required<DataSource<any>, DataSourceLike<any>>({\r\n transform: v => dataSourceAttribute(v)\r\n });\r\n\r\n /** \r\n * Indicates whether the dropdown is open or closed.\r\n */\r\n public readonly open = model(false);\r\n\r\n /**\r\n * Custom compare function to determine equality between two items.\r\n * Default is a simple equality check.\r\n */\r\n // public readonly compareFunction = input<ValueComparerFunction>(defaultValueComparer);\r\n\r\n /**\r\n * Custom value extractor function to extract the value of any object.\r\n */\r\n public readonly extractBy = input(defaultValueExtractor, {\r\n transform: ValueExtractorAttribute\r\n });\r\n\r\n /**\r\n * Custom format function to convert an item to a string for display.\r\n * Default converts the item to a string using its toString method.\r\n */\r\n public readonly formatBy = input(defaultValueFormatter, {\r\n transform: ValueFormatterAttribute(this._ls.get())\r\n });\r\n\r\n /**\r\n * Indicates whether the dropdown is filterable.\r\n */\r\n public readonly filterable = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Placeholder text for the filter input field.\r\n */\r\n public readonly filterPlaceholder = input('');\r\n\r\n /**\r\n * Custom filter function to filter items based on a filter value.\r\n * Default checks if the item contains the filter value (case-insensitive).\r\n */\r\n public readonly filterBy = input<FilterPredicate>(stringFilter);\r\n\r\n constructor(protected _el: ElementRef<HTMLDivElement>, private _renderer: Renderer2, private _destroyRef: DestroyRef) {\r\n this._renderer.addClass(this._el.nativeElement, 'form-select');\r\n this._renderer.setAttribute(this._el.nativeElement, 'tabindex', '0');\r\n this._scrollStrategy = this._overlay.scrollStrategies.block();\r\n }\r\n\r\n ngOnInit(): void {\r\n var r = new DataRequest();\r\n this.source().load(r).pipe(takeUntilDestroyed(this._destroyRef)).subscribe(res => {\r\n this._insertOptions(0, ...res.data)\r\n })\r\n\r\n this._handleDataSourceChange();\r\n }\r\n\r\n private _handleDataSourceChange() {\r\n let options = this._options();\r\n this.source().change.subscribe(e => {\r\n e.changes.forEach(change => {\r\n switch (change.type) {\r\n case 'insert':\r\n this._insertOptions(change.index!, ...change.items);\r\n break;\r\n case 'replace':\r\n options[change.index].value = change.value;\r\n break;\r\n case 'remove':\r\n options.splice(change.index, change.count);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Selects an option by index\r\n */\r\n protected _selectByIndex(index: number) {\r\n let optionsCount = this._options().length;\r\n if (optionsCount == 0 || index < 0 || index > optionsCount - 1) {\r\n throw new Error('Index out of range');\r\n }\r\n\r\n if (index == this._selectedOptionIndex()) {\r\n return;\r\n }\r\n\r\n let option = this._options()[index];\r\n this._value.set(this.extractBy()(option.value));\r\n this._onChangeCallback(this._value());\r\n }\r\n\r\n public isSelected(value: any) {\r\n let v = this.extractBy()(value);\r\n return v === this._value();\r\n }\r\n\r\n /**\r\n * Sets an option as active\r\n */\r\n public active(index: number) {\r\n if (index < 0) {\r\n throw Error();\r\n }\r\n\r\n this._activeOptionIndex.set(index);\r\n if (this.open()) {\r\n this.scrollItemIntoView(this._activeOptionIndex(), 'nearest');\r\n }\r\n }\r\n\r\n /**\r\n * Scrolls the item at the specified index into view within the dropdown list.\r\n * @param index The index of the item to scroll into view.\r\n * @param position The vertical alignment of the item after scrolling.\r\n * Can be 'start', 'center', 'end', or 'nearest'.\r\n * Default is 'nearest'.\r\n * @param behavior The scrolling behavior.\r\n */\r\n public scrollItemIntoView(index: number, position?: ScrollLogicalPosition, behavior?: ScrollBehavior) {\r\n let item = this._options()[index];\r\n let elm = this._document.getElementById(item.id) as HTMLUListElement;\r\n elm!.scrollIntoView({ block: position, behavior: behavior });\r\n }\r\n\r\n protected _insertOptions(index?: number, ...items: any[]) {\r\n // let filter = this.filterBy()()\r\n var options = items.map(x => ({\r\n id: this._getNextOptionId(),\r\n value: x,\r\n show: true\r\n }) as SelectOption)\r\n\r\n if (Number.isInteger(index)) {\r\n this._options().splice(index!, 0, ...options);\r\n } else {\r\n this._options().push(...options);\r\n }\r\n\r\n this._changeDetector.markForCheck();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n let value = this.extractBy()(obj)\r\n this._value.set(value);\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this._isDisabled.set(isDisabled);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n protected _onKeydown(e: KeyboardEvent, firedByFilter: boolean = false) {\r\n let open = this.open();\r\n\r\n if (this._isDisabled())\r\n return;\r\n\r\n let optionsCount = this._options().length;\r\n if (optionsCount == 0) {\r\n return;\r\n }\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n if (open) {\r\n if (this._activeOptionIndex() < optionsCount - 1) {\r\n this.active(this._activeOptionIndex() + 1);\r\n }\r\n } else {\r\n if (this._selectedOptionIndex()! < optionsCount - 1) {\r\n this._selectByIndex(this._selectedOptionIndex() + 1)\r\n }\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n if (open) {\r\n if (this._activeOptionIndex() > 0) {\r\n this.active(this._activeOptionIndex()! - 1);\r\n }\r\n } else {\r\n if (this._selectedOptionIndex() > 0) {\r\n this._selectByIndex(this._selectedOptionIndex()! - 1)\r\n }\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 'Enter':\r\n if (open) {\r\n if (this._activeOptionIndex() == this._selectedOptionIndex()) {\r\n this.open.set(false);\r\n } else {\r\n this._selectByIndex(this._activeOptionIndex());\r\n this.open.set(false);\r\n }\r\n } else {\r\n this.open.set(true);\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case ' ':\r\n if (!open) {\r\n this.open.set(true);\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 'Escape':\r\n this.open.set(false);\r\n e.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n if (open) {\r\n this.active(0);\r\n } else {\r\n this._selectByIndex(0)\r\n }\r\n\r\n e.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n if (open) {\r\n this.active(optionsCount - 1);\r\n } else {\r\n this._selectByIndex(optionsCount - 1);\r\n }\r\n\r\n e.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n protected _onFilterBlur() {\r\n // use setTimeout to allow next element receives the focus.\r\n setTimeout(() => {\r\n if (!this._el.nativeElement.matches(':focus')) {\r\n this.open.set(false);\r\n }\r\n }, 0);\r\n }\r\n\r\n protected _filterItems(filter: string) {\r\n let filterFunc = this.filterBy();\r\n this._options().forEach(x => x.show = filterFunc(x.value, filter));\r\n }\r\n\r\n protected _onOverlayAttach() {\r\n this._activeOptionIndex.set(this._selectedOptionIndex())\r\n\r\n this._listenToResizeEvents();\r\n\r\n if (this.filterable()) {\r\n setTimeout(() => {\r\n this._filterElementRef?.nativeElement.focus();\r\n }, 0);\r\n }\r\n\r\n if (this._selectedOptionIndex() > -1) {\r\n this.scrollItemIntoView(this._selectedOptionIndex(), 'start', 'instant');\r\n }\r\n }\r\n\r\n protected _onOverlayDetach() {\r\n this._unlistenFromResizeEvents();\r\n if (this.filterable()) {\r\n this._el?.nativeElement.focus();\r\n this._options().forEach(x => x.show = false);\r\n }\r\n }\r\n\r\n private _getNextOptionId() {\r\n return `ng0-select-item-${_IdGenerator.next().toString()}`;\r\n }\r\n\r\n private _listenToResizeEvents() {\r\n this._viewportRuler.change().subscribe(x => {\r\n this.open.set(false);\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(e => {\r\n // Sterategy 1: close overlay\r\n if (!this._resizeObserverInitialized) {\r\n this._resizeObserverInitialized = true;\r\n return;\r\n } else {\r\n this.open.set(false);\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n // Sterategy 2: update overlay size\r\n // const width = (e[0].target as HTMLDivElement).offsetWidth;\r\n // this._connectedOverlay.overlayRef.updateSize({ width });\r\n });\r\n\r\n this._resizeObserver.observe(this._el.nativeElement);\r\n }\r\n\r\n private _unlistenFromResizeEvents() {\r\n this._viewpoerRulerSubscription?.unsubscribe();\r\n this._viewpoerRulerSubscription = undefined;\r\n\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n this._resizeObserverInitialized = false;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n private _onHostClick(e: MouseEvent) {\r\n if (this._isDisabled())\r\n return;\r\n\r\n this.open.update(x => !x);\r\n // this._onTouchedCallback?.(this._selectedValue());\r\n }\r\n}\r\n","@let formattedValue = formatBy()(_value());\r\n\r\n@if(formattedValue == null || formattedValue == '') {\r\n&nbsp;\r\n}@else {\r\n{{formattedValue}}\r\n}\r\n\r\n@if(source().isLoading()) {\r\n<div class=\"spinner-border text-success spinner-border-sm ng0-select-spinner\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n</div>\r\n}\r\n\r\n<ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"_el.nativeElement\"\r\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\r\n [cdkConnectedOverlayOpen]=\"open()\"\r\n [cdkConnectedOverlayPush]=\"false\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown-container', 'shadow']\"\r\n [cdkConnectedOverlayWidth]=\"_el.nativeElement.clientWidth\"\r\n (overlayOutsideClick)=\"open.set(false)\"\r\n (attach)=\"_onOverlayAttach()\"\r\n (detach)=\"_onOverlayDetach()\">\r\n\r\n @if(filterable()) {\r\n <div class=\"ng0-select-filter-container border-bottom\">\r\n <input #filterInput\r\n type=\"text\"\r\n class=\"ng0-select-filter-input form-control form-control-sm\"\r\n [attr.placeholder]=\"filterPlaceholder()\"\r\n (keydown)=\"_onKeydown($event, true)\"\r\n (blur)=\"_onFilterBlur()\"\r\n (input)=\"_filterItems($event.target.value)\">\r\n </div>\r\n }\r\n\r\n <ul class=\"ng0-select-dropdown\"\r\n [attr.tabindex]=\"_isDisabled() ? undefined : -1\"\r\n [class.is-open]=\"open()\">\r\n\r\n @for (option of _options(); track $index) {\r\n <li\r\n [attr.id]=\"option.id\"\r\n class=\"ng0-select-option\"\r\n [class.ng0-select-option-active]=\"$index == _activeOptionIndex()\"\r\n [class.ng0-select-option-selected]=\"isSelected(option.value)\"\r\n [class.ng0-select-option-filtered]=\"!option.show\"\r\n (click)=\"_selectByIndex($index); open.set(false)\"\r\n (keyup.enter)=\"open.set(false)\">\r\n @if(_optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_optionTemplate; context: { $implicit: option}\" />\r\n } @else {\r\n @let v = formatBy()(option.value);\r\n @if(v) {\r\n {{v}}\r\n }@else {\r\n &nbsp;\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { SelectComponent } from './select.component';\r\n\r\nconst Items = [SelectComponent]\r\n\r\n/**\r\n * Select module.\r\n */\r\n@NgModule({\r\n imports: Items,\r\n exports: Items\r\n})\r\nexport class SelectModule { }\r\n","// export * from './types';\r\nexport * from './select.component';\r\nexport * from './select.module';\r\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":"bootkit-ng0-components-select.mjs","sources":["../../../projects/ng0/components/select/select.component.ts","../../../projects/ng0/components/select/select.component.html","../../../projects/ng0/components/select/select.module.ts","../../../projects/ng0/components/select/public-api.ts","../../../projects/ng0/components/select/bootkit-ng0-components-select.ts"],"sourcesContent":["import { Component, ElementRef, Renderer2, input, OnInit, DestroyRef, signal, model, HostListener, inject, forwardRef, ViewChild, TemplateRef, ContentChild, ViewEncapsulation, DOCUMENT, ChangeDetectionStrategy, booleanAttribute, ChangeDetectorRef } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { dataSourceAttribute, DataRequest, DataSource, DataSourceLike, ValueExtractorAttribute, defaultValueExtractor, stringFilter, FilterPredicate, BooleanValueComparerAttribute, defaultBooleanValueComparer } from '@bootkit/ng0/data';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { FlexibleConnectedPositionStrategy, Overlay, OverlayModule, ScrollStrategy, ViewportRuler } from '@angular/cdk/overlay';\r\nimport { Subscription } from 'rxjs';\r\nimport { CssClassAttribute, SelectOption, _IdGenerator } from '@bootkit/ng0/common';\r\nimport { ValueFormatterAttribute, defaultValueFormatter, LocalizationService } from '@bootkit/ng0/localization';\r\nimport { CdkListboxModule } from '@angular/cdk/listbox';\r\n\r\n/**\r\n * Select component that allows users to choose an option from a dropdown list.\r\n */\r\n@Component({\r\n selector: 'ng0-select',\r\n exportAs: 'ng0Select',\r\n templateUrl: './select.component.html',\r\n styleUrl: './select.component.scss',\r\n standalone: true,\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n CdkListboxModule\r\n ],\r\n providers: [{\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => SelectComponent),\r\n multi: true\r\n }],\r\n host: {\r\n '[class.ng0-select-open]': 'open()',\r\n '[class.ng0-select-loading]': 'source().isLoading()',\r\n '[attr.aria-activedescendant]': '_activeOptionIndex() > -1 ? (_options()[_activeOptionIndex()].id) : undefined',\r\n '[attr.disabled]': '_isDisabled()',\r\n '[attr.aria-disabled]': '_isDisabled()'\r\n }\r\n})\r\nexport class SelectComponent implements OnInit, ControlValueAccessor {\r\n private _resizeObserver?: ResizeObserver;\r\n private _resizeObserverInitialized = false;\r\n private _viewpoerRulerSubscription?: Subscription;\r\n protected _cdkListboxValue = signal<any>(undefined);\r\n @ViewChild('filterInput') private _filterElementRef?: ElementRef;\r\n private _onChangeCallback!: (value: any) => void;\r\n private _onTouchedCallback!: (value: any) => void;\r\n protected readonly _options = signal<SelectOption[]>([]);\r\n protected readonly _isDisabled = signal<boolean>(false);\r\n protected readonly _selectedOptionIndex = signal<number>(-1);\r\n protected readonly _activeOptionIndex = signal<number>(-1);\r\n @ContentChild(TemplateRef) protected _optionTemplate?: TemplateRef<any>;\r\n protected _positionStrategy!: FlexibleConnectedPositionStrategy;\r\n protected _scrollStrategy!: ScrollStrategy;\r\n\r\n private _overlay = inject(Overlay);\r\n private _document = inject(DOCUMENT);\r\n private _ls = inject(LocalizationService);\r\n private _destroyRef = inject(DestroyRef);\r\n protected _el = inject(ElementRef<HTMLDivElement>);\r\n private _renderer = inject(Renderer2);\r\n private _viewportRuler = inject(ViewportRuler);\r\n private _changeDetector = inject(ChangeDetectorRef);\r\n\r\n /**\r\n * The data source for the select component.\r\n * This can be an array of data, a function that returns an observable of data,\r\n * or an instance of DataSource.\r\n */\r\n public readonly source = input.required<DataSource<any>, DataSourceLike<any>>({\r\n transform: v => dataSourceAttribute(v)\r\n });\r\n\r\n /** \r\n * Indicates whether multi selection is enabled or not.\r\n */\r\n public readonly multiple = input(false, {\r\n transform: booleanAttribute\r\n });\r\n\r\n /** \r\n * Indicates whether the dropdown is open or closed.\r\n */\r\n public readonly open = model(false);\r\n\r\n /**\r\n * A custom comparer function or the name of a field for comparing two objects.\r\n */\r\n public readonly compareBy = input(defaultBooleanValueComparer, {\r\n transform: BooleanValueComparerAttribute\r\n });\r\n\r\n /**\r\n * Custom format function to convert an item to a string for display.\r\n * Default converts the item to a string using its toString method.\r\n */\r\n public readonly formatBy = input(defaultValueFormatter, {\r\n transform: ValueFormatterAttribute(this._ls.get())\r\n });\r\n\r\n /**\r\n * Custom value extractor function to extract the value of any object while writing values.\r\n */\r\n public readonly writeBy = input(defaultValueExtractor, {\r\n transform: ValueExtractorAttribute\r\n });\r\n\r\n /**\r\n * Indicates whether the dropdown is filterable.\r\n */\r\n public readonly filterable = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Placeholder text for the filter input field.\r\n */\r\n public readonly filterPlaceholder = input('');\r\n\r\n /**\r\n * Custom filter function to filter items based on a filter value.\r\n * Default checks if the item contains the filter value (case-insensitive).\r\n */\r\n public readonly filterBy = input<FilterPredicate>(stringFilter);\r\n\r\n /**\r\n * CSS class or classes to apply to the list container.\r\n */\r\n public readonly itemClass = input((item) => undefined, {\r\n transform: CssClassAttribute\r\n });\r\n\r\n constructor() {\r\n this._renderer.addClass(this._el.nativeElement, 'form-select');\r\n this._renderer.setAttribute(this._el.nativeElement, 'tabindex', '0');\r\n this._scrollStrategy = this._overlay.scrollStrategies.block();\r\n }\r\n\r\n ngOnInit(): void {\r\n this._loadItems();\r\n this._handleDataSourceChange();\r\n }\r\n\r\n private _loadItems() {\r\n var r = new DataRequest();\r\n this.source().load(r).pipe(takeUntilDestroyed(this._destroyRef)).subscribe(res => {\r\n this._insertOptions(0, ...res.data);\r\n });\r\n }\r\n\r\n private _handleDataSourceChange() {\r\n let options = this._options();\r\n this.source().change.subscribe(e => {\r\n e.changes.forEach(change => {\r\n switch (change.type) {\r\n case 'insert':\r\n this._insertOptions(change.index!, ...change.items);\r\n break;\r\n case 'replace':\r\n options[change.index].value = change.value;\r\n break;\r\n case 'remove':\r\n options.splice(change.index, change.count);\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * Selects an option by index\r\n */\r\n protected _selectByIndex(index: number) {\r\n let optionsCount = this._options().length;\r\n if (optionsCount == 0 || index < 0 || index > optionsCount - 1) {\r\n throw new Error('Index out of range');\r\n }\r\n\r\n if (index == this._selectedOptionIndex()) {\r\n return;\r\n }\r\n\r\n let option = this._options()[index];\r\n this._cdkListboxValue.set(this.writeBy()(option.value));\r\n this._onChangeCallback(this._cdkListboxValue());\r\n }\r\n\r\n // /**\r\n // * Sets an option as active\r\n // */\r\n // public active(index: number) {\r\n // if (index < 0) {\r\n // throw Error();\r\n // }\r\n\r\n // this._activeOptionIndex.set(index);\r\n // if (this.open()) {\r\n // this.scrollItemIntoView(this._activeOptionIndex(), 'nearest');\r\n // }\r\n // }\r\n\r\n // /**\r\n // * Scrolls the item at the specified index into view within the dropdown list.\r\n // * @param index The index of the item to scroll into view.\r\n // * @param position The vertical alignment of the item after scrolling.\r\n // * Can be 'start', 'center', 'end', or 'nearest'.\r\n // * Default is 'nearest'.\r\n // * @param behavior The scrolling behavior.\r\n // */\r\n // public scrollItemIntoView(index: number, position?: ScrollLogicalPosition, behavior?: ScrollBehavior) {\r\n // let item = this._options()[index];\r\n // let elm = this._document.getElementById(item.id) as HTMLUListElement;\r\n // elm!.scrollIntoView({ block: position, behavior: behavior });\r\n // }\r\n\r\n protected _insertOptions(index?: number, ...items: any[]) {\r\n // let filter = this.filterBy()()\r\n var options = items.map(x => ({\r\n id: this._getNextOptionId(),\r\n value: x,\r\n show: true\r\n }) as SelectOption)\r\n\r\n if (Number.isInteger(index)) {\r\n this._options().splice(index!, 0, ...options);\r\n } else {\r\n this._options().push(...options);\r\n }\r\n\r\n this._changeDetector.markForCheck();\r\n }\r\n\r\n writeValue(obj: any): void {\r\n let value;\r\n\r\n if (this.multiple()) {\r\n if (Array.isArray(obj)) {\r\n value = obj;\r\n } else if (obj === null || obj === undefined) {\r\n value = [];\r\n } else {\r\n throw Error('Provide an array or null as the value of ng0-select component.');\r\n }\r\n } else {\r\n value = [obj];\r\n }\r\n \r\n this._cdkListboxValue.set(value);\r\n\r\n // Update selection state of items\r\n // let compareBy = this.compareBy();\r\n // if (this.multiple()) {\r\n // this._items().forEach(x => x.selected = (value as any[]).some(y => compareBy(x.value, y)));\r\n // } else {\r\n // this._items().forEach(x => x.selected = compareBy(x.value, value));\r\n // }\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this._isDisabled.set(isDisabled);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n protected _onKeydown(e: KeyboardEvent, firedByFilter: boolean = false) {\r\n let open = this.open();\r\n\r\n if (this._isDisabled())\r\n return;\r\n\r\n let optionsCount = this._options().length;\r\n if (optionsCount == 0) {\r\n return;\r\n }\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n if (open) {\r\n if (this._activeOptionIndex() < optionsCount - 1) {\r\n // this.active(this._activeOptionIndex() + 1);\r\n }\r\n } else {\r\n if (this._selectedOptionIndex()! < optionsCount - 1) {\r\n this._selectByIndex(this._selectedOptionIndex() + 1)\r\n }\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 'ArrowUp':\r\n if (open) {\r\n if (this._activeOptionIndex() > 0) {\r\n // this.active(this._activeOptionIndex()! - 1);\r\n }\r\n } else {\r\n if (this._selectedOptionIndex() > 0) {\r\n this._selectByIndex(this._selectedOptionIndex()! - 1)\r\n }\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 'Enter':\r\n if (open) {\r\n if (this._activeOptionIndex() == this._selectedOptionIndex()) {\r\n this.open.set(false);\r\n } else {\r\n this._selectByIndex(this._activeOptionIndex());\r\n this.open.set(false);\r\n }\r\n } else {\r\n this.open.set(true);\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case ' ':\r\n if (!open) {\r\n this.open.set(true);\r\n }\r\n e.preventDefault();\r\n break;\r\n\r\n case 'Escape':\r\n this.open.set(false);\r\n e.preventDefault();\r\n break;\r\n\r\n case 'Home':\r\n if (open) {\r\n // this.active(0);\r\n } else {\r\n this._selectByIndex(0)\r\n }\r\n\r\n e.preventDefault();\r\n break;\r\n\r\n case 'End':\r\n if (open) {\r\n // this.active(optionsCount - 1);\r\n } else {\r\n this._selectByIndex(optionsCount - 1);\r\n }\r\n\r\n e.preventDefault();\r\n break;\r\n }\r\n }\r\n\r\n protected _onFilterBlur() {\r\n // use setTimeout to allow next element receives the focus.\r\n setTimeout(() => {\r\n if (!this._el.nativeElement.matches(':focus')) {\r\n this.open.set(false);\r\n }\r\n }, 0);\r\n }\r\n\r\n protected _filterItems(filter: string) {\r\n let filterFunc = this.filterBy();\r\n this._options().forEach(x => x.show = filterFunc(x.value, filter));\r\n }\r\n\r\n protected _onOverlayAttach() {\r\n this._activeOptionIndex.set(this._selectedOptionIndex())\r\n\r\n this._listenToResizeEvents();\r\n\r\n if (this.filterable()) {\r\n setTimeout(() => {\r\n this._filterElementRef?.nativeElement.focus();\r\n }, 0);\r\n }\r\n\r\n if (this._selectedOptionIndex() > -1) {\r\n // this.scrollItemIntoView(this._selectedOptionIndex(), 'start', 'instant');\r\n }\r\n }\r\n\r\n protected _onOverlayDetach() {\r\n this._unlistenFromResizeEvents();\r\n if (this.filterable()) {\r\n this._el?.nativeElement.focus();\r\n this._options().forEach(x => x.show = false);\r\n }\r\n }\r\n\r\n private _getNextOptionId() {\r\n return `ng0-select-item-${_IdGenerator.next().toString()}`;\r\n }\r\n\r\n private _listenToResizeEvents() {\r\n this._viewportRuler.change().subscribe(x => {\r\n this.open.set(false);\r\n });\r\n\r\n this._resizeObserver = new ResizeObserver(e => {\r\n // Sterategy 1: close overlay\r\n if (!this._resizeObserverInitialized) {\r\n this._resizeObserverInitialized = true;\r\n return;\r\n } else {\r\n this.open.set(false);\r\n this._resizeObserver?.disconnect();\r\n }\r\n\r\n // Sterategy 2: update overlay size\r\n // const width = (e[0].target as HTMLDivElement).offsetWidth;\r\n // this._connectedOverlay.overlayRef.updateSize({ width });\r\n });\r\n\r\n this._resizeObserver.observe(this._el.nativeElement);\r\n }\r\n\r\n private _unlistenFromResizeEvents() {\r\n this._viewpoerRulerSubscription?.unsubscribe();\r\n this._viewpoerRulerSubscription = undefined;\r\n\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n this._resizeObserverInitialized = false;\r\n }\r\n\r\n @HostListener('click', ['$event'])\r\n private _onHostClick(e: MouseEvent) {\r\n if (this._isDisabled())\r\n return;\r\n\r\n this.open.update(x => !x);\r\n // this._onTouchedCallback?.(this._selectedValue());\r\n }\r\n}\r\n","@let formattedValue = formatBy()(_cdkListboxValue());\r\n\r\n@if(formattedValue == null || formattedValue == '') {\r\n&nbsp;\r\n}@else {\r\n{{formattedValue}}\r\n}\r\n\r\n@if(source().isLoading()) {\r\n<div class=\"spinner-border text-success spinner-border-sm ng0-select-spinner\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n</div>\r\n}\r\n\r\n<ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"_el.nativeElement\"\r\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\r\n [cdkConnectedOverlayOpen]=\"open()\"\r\n [cdkConnectedOverlayPush]=\"false\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown-container', 'shadow']\"\r\n [cdkConnectedOverlayWidth]=\"_el.nativeElement.clientWidth\"\r\n (overlayOutsideClick)=\"open.set(false)\"\r\n (attach)=\"_onOverlayAttach()\"\r\n (detach)=\"_onOverlayDetach()\">\r\n\r\n @if(filterable()) {\r\n <div class=\"ng0-select-filter-container border-bottom\">\r\n <input #filterInput\r\n type=\"text\"\r\n class=\"ng0-select-filter-input form-control form-control-sm\"\r\n [attr.placeholder]=\"filterPlaceholder()\"\r\n (keydown)=\"_onKeydown($event, true)\"\r\n (blur)=\"_onFilterBlur()\"\r\n (input)=\"_filterItems($event.target.value)\">\r\n </div>\r\n }\r\n\r\n <ul class=\"ng0-select-dropdown\"\r\n cdkListbox\r\n [cdkListboxValue]=\"_cdkListboxValue()\"\r\n [attr.tabindex]=\"_isDisabled() ? undefined : -1\"\r\n [class.is-open]=\"open()\">\r\n\r\n @for (option of _options(); track $index) {\r\n <li [cdkOption]=\"option.value\"\r\n #cdkOption=\"cdkOption\"\r\n [attr.id]=\"option.id\"\r\n class=\"ng0-select-option\"\r\n [class.ng0-select-option-active]=\"cdkOption.isActive()\"\r\n [class.ng0-select-option-selected]=\"cdkOption.isSelected()\"\r\n [class.ng0-select-option-filtered]=\"!option.show\"\r\n (click)=\"cdkOption.select(); open.set(false)\"\r\n (keyup.enter)=\"open.set(false)\">\r\n @if(_optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_optionTemplate; context: { $implicit: option}\" />\r\n } @else {\r\n @let v = formatBy()(option.value);\r\n @if(v) {\r\n {{v}}\r\n }@else {\r\n &nbsp;\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>","import { NgModule } from '@angular/core';\r\nimport { SelectComponent } from './select.component';\r\n\r\nconst Items = [SelectComponent]\r\n\r\n/**\r\n * Select module.\r\n */\r\n@NgModule({\r\n imports: Items,\r\n exports: Items\r\n})\r\nexport class SelectModule { }\r\n","// export * from './types';\r\nexport * from './select.component';\r\nexport * from './select.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -64,6 +64,7 @@ const Keys = {
64
64
  */
65
65
  class NumberDirective {
66
66
  _value;
67
+ _isDisabled;
67
68
  _decimalSeparator;
68
69
  _thousandsSeparator = ',';
69
70
  _onChangeCallback;
@@ -107,7 +108,8 @@ class NumberDirective {
107
108
  this._onTouchedCallback = fn;
108
109
  }
109
110
  setDisabledState(isDisabled) {
110
- // this._setProperty('disabled', isDisabled);
111
+ this._isDisabled = isDisabled;
112
+ this._renderer.setProperty(this._elmRef.nativeElement, 'disabled', isDisabled);
111
113
  }
112
114
  writeValue(value) {
113
115
  var inputValue;
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-form.mjs","sources":["../../../projects/ng0/form/focus.directive.ts","../../../projects/ng0/form/number.directive.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with-validator.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with.directive.ts","../../../projects/ng0/form/validation/validators/url/url-validator.ts","../../../projects/ng0/form/validation/validators/url/url-validator.directive.ts","../../../projects/ng0/form/validation/validators/custom/custom-validator.directive.ts","../../../projects/ng0/form/validation/validators/min/min-validator.directive.ts","../../../projects/ng0/form/validation/validators/max/max-validator.directive.ts","../../../projects/ng0/form/form.module.ts","../../../projects/ng0/form/public-api.ts","../../../projects/ng0/form/bootkit-ng0-form.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Focus]',\r\n exportAs: 'ng0Focus',\r\n standalone: true\r\n})\r\nexport class FocusDirective implements OnInit, OnChanges {\r\n /** \r\n * \r\n */\r\n @Input() focusOnLoad = true;\r\n @Input() focusWhen?: boolean;\r\n private focused = false;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.focusOnLoad) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['focusWhen']) {\r\n if (this.focusWhen) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, forwardRef, ElementRef, Renderer2, input, booleanAttribute, numberAttribute, inject } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nconst addThousandsSeparator = (str: string) => str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\nconst isValidNumber = (str: string) => str.trim() !== '' && !isNaN(Number(str));\r\nconst removeChar = (str: string, charToRemove: string) => str.split(charToRemove).join('');\r\n\r\nconst Keys = {\r\n backspace: 'Backspace',\r\n tab: 'Tab',\r\n arrowLeft: 'ArrowLeft',\r\n arrowRight: 'ArrowRight',\r\n delete: 'Delete',\r\n home: 'Home',\r\n end: 'End'\r\n}\r\n\r\ninterface InputElementState {\r\n selectionStart: number;\r\n selectionEnd: number;\r\n isCursorInsideIntegerPart: boolean;\r\n decimalSeparatorPosition: number;\r\n}\r\n\r\n/**\r\n * Directive to allow only number input in text fields.\r\n * It supports integer and decimal numbers, negative numbers, min/max values, thousands separator.\r\n */\r\n@Directive({\r\n selector: '[ng0Number]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NumberDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NumberDirective implements ControlValueAccessor {\r\n private _value?: number;\r\n private _decimalSeparator!: string;\r\n private _thousandsSeparator: string = ',';\r\n private _onChangeCallback?: (v: any) => {};\r\n private _onTouchedCallback?: () => {};\r\n private _elmRef = inject(ElementRef<HTMLInputElement>);\r\n private _renderer = inject(Renderer2);\r\n\r\n /**\r\n * The minimum number of digits to display after the decimal point.\r\n * Applied only when 'numberType' is set to 'decimal'.\r\n * @default 1\r\n */\r\n public minFractionDigits = input(1, { transform: numberAttribute });\r\n\r\n /**\r\n * The maximum number of digits to display after the decimal point.\r\n * Applied only when 'numberType' is set to 'decimal'.\r\n * @default 2\r\n */\r\n public maxFractionDigits = input(2, { transform: numberAttribute });\r\n\r\n /**\r\n * Whether to use grouping separators, such as thousands separators\r\n * @default false\r\n */\r\n public useGrouping = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Type of numbers to allow\r\n * 'decimal' - allow decimal numbers\r\n * 'integer' - allow integer numbers only\r\n * @default 'integer'\r\n */\r\n public numberType = input<'integer' | 'decimal'>('integer');\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n // Use Intl.NumberFormat to find decimal separator for locale\r\n const formatted = formatNumber(1.1, 'en', '1.1-1');\r\n this._decimalSeparator = formatted.replace(/\\d/g, '') || '.';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n // this._setProperty('disabled', isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n var inputValue: string;\r\n\r\n if (value === undefined || value === null) {\r\n inputValue = '';\r\n this._value = undefined;\r\n } else if (typeof value === 'number') {\r\n inputValue = this._formatNumber(value);\r\n this._value = value;\r\n }\r\n else if (typeof value === 'string') {\r\n const parsedValue = this._value = Number.parseFloat(value);\r\n inputValue = this._formatNumber(parsedValue);\r\n } else {\r\n console.error('NumberDirective: Unsupported value type', value);\r\n inputValue = 'Invalid';\r\n }\r\n\r\n this._setProperty('value', inputValue);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n private _onKeyDown(event: KeyboardEvent) {\r\n const key = event.key;\r\n const state = this._getInputState();\r\n\r\n if (this._isKeyAllowed(key)) {\r\n if (key == Keys.backspace) {\r\n if (state.selectionStart > 1 && (state.selectionStart === state.selectionEnd)) {\r\n let value = this._elmRef.nativeElement.value;\r\n let beforeSelection = value.charAt(state.selectionStart - 1);\r\n if (beforeSelection === ',') {\r\n // If the character before the cursor is a comma, we need to skip it\r\n this._setProperty('selectionStart', state.selectionStart - 2);\r\n }\r\n }\r\n }\r\n } else {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n private _onInput(value: string) {\r\n if (value === '') {\r\n this._value = undefined;\r\n this._onChangeCallback?.(undefined);\r\n return;\r\n }\r\n\r\n const state = this._getInputState();\r\n if (state.isCursorInsideIntegerPart && this.useGrouping()) {\r\n this._formatIntegerPart(value);\r\n }\r\n\r\n var number = Number(removeChar(this._elmRef.nativeElement.value, this._thousandsSeparator));\r\n this._value = isNaN(number) ? undefined : number;\r\n this._onChangeCallback?.(this._value);\r\n }\r\n\r\n private _formatIntegerPart(value: string) {\r\n let state = this._getInputState();\r\n\r\n // Format the input value\r\n const integerPart = value.split(this._decimalSeparator)[0];\r\n const decimalPart = value.split(this._decimalSeparator)[1];\r\n\r\n if (integerPart.length <= 3) {\r\n return;\r\n }\r\n\r\n let normalizedIntegerPart = removeChar(integerPart, this._thousandsSeparator); // Remove commas\r\n\r\n let formattedValue = addThousandsSeparator(normalizedIntegerPart);\r\n if (decimalPart !== undefined) {\r\n formattedValue += this._decimalSeparator + decimalPart;\r\n }\r\n\r\n this._setProperty('value', formattedValue);\r\n let newSelectionStart: number;\r\n\r\n\r\n // fix the cursor position after formatting\r\n if (value.length == 1) {\r\n newSelectionStart = 1;\r\n } else {\r\n const newValueLength = formattedValue.length;\r\n const cursorJump = newValueLength - value.length;\r\n newSelectionStart = Math.max(0, state.selectionStart + cursorJump);\r\n }\r\n\r\n this._setProperty('selectionStart', newSelectionStart);\r\n this._setProperty('selectionEnd', newSelectionStart);\r\n\r\n // return formattedValue;\r\n }\r\n\r\n @HostListener('blur')\r\n private _onBlur() {\r\n if (this._value !== undefined) {\r\n let formattedValue = this._formatNumber(this._value);\r\n this._setProperty('value', formattedValue);\r\n }\r\n\r\n this._onTouchedCallback?.();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n private _onPaste(event: ClipboardEvent) {\r\n // event.\r\n // value = value.trim();\r\n }\r\n\r\n private _getInputState(): InputElementState {\r\n let value = this._elmRef.nativeElement.value;\r\n let decimalSeparatorPosition = value.indexOf(this._decimalSeparator);\r\n let selectionStart = this._elmRef.nativeElement.selectionStart || 0;\r\n let selectionEnd = this._elmRef.nativeElement.selectionEnd || 0;\r\n\r\n return {\r\n selectionStart,\r\n selectionEnd,\r\n decimalSeparatorPosition,\r\n isCursorInsideIntegerPart: decimalSeparatorPosition > -1 ? (selectionStart <= decimalSeparatorPosition) : true\r\n }\r\n }\r\n\r\n private _formatNumber(n: number): string {\r\n var isInteger = this.numberType() == 'integer';\r\n return new Intl.NumberFormat('en-US', {\r\n useGrouping: this.useGrouping(),\r\n minimumFractionDigits: isInteger ? 0 : this.minFractionDigits(),\r\n maximumFractionDigits: isInteger ? 0 : this.maxFractionDigits(),\r\n style: 'decimal',\r\n }).format(n);\r\n }\r\n\r\n private _isKeyAllowed(key: string) {\r\n const allowedKeys = [Keys.backspace, Keys.tab, Keys.arrowLeft, Keys.arrowRight, Keys.delete, Keys.home, Keys.end];\r\n const input = this._elmRef.nativeElement;\r\n const value = input.value;\r\n const state = this._getInputState();\r\n\r\n if (allowedKeys.includes(key)) {\r\n return true; // allow control/navigation keys\r\n }\r\n\r\n // Allow one leading minus\r\n if (key === '-') {\r\n return (input.selectionStart === 0 || input.selectionEnd === 0) && value.charAt(0) !== '-';\r\n }\r\n\r\n // Allow one dot for decimal\r\n if (key === this._decimalSeparator) {\r\n return (this.numberType() == 'decimal') &&\r\n (!value.includes(this._decimalSeparator)) &&\r\n (state.selectionStart == input.value.length);\r\n }\r\n\r\n // Allow numbers only\r\n if (/^\\d$/.test(key)) {\r\n if (state.isCursorInsideIntegerPart) {\r\n return true;\r\n } else {\r\n var decimalPart = value.split(this._decimalSeparator)[1];\r\n var maxFractionDigits = this.maxFractionDigits();\r\n if (maxFractionDigits != undefined && decimalPart.length < maxFractionDigits) {\r\n return true;\r\n } else {\r\n return input.selectionStart !== input.selectionEnd; // allow a new digit if a substring is selected\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _setProperty(prop: string, value: any) {\r\n this._renderer.setProperty(this._elmRef.nativeElement, prop, value);\r\n };\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const isValid = control.value === targetValue;\r\n\r\n return isValid ? null :\r\n {\r\n equalWith: {\r\n value: control.value,\r\n message: inequalityMessage\r\n }\r\n };\r\n };\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { equalWithValidator } from './equal-with-validator';\r\n\r\n@Directive({\r\n selector: '[ng0EqualWith]',\r\n exportAs: 'ng0EqualWith',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class EqualWithValidatorDirective implements Validator {\r\n @Input('ng0EqualWith') targetValue?: string;\r\n @Input() inequalityMessage?: string;\r\n\r\n constructor() {\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } | null {\r\n return equalWithValidator(this.targetValue, this.inequalityMessage)(control);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nconst urlRegEx = new RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = (control.value as string);\r\n if (!value || urlRegEx.test(value)) {\r\n return null;\r\n } else {\r\n return {\r\n 'url': {\r\n value\r\n }\r\n };\r\n }\r\n };\r\n}","import { Directive, Input } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { urlValidator } from './url-validator';\r\n\r\n@Directive({\r\n selector: 'input[ng0Url]',\r\n exportAs: 'ng0Url',\r\n standalone: true,\r\n providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }]\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n /** Directive is enabled or disabled */\r\n @Input() iscUrl?: boolean | string = true;\r\n\r\n validate(control: FormControl): ValidationErrors | null {\r\n return urlValidator()(control);\r\n }\r\n}\r\n","import { Directive, input, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[ng0CustomValidator]',\r\n exportAs: 'ng0CustomValidator',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class CustomValidatorDirective implements Validator {\r\n validator = input.required<(value: any) => ValidationErrors | null>({alias: 'ng0CustomValidator'});\r\n\r\n constructor() { }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.validator()(control);\r\n }\r\n}\r\n","import { Directive, input, numberAttribute } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, Validators } from '@angular/forms';\r\n\r\n/** Min validator */\r\n@Directive({\r\n selector: 'input[type=text][ng0Number][min]',\r\n exportAs: 'ng0Min',\r\n standalone: true,\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: MinValidatorDirective,\r\n multi: true\r\n }]\r\n})\r\nexport class MinValidatorDirective implements Validator {\r\n min = input.required<number, number | string | undefined | null>({\r\n transform: numberAttribute,\r\n });\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return Validators.min(this.min())(control);\r\n }\r\n}\r\n","import { Directive, input, numberAttribute } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, Validators } from '@angular/forms';\r\n\r\n/** Max validator */\r\n@Directive({\r\n selector: 'input[type=text][ng0Number][max]',\r\n exportAs: 'ng0Max',\r\n standalone: true,\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxValidatorDirective,\r\n multi: true\r\n }]\r\n})\r\nexport class MaxValidatorDirective implements Validator {\r\n max = input.required<number, number | string | undefined | null>({\r\n transform: numberAttribute,\r\n });\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return Validators.max(this.max())(control);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EqualWithValidatorDirective } from './validation/validators/equal-with/equal-with.directive';\r\nimport { UrlValidatorDirective } from './validation/validators/url/url-validator.directive';\r\nimport { CustomValidatorDirective } from './validation/validators/custom/custom-validator.directive';\r\nimport { MinValidatorDirective } from './validation/validators/min/min-validator.directive';\r\nimport { MaxValidatorDirective } from './validation/validators/max/max-validator.directive';\r\nimport { NumberDirective } from './number.directive';\r\n\r\nconst items = [\r\n // ErrorDirective,\r\n // FirstErrorDirective,\r\n NumberDirective,\r\n\r\n // Validators\r\n MinValidatorDirective,\r\n MaxValidatorDirective,\r\n EqualWithValidatorDirective,\r\n UrlValidatorDirective,\r\n CustomValidatorDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items,\r\n})\r\nexport class FormModule { }\r\n","\r\nexport * from './focus.directive';\r\nexport * from './number.directive';\r\nexport * from './form.module';\r\n\r\n// Validation\r\nexport * from './validation/validators/custom/custom-validator.directive';\r\nexport * from './validation/validators/equal-with/equal-with-validator';\r\nexport * from './validation/validators/equal-with/equal-with.directive';\r\nexport * from './validation/validators/url/url-validator.directive';\r\nexport * from './validation/validators/min/min-validator.directive';\r\nexport * from './validation/validators/max/max-validator.directive';\r\n// export * from './validation/error.directive';\r\n// export * from './validation/first-error.directive';\r\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":"bootkit-ng0-form.mjs","sources":["../../../projects/ng0/form/focus.directive.ts","../../../projects/ng0/form/number.directive.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with-validator.ts","../../../projects/ng0/form/validation/validators/equal-with/equal-with.directive.ts","../../../projects/ng0/form/validation/validators/url/url-validator.ts","../../../projects/ng0/form/validation/validators/url/url-validator.directive.ts","../../../projects/ng0/form/validation/validators/custom/custom-validator.directive.ts","../../../projects/ng0/form/validation/validators/min/min-validator.directive.ts","../../../projects/ng0/form/validation/validators/max/max-validator.directive.ts","../../../projects/ng0/form/form.module.ts","../../../projects/ng0/form/public-api.ts","../../../projects/ng0/form/bootkit-ng0-form.ts"],"sourcesContent":["import { Directive, ElementRef, Input, OnChanges, SimpleChanges, OnInit } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[ng0Focus]',\r\n exportAs: 'ng0Focus',\r\n standalone: true\r\n})\r\nexport class FocusDirective implements OnInit, OnChanges {\r\n /** \r\n * \r\n */\r\n @Input() focusOnLoad = true;\r\n @Input() focusWhen?: boolean;\r\n private focused = false;\r\n\r\n constructor(private elementRef: ElementRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.focusOnLoad) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['focusWhen']) {\r\n if (this.focusWhen) {\r\n setTimeout(() => {\r\n this.elementRef.nativeElement.focus();\r\n });\r\n }\r\n }\r\n }\r\n}\r\n","import { Directive, HostListener, forwardRef, ElementRef, Renderer2, input, booleanAttribute, numberAttribute, inject } from '@angular/core';\r\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';\r\nimport { formatNumber } from '@angular/common';\r\n\r\nconst addThousandsSeparator = (str: string) => str.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\r\nconst isValidNumber = (str: string) => str.trim() !== '' && !isNaN(Number(str));\r\nconst removeChar = (str: string, charToRemove: string) => str.split(charToRemove).join('');\r\n\r\nconst Keys = {\r\n backspace: 'Backspace',\r\n tab: 'Tab',\r\n arrowLeft: 'ArrowLeft',\r\n arrowRight: 'ArrowRight',\r\n delete: 'Delete',\r\n home: 'Home',\r\n end: 'End'\r\n}\r\n\r\ninterface InputElementState {\r\n selectionStart: number;\r\n selectionEnd: number;\r\n isCursorInsideIntegerPart: boolean;\r\n decimalSeparatorPosition: number;\r\n}\r\n\r\n/**\r\n * Directive to allow only number input in text fields.\r\n * It supports integer and decimal numbers, negative numbers, min/max values, thousands separator.\r\n */\r\n@Directive({\r\n selector: '[ng0Number]',\r\n providers: [\r\n {\r\n provide: NG_VALUE_ACCESSOR,\r\n useExisting: forwardRef(() => NumberDirective),\r\n multi: true\r\n }\r\n ]\r\n})\r\nexport class NumberDirective implements ControlValueAccessor {\r\n private _value?: number;\r\n private _isDisabled?: boolean;\r\n private _decimalSeparator!: string;\r\n private _thousandsSeparator: string = ',';\r\n private _onChangeCallback?: (v: any) => {};\r\n private _onTouchedCallback?: () => {};\r\n private _elmRef = inject(ElementRef<HTMLInputElement>);\r\n private _renderer = inject(Renderer2);\r\n\r\n /**\r\n * The minimum number of digits to display after the decimal point.\r\n * Applied only when 'numberType' is set to 'decimal'.\r\n * @default 1\r\n */\r\n public minFractionDigits = input(1, { transform: numberAttribute });\r\n\r\n /**\r\n * The maximum number of digits to display after the decimal point.\r\n * Applied only when 'numberType' is set to 'decimal'.\r\n * @default 2\r\n */\r\n public maxFractionDigits = input(2, { transform: numberAttribute });\r\n\r\n /**\r\n * Whether to use grouping separators, such as thousands separators\r\n * @default false\r\n */\r\n public useGrouping = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Type of numbers to allow\r\n * 'decimal' - allow decimal numbers\r\n * 'integer' - allow integer numbers only\r\n * @default 'integer'\r\n */\r\n public numberType = input<'integer' | 'decimal'>('integer');\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n // Use Intl.NumberFormat to find decimal separator for locale\r\n const formatted = formatNumber(1.1, 'en', '1.1-1');\r\n this._decimalSeparator = formatted.replace(/\\d/g, '') || '.';\r\n }\r\n\r\n registerOnChange(fn: any): void {\r\n this._onChangeCallback = fn;\r\n }\r\n\r\n registerOnTouched(fn: any): void {\r\n this._onTouchedCallback = fn;\r\n }\r\n\r\n setDisabledState?(isDisabled: boolean): void {\r\n this._isDisabled = isDisabled;\r\n this._renderer.setProperty(this._elmRef.nativeElement, 'disabled', isDisabled);\r\n }\r\n\r\n writeValue(value: any): void {\r\n var inputValue: string;\r\n\r\n if (value === undefined || value === null) {\r\n inputValue = '';\r\n this._value = undefined;\r\n } else if (typeof value === 'number') {\r\n inputValue = this._formatNumber(value);\r\n this._value = value;\r\n }\r\n else if (typeof value === 'string') {\r\n const parsedValue = this._value = Number.parseFloat(value);\r\n inputValue = this._formatNumber(parsedValue);\r\n } else {\r\n console.error('NumberDirective: Unsupported value type', value);\r\n inputValue = 'Invalid';\r\n }\r\n\r\n this._setProperty('value', inputValue);\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n private _onKeyDown(event: KeyboardEvent) {\r\n const key = event.key;\r\n const state = this._getInputState();\r\n\r\n if (this._isKeyAllowed(key)) {\r\n if (key == Keys.backspace) {\r\n if (state.selectionStart > 1 && (state.selectionStart === state.selectionEnd)) {\r\n let value = this._elmRef.nativeElement.value;\r\n let beforeSelection = value.charAt(state.selectionStart - 1);\r\n if (beforeSelection === ',') {\r\n // If the character before the cursor is a comma, we need to skip it\r\n this._setProperty('selectionStart', state.selectionStart - 2);\r\n }\r\n }\r\n }\r\n } else {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n @HostListener('input', ['$event.target.value'])\r\n private _onInput(value: string) {\r\n if (value === '') {\r\n this._value = undefined;\r\n this._onChangeCallback?.(undefined);\r\n return;\r\n }\r\n\r\n const state = this._getInputState();\r\n if (state.isCursorInsideIntegerPart && this.useGrouping()) {\r\n this._formatIntegerPart(value);\r\n }\r\n\r\n var number = Number(removeChar(this._elmRef.nativeElement.value, this._thousandsSeparator));\r\n this._value = isNaN(number) ? undefined : number;\r\n this._onChangeCallback?.(this._value);\r\n }\r\n\r\n private _formatIntegerPart(value: string) {\r\n let state = this._getInputState();\r\n\r\n // Format the input value\r\n const integerPart = value.split(this._decimalSeparator)[0];\r\n const decimalPart = value.split(this._decimalSeparator)[1];\r\n\r\n if (integerPart.length <= 3) {\r\n return;\r\n }\r\n\r\n let normalizedIntegerPart = removeChar(integerPart, this._thousandsSeparator); // Remove commas\r\n\r\n let formattedValue = addThousandsSeparator(normalizedIntegerPart);\r\n if (decimalPart !== undefined) {\r\n formattedValue += this._decimalSeparator + decimalPart;\r\n }\r\n\r\n this._setProperty('value', formattedValue);\r\n let newSelectionStart: number;\r\n\r\n\r\n // fix the cursor position after formatting\r\n if (value.length == 1) {\r\n newSelectionStart = 1;\r\n } else {\r\n const newValueLength = formattedValue.length;\r\n const cursorJump = newValueLength - value.length;\r\n newSelectionStart = Math.max(0, state.selectionStart + cursorJump);\r\n }\r\n\r\n this._setProperty('selectionStart', newSelectionStart);\r\n this._setProperty('selectionEnd', newSelectionStart);\r\n\r\n // return formattedValue;\r\n }\r\n\r\n @HostListener('blur')\r\n private _onBlur() {\r\n if (this._value !== undefined) {\r\n let formattedValue = this._formatNumber(this._value);\r\n this._setProperty('value', formattedValue);\r\n }\r\n\r\n this._onTouchedCallback?.();\r\n }\r\n\r\n @HostListener('paste', ['$event'])\r\n private _onPaste(event: ClipboardEvent) {\r\n // event.\r\n // value = value.trim();\r\n }\r\n\r\n private _getInputState(): InputElementState {\r\n let value = this._elmRef.nativeElement.value;\r\n let decimalSeparatorPosition = value.indexOf(this._decimalSeparator);\r\n let selectionStart = this._elmRef.nativeElement.selectionStart || 0;\r\n let selectionEnd = this._elmRef.nativeElement.selectionEnd || 0;\r\n\r\n return {\r\n selectionStart,\r\n selectionEnd,\r\n decimalSeparatorPosition,\r\n isCursorInsideIntegerPart: decimalSeparatorPosition > -1 ? (selectionStart <= decimalSeparatorPosition) : true\r\n }\r\n }\r\n\r\n private _formatNumber(n: number): string {\r\n var isInteger = this.numberType() == 'integer';\r\n return new Intl.NumberFormat('en-US', {\r\n useGrouping: this.useGrouping(),\r\n minimumFractionDigits: isInteger ? 0 : this.minFractionDigits(),\r\n maximumFractionDigits: isInteger ? 0 : this.maxFractionDigits(),\r\n style: 'decimal',\r\n }).format(n);\r\n }\r\n\r\n private _isKeyAllowed(key: string) {\r\n const allowedKeys = [Keys.backspace, Keys.tab, Keys.arrowLeft, Keys.arrowRight, Keys.delete, Keys.home, Keys.end];\r\n const input = this._elmRef.nativeElement;\r\n const value = input.value;\r\n const state = this._getInputState();\r\n\r\n if (allowedKeys.includes(key)) {\r\n return true; // allow control/navigation keys\r\n }\r\n\r\n // Allow one leading minus\r\n if (key === '-') {\r\n return (input.selectionStart === 0 || input.selectionEnd === 0) && value.charAt(0) !== '-';\r\n }\r\n\r\n // Allow one dot for decimal\r\n if (key === this._decimalSeparator) {\r\n return (this.numberType() == 'decimal') &&\r\n (!value.includes(this._decimalSeparator)) &&\r\n (state.selectionStart == input.value.length);\r\n }\r\n\r\n // Allow numbers only\r\n if (/^\\d$/.test(key)) {\r\n if (state.isCursorInsideIntegerPart) {\r\n return true;\r\n } else {\r\n var decimalPart = value.split(this._decimalSeparator)[1];\r\n var maxFractionDigits = this.maxFractionDigits();\r\n if (maxFractionDigits != undefined && decimalPart.length < maxFractionDigits) {\r\n return true;\r\n } else {\r\n return input.selectionStart !== input.selectionEnd; // allow a new digit if a substring is selected\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private _setProperty(prop: string, value: any) {\r\n this._renderer.setProperty(this._elmRef.nativeElement, prop, value);\r\n };\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\n\r\nexport function equalWithValidator(targetValue?: string, inequalityMessage?: string): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const isValid = control.value === targetValue;\r\n\r\n return isValid ? null :\r\n {\r\n equalWith: {\r\n value: control.value,\r\n message: inequalityMessage\r\n }\r\n };\r\n };\r\n}\r\n","import { Directive, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, Validator } from '@angular/forms';\r\nimport { equalWithValidator } from './equal-with-validator';\r\n\r\n@Directive({\r\n selector: '[ng0EqualWith]',\r\n exportAs: 'ng0EqualWith',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: EqualWithValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class EqualWithValidatorDirective implements Validator {\r\n @Input('ng0EqualWith') targetValue?: string;\r\n @Input() inequalityMessage?: string;\r\n\r\n constructor() {\r\n }\r\n\r\n validate(control: AbstractControl): { [key: string]: any } | null {\r\n return equalWithValidator(this.targetValue, this.inequalityMessage)(control);\r\n }\r\n}\r\n","import { AbstractControl, ValidatorFn } from '@angular/forms';\r\nconst urlRegEx = new RegExp('(https?://)?([\\\\da-z.-]+)\\\\.([a-z.]{2,6})[/\\\\w .-]*/?');\r\n\r\nexport function urlValidator(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } | null => {\r\n const value = (control.value as string);\r\n if (!value || urlRegEx.test(value)) {\r\n return null;\r\n } else {\r\n return {\r\n 'url': {\r\n value\r\n }\r\n };\r\n }\r\n };\r\n}","import { Directive, Input } from '@angular/core';\r\nimport { FormControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\nimport { urlValidator } from './url-validator';\r\n\r\n@Directive({\r\n selector: 'input[ng0Url]',\r\n exportAs: 'ng0Url',\r\n standalone: true,\r\n providers: [{ provide: NG_VALIDATORS, useExisting: UrlValidatorDirective, multi: true }]\r\n})\r\nexport class UrlValidatorDirective implements Validator {\r\n /** Directive is enabled or disabled */\r\n @Input() iscUrl?: boolean | string = true;\r\n\r\n validate(control: FormControl): ValidationErrors | null {\r\n return urlValidator()(control);\r\n }\r\n}\r\n","import { Directive, input, Input } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator } from '@angular/forms';\r\n\r\n@Directive({\r\n selector: '[ng0CustomValidator]',\r\n exportAs: 'ng0CustomValidator',\r\n standalone: true,\r\n providers: [\r\n { provide: NG_VALIDATORS, useExisting: CustomValidatorDirective, multi: true }\r\n ]\r\n})\r\nexport class CustomValidatorDirective implements Validator {\r\n validator = input.required<(value: any) => ValidationErrors | null>({alias: 'ng0CustomValidator'});\r\n\r\n constructor() { }\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return this.validator()(control);\r\n }\r\n}\r\n","import { Directive, input, numberAttribute } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, Validators } from '@angular/forms';\r\n\r\n/** Min validator */\r\n@Directive({\r\n selector: 'input[type=text][ng0Number][min]',\r\n exportAs: 'ng0Min',\r\n standalone: true,\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: MinValidatorDirective,\r\n multi: true\r\n }]\r\n})\r\nexport class MinValidatorDirective implements Validator {\r\n min = input.required<number, number | string | undefined | null>({\r\n transform: numberAttribute,\r\n });\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return Validators.min(this.min())(control);\r\n }\r\n}\r\n","import { Directive, input, numberAttribute } from '@angular/core';\r\nimport { AbstractControl, NG_VALIDATORS, ValidationErrors, Validator, Validators } from '@angular/forms';\r\n\r\n/** Max validator */\r\n@Directive({\r\n selector: 'input[type=text][ng0Number][max]',\r\n exportAs: 'ng0Max',\r\n standalone: true,\r\n providers: [{\r\n provide: NG_VALIDATORS,\r\n useExisting: MaxValidatorDirective,\r\n multi: true\r\n }]\r\n})\r\nexport class MaxValidatorDirective implements Validator {\r\n max = input.required<number, number | string | undefined | null>({\r\n transform: numberAttribute,\r\n });\r\n\r\n validate(control: AbstractControl): ValidationErrors | null {\r\n return Validators.max(this.max())(control);\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { EqualWithValidatorDirective } from './validation/validators/equal-with/equal-with.directive';\r\nimport { UrlValidatorDirective } from './validation/validators/url/url-validator.directive';\r\nimport { CustomValidatorDirective } from './validation/validators/custom/custom-validator.directive';\r\nimport { MinValidatorDirective } from './validation/validators/min/min-validator.directive';\r\nimport { MaxValidatorDirective } from './validation/validators/max/max-validator.directive';\r\nimport { NumberDirective } from './number.directive';\r\n\r\nconst items = [\r\n // ErrorDirective,\r\n // FirstErrorDirective,\r\n NumberDirective,\r\n\r\n // Validators\r\n MinValidatorDirective,\r\n MaxValidatorDirective,\r\n EqualWithValidatorDirective,\r\n UrlValidatorDirective,\r\n CustomValidatorDirective,\r\n];\r\n\r\n@NgModule({\r\n imports: items,\r\n exports: items,\r\n})\r\nexport class FormModule { }\r\n","\r\nexport * from './focus.directive';\r\nexport * from './number.directive';\r\nexport * from './form.module';\r\n\r\n// Validation\r\nexport * from './validation/validators/custom/custom-validator.directive';\r\nexport * from './validation/validators/equal-with/equal-with-validator';\r\nexport * from './validation/validators/equal-with/equal-with.directive';\r\nexport * from './validation/validators/url/url-validator.directive';\r\nexport * from './validation/validators/min/min-validator.directive';\r\nexport * from './validation/validators/max/max-validator.directive';\r\n// export * from './validation/error.directive';\r\n// export * from './validation/first-error.directive';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/form/index.d.ts CHANGED
@@ -23,6 +23,7 @@ declare class FocusDirective implements OnInit, OnChanges {
23
23
  */
24
24
  declare class NumberDirective implements ControlValueAccessor {
25
25
  private _value?;
26
+ private _isDisabled?;
26
27
  private _decimalSeparator;
27
28
  private _thousandsSeparator;
28
29
  private _onChangeCallback?;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bootkit/ng0",
3
- "version": "0.0.0-alpha.20",
3
+ "version": "0.0.0-alpha.22",
4
4
  "description": "Angular+Bootstrap Component Library",
5
5
  "homepage": "https://bootkitlib.github.io/",
6
6
  "author": "BootKit",
@@ -43,6 +43,10 @@
43
43
  "types": "./data/index.d.ts",
44
44
  "default": "./fesm2022/bootkit-ng0-data.mjs"
45
45
  },
46
+ "./file": {
47
+ "types": "./file/index.d.ts",
48
+ "default": "./fesm2022/bootkit-ng0-file.mjs"
49
+ },
46
50
  "./date": {
47
51
  "types": "./date/index.d.ts",
48
52
  "default": "./fesm2022/bootkit-ng0-date.mjs"
@@ -51,10 +55,6 @@
51
55
  "types": "./form/index.d.ts",
52
56
  "default": "./fesm2022/bootkit-ng0-form.mjs"
53
57
  },
54
- "./file": {
55
- "types": "./file/index.d.ts",
56
- "default": "./fesm2022/bootkit-ng0-file.mjs"
57
- },
58
58
  "./http": {
59
59
  "types": "./http/index.d.ts",
60
60
  "default": "./fesm2022/bootkit-ng0-http.mjs"
@@ -63,14 +63,14 @@
63
63
  "types": "./localization/index.d.ts",
64
64
  "default": "./fesm2022/bootkit-ng0-localization.mjs"
65
65
  },
66
- "./security": {
67
- "types": "./security/index.d.ts",
68
- "default": "./fesm2022/bootkit-ng0-security.mjs"
69
- },
70
66
  "./script": {
71
67
  "types": "./script/index.d.ts",
72
68
  "default": "./fesm2022/bootkit-ng0-script.mjs"
73
69
  },
70
+ "./security": {
71
+ "types": "./security/index.d.ts",
72
+ "default": "./fesm2022/bootkit-ng0-security.mjs"
73
+ },
74
74
  "./components/accordion": {
75
75
  "types": "./components/accordion/index.d.ts",
76
76
  "default": "./fesm2022/bootkit-ng0-components-accordion.mjs"
@@ -79,14 +79,14 @@
79
79
  "types": "./components/backdrop/index.d.ts",
80
80
  "default": "./fesm2022/bootkit-ng0-components-backdrop.mjs"
81
81
  },
82
- "./components/card": {
83
- "types": "./components/card/index.d.ts",
84
- "default": "./fesm2022/bootkit-ng0-components-card.mjs"
85
- },
86
82
  "./components/button": {
87
83
  "types": "./components/button/index.d.ts",
88
84
  "default": "./fesm2022/bootkit-ng0-components-button.mjs"
89
85
  },
86
+ "./components/card": {
87
+ "types": "./components/card/index.d.ts",
88
+ "default": "./fesm2022/bootkit-ng0-components-card.mjs"
89
+ },
90
90
  "./components/code": {
91
91
  "types": "./components/code/index.d.ts",
92
92
  "default": "./fesm2022/bootkit-ng0-components-code.mjs"
@@ -103,10 +103,18 @@
103
103
  "types": "./components/form-field/index.d.ts",
104
104
  "default": "./fesm2022/bootkit-ng0-components-form-field.mjs"
105
105
  },
106
+ "./components/dropdown": {
107
+ "types": "./components/dropdown/index.d.ts",
108
+ "default": "./fesm2022/bootkit-ng0-components-dropdown.mjs"
109
+ },
106
110
  "./components/list": {
107
111
  "types": "./components/list/index.d.ts",
108
112
  "default": "./fesm2022/bootkit-ng0-components-list.mjs"
109
113
  },
114
+ "./components/modal": {
115
+ "types": "./components/modal/index.d.ts",
116
+ "default": "./fesm2022/bootkit-ng0-components-modal.mjs"
117
+ },
110
118
  "./components/nav": {
111
119
  "types": "./components/nav/index.d.ts",
112
120
  "default": "./fesm2022/bootkit-ng0-components-nav.mjs"
@@ -115,10 +123,6 @@
115
123
  "types": "./components/offcanvas/index.d.ts",
116
124
  "default": "./fesm2022/bootkit-ng0-components-offcanvas.mjs"
117
125
  },
118
- "./components/modal": {
119
- "types": "./components/modal/index.d.ts",
120
- "default": "./fesm2022/bootkit-ng0-components-modal.mjs"
121
- },
122
126
  "./components/overlay": {
123
127
  "types": "./components/overlay/index.d.ts",
124
128
  "default": "./fesm2022/bootkit-ng0-components-overlay.mjs"
@@ -131,14 +135,14 @@
131
135
  "types": "./components/popover/index.d.ts",
132
136
  "default": "./fesm2022/bootkit-ng0-components-popover.mjs"
133
137
  },
134
- "./components/sidenav": {
135
- "types": "./components/sidenav/index.d.ts",
136
- "default": "./fesm2022/bootkit-ng0-components-sidenav.mjs"
137
- },
138
138
  "./components/select": {
139
139
  "types": "./components/select/index.d.ts",
140
140
  "default": "./fesm2022/bootkit-ng0-components-select.mjs"
141
141
  },
142
+ "./components/sidenav": {
143
+ "types": "./components/sidenav/index.d.ts",
144
+ "default": "./fesm2022/bootkit-ng0-components-sidenav.mjs"
145
+ },
142
146
  "./components/stepper": {
143
147
  "types": "./components/stepper/index.d.ts",
144
148
  "default": "./fesm2022/bootkit-ng0-components-stepper.mjs"