@bootkit/ng0 0.0.0-alpha.3 → 0.0.0-alpha.30
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/common/index.d.ts +271 -7
- package/components/accordion/index.d.ts +1 -1
- package/components/backdrop/index.d.ts +12 -0
- package/components/button/index.d.ts +48 -0
- package/components/card/index.d.ts +27 -0
- package/components/code/index.d.ts +35 -0
- package/components/confirmation/index.d.ts +66 -0
- package/components/dropdown/index.d.ts +140 -0
- package/components/form-field/index.d.ts +24 -41
- package/components/list/index.d.ts +259 -0
- package/components/modal/index.d.ts +22 -4
- package/components/nav/index.d.ts +23 -19
- package/components/pagination/index.d.ts +35 -9
- package/components/popover/index.d.ts +1 -1
- package/components/select/index.d.ts +159 -0
- package/components/sidenav/index.d.ts +59 -0
- package/components/stepper/index.d.ts +26 -0
- package/components/table/index.d.ts +273 -0
- package/components/toast/index.d.ts +1 -1
- package/components/tooltip/index.d.ts +1 -1
- package/components/vertical-menu/index.d.ts +61 -0
- package/data/index.d.ts +145 -45
- package/date/index.d.ts +34 -0
- package/fesm2022/bootkit-ng0-common.mjs +295 -12
- package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-accordion.mjs +15 -15
- package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-backdrop.mjs +46 -0
- package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-button.mjs +119 -0
- package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-card.mjs +62 -0
- package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-code.mjs +70 -0
- package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-collapse.mjs +16 -16
- package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-confirmation.mjs +167 -0
- package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-dropdown.mjs +302 -0
- package/fesm2022/bootkit-ng0-components-dropdown.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-form-field.mjs +62 -84
- package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-list.mjs +563 -0
- package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-modal.mjs +41 -24
- package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-nav.mjs +59 -60
- package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs +10 -10
- package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-pagination.mjs +59 -24
- package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-popover.mjs +11 -11
- package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-select.mjs +446 -0
- package/fesm2022/bootkit-ng0-components-select.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-sidenav.mjs +153 -0
- package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-stepper.mjs +91 -0
- package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-table.mjs +461 -0
- package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-components-toast.mjs +7 -7
- package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-tooltip.mjs +9 -9
- package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +161 -0
- package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-data.mjs +180 -90
- package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-date.mjs +50 -0
- package/fesm2022/bootkit-ng0-date.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-file.mjs +50 -0
- package/fesm2022/bootkit-ng0-file.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-form.mjs +514 -0
- package/fesm2022/bootkit-ng0-form.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-http.mjs +224 -176
- package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs +138 -0
- package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-localization-locales.mjs +101 -0
- package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-localization.mjs +347 -105
- package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
- package/fesm2022/bootkit-ng0-platform-browser.mjs +51 -0
- package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-routing.mjs +80 -0
- package/fesm2022/bootkit-ng0-routing.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-script.mjs +59 -0
- package/fesm2022/bootkit-ng0-script.mjs.map +1 -0
- package/fesm2022/bootkit-ng0-security.mjs +18 -16
- package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
- package/file/index.d.ts +22 -0
- package/form/index.d.ts +127 -0
- package/http/index.d.ts +138 -37
- package/layouts/layout1/index.d.ts +92 -0
- package/localization/index.d.ts +180 -41
- package/localization/locales/index.d.ts +7 -0
- package/package.json +95 -15
- package/platform/browser/index.d.ts +22 -0
- package/routing/index.d.ts +124 -0
- package/script/index.d.ts +27 -0
- package/security/index.d.ts +3 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bootkit-ng0-components-dropdown.mjs","sources":["../../../projects/ng0/components/dropdown/dropdown-divider.component.ts","../../../projects/ng0/components/dropdown/dropdown-item.component.ts","../../../projects/ng0/components/dropdown/dropdown-item.component.html","../../../projects/ng0/components/dropdown/dropdown-menu.component.ts","../../../projects/ng0/components/dropdown/dropdown.component.ts","../../../projects/ng0/components/dropdown/dropdown.component.html","../../../projects/ng0/components/dropdown/dropdown-header.component.ts","../../../projects/ng0/components/dropdown/dropdown-link.component.ts","../../../projects/ng0/components/dropdown/dropdown-link.component.html","../../../projects/ng0/components/dropdown/dropdown.module.ts","../../../projects/ng0/components/dropdown/types.ts","../../../projects/ng0/components/dropdown/bootkit-ng0-components-dropdown.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ng0-dropdown-divider',\r\n exportAs: 'ng0DropdownDivider',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n ],\r\n template: `<hr class=\"dropdown-divider\">`,\r\n})\r\nexport class DropdownDividerComponent {\r\n}\r\n","import { Component, ChangeDetectionStrategy, input, booleanAttribute, HostListener } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\nimport { CssClass } from '@bootkit/ng0/common';\r\n\r\n/**\r\n * An item within a dropdown menu.\r\n */\r\n@Component({\r\n selector: 'ng0-dropdown-item',\r\n exportAs: 'ng0DropdownItem',\r\n standalone: true,\r\n templateUrl: './dropdown-item.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n RouterModule\r\n ],\r\n})\r\nexport class DropdownItemComponent {\r\n /**\r\n * The CSS classes to apply to the dropdown item.\r\n * */\r\n public readonly cssClass = input<CssClass>();\r\n\r\n /**\r\n * Whether the dropdown item is disabled.\r\n */\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n @HostListener('click', ['$event'])\r\n private _onClick(e: MouseEvent) {\r\n if (this.disabled()) {\r\n e.stopImmediatePropagation();\r\n e.preventDefault();\r\n }\r\n }\r\n}\r\n","<button class=\"dropdown-item\" [ngClass]=\"cssClass()\" [class.disabled]=\"disabled()\" [attr.aria-disabled]=\"disabled()\">\r\n <ng-content></ng-content>\r\n</button>","import { Component, ElementRef, Renderer2, ChangeDetectionStrategy, inject, input, HostListener } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { DropdownComponent } from './dropdown.component';\r\n\r\n\r\n@Component({\r\n selector: 'ng0-dropdown-menu',\r\n exportAs: 'ng0Dropdownmenu',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n ],\r\n template: `<ng-content></ng-content>`,\r\n styles: `:host { display: block; position: relative; }`,\r\n})\r\nexport class DropdownMenuComponent {\r\n private _renderer = inject(Renderer2);\r\n private _dropdown = inject(DropdownComponent);\r\n\r\n public elementRef = inject(ElementRef);\r\n\r\n constructor() {\r\n this._renderer.addClass(this.elementRef.nativeElement, 'dropdown-menu');\r\n }\r\n\r\n // @HostListener('click')\r\n // private _onClick() {\r\n // if (this._dropdown.autoClose() == 'default' || this._dropdown.autoClose() == 'inside') {\r\n // this._dropdown.open.set(false);\r\n // }\r\n // }\r\n}\r\n","import { Component, ElementRef, Renderer2, ChangeDetectionStrategy, inject, input, model, HostListener, ContentChild, booleanAttribute, ViewChild, computed } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { CssClass, Placement } from '@bootkit/ng0/common';\r\nimport { OverlayModule } from '@angular/cdk/overlay';\r\nimport { DropdownAutoCloseBehavior, DropdownSize } from './types';\r\nimport { DropdownMenuComponent } from './dropdown-menu.component';\r\n\r\n@Component({\r\n selector: 'ng0-dropdown',\r\n exportAs: 'ng0Dropdown',\r\n templateUrl: './dropdown.component.html',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n OverlayModule,\r\n ],\r\n host: {\r\n '[class]': '_directionCssClass()',\r\n }\r\n})\r\nexport class DropdownComponent {\r\n // @ContentChildren(DropdownItemComponent) private _items!: QueryList<DropdownItemComponent>;\r\n @ContentChild(DropdownMenuComponent) private _dropdownMenu!: DropdownMenuComponent;\r\n @ViewChild('mainButton') private _mainButton!: ElementRef<HTMLButtonElement>;\r\n @ViewChild('splitButton') private _splitButton?: ElementRef<HTMLButtonElement>;\r\n // protected _scrollStrategy!: ScrollStrategy;\r\n protected _el = inject(ElementRef);\r\n private _renderer = inject(Renderer2);\r\n\r\n\r\n /**\r\n * The placement of the dropdown menu in relation to the dropdown toggle.\r\n */\r\n public placement = input<Placement>('bottom');\r\n\r\n /**\r\n * The CSS classes to apply to the dropdown toggle button.\r\n * @default 'btn btn-primary'\r\n */\r\n public cssClass = input<CssClass>('btn btn-primary');\r\n\r\n /**\r\n * The CSS classes to apply to the dropdown split button.\r\n * @default 'btn btn-primary'\r\n */\r\n public splitCssClass = input<CssClass>('btn btn-primary');\r\n\r\n /** \r\n * Indicates whether the dropdown is open or closed.\r\n * @default false\r\n */\r\n public readonly open = model(false);\r\n\r\n /**\r\n * Indicates whether the dropdown is a split button. \r\n * A split button dropdown has a separate toggle button.\r\n * @default false\r\n */\r\n public readonly split = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Indicates whether the dropdown has an automatic close behavior.\r\n * @default 'default'\r\n */\r\n public readonly autoClose = input<DropdownAutoCloseBehavior>('default');\r\n\r\n /**\r\n * Dropdown size\r\n * @default 'default'\r\n */\r\n public readonly size = input<DropdownSize>('default');\r\n\r\n protected _directionCssClass = computed(() => {\r\n switch (this.placement()) {\r\n case 'top':\r\n return 'dropup';\r\n case 'start':\r\n return 'dropstart';\r\n case 'end':\r\n return 'dropend';\r\n case 'bottom':\r\n default:\r\n return undefined;\r\n }\r\n })\r\n\r\n constructor() {\r\n this._renderer.addClass(this._el.nativeElement, 'btn-group');\r\n // this._scrollStrategy = this._overlay.scrollStrategies.block();\r\n }\r\n\r\n /**\r\n * Toggle the dropdown open or closed.\r\n */\r\n public toggle() {\r\n this.open.set(!this.open());\r\n }\r\n\r\n @HostListener('document:click', ['$event'])\r\n private _onDocumentClick(e: MouseEvent) {\r\n const splitButtonClicked = e.target === this._splitButton?.nativeElement;\r\n const mainButtonClicked = e.target === this._mainButton?.nativeElement;\r\n const toggleClicked = this.split() ? splitButtonClicked : mainButtonClicked;\r\n const dropdownClicked = splitButtonClicked || mainButtonClicked;\r\n const menuClicked = this._dropdownMenu.elementRef.nativeElement.contains(e.target);\r\n const outsideClicked = !dropdownClicked && !menuClicked;\r\n\r\n if (this.open()) {\r\n if (toggleClicked) {\r\n this.open.set(false);\r\n return;\r\n }\r\n\r\n switch (this.autoClose()) {\r\n case 'default':\r\n this.open.set(false);\r\n break;\r\n case 'outside':\r\n if (outsideClicked || mainButtonClicked) {\r\n this.open.set(false);\r\n }\r\n break;\r\n case 'inside':\r\n if (menuClicked) {\r\n this.open.set(false);\r\n }\r\n break;\r\n case 'manual':\r\n break;\r\n }\r\n } else {\r\n if (toggleClicked) {\r\n this.open.set(true);\r\n }\r\n }\r\n }\r\n}\r\n","<button #mainButton\r\n [class]=\"cssClass()\"\r\n [class.dropdown-toggle]=\"!split()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n type=\"button\">\r\n <ng-content></ng-content>\r\n</button>\r\n\r\n@if(split()) {\r\n<button #splitButton\r\n type=\"button\"\r\n [class]=\"splitCssClass()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n class=\"dropdown-toggle dropdown-toggle-split\">\r\n <span class=\"visually-hidden\">Toggle Dropdown</span>\r\n</button>\r\n}\r\n\r\n<ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"_el.nativeElement\"\r\n [cdkConnectedOverlayOpen]=\"open()\"\r\n [cdkConnectedOverlayPush]=\"false\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\">\r\n <ng-content select=\"ng0-dropdown-menu\"></ng-content>\r\n</ng-template>\r\n\r\n<style>\r\n :host {\r\n display: inline-block;\r\n }\r\n</style>","import { Component, ElementRef, Renderer2, ChangeDetectionStrategy, inject, input, HostListener } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'ng0-dropdown-header',\r\n exportAs: 'ng0DropdownItem',\r\n standalone: true,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n template: `<h6 class=\"dropdown-header\"><ng-content></ng-content></h6>`,\r\n})\r\nexport class DropdownHeaderComponent {\r\n}\r\n","import { Component, ChangeDetectionStrategy, input, booleanAttribute, HostListener } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from '@angular/router';\r\n\r\n/**\r\n * A link item within a dropdown menu.\r\n * This component is used to create a navigable link inside a dropdown.\r\n */\r\n@Component({\r\n selector: 'ng0-dropdown-link',\r\n exportAs: 'ng0DropdownLink',\r\n standalone: true,\r\n templateUrl: './dropdown-link.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n imports: [\r\n CommonModule,\r\n RouterModule\r\n ],\r\n})\r\nexport class DropdownLinkComponent {\r\n /**\r\n * The link or URL to navigate to when the dropdown item is clicked.\r\n */\r\n public readonly link = input.required<string | string[] | undefined>();\r\n\r\n /**\r\n * The router link active class to apply when the link is active.\r\n */\r\n public readonly active = input<string | string[]>('');\r\n\r\n /**\r\n * Specifies where to open the linked document.\r\n */\r\n public readonly target = input<'_self' | '_blank' | '_parent' | '_top' | undefined>(undefined);\r\n\r\n /**\r\n * Whether the dropdown link is disabled.\r\n */\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n\r\n @HostListener('click', ['$event'])\r\n private _onClick(e: MouseEvent) {\r\n if (this.disabled()) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n }\r\n }\r\n}\r\n","<a class=\"dropdown-item\" [routerLink]=\"link()\" [target]=\"target()\" [routerLinkActive]=\"active()\" [class.disabled]=\"disabled()\" [attr.aria-disabled]=\"disabled()\">\r\n <ng-content></ng-content>\r\n</a>","import { NgModule } from '@angular/core';\r\nimport { DropdownItemComponent } from './dropdown-item.component';\r\nimport { DropdownComponent } from './dropdown.component';\r\nimport { DropdownHeaderComponent } from './dropdown-header.component';\r\nimport { DropdownDividerComponent } from './dropdown-divider.component';\r\nimport { DropdownMenuComponent } from './dropdown-menu.component';\r\nimport { DropdownLinkComponent } from './dropdown-link.component';\r\n\r\n\r\nconst Items = [\r\n DropdownComponent,\r\n DropdownMenuComponent,\r\n DropdownItemComponent,\r\n DropdownLinkComponent,\r\n DropdownHeaderComponent,\r\n DropdownDividerComponent\r\n]\r\n\r\n@NgModule({\r\n imports: Items,\r\n exports: Items\r\n})\r\nexport class DropdownModule { }\r\n","\r\n/**\r\n * Defines the possible values for the dropdown auto-close behavior.\r\n * \r\n * 'default': The dropdown will close when clicking inside or outside the menu.\r\n * 'inside': The dropdown will close only when clicking inside the menu.\r\n * 'outside': The dropdown will close only when clicking outside the menu.\r\n * 'manual': The dropdown will not close automatically; it must be closed programmatically.\r\n */\r\nexport type DropdownAutoCloseBehavior = 'default' | 'inside' | 'outside' | 'manual';\r\n\r\n/**\r\n * \r\n */\r\nexport type DropdownSize = 'default' | 'small' | 'large';\r\n\r\n\r\n// export type DropdownToggleTriggerMode = 'click' | 'hover' | 'focus';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
|
|
@@ -1,132 +1,110 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as i1 from '@angular/common';
|
|
2
2
|
import { CommonModule } from '@angular/common';
|
|
3
3
|
import * as i0 from '@angular/core';
|
|
4
|
-
import { input,
|
|
4
|
+
import { inject, DestroyRef, Renderer2, signal, input, booleanAttribute, ElementRef, HostListener, ContentChild, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
|
|
5
5
|
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
|
6
|
-
import * as i1 from '@angular/forms';
|
|
7
6
|
import { FormControl, NgControl } from '@angular/forms';
|
|
8
|
-
import
|
|
7
|
+
import { LocalizationService } from '@bootkit/ng0/localization';
|
|
9
8
|
|
|
10
9
|
class FormFieldComponent {
|
|
11
|
-
|
|
12
|
-
_destroyRef;
|
|
13
|
-
|
|
14
|
-
|
|
10
|
+
_ngControlElement;
|
|
11
|
+
_destroyRef = inject(DestroyRef);
|
|
12
|
+
_renderer = inject(Renderer2);
|
|
13
|
+
_localizationService = inject(LocalizationService);
|
|
14
|
+
// private _form = inject(NgForm, { optional: true });
|
|
15
|
+
_ngControl;
|
|
16
|
+
_status = signal('', ...(ngDevMode ? [{ debugName: "_status" }] : []));
|
|
17
|
+
_hasRequiredControl = signal(false, ...(ngDevMode ? [{ debugName: "_hasRequiredControl" }] : []));
|
|
18
|
+
_errorText = signal(undefined, ...(ngDevMode ? [{ debugName: "_errorText" }] : []));
|
|
15
19
|
/**
|
|
16
20
|
* The label text for the form field.
|
|
17
21
|
*/
|
|
18
|
-
label = input();
|
|
22
|
+
label = input(...(ngDevMode ? [undefined, { debugName: "label" }] : []));
|
|
19
23
|
/**
|
|
20
24
|
* The hint text to display below the form field.
|
|
21
|
-
* This is typically used to provide additional information or instructions to the user.
|
|
22
25
|
*/
|
|
23
|
-
hint = input();
|
|
26
|
+
hint = input(...(ngDevMode ? [undefined, { debugName: "hint" }] : []));
|
|
24
27
|
/**
|
|
25
28
|
* If true, the form-field will show validation errors.
|
|
26
|
-
* This is useful for displaying validation messages when the form control is invalid.
|
|
27
29
|
*/
|
|
28
|
-
showErrors = input(true);
|
|
30
|
+
showErrors = input(true, ...(ngDevMode ? [{ debugName: "showErrors", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
29
31
|
/**
|
|
30
|
-
* If
|
|
31
|
-
*
|
|
32
|
+
* If undefined, the indicator will be shown based on the control's required state.
|
|
33
|
+
* If true, the form-field will show a required indicator (*) next to the label (regardless of the control's required state).
|
|
34
|
+
* If false, the required indicator will not be shown (regardless of the control's required state).
|
|
32
35
|
*/
|
|
33
|
-
|
|
36
|
+
showRequired = input(undefined, ...(ngDevMode ? [{ debugName: "showRequired" }] : []));
|
|
34
37
|
/**
|
|
35
38
|
* If true, the form-field will show subscripts (e.g. hints, errors) for the field label.
|
|
36
|
-
* This is useful for displaying additional information or validation messages.
|
|
37
39
|
*/
|
|
38
|
-
showSubscripts = input(true);
|
|
40
|
+
showSubscripts = input(true, ...(ngDevMode ? [{ debugName: "showSubscripts", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
39
41
|
/**
|
|
40
42
|
* If true, the form-field will be rendered inside a ".input-group" element.
|
|
41
43
|
*/
|
|
42
|
-
inputGroup = input(true);
|
|
43
|
-
/**
|
|
44
|
-
* Returns the first localized error of the control
|
|
45
|
-
*/
|
|
46
|
-
get errorText() { return this._errorText; }
|
|
47
|
-
/** Reports whether the control is touched. */
|
|
48
|
-
get touched() { return this._ngControl?.touched; }
|
|
49
|
-
/** Reports whether the control is dirty. */
|
|
50
|
-
get dirty() { return this._ngControl?.dirty; }
|
|
51
|
-
/** Returns true if this form-field is required, otherwise returns false. */
|
|
52
|
-
get isRequired() { return this._isRequired; }
|
|
53
|
-
_onFocusOut() { this._validate(); }
|
|
54
|
-
_ngControl;
|
|
55
|
-
_ngControlElement;
|
|
56
|
-
_isRequired = false;
|
|
57
|
-
_locale;
|
|
58
|
-
_errorText;
|
|
59
|
-
constructor(_renderer, _destroyRef, _form, _ls) {
|
|
60
|
-
this._renderer = _renderer;
|
|
61
|
-
this._destroyRef = _destroyRef;
|
|
62
|
-
this._form = _form;
|
|
63
|
-
this._ls = _ls;
|
|
64
|
-
this._locale = this._ls.get();
|
|
65
|
-
this._ls.change.pipe(takeUntilDestroyed()).subscribe(e => this._locale = e.new);
|
|
66
|
-
}
|
|
67
|
-
ngOnInit() {
|
|
68
|
-
}
|
|
44
|
+
inputGroup = input(true, ...(ngDevMode ? [{ debugName: "inputGroup", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
|
|
69
45
|
ngAfterContentInit() {
|
|
70
|
-
this.
|
|
46
|
+
this._hasRequiredControl.set(this._isControlRequired());
|
|
71
47
|
if (this._ngControl) {
|
|
72
|
-
this.
|
|
73
|
-
|
|
48
|
+
this._status.set(this._ngControl.status);
|
|
49
|
+
this._ngControl.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(change => {
|
|
50
|
+
this._status.set(change);
|
|
51
|
+
this._checkValidation();
|
|
52
|
+
});
|
|
53
|
+
this._ngControl.valueChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(value => {
|
|
54
|
+
if (this._status() === 'INVALID' && this._ngControl.errors) {
|
|
55
|
+
this._checkValidation(); // Recheck validation errors
|
|
56
|
+
}
|
|
74
57
|
});
|
|
75
58
|
}
|
|
76
59
|
}
|
|
77
|
-
|
|
78
|
-
if (!this._ngControl || !this.
|
|
60
|
+
_checkValidation() {
|
|
61
|
+
if (!this._ngControl || !this._ngControl.touched) {
|
|
79
62
|
return;
|
|
80
63
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this._renderer.
|
|
89
|
-
this._renderer.removeClass(this._ngControlElement.nativeElement, invalid ? 'is-valid' : 'is-invalid');
|
|
64
|
+
let elm = this._ngControlElement.nativeElement;
|
|
65
|
+
let invalid = this._status() === 'INVALID';
|
|
66
|
+
let errorText = invalid ?
|
|
67
|
+
this._localizationService.get()?.translateFirstError(this._ngControl.errors, 'Invalid')?.text :
|
|
68
|
+
undefined;
|
|
69
|
+
this._errorText.set(errorText);
|
|
70
|
+
this._renderer.addClass(elm, invalid ? 'is-invalid' : 'is-valid');
|
|
71
|
+
this._renderer.removeClass(elm, invalid ? 'is-valid' : 'is-invalid');
|
|
90
72
|
}
|
|
91
|
-
|
|
92
|
-
const validator = this._ngControl?.validator;
|
|
73
|
+
_isControlRequired() {
|
|
74
|
+
const validator = this._ngControl?.validator || this._ngControl?.control?.validator;
|
|
93
75
|
const errors = validator && validator(new FormControl(null));
|
|
94
76
|
return errors != null && errors['required'] === true;
|
|
95
77
|
}
|
|
96
|
-
|
|
78
|
+
_onFocusOut() {
|
|
79
|
+
this._checkValidation();
|
|
97
80
|
}
|
|
98
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
99
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.
|
|
81
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
82
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: FormFieldComponent, isStandalone: true, selector: "ng0-form-field, ng0-field", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, hint: { classPropertyName: "hint", publicName: "hint", isSignal: true, isRequired: false, transformFunction: null }, showErrors: { classPropertyName: "showErrors", publicName: "showErrors", isSignal: true, isRequired: false, transformFunction: null }, showRequired: { classPropertyName: "showRequired", publicName: "showRequired", isSignal: true, isRequired: false, transformFunction: null }, showSubscripts: { classPropertyName: "showSubscripts", publicName: "showSubscripts", isSignal: true, isRequired: false, transformFunction: null }, inputGroup: { classPropertyName: "inputGroup", publicName: "inputGroup", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "focusout": "_onFocusOut()" }, properties: { "class.ng0-form-field-required": "_hasRequiredControl()" } }, queries: [{ propertyName: "_ngControlElement", first: true, predicate: NgControl, descendants: true, read: ElementRef, static: true }, { propertyName: "_ngControl", first: true, predicate: NgControl, descendants: true }], exportAs: ["ng0FormField"], ngImport: i0, template: "@let errorText = _errorText();\r\n@let showRequiredIndicator = showRequired();\r\n\r\n@if(label()) {\r\n<label class=\"ng0-form-field-label\">\r\n {{label()}}\r\n @if((showRequiredIndicator === true || (showRequiredIndicator == undefined && _hasRequiredControl()))) {\r\n <span class=\"ng0-form-field-required-indicator\">*</span>\r\n }\r\n</label>\r\n}\r\n\r\n@if(inputGroup()) {\r\n<div class=\"input-group\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</div>\r\n}@else {\r\n<ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n}\r\n\r\n<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n@if(showSubscripts()) {\r\n<div class=\"ng0-form-field-subscript\">\r\n @if(showErrors() && errorText && _ngControl?.touched) {\r\n <small class=\"ng0-form-field-error text-danger\" animate.enter=\"ng0-form-field-fadein\">\r\n {{errorText}}\r\n </small>\r\n }@else if(hint()) {\r\n <small class=\"ng0-form-field-hint\">\r\n {{hint()}}\r\n </small>\r\n }\r\n</div>\r\n}", styles: [":host{display:block}.ng0-form-field-subscript{min-height:1.5em;line-height:1.5em;text-align:justify;position:relative;overflow:clip}.ng0-form-field-subscript .ng0-form-field-error{position:absolute;will-change:transform}.ng0-form-field-subscript .ng0-form-field-hint{position:absolute}.ng0-form-field-fadein{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
|
|
100
83
|
}
|
|
101
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
84
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldComponent, decorators: [{
|
|
102
85
|
type: Component,
|
|
103
|
-
args: [{ selector: 'ng0-form-field, ng0-field', exportAs: 'ng0FormField', standalone: true, imports: [
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
}],
|
|
107
|
-
type: Optional
|
|
108
|
-
}] }, { type: i2.LocalizationService }], propDecorators: { isRequired: [{
|
|
109
|
-
type: HostBinding,
|
|
110
|
-
args: ['class.required-form-field']
|
|
111
|
-
}], _onFocusOut: [{
|
|
112
|
-
type: HostListener,
|
|
113
|
-
args: ['focusout']
|
|
114
|
-
}], _ngControl: [{
|
|
115
|
-
type: ContentChild,
|
|
116
|
-
args: [NgControl, { static: true }]
|
|
117
|
-
}], _ngControlElement: [{
|
|
86
|
+
args: [{ selector: 'ng0-form-field, ng0-field', exportAs: 'ng0FormField', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], host: {
|
|
87
|
+
'[class.ng0-form-field-required]': '_hasRequiredControl()',
|
|
88
|
+
}, template: "@let errorText = _errorText();\r\n@let showRequiredIndicator = showRequired();\r\n\r\n@if(label()) {\r\n<label class=\"ng0-form-field-label\">\r\n {{label()}}\r\n @if((showRequiredIndicator === true || (showRequiredIndicator == undefined && _hasRequiredControl()))) {\r\n <span class=\"ng0-form-field-required-indicator\">*</span>\r\n }\r\n</label>\r\n}\r\n\r\n@if(inputGroup()) {\r\n<div class=\"input-group\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</div>\r\n}@else {\r\n<ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n}\r\n\r\n<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n@if(showSubscripts()) {\r\n<div class=\"ng0-form-field-subscript\">\r\n @if(showErrors() && errorText && _ngControl?.touched) {\r\n <small class=\"ng0-form-field-error text-danger\" animate.enter=\"ng0-form-field-fadein\">\r\n {{errorText}}\r\n </small>\r\n }@else if(hint()) {\r\n <small class=\"ng0-form-field-hint\">\r\n {{hint()}}\r\n </small>\r\n }\r\n</div>\r\n}", styles: [":host{display:block}.ng0-form-field-subscript{min-height:1.5em;line-height:1.5em;text-align:justify;position:relative;overflow:clip}.ng0-form-field-subscript .ng0-form-field-error{position:absolute;will-change:transform}.ng0-form-field-subscript .ng0-form-field-hint{position:absolute}.ng0-form-field-fadein{animation:fadeIn .3s ease-out}@keyframes fadeIn{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}\n"] }]
|
|
89
|
+
}], propDecorators: { _ngControlElement: [{
|
|
118
90
|
type: ContentChild,
|
|
119
91
|
args: [NgControl, { static: true, read: ElementRef }]
|
|
92
|
+
}], _ngControl: [{
|
|
93
|
+
type: ContentChild,
|
|
94
|
+
args: [NgControl]
|
|
95
|
+
}], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], hint: [{ type: i0.Input, args: [{ isSignal: true, alias: "hint", required: false }] }], showErrors: [{ type: i0.Input, args: [{ isSignal: true, alias: "showErrors", required: false }] }], showRequired: [{ type: i0.Input, args: [{ isSignal: true, alias: "showRequired", required: false }] }], showSubscripts: [{ type: i0.Input, args: [{ isSignal: true, alias: "showSubscripts", required: false }] }], inputGroup: [{ type: i0.Input, args: [{ isSignal: true, alias: "inputGroup", required: false }] }], _onFocusOut: [{
|
|
96
|
+
type: HostListener,
|
|
97
|
+
args: ['focusout']
|
|
120
98
|
}] } });
|
|
121
99
|
|
|
122
100
|
class FormFieldModule {
|
|
123
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.
|
|
124
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.
|
|
101
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
102
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: FormFieldModule, imports: [CommonModule,
|
|
125
103
|
FormFieldComponent], exports: [FormFieldComponent] });
|
|
126
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.
|
|
104
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldModule, imports: [CommonModule,
|
|
127
105
|
FormFieldComponent] });
|
|
128
106
|
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.
|
|
107
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldModule, decorators: [{
|
|
130
108
|
type: NgModule,
|
|
131
109
|
args: [{
|
|
132
110
|
imports: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bootkit-ng0-components-form-field.mjs","sources":["../../../projects/ng0/components/form-field/form-field.component.ts","../../../projects/ng0/components/form-field/form-field.component.html","../../../projects/ng0/components/form-field/form-field.module.ts","../../../projects/ng0/components/form-field/bootkit-ng0-components-form-field.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { DestroyRef, HostListener, input, signal } from '@angular/core';\r\nimport { Component, Input, ContentChild, AfterContentInit, Optional, HostBinding, OnInit, OnDestroy, ElementRef, Renderer2 } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, NgControl, NgForm } from '@angular/forms';\r\nimport { Locale, LocalizationService } from '@bootkit/ng0/localization';\r\n\r\n@Component({\r\n selector: 'ng0-form-field, ng0-field',\r\n exportAs: 'ng0FormField',\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss'],\r\n standalone: true,\r\n imports: [\r\n CommonModule\r\n ],\r\n})\r\nexport class FormFieldComponent implements OnInit, AfterContentInit, OnDestroy {\r\n\r\n /**\r\n * The label text for the form field.\r\n */\r\n public label = input<string>();\r\n\r\n /**\r\n * The hint text to display below the form field.\r\n * This is typically used to provide additional information or instructions to the user.\r\n */\r\n public hint = input<string>();\r\n\r\n /**\r\n * If true, the form-field will show validation errors.\r\n * This is useful for displaying validation messages when the form control is invalid.\r\n */\r\n public showErrors = input(true);\r\n\r\n /**\r\n * If true, the form-field will show a red asterisk for required fields.\r\n * This is only a visual indicator and does not enforce validation.\r\n */\r\n public showRequiredIndicator = input(true);\r\n\r\n /**\r\n * If true, the form-field will show subscripts (e.g. hints, errors) for the field label.\r\n * This is useful for displaying additional information or validation messages.\r\n */\r\n public showSubscripts = input(true);\r\n\r\n /**\r\n * If true, the form-field will be rendered inside a \".input-group\" element.\r\n */\r\n public inputGroup = input(true);\r\n\r\n /**\r\n * Returns the first localized error of the control \r\n */\r\n public get errorText() { return this._errorText; }\r\n\r\n /** Reports whether the control is touched. */\r\n public get touched(): boolean | null | undefined { return this._ngControl?.touched; }\r\n\r\n /** Reports whether the control is dirty. */\r\n public get dirty(): boolean | null | undefined { return this._ngControl?.dirty; }\r\n\r\n /** Returns true if this form-field is required, otherwise returns false. */\r\n @HostBinding('class.required-form-field')\r\n public get isRequired(): boolean { return this._isRequired; }\r\n\r\n @HostListener('focusout')\r\n private _onFocusOut() { this._validate(); }\r\n\r\n @ContentChild(NgControl, { static: true })\r\n private _ngControl?: NgControl;\r\n\r\n @ContentChild(NgControl, { static: true, read: ElementRef })\r\n private _ngControlElement?: ElementRef;\r\n\r\n private _isRequired = false;\r\n private _locale?: Locale;\r\n private _errorText?: string;\r\n\r\n constructor(\r\n private _renderer: Renderer2,\r\n private _destroyRef: DestroyRef,\r\n @Optional() private _form: NgForm,\r\n private _ls: LocalizationService,\r\n ) {\r\n this._locale = this._ls.get();\r\n this._ls.change.pipe(takeUntilDestroyed()).subscribe(e => this._locale = e.new);\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n ngAfterContentInit(): void {\r\n this._isRequired = this._isRequiredField();\r\n\r\n if (this._ngControl) {\r\n this._ngControl?.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(change => {\r\n this._validate();\r\n });\r\n }\r\n }\r\n\r\n private _validate() {\r\n if (!this._ngControl || !this.dirty || !this.touched) {\r\n return;\r\n }\r\n\r\n const invalid = this._ngControl.status === 'INVALID';\r\n if (invalid) {\r\n this._errorText = this._locale?.translateFirstError(this._ngControl.errors, 'Invalid').text;\r\n } else {\r\n this._errorText = undefined;\r\n }\r\n this._renderer.addClass(this._ngControlElement!.nativeElement, invalid ? 'is-invalid' : 'is-valid');\r\n this._renderer.removeClass(this._ngControlElement!.nativeElement, invalid ? 'is-valid' : 'is-invalid');\r\n }\r\n\r\n private _isRequiredField(): boolean {\r\n const validator = this._ngControl?.validator;\r\n const errors = validator && validator(new FormControl(null));\r\n return errors != null && errors['required'] === true;\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n}\r\n","@if(label()) {\r\n<label class=\"form-field-label\">\r\n {{label()}}\r\n <span *ngIf=\"isRequired && showRequiredIndicator()\" class=\"isc-form-field-required-marker\">*</span>\r\n</label>\r\n}\r\n\r\n@if(inputGroup()) {\r\n<div class=\"input-group\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</div>\r\n}@else {\r\n<ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n}\r\n\r\n<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n@if(showSubscripts()) {\r\n<div class=\"form-field-subscript-wrapper\">\r\n @if(showErrors() && errorText && (touched || dirty)) {\r\n <span class=\"form-field-error text-danger\">\r\n {{errorText}}\r\n </span>\r\n }@if(hint()) {\r\n <span class=\"form-field-hint\">\r\n {{hint()}}\r\n </span>\r\n }\r\n</div>\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormFieldComponent,\r\n ],\r\n exports: [\r\n FormFieldComponent,\r\n ]\r\n})\r\nexport class FormFieldModule { }\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-form-field.mjs","sources":["../../../projects/ng0/components/form-field/form-field.component.ts","../../../projects/ng0/components/form-field/form-field.component.html","../../../projects/ng0/components/form-field/form-field.module.ts","../../../projects/ng0/components/form-field/bootkit-ng0-components-form-field.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { booleanAttribute, ChangeDetectionStrategy, DestroyRef, ElementRef, HostListener, inject, input, Renderer2, signal, ViewEncapsulation } from '@angular/core';\r\nimport { Component, ContentChild, AfterContentInit } from '@angular/core';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\nimport { FormControl, NgControl } from '@angular/forms';\r\nimport { LocalizationService } from '@bootkit/ng0/localization';\r\n\r\n@Component({\r\n selector: 'ng0-form-field, ng0-field',\r\n exportAs: 'ng0FormField',\r\n templateUrl: './form-field.component.html',\r\n styleUrls: ['./form-field.component.scss'],\r\n encapsulation: ViewEncapsulation.None,\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule],\r\n host: {\r\n '[class.ng0-form-field-required]': '_hasRequiredControl()',\r\n }\r\n})\r\nexport class FormFieldComponent implements AfterContentInit {\r\n @ContentChild(NgControl, { static: true, read: ElementRef }) private _ngControlElement?: ElementRef;\r\n private _destroyRef = inject(DestroyRef);\r\n private _renderer = inject(Renderer2);\r\n private _localizationService = inject(LocalizationService);\r\n // private _form = inject(NgForm, { optional: true });\r\n @ContentChild(NgControl) protected _ngControl?: NgControl;\r\n protected _status = signal<string | null>('');\r\n protected _hasRequiredControl = signal(false);\r\n protected _errorText = signal<string | undefined>(undefined);\r\n\r\n /**\r\n * The label text for the form field.\r\n */\r\n public readonly label = input<string>();\r\n\r\n /**\r\n * The hint text to display below the form field.\r\n */\r\n public readonly hint = input<string>();\r\n\r\n /**\r\n * If true, the form-field will show validation errors.\r\n */\r\n public readonly showErrors = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * If undefined, the indicator will be shown based on the control's required state.\r\n * If true, the form-field will show a required indicator (*) next to the label (regardless of the control's required state).\r\n * If false, the required indicator will not be shown (regardless of the control's required state).\r\n */\r\n public readonly showRequired = input<boolean | undefined>(undefined);\r\n\r\n /**\r\n * If true, the form-field will show subscripts (e.g. hints, errors) for the field label.\r\n */\r\n public readonly showSubscripts = input(true, { transform: booleanAttribute });\r\n\r\n /**\r\n * If true, the form-field will be rendered inside a \".input-group\" element.\r\n */\r\n public readonly inputGroup = input(true, { transform: booleanAttribute });\r\n\r\n ngAfterContentInit(): void {\r\n this._hasRequiredControl.set(this._isControlRequired());\r\n\r\n if (this._ngControl) {\r\n this._status.set(this._ngControl.status);\r\n\r\n this._ngControl.statusChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(change => {\r\n this._status.set(change);\r\n this._checkValidation();\r\n });\r\n\r\n this._ngControl.valueChanges?.pipe(takeUntilDestroyed(this._destroyRef)).subscribe(value => {\r\n if (this._status() === 'INVALID' && this._ngControl!.errors) {\r\n this._checkValidation(); // Recheck validation errors\r\n }\r\n });\r\n }\r\n }\r\n\r\n private _checkValidation() {\r\n if (!this._ngControl || !this._ngControl.touched) {\r\n return;\r\n }\r\n\r\n let elm = this._ngControlElement!.nativeElement;\r\n let invalid = this._status() === 'INVALID';\r\n let errorText = invalid ?\r\n this._localizationService.get()?.translateFirstError(this._ngControl!.errors, 'Invalid')?.text :\r\n undefined;\r\n\r\n this._errorText.set(errorText);\r\n this._renderer.addClass(elm, invalid ? 'is-invalid' : 'is-valid');\r\n this._renderer.removeClass(elm, invalid ? 'is-valid' : 'is-invalid');\r\n }\r\n\r\n private _isControlRequired(): boolean {\r\n const validator = this._ngControl?.validator || this._ngControl?.control?.validator;\r\n const errors = validator && validator(new FormControl(null));\r\n return errors != null && errors['required'] === true;\r\n }\r\n\r\n @HostListener('focusout')\r\n private _onFocusOut() {\r\n this._checkValidation();\r\n }\r\n}\r\n","@let errorText = _errorText();\r\n@let showRequiredIndicator = showRequired();\r\n\r\n@if(label()) {\r\n<label class=\"ng0-form-field-label\">\r\n {{label()}}\r\n @if((showRequiredIndicator === true || (showRequiredIndicator == undefined && _hasRequiredControl()))) {\r\n <span class=\"ng0-form-field-required-indicator\">*</span>\r\n }\r\n</label>\r\n}\r\n\r\n@if(inputGroup()) {\r\n<div class=\"input-group\">\r\n <ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n</div>\r\n}@else {\r\n<ng-container *ngTemplateOutlet=\"contentTemplate\"></ng-container>\r\n}\r\n\r\n<ng-template #contentTemplate>\r\n <ng-content></ng-content>\r\n</ng-template>\r\n\r\n@if(showSubscripts()) {\r\n<div class=\"ng0-form-field-subscript\">\r\n @if(showErrors() && errorText && _ngControl?.touched) {\r\n <small class=\"ng0-form-field-error text-danger\" animate.enter=\"ng0-form-field-fadein\">\r\n {{errorText}}\r\n </small>\r\n }@else if(hint()) {\r\n <small class=\"ng0-form-field-hint\">\r\n {{hint()}}\r\n </small>\r\n }\r\n</div>\r\n}","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormFieldComponent } from './form-field.component';\r\n\r\n@NgModule({\r\n imports: [\r\n CommonModule,\r\n FormFieldComponent,\r\n ],\r\n exports: [\r\n FormFieldComponent,\r\n ]\r\n})\r\nexport class FormFieldModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|