@bootkit/ng0 0.0.0-alpha.31 → 0.0.0-alpha.33

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.
Files changed (61) hide show
  1. package/components/dropdown/index.d.ts +47 -31
  2. package/components/list/index.d.ts +1 -0
  3. package/components/select/index.d.ts +7 -6
  4. package/components/sidenav/index.d.ts +95 -34
  5. package/fesm2022/bootkit-ng0-common.mjs +4 -4
  6. package/fesm2022/bootkit-ng0-components-accordion.mjs +12 -12
  7. package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
  8. package/fesm2022/bootkit-ng0-components-backdrop.mjs +7 -7
  9. package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -1
  10. package/fesm2022/bootkit-ng0-components-button.mjs +8 -8
  11. package/fesm2022/bootkit-ng0-components-card.mjs +11 -11
  12. package/fesm2022/bootkit-ng0-components-code.mjs +7 -7
  13. package/fesm2022/bootkit-ng0-components-collapse.mjs +12 -12
  14. package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
  15. package/fesm2022/bootkit-ng0-components-confirmation.mjs +13 -13
  16. package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -1
  17. package/fesm2022/bootkit-ng0-components-dropdown.mjs +55 -49
  18. package/fesm2022/bootkit-ng0-components-dropdown.mjs.map +1 -1
  19. package/fesm2022/bootkit-ng0-components-form-field.mjs +8 -8
  20. package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -1
  21. package/fesm2022/bootkit-ng0-components-list.mjs +19 -18
  22. package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -1
  23. package/fesm2022/bootkit-ng0-components-modal.mjs +8 -8
  24. package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
  25. package/fesm2022/bootkit-ng0-components-nav.mjs +23 -23
  26. package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
  27. package/fesm2022/bootkit-ng0-components-offcanvas.mjs +8 -8
  28. package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
  29. package/fesm2022/bootkit-ng0-components-pagination.mjs +8 -8
  30. package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
  31. package/fesm2022/bootkit-ng0-components-popover.mjs +7 -7
  32. package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
  33. package/fesm2022/bootkit-ng0-components-select.mjs +12 -11
  34. package/fesm2022/bootkit-ng0-components-select.mjs.map +1 -1
  35. package/fesm2022/bootkit-ng0-components-sidenav.mjs +192 -64
  36. package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -1
  37. package/fesm2022/bootkit-ng0-components-stepper.mjs +12 -12
  38. package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -1
  39. package/fesm2022/bootkit-ng0-components-table.mjs +15 -15
  40. package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -1
  41. package/fesm2022/bootkit-ng0-components-toast.mjs +6 -6
  42. package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
  43. package/fesm2022/bootkit-ng0-components-tooltip.mjs +7 -7
  44. package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
  45. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +22 -22
  46. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -1
  47. package/fesm2022/bootkit-ng0-form.mjs +29 -29
  48. package/fesm2022/bootkit-ng0-form.mjs.map +1 -1
  49. package/fesm2022/bootkit-ng0-http.mjs +3 -3
  50. package/fesm2022/bootkit-ng0-layouts-layout1.mjs +13 -38
  51. package/fesm2022/bootkit-ng0-layouts-layout1.mjs.map +1 -1
  52. package/fesm2022/bootkit-ng0-localization.mjs +153 -73
  53. package/fesm2022/bootkit-ng0-localization.mjs.map +1 -1
  54. package/fesm2022/bootkit-ng0-platform-browser.mjs +7 -7
  55. package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -1
  56. package/fesm2022/bootkit-ng0-routing.mjs +3 -3
  57. package/fesm2022/bootkit-ng0-script.mjs +3 -3
  58. package/fesm2022/bootkit-ng0-security.mjs +14 -14
  59. package/layouts/layout1/index.d.ts +16 -27
  60. package/localization/index.d.ts +63 -8
  61. package/package.json +19 -19
@@ -1,5 +1,5 @@
1
1
  import * as i0 from '@angular/core';
2
- import { ChangeDetectionStrategy, Component, input, booleanAttribute, HostListener, inject, Renderer2, ElementRef, model, computed, ViewChild, ContentChild, NgModule } from '@angular/core';
2
+ import { ChangeDetectionStrategy, Component, input, booleanAttribute, HostListener, inject, Renderer2, ElementRef, model, EventEmitter, Output, ViewChild, ContentChild, NgModule } from '@angular/core';
3
3
  import * as i1 from '@angular/common';
4
4
  import { CommonModule } from '@angular/common';
5
5
  import * as i1$2 from '@angular/router';
@@ -8,10 +8,10 @@ import * as i1$1 from '@angular/cdk/overlay';
8
8
  import { OverlayModule } from '@angular/cdk/overlay';
9
9
 
10
10
  class DropdownDividerComponent {
11
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: DropdownDividerComponent, isStandalone: true, selector: "ng0-dropdown-divider", exportAs: ["ng0DropdownDivider"], ngImport: i0, template: `<hr class="dropdown-divider">`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
11
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownDividerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
12
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: DropdownDividerComponent, isStandalone: true, selector: "ng0-dropdown-divider", exportAs: ["ng0DropdownDivider"], ngImport: i0, template: `<hr class="dropdown-divider">`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
13
13
  }
14
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownDividerComponent, decorators: [{
14
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownDividerComponent, decorators: [{
15
15
  type: Component,
16
16
  args: [{
17
17
  selector: 'ng0-dropdown-divider',
@@ -43,16 +43,16 @@ class DropdownItemComponent {
43
43
  e.preventDefault();
44
44
  }
45
45
  }
46
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.1", type: DropdownItemComponent, isStandalone: true, selector: "ng0-dropdown-item", inputs: { cssClass: { classPropertyName: "cssClass", publicName: "cssClass", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" } }, exportAs: ["ng0DropdownItem"], ngImport: i0, template: "<button class=\"dropdown-item\" [ngClass]=\"cssClass()\" [class.disabled]=\"disabled()\" [attr.aria-disabled]=\"disabled()\">\r\n <ng-content></ng-content>\r\n</button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
46
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
47
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: DropdownItemComponent, isStandalone: true, selector: "ng0-dropdown-item", inputs: { cssClass: { classPropertyName: "cssClass", publicName: "cssClass", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" } }, exportAs: ["ng0DropdownItem"], ngImport: i0, template: "<button class=\"dropdown-item\" [ngClass]=\"cssClass()\" [class.disabled]=\"disabled()\" [attr.aria-disabled]=\"disabled()\">\r\n <ng-content></ng-content>\r\n</button>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: RouterModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
48
48
  }
49
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownItemComponent, decorators: [{
49
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownItemComponent, decorators: [{
50
50
  type: Component,
51
51
  args: [{ selector: 'ng0-dropdown-item', exportAs: 'ng0DropdownItem', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
52
52
  CommonModule,
53
53
  RouterModule
54
54
  ], template: "<button class=\"dropdown-item\" [ngClass]=\"cssClass()\" [class.disabled]=\"disabled()\" [attr.aria-disabled]=\"disabled()\">\r\n <ng-content></ng-content>\r\n</button>" }]
55
- }], propDecorators: { _onClick: [{
55
+ }], propDecorators: { cssClass: [{ type: i0.Input, args: [{ isSignal: true, alias: "cssClass", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _onClick: [{
56
56
  type: HostListener,
57
57
  args: ['click', ['$event']]
58
58
  }] } });
@@ -64,38 +64,47 @@ class DropdownMenuComponent {
64
64
  constructor() {
65
65
  this._renderer.addClass(this.elementRef.nativeElement, 'dropdown-menu');
66
66
  }
67
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: DropdownMenuComponent, isStandalone: true, selector: "ng0-dropdown-menu", exportAs: ["ng0Dropdownmenu"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
67
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownMenuComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
68
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: DropdownMenuComponent, isStandalone: true, selector: "ng0-dropdown-menu", exportAs: ["ng0Dropdownmenu"], ngImport: i0, template: `<ng-content></ng-content>`, isInline: true, styles: [":host{display:block;position:relative}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
69
69
  }
70
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownMenuComponent, decorators: [{
70
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownMenuComponent, decorators: [{
71
71
  type: Component,
72
72
  args: [{ selector: 'ng0-dropdown-menu', exportAs: 'ng0Dropdownmenu', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
73
73
  CommonModule,
74
74
  ], template: `<ng-content></ng-content>`, styles: [":host{display:block;position:relative}\n"] }]
75
75
  }], ctorParameters: () => [] });
76
76
 
77
+ /**
78
+ * Dropdown component
79
+ */
77
80
  class DropdownComponent {
78
- // @ContentChildren(DropdownItemComponent) private _items!: QueryList<DropdownItemComponent>;
79
81
  _dropdownMenu;
80
82
  _mainButton;
81
83
  _splitButton;
82
- // protected _scrollStrategy!: ScrollStrategy;
83
84
  _el = inject(ElementRef);
84
85
  _renderer = inject(Renderer2);
86
+ // @ContentChildren(DropdownItemComponent) private _items!: QueryList<DropdownItemComponent>;
87
+ // protected _scrollStrategy!: ScrollStrategy;
85
88
  /**
86
89
  * The placement of the dropdown menu in relation to the dropdown toggle.
87
90
  */
88
91
  placement = input('bottom', ...(ngDevMode ? [{ debugName: "placement" }] : []));
92
+ /**
93
+ * Indicates whether the dropdown should use the default Bootstrap styles.
94
+ * This will apply the 'btn-group' class to the dropdown.
95
+ * @default true
96
+ */
97
+ defaultStyle = input(true, ...(ngDevMode ? [{ debugName: "defaultStyle" }] : []));
89
98
  /**
90
99
  * The CSS classes to apply to the dropdown toggle button.
91
100
  * @default 'btn btn-primary'
92
101
  */
93
- cssClass = input('btn btn-primary', ...(ngDevMode ? [{ debugName: "cssClass" }] : []));
102
+ toggleCss = input('btn btn-primary', ...(ngDevMode ? [{ debugName: "toggleCss" }] : []));
94
103
  /**
95
104
  * The CSS classes to apply to the dropdown split button.
96
105
  * @default 'btn btn-primary'
97
106
  */
98
- splitCssClass = input('btn btn-primary', ...(ngDevMode ? [{ debugName: "splitCssClass" }] : []));
107
+ splitCss = input('btn btn-primary', ...(ngDevMode ? [{ debugName: "splitCss" }] : []));
99
108
  /**
100
109
  * Indicates whether the dropdown is open or closed.
101
110
  * @default false
@@ -117,21 +126,16 @@ class DropdownComponent {
117
126
  * @default 'default'
118
127
  */
119
128
  size = input('default', ...(ngDevMode ? [{ debugName: "size" }] : []));
120
- _directionCssClass = computed(() => {
121
- switch (this.placement()) {
122
- case 'top':
123
- return 'dropup';
124
- case 'start':
125
- return 'dropstart';
126
- case 'end':
127
- return 'dropend';
128
- case 'bottom':
129
- default:
130
- return undefined;
131
- }
132
- }, ...(ngDevMode ? [{ debugName: "_directionCssClass" }] : []));
129
+ /**
130
+ * Indicates whether the dropdown is disabled.
131
+ */
132
+ disabled = input(false, ...(ngDevMode ? [{ debugName: "disabled", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
133
+ /**
134
+ * Emits when the dropdown toggle button is clicked.
135
+ */
136
+ toggleClick = new EventEmitter();
133
137
  constructor() {
134
- this._renderer.addClass(this._el.nativeElement, 'btn-group');
138
+ // this._renderer.addClass(this._el.nativeElement, 'btn-group');
135
139
  // this._scrollStrategy = this._overlay.scrollStrategies.block();
136
140
  }
137
141
  /**
@@ -176,17 +180,17 @@ class DropdownComponent {
176
180
  }
177
181
  }
178
182
  }
179
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
180
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: DropdownComponent, isStandalone: true, selector: "ng0-dropdown", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, cssClass: { classPropertyName: "cssClass", publicName: "cssClass", isSignal: true, isRequired: false, transformFunction: null }, splitCssClass: { classPropertyName: "splitCssClass", publicName: "splitCssClass", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, split: { classPropertyName: "split", publicName: "split", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { listeners: { "document:click": "_onDocumentClick($event)" }, properties: { "class": "_directionCssClass()" } }, queries: [{ propertyName: "_dropdownMenu", first: true, predicate: DropdownMenuComponent, descendants: true }], viewQueries: [{ propertyName: "_mainButton", first: true, predicate: ["mainButton"], descendants: true }, { propertyName: "_splitButton", first: true, predicate: ["splitButton"], descendants: true }], exportAs: ["ng0Dropdown"], ngImport: i0, template: "<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>", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
183
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
184
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.9", type: DropdownComponent, isStandalone: true, selector: "ng0-dropdown", inputs: { placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, defaultStyle: { classPropertyName: "defaultStyle", publicName: "defaultStyle", isSignal: true, isRequired: false, transformFunction: null }, toggleCss: { classPropertyName: "toggleCss", publicName: "toggleCss", isSignal: true, isRequired: false, transformFunction: null }, splitCss: { classPropertyName: "splitCss", publicName: "splitCss", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, split: { classPropertyName: "split", publicName: "split", isSignal: true, isRequired: false, transformFunction: null }, autoClose: { classPropertyName: "autoClose", publicName: "autoClose", isSignal: true, isRequired: false, transformFunction: null }, size: { classPropertyName: "size", publicName: "size", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange", toggleClick: "toggleClick" }, host: { listeners: { "document:click": "_onDocumentClick($event)" }, properties: { "class.dropup": "placement() === \"top\"", "class.dropstart": "placement() === \"start\"", "class.dropend": "placement() === \"end\"", "class.btn-group": "defaultStyle()" } }, queries: [{ propertyName: "_dropdownMenu", first: true, predicate: DropdownMenuComponent, descendants: true }], viewQueries: [{ propertyName: "_mainButton", first: true, predicate: ["mainButton"], descendants: true }, { propertyName: "_splitButton", first: true, predicate: ["splitButton"], descendants: true }], exportAs: ["ng0Dropdown"], ngImport: i0, template: "<button #mainButton\r\n [class]=\"toggleCss()\"\r\n [class.dropdown-toggle]=\"!split()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n [disabled]=\"disabled()\"\r\n type=\"button\"\r\n (click)=\"toggleClick.emit($event)\">\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]=\"splitCss()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n class=\"dropdown-toggle dropdown-toggle-split\"\r\n [disabled]=\"disabled()\">\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>", styles: [":host{display:inline-block}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i1$1.CdkConnectedOverlay, selector: "[cdk-connected-overlay], [connected-overlay], [cdkConnectedOverlay]", inputs: ["cdkConnectedOverlayOrigin", "cdkConnectedOverlayPositions", "cdkConnectedOverlayPositionStrategy", "cdkConnectedOverlayOffsetX", "cdkConnectedOverlayOffsetY", "cdkConnectedOverlayWidth", "cdkConnectedOverlayHeight", "cdkConnectedOverlayMinWidth", "cdkConnectedOverlayMinHeight", "cdkConnectedOverlayBackdropClass", "cdkConnectedOverlayPanelClass", "cdkConnectedOverlayViewportMargin", "cdkConnectedOverlayScrollStrategy", "cdkConnectedOverlayOpen", "cdkConnectedOverlayDisableClose", "cdkConnectedOverlayTransformOriginOn", "cdkConnectedOverlayHasBackdrop", "cdkConnectedOverlayLockPosition", "cdkConnectedOverlayFlexibleDimensions", "cdkConnectedOverlayGrowAfterOpen", "cdkConnectedOverlayPush", "cdkConnectedOverlayDisposeOnNavigation"], outputs: ["backdropClick", "positionChange", "attach", "detach", "overlayKeydown", "overlayOutsideClick"], exportAs: ["cdkConnectedOverlay"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
181
185
  }
182
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownComponent, decorators: [{
186
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownComponent, decorators: [{
183
187
  type: Component,
184
- args: [{ selector: 'ng0-dropdown', exportAs: 'ng0Dropdown', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
185
- CommonModule,
186
- OverlayModule,
187
- ], host: {
188
- '[class]': '_directionCssClass()',
189
- }, template: "<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>" }]
188
+ args: [{ selector: 'ng0-dropdown', exportAs: 'ng0Dropdown', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [CommonModule, OverlayModule], host: {
189
+ '[class.dropup]': 'placement() === "top"',
190
+ '[class.dropstart]': 'placement() === "start"',
191
+ '[class.dropend]': 'placement() === "end"',
192
+ '[class.btn-group]': 'defaultStyle()',
193
+ }, template: "<button #mainButton\r\n [class]=\"toggleCss()\"\r\n [class.dropdown-toggle]=\"!split()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n [disabled]=\"disabled()\"\r\n type=\"button\"\r\n (click)=\"toggleClick.emit($event)\">\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]=\"splitCss()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n class=\"dropdown-toggle dropdown-toggle-split\"\r\n [disabled]=\"disabled()\">\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>" }]
190
194
  }], ctorParameters: () => [], propDecorators: { _dropdownMenu: [{
191
195
  type: ContentChild,
192
196
  args: [DropdownMenuComponent]
@@ -196,16 +200,18 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
196
200
  }], _splitButton: [{
197
201
  type: ViewChild,
198
202
  args: ['splitButton']
203
+ }], placement: [{ type: i0.Input, args: [{ isSignal: true, alias: "placement", required: false }] }], defaultStyle: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultStyle", required: false }] }], toggleCss: [{ type: i0.Input, args: [{ isSignal: true, alias: "toggleCss", required: false }] }], splitCss: [{ type: i0.Input, args: [{ isSignal: true, alias: "splitCss", required: false }] }], open: [{ type: i0.Input, args: [{ isSignal: true, alias: "open", required: false }] }, { type: i0.Output, args: ["openChange"] }], split: [{ type: i0.Input, args: [{ isSignal: true, alias: "split", required: false }] }], autoClose: [{ type: i0.Input, args: [{ isSignal: true, alias: "autoClose", required: false }] }], size: [{ type: i0.Input, args: [{ isSignal: true, alias: "size", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], toggleClick: [{
204
+ type: Output
199
205
  }], _onDocumentClick: [{
200
206
  type: HostListener,
201
207
  args: ['document:click', ['$event']]
202
208
  }] } });
203
209
 
204
210
  class DropdownHeaderComponent {
205
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
206
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.2.1", type: DropdownHeaderComponent, isStandalone: true, selector: "ng0-dropdown-header", exportAs: ["ng0DropdownItem"], ngImport: i0, template: `<h6 class="dropdown-header"><ng-content></ng-content></h6>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
211
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
212
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "20.3.9", type: DropdownHeaderComponent, isStandalone: true, selector: "ng0-dropdown-header", exportAs: ["ng0DropdownItem"], ngImport: i0, template: `<h6 class="dropdown-header"><ng-content></ng-content></h6>`, isInline: true, changeDetection: i0.ChangeDetectionStrategy.OnPush });
207
213
  }
208
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownHeaderComponent, decorators: [{
214
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownHeaderComponent, decorators: [{
209
215
  type: Component,
210
216
  args: [{
211
217
  selector: 'ng0-dropdown-header',
@@ -243,16 +249,16 @@ class DropdownLinkComponent {
243
249
  e.stopPropagation();
244
250
  }
245
251
  }
246
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
247
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.2.1", type: DropdownLinkComponent, isStandalone: true, selector: "ng0-dropdown-link", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" } }, exportAs: ["ng0DropdownLink"], ngImport: i0, template: "<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>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
252
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownLinkComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
253
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "20.3.9", type: DropdownLinkComponent, isStandalone: true, selector: "ng0-dropdown-link", inputs: { link: { classPropertyName: "link", publicName: "link", isSignal: true, isRequired: true, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null }, target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick($event)" } }, exportAs: ["ng0DropdownLink"], ngImport: i0, template: "<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>", dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: RouterModule }, { kind: "directive", type: i1$2.RouterLink, selector: "[routerLink]", inputs: ["target", "queryParams", "fragment", "queryParamsHandling", "state", "info", "relativeTo", "preserveFragment", "skipLocationChange", "replaceUrl", "routerLink"] }, { kind: "directive", type: i1$2.RouterLinkActive, selector: "[routerLinkActive]", inputs: ["routerLinkActiveOptions", "ariaCurrentWhenActive", "routerLinkActive"], outputs: ["isActiveChange"], exportAs: ["routerLinkActive"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
248
254
  }
249
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownLinkComponent, decorators: [{
255
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownLinkComponent, decorators: [{
250
256
  type: Component,
251
257
  args: [{ selector: 'ng0-dropdown-link', exportAs: 'ng0DropdownLink', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
252
258
  CommonModule,
253
259
  RouterModule
254
260
  ], template: "<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>" }]
255
- }], propDecorators: { _onClick: [{
261
+ }], propDecorators: { link: [{ type: i0.Input, args: [{ isSignal: true, alias: "link", required: true }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }], target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], _onClick: [{
256
262
  type: HostListener,
257
263
  args: ['click', ['$event']]
258
264
  }] } });
@@ -266,8 +272,8 @@ const Items = [
266
272
  DropdownDividerComponent
267
273
  ];
268
274
  class DropdownModule {
269
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
270
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: DropdownModule, imports: [DropdownComponent,
275
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
276
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.9", ngImport: i0, type: DropdownModule, imports: [DropdownComponent,
271
277
  DropdownMenuComponent,
272
278
  DropdownItemComponent,
273
279
  DropdownLinkComponent,
@@ -278,13 +284,13 @@ class DropdownModule {
278
284
  DropdownLinkComponent,
279
285
  DropdownHeaderComponent,
280
286
  DropdownDividerComponent] });
281
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownModule, imports: [DropdownComponent,
287
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownModule, imports: [DropdownComponent,
282
288
  DropdownMenuComponent,
283
289
  DropdownItemComponent,
284
290
  DropdownLinkComponent,
285
291
  DropdownDividerComponent] });
286
292
  }
287
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: DropdownModule, decorators: [{
293
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: DropdownModule, decorators: [{
288
294
  type: NgModule,
289
295
  args: [{
290
296
  imports: Items,
@@ -1 +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
+ {"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 {\r\n Component, ElementRef, Renderer2, ChangeDetectionStrategy, inject, input, model, HostListener, ContentChild,\r\n booleanAttribute, ViewChild, EventEmitter,\r\n Output\r\n} 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/**\r\n * Dropdown 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: [CommonModule, OverlayModule],\r\n host: {\r\n '[class.dropup]': 'placement() === \"top\"',\r\n '[class.dropstart]': 'placement() === \"start\"',\r\n '[class.dropend]': 'placement() === \"end\"',\r\n '[class.btn-group]': 'defaultStyle()',\r\n }\r\n})\r\nexport class DropdownComponent {\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 _el = inject(ElementRef);\r\n private _renderer = inject(Renderer2);\r\n // @ContentChildren(DropdownItemComponent) private _items!: QueryList<DropdownItemComponent>;\r\n // protected _scrollStrategy!: ScrollStrategy;\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 * Indicates whether the dropdown should use the default Bootstrap styles.\r\n * This will apply the 'btn-group' class to the dropdown.\r\n * @default true\r\n */\r\n public defaultStyle = input(true);\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 toggleCss = 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 splitCss = 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 /**\r\n * Indicates whether the dropdown is disabled.\r\n */\r\n public readonly disabled = input(false, { transform: booleanAttribute });\r\n\r\n /**\r\n * Emits when the dropdown toggle button is clicked.\r\n */\r\n @Output() public toggleClick = new EventEmitter<PointerEvent>();\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]=\"toggleCss()\"\r\n [class.dropdown-toggle]=\"!split()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n [disabled]=\"disabled()\"\r\n type=\"button\"\r\n (click)=\"toggleClick.emit($event)\">\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]=\"splitCss()\"\r\n [class.btn-sm]=\"size() == 'small'\"\r\n [class.btn-lg]=\"size() == 'large'\"\r\n class=\"dropdown-toggle dropdown-toggle-split\"\r\n [disabled]=\"disabled()\">\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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"}
@@ -78,10 +78,10 @@ class FormFieldComponent {
78
78
  _onFocusOut() {
79
79
  this._checkValidation();
80
80
  }
81
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FormFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
82
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", 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 });
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 });
83
83
  }
84
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FormFieldComponent, decorators: [{
84
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldComponent, decorators: [{
85
85
  type: Component,
86
86
  args: [{ selector: 'ng0-form-field, ng0-field', exportAs: 'ng0FormField', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], host: {
87
87
  '[class.ng0-form-field-required]': '_hasRequiredControl()',
@@ -92,19 +92,19 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImpor
92
92
  }], _ngControl: [{
93
93
  type: ContentChild,
94
94
  args: [NgControl]
95
- }], _onFocusOut: [{
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
96
  type: HostListener,
97
97
  args: ['focusout']
98
98
  }] } });
99
99
 
100
100
  class FormFieldModule {
101
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FormFieldModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
102
- static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: FormFieldModule, imports: [CommonModule,
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,
103
103
  FormFieldComponent], exports: [FormFieldComponent] });
104
- static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FormFieldModule, imports: [CommonModule,
104
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldModule, imports: [CommonModule,
105
105
  FormFieldComponent] });
106
106
  }
107
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: FormFieldModule, decorators: [{
107
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.9", ngImport: i0, type: FormFieldModule, decorators: [{
108
108
  type: NgModule,
109
109
  args: [{
110
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 { 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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"}
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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"}