@bootkit/ng0 0.0.0-alpha.2 → 0.0.0-alpha.21

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 (99) hide show
  1. package/common/index.d.ts +118 -6
  2. package/components/accordion/index.d.ts +1 -1
  3. package/components/backdrop/index.d.ts +12 -0
  4. package/components/button/index.d.ts +48 -0
  5. package/components/card/index.d.ts +27 -0
  6. package/components/code/index.d.ts +35 -0
  7. package/components/confirmation/index.d.ts +66 -0
  8. package/components/dropdown/index.d.ts +78 -0
  9. package/components/form-field/index.d.ts +72 -0
  10. package/components/list/index.d.ts +127 -0
  11. package/components/modal/index.d.ts +22 -4
  12. package/components/nav/index.d.ts +23 -19
  13. package/components/pagination/index.d.ts +35 -9
  14. package/components/popover/index.d.ts +1 -1
  15. package/components/select/index.d.ts +116 -0
  16. package/components/sidenav/index.d.ts +59 -0
  17. package/components/stepper/index.d.ts +26 -0
  18. package/components/table/index.d.ts +273 -0
  19. package/components/toast/index.d.ts +1 -1
  20. package/components/tooltip/index.d.ts +1 -1
  21. package/components/vertical-menu/index.d.ts +61 -0
  22. package/data/index.d.ts +258 -46
  23. package/date/index.d.ts +34 -0
  24. package/fesm2022/bootkit-ng0-common.mjs +89 -11
  25. package/fesm2022/bootkit-ng0-common.mjs.map +1 -1
  26. package/fesm2022/bootkit-ng0-components-accordion.mjs +13 -13
  27. package/fesm2022/bootkit-ng0-components-accordion.mjs.map +1 -1
  28. package/fesm2022/bootkit-ng0-components-backdrop.mjs +46 -0
  29. package/fesm2022/bootkit-ng0-components-backdrop.mjs.map +1 -0
  30. package/fesm2022/bootkit-ng0-components-button.mjs +119 -0
  31. package/fesm2022/bootkit-ng0-components-button.mjs.map +1 -0
  32. package/fesm2022/bootkit-ng0-components-card.mjs +62 -0
  33. package/fesm2022/bootkit-ng0-components-card.mjs.map +1 -0
  34. package/fesm2022/bootkit-ng0-components-code.mjs +70 -0
  35. package/fesm2022/bootkit-ng0-components-code.mjs.map +1 -0
  36. package/fesm2022/bootkit-ng0-components-collapse.mjs +14 -14
  37. package/fesm2022/bootkit-ng0-components-collapse.mjs.map +1 -1
  38. package/fesm2022/bootkit-ng0-components-confirmation.mjs +167 -0
  39. package/fesm2022/bootkit-ng0-components-confirmation.mjs.map +1 -0
  40. package/fesm2022/bootkit-ng0-components-dropdown.mjs +189 -0
  41. package/fesm2022/bootkit-ng0-components-dropdown.mjs.map +1 -0
  42. package/fesm2022/bootkit-ng0-components-form-field.mjs +147 -0
  43. package/fesm2022/bootkit-ng0-components-form-field.mjs.map +1 -0
  44. package/fesm2022/bootkit-ng0-components-list.mjs +331 -0
  45. package/fesm2022/bootkit-ng0-components-list.mjs.map +1 -0
  46. package/fesm2022/bootkit-ng0-components-modal.mjs +40 -23
  47. package/fesm2022/bootkit-ng0-components-modal.mjs.map +1 -1
  48. package/fesm2022/bootkit-ng0-components-nav.mjs +58 -59
  49. package/fesm2022/bootkit-ng0-components-nav.mjs.map +1 -1
  50. package/fesm2022/bootkit-ng0-components-offcanvas.mjs +9 -9
  51. package/fesm2022/bootkit-ng0-components-offcanvas.mjs.map +1 -1
  52. package/fesm2022/bootkit-ng0-components-overlay.mjs.map +1 -1
  53. package/fesm2022/bootkit-ng0-components-pagination.mjs +58 -23
  54. package/fesm2022/bootkit-ng0-components-pagination.mjs.map +1 -1
  55. package/fesm2022/bootkit-ng0-components-popover.mjs +10 -10
  56. package/fesm2022/bootkit-ng0-components-popover.mjs.map +1 -1
  57. package/fesm2022/bootkit-ng0-components-select.mjs +427 -0
  58. package/fesm2022/bootkit-ng0-components-select.mjs.map +1 -0
  59. package/fesm2022/bootkit-ng0-components-sidenav.mjs +153 -0
  60. package/fesm2022/bootkit-ng0-components-sidenav.mjs.map +1 -0
  61. package/fesm2022/bootkit-ng0-components-stepper.mjs +91 -0
  62. package/fesm2022/bootkit-ng0-components-stepper.mjs.map +1 -0
  63. package/fesm2022/bootkit-ng0-components-table.mjs +461 -0
  64. package/fesm2022/bootkit-ng0-components-table.mjs.map +1 -0
  65. package/fesm2022/bootkit-ng0-components-toast.mjs +7 -7
  66. package/fesm2022/bootkit-ng0-components-toast.mjs.map +1 -1
  67. package/fesm2022/bootkit-ng0-components-tooltip.mjs +8 -8
  68. package/fesm2022/bootkit-ng0-components-tooltip.mjs.map +1 -1
  69. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs +161 -0
  70. package/fesm2022/bootkit-ng0-components-vertical-menu.mjs.map +1 -0
  71. package/fesm2022/bootkit-ng0-data.mjs +291 -90
  72. package/fesm2022/bootkit-ng0-data.mjs.map +1 -1
  73. package/fesm2022/bootkit-ng0-date.mjs +50 -0
  74. package/fesm2022/bootkit-ng0-date.mjs.map +1 -0
  75. package/fesm2022/bootkit-ng0-file.mjs +50 -0
  76. package/fesm2022/bootkit-ng0-file.mjs.map +1 -0
  77. package/fesm2022/bootkit-ng0-form.mjs +514 -0
  78. package/fesm2022/bootkit-ng0-form.mjs.map +1 -0
  79. package/fesm2022/bootkit-ng0-http.mjs +225 -179
  80. package/fesm2022/bootkit-ng0-http.mjs.map +1 -1
  81. package/fesm2022/bootkit-ng0-localization-locales.mjs +115 -0
  82. package/fesm2022/bootkit-ng0-localization-locales.mjs.map +1 -0
  83. package/fesm2022/bootkit-ng0-localization.mjs +481 -0
  84. package/fesm2022/bootkit-ng0-localization.mjs.map +1 -0
  85. package/fesm2022/bootkit-ng0-platform-browser.mjs +51 -0
  86. package/fesm2022/bootkit-ng0-platform-browser.mjs.map +1 -0
  87. package/fesm2022/bootkit-ng0-script.mjs +59 -0
  88. package/fesm2022/bootkit-ng0-script.mjs.map +1 -0
  89. package/fesm2022/bootkit-ng0-security.mjs +17 -15
  90. package/fesm2022/bootkit-ng0-security.mjs.map +1 -1
  91. package/file/index.d.ts +22 -0
  92. package/form/index.d.ts +127 -0
  93. package/http/index.d.ts +141 -40
  94. package/localization/index.d.ts +305 -0
  95. package/localization/locales/index.d.ts +7 -0
  96. package/package.json +90 -10
  97. package/platform/browser/index.d.ts +22 -0
  98. package/script/index.d.ts +27 -0
  99. package/security/index.d.ts +3 -9
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-pagination.mjs","sources":["../../../projects/ng0/components/pagination/pagination.component.ts","../../../projects/ng0/components/pagination/pagination.component.html","../../../projects/ng0/components/pagination/pagination.module.ts","../../../projects/ng0/components/pagination/bootkit-ng0-components-pagination.ts"],"sourcesContent":["import { Component, ChangeDetectionStrategy, Input, input, computed, Output, EventEmitter } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'ng0-pagination',\r\n exportAs: 'ng0Pagination',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './pagination.component.html',\r\n standalone: true,\r\n})\r\nexport class PaginationComponent {\r\n @Output() itemClick = new EventEmitter<number>();\r\n totalRecords = input.required<number>();\r\n pageSize = input<number>(10);\r\n\r\n /** \r\n * Selected page. starts from 1.\r\n */\r\n selectedPage = input<number>(1);\r\n maxVisiblePages = input<number>(10);\r\n showNextButton = input<boolean>(true);\r\n showPreviousButton = input<boolean>(true);\r\n showFirstButton = input<boolean>(true);\r\n showLastButton = input<boolean>(true);\r\n get totalPagesCount() { return this._totalPagesCount; }\r\n\r\n protected _totalPagesCount: number;\r\n\r\n protected _visiblePages = computed(() => {\r\n let selectedPage = this.selectedPage();\r\n let totalRecords = this.totalRecords();\r\n let pageSize = this.pageSize();\r\n\r\n if (!Number.isInteger(totalRecords) || totalRecords < 0) {\r\n throw new Error('Total items must be a posotive integer.');\r\n }\r\n\r\n if (!Number.isInteger(pageSize) || pageSize <= 0) {\r\n throw new Error('Page size must be a posotive integer.');\r\n }\r\n\r\n this._totalPagesCount = Math.ceil(totalRecords / pageSize);\r\n\r\n if (selectedPage < 1 || selectedPage > this._totalPagesCount) {\r\n throw new Error(`Selected page must be between 1 and ${this._totalPagesCount}.`);\r\n }\r\n\r\n let indices = [];\r\n let firstVisiblePage = selectedPage;\r\n let lastVisiblePage = firstVisiblePage;\r\n let maxVisiblePages = this.maxVisiblePages();\r\n indices.push(firstVisiblePage);\r\n\r\n for (let i = 1; i <= maxVisiblePages; i++) {\r\n if (lastVisiblePage < this._totalPagesCount) {\r\n lastVisiblePage++;\r\n indices.push(lastVisiblePage);\r\n }\r\n\r\n if (indices.length >= maxVisiblePages) {\r\n break;\r\n }\r\n\r\n if (firstVisiblePage > 1) {\r\n firstVisiblePage--;\r\n indices.unshift(firstVisiblePage);\r\n }\r\n }\r\n\r\n return indices;\r\n });\r\n}\r\n","@let _selectedPage = selectedPage();\r\n\r\n<nav>\r\n <ul class=\"pagination\">\r\n @if(showFirstButton()) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage <= 1\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(1)\">\r\n <ng-content select=\"first\">\r\n First\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n\r\n @if(showPreviousButton()) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage <= 1\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(_selectedPage - 1)\">\r\n <ng-content select=\"previous\">\r\n Previous\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n\r\n @for (page of _visiblePages(); track page) {\r\n <li class=\"page-item\" [class.active]=\"_selectedPage === page\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(page)\">\r\n {{page}}\r\n </button>\r\n </li>\r\n }\r\n\r\n @if(showNextButton()) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage >= _totalPagesCount\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(_selectedPage + 1)\">\r\n <ng-content select=\"next\">\r\n Next\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n\r\n @if(showLastButton()) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage >= _totalPagesCount\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(_totalPagesCount)\">\r\n <ng-content select=\"last\">\r\n Last\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n</nav>","import { NgModule } from '@angular/core';\r\nimport { PaginationComponent } from './pagination.component';\r\n\r\n@NgModule({\r\n imports: [\r\n PaginationComponent\r\n ],\r\n exports: [\r\n PaginationComponent\r\n ]\r\n})\r\nexport class PaginationModule {\r\n}\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-pagination.mjs","sources":["../../../projects/ng0/components/pagination/pagination.component.ts","../../../projects/ng0/components/pagination/pagination.component.html","../../../projects/ng0/components/pagination/pagination.module.ts","../../../projects/ng0/components/pagination/bootkit-ng0-components-pagination.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\r\nimport { Component, ChangeDetectionStrategy, input, computed, Output, EventEmitter } from '@angular/core';\r\nimport { TranslatePipe } from '@bootkit/ng0/localization';\r\n\r\n@Component({\r\n selector: 'ng0-pagination',\r\n exportAs: 'ng0Pagination',\r\n templateUrl: './pagination.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n TranslatePipe\r\n ]\r\n})\r\nexport class PaginationComponent {\r\n /**\r\n * Total number of records.\r\n */\r\n public totalRecords = input.required<number>();\r\n\r\n /**\r\n * Page size. Number of items in each page.\r\n */\r\n public pageSize = input<number>(10);\r\n\r\n /** \r\n * Selected page Index. starts from 1.\r\n */\r\n public selectedPage = input<number | undefined>(1);\r\n\r\n /**\r\n * Maximum number of visible pages.\r\n * Default is 10.\r\n */\r\n public maxVisiblePages = input<number>(10);\r\n\r\n /**\r\n * Show first and last buttons.\r\n * Default is true.\r\n */\r\n public showNextPreviousButtons = input<boolean | undefined>(true);\r\n\r\n /**\r\n * Show first and last buttons.\r\n * Default is true.\r\n */\r\n public showFirstLastButtons = input<boolean | undefined>(true);\r\n\r\n /**\r\n * Total number of pages.\r\n * This is a computed property based on totalRecords and pageSize.\r\n * It is not an input property.\r\n */\r\n public get totalPagesCount() { return this._totalPagesCount; }\r\n\r\n /**\r\n * Emits the selected page index when a page is clicked.\r\n * The index starts from 1.\r\n */\r\n @Output() public itemClick = new EventEmitter<number>();\r\n\r\n protected _totalPagesCount!: number;\r\n\r\n protected _visiblePages = computed(() => {\r\n let selectedPage = this.selectedPage() || 0;\r\n let totalRecords = this.totalRecords();\r\n let pageSize = this.pageSize();\r\n\r\n if (!Number.isInteger(totalRecords) || totalRecords < 0) {\r\n throw new Error('Total items must be a posotive integer.');\r\n }\r\n\r\n if (!Number.isInteger(pageSize) || pageSize <= 0) {\r\n throw new Error('Page size must be a posotive integer.');\r\n }\r\n\r\n this._totalPagesCount = Math.ceil(totalRecords / pageSize);\r\n\r\n if (selectedPage < 0 || selectedPage > this._totalPagesCount) {\r\n throw new Error(`Selected page must be between 0 and ${this._totalPagesCount}.`);\r\n }\r\n\r\n let indices = [];\r\n let firstVisiblePage = selectedPage;\r\n let lastVisiblePage = firstVisiblePage;\r\n let maxVisiblePages = this.maxVisiblePages();\r\n indices.push(firstVisiblePage);\r\n\r\n for (let i = 1; i <= maxVisiblePages; i++) {\r\n if (lastVisiblePage < this._totalPagesCount) {\r\n lastVisiblePage++;\r\n indices.push(lastVisiblePage);\r\n }\r\n\r\n if (indices.length >= maxVisiblePages) {\r\n break;\r\n }\r\n\r\n if (firstVisiblePage > 1) {\r\n firstVisiblePage--;\r\n indices.unshift(firstVisiblePage);\r\n }\r\n }\r\n\r\n return indices;\r\n });\r\n\r\n public _onPageChange(pageIndex: number) {\r\n debugger\r\n console.log('click')\r\n this.itemClick.emit(pageIndex);\r\n }\r\n\r\n}\r\n","@let _selectedPage = selectedPage();\r\n\r\n<nav>\r\n <ul class=\"pagination\">\r\n @if(showFirstLastButtons() || showFirstLastButtons() == undefined) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage == undefined || _selectedPage <= 1\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(1)\">\r\n <ng-content select=\"first\">\r\n {{'first' | ng0Translate}}\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n\r\n @if(showNextPreviousButtons() || showNextPreviousButtons() == undefined) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage == undefined || _selectedPage <= 1\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(_selectedPage! - 1)\">\r\n <ng-content select=\"previous\">\r\n {{'previous' | ng0Translate}}\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n\r\n @for (page of _visiblePages(); track page) {\r\n <li class=\"page-item\" [class.active]=\"_selectedPage === page\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(page)\">\r\n {{page}}\r\n </button>\r\n </li>\r\n }\r\n\r\n @if(showNextPreviousButtons() || showNextPreviousButtons() == undefined) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage == undefined || _selectedPage >= _totalPagesCount\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(_selectedPage! + 1)\">\r\n <ng-content select=\"next\">\r\n {{'next' | ng0Translate}}\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n\r\n @if(showFirstLastButtons() || showFirstLastButtons() == undefined) {\r\n <li class=\"page-item\" [class.disabled]=\"_selectedPage == undefined || _selectedPage >= _totalPagesCount\">\r\n <button class=\"page-link\" (click)=\"itemClick.emit(_totalPagesCount)\">\r\n <ng-content select=\"last\">\r\n {{'last' | ng0Translate}}\r\n </ng-content>\r\n </button>\r\n </li>\r\n }\r\n </ul>\r\n</nav>\r\n\r\n<style>\r\n .pagination {\r\n margin: 0;\r\n }\r\n</style>","import { NgModule } from '@angular/core';\r\nimport { PaginationComponent } from './pagination.component';\r\n\r\n@NgModule({\r\n imports: [\r\n PaginationComponent\r\n ],\r\n exports: [\r\n PaginationComponent\r\n ]\r\n})\r\nexport class PaginationModule {\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -22,10 +22,10 @@ class PopoverWrapperComponent {
22
22
  this._renderer.setAttribute(e, 'role', 'tooltip');
23
23
  ['popover', 'fade', 'show', 'bs-popover-' + this.placement].forEach(c => this._renderer.addClass(e, c));
24
24
  }
25
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PopoverWrapperComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
26
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.0.6", type: PopoverWrapperComponent, isStandalone: true, selector: "jss-popover-wrapper", exportAs: ["jssPopoverWrapper"], ngImport: i0, template: "<div class=\"popover-arrow\"></div>\r\n<h3 class=\"popover-header\" *ngIf=\"header\">{{header}}</h3>\r\n<div class=\"popover-body\">\r\n @if(_hasTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"$any(content)\"></ng-container>\r\n }@else{\r\n {{content}}\r\n }\r\n</div>", styles: [":host{position:relative;margin:var(--bs-popover-arrow-height)}:host .popover-arrow{position:absolute}:host.bs-popover-top .popover-arrow{bottom:calc(-1 * var(--bs-popover-arrow-height));left:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-bottom .popover-arrow{top:calc(-1 * var(--bs-popover-arrow-height));left:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-start .popover-arrow{right:calc(-1 * var(--bs-popover-arrow-height));top:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-end .popover-arrow{left:calc(-1 * var(--bs-popover-arrow-height));top:calc(50% - var(--bs-popover-arrow-width) / 2)}[dir=rtl] :host.bs-popover-start .popover-arrow{right:unset!important;left:calc(-1 * var(--bs-popover-arrow-height));transform:rotate(180deg)}[dir=rtl] :host.bs-popover-end .popover-arrow{left:unset!important;right:calc(-1 * var(--bs-popover-arrow-height));transform:rotate(180deg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
25
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: PopoverWrapperComponent, deps: [{ token: i0.ElementRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Component });
26
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: PopoverWrapperComponent, isStandalone: true, selector: "jss-popover-wrapper", exportAs: ["jssPopoverWrapper"], ngImport: i0, template: "<div class=\"popover-arrow\"></div>\r\n<h3 class=\"popover-header\" *ngIf=\"header\">{{header}}</h3>\r\n<div class=\"popover-body\">\r\n @if(_hasTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"$any(content)\"></ng-container>\r\n }@else{\r\n {{content}}\r\n }\r\n</div>", styles: [":host{position:relative;margin:var(--bs-popover-arrow-height)}:host .popover-arrow{position:absolute}:host.bs-popover-top .popover-arrow{bottom:calc(-1 * var(--bs-popover-arrow-height));left:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-bottom .popover-arrow{top:calc(-1 * var(--bs-popover-arrow-height));left:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-start .popover-arrow{right:calc(-1 * var(--bs-popover-arrow-height));top:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-end .popover-arrow{left:calc(-1 * var(--bs-popover-arrow-height));top:calc(50% - var(--bs-popover-arrow-width) / 2)}[dir=rtl] :host.bs-popover-start .popover-arrow{right:unset!important;left:calc(-1 * var(--bs-popover-arrow-height));transform:rotate(180deg)}[dir=rtl] :host.bs-popover-end .popover-arrow{left:unset!important;right:calc(-1 * var(--bs-popover-arrow-height));transform:rotate(180deg)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
27
27
  }
28
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PopoverWrapperComponent, decorators: [{
28
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: PopoverWrapperComponent, decorators: [{
29
29
  type: Component,
30
30
  args: [{ selector: 'jss-popover-wrapper', exportAs: 'jssPopoverWrapper', changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, imports: [CommonModule], template: "<div class=\"popover-arrow\"></div>\r\n<h3 class=\"popover-header\" *ngIf=\"header\">{{header}}</h3>\r\n<div class=\"popover-body\">\r\n @if(_hasTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"$any(content)\"></ng-container>\r\n }@else{\r\n {{content}}\r\n }\r\n</div>", styles: [":host{position:relative;margin:var(--bs-popover-arrow-height)}:host .popover-arrow{position:absolute}:host.bs-popover-top .popover-arrow{bottom:calc(-1 * var(--bs-popover-arrow-height));left:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-bottom .popover-arrow{top:calc(-1 * var(--bs-popover-arrow-height));left:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-start .popover-arrow{right:calc(-1 * var(--bs-popover-arrow-height));top:calc(50% - var(--bs-popover-arrow-width) / 2)}:host.bs-popover-end .popover-arrow{left:calc(-1 * var(--bs-popover-arrow-height));top:calc(50% - var(--bs-popover-arrow-width) / 2)}[dir=rtl] :host.bs-popover-start .popover-arrow{right:unset!important;left:calc(-1 * var(--bs-popover-arrow-height));transform:rotate(180deg)}[dir=rtl] :host.bs-popover-end .popover-arrow{left:unset!important;right:calc(-1 * var(--bs-popover-arrow-height));transform:rotate(180deg)}\n"] }]
31
31
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.Renderer2 }] });
@@ -34,10 +34,10 @@ class PopoverDirective {
34
34
  _overlayService;
35
35
  _elementRef;
36
36
  _viewRef;
37
- header = input();
38
- content = input(undefined, { alias: 'ng0Popover' });
39
- placement = input('bottom');
40
- triggerBy = input('click');
37
+ header = input(...(ngDevMode ? [undefined, { debugName: "header" }] : []));
38
+ content = input(undefined, ...(ngDevMode ? [{ debugName: "content", alias: 'ng0Popover' }] : [{ alias: 'ng0Popover' }]));
39
+ placement = input('bottom', ...(ngDevMode ? [{ debugName: "placement" }] : []));
40
+ triggerBy = input('click', ...(ngDevMode ? [{ debugName: "triggerBy" }] : []));
41
41
  _portal;
42
42
  _overlayRef;
43
43
  constructor(_overlayService, _elementRef, _viewRef) {
@@ -135,10 +135,10 @@ class PopoverDirective {
135
135
  ngOnDestroy() {
136
136
  this._disposeOverlay();
137
137
  }
138
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PopoverDirective, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
139
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.0.6", type: PopoverDirective, isStandalone: true, selector: "[ng0Popover]", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "ng0Popover", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, triggerBy: { classPropertyName: "triggerBy", publicName: "triggerBy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick()", "dblclick": "_onDblclick()", "mouseenter": "_onMouseEnter()", "mouseleave": "_onMouseLeave()", "focus": "_onFocus()", "focusout": "_onFocusout()" } }, exportAs: ["ng0Popover"], ngImport: i0 });
138
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: PopoverDirective, deps: [{ token: i1$1.Overlay }, { token: i0.ElementRef }, { token: i0.ViewContainerRef }], target: i0.ɵɵFactoryTarget.Directive });
139
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "20.2.1", type: PopoverDirective, isStandalone: true, selector: "[ng0Popover]", inputs: { header: { classPropertyName: "header", publicName: "header", isSignal: true, isRequired: false, transformFunction: null }, content: { classPropertyName: "content", publicName: "ng0Popover", isSignal: true, isRequired: false, transformFunction: null }, placement: { classPropertyName: "placement", publicName: "placement", isSignal: true, isRequired: false, transformFunction: null }, triggerBy: { classPropertyName: "triggerBy", publicName: "triggerBy", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "click": "_onClick()", "dblclick": "_onDblclick()", "mouseenter": "_onMouseEnter()", "mouseleave": "_onMouseLeave()", "focus": "_onFocus()", "focusout": "_onFocusout()" } }, exportAs: ["ng0Popover"], ngImport: i0 });
140
140
  }
141
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.0.6", ngImport: i0, type: PopoverDirective, decorators: [{
141
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: PopoverDirective, decorators: [{
142
142
  type: Directive,
143
143
  args: [{
144
144
  selector: '[ng0Popover]',
@@ -1 +1 @@
1
- {"version":3,"file":"bootkit-ng0-components-popover.mjs","sources":["../../../projects/ng0/components/popover/popover-wrapper/popover-wrapper.component.ts","../../../projects/ng0/components/popover/popover-wrapper/popover-wrapper.component.html","../../../projects/ng0/components/popover/popover.directive.ts","../../../projects/ng0/components/popover/bootkit-ng0-components-popover.ts"],"sourcesContent":["import { Component, ElementRef, Renderer2, ChangeDetectionStrategy, OnInit, TemplateRef } from '@angular/core';\r\nimport { PopoverContent, PopoverPlacement } from '../types';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'jss-popover-wrapper',\r\n exportAs: 'jssPopoverWrapper',\r\n styleUrls: ['./popover-wrapper.component.scss'],\r\n templateUrl: './popover-wrapper.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule]\r\n})\r\nexport class PopoverWrapperComponent implements OnInit {\r\n placement!: PopoverPlacement;\r\n header?: string;\r\n content: PopoverContent;\r\n protected _hasTemplate!: boolean;\r\n\r\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2,) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this._hasTemplate = this.content instanceof TemplateRef;\r\n const e = this._elementRef.nativeElement;\r\n this._renderer.setAttribute(e, 'role', 'tooltip');\r\n ['popover', 'fade', 'show', 'bs-popover-' + this.placement].forEach(c => this._renderer.addClass(e, c));\r\n }\r\n}\r\n","<div class=\"popover-arrow\"></div>\r\n<h3 class=\"popover-header\" *ngIf=\"header\">{{header}}</h3>\r\n<div class=\"popover-body\">\r\n @if(_hasTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"$any(content)\"></ng-container>\r\n }@else{\r\n {{content}}\r\n }\r\n</div>","import {\r\n Directive, TemplateRef, ViewContainerRef, OnDestroy, ElementRef, HostListener, OnInit,\r\n input\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { PopoverWrapperComponent } from './popover-wrapper/popover-wrapper.component';\r\nimport { PopoverContent, PopoverPlacement, PopoverTrigger } from './types';\r\n\r\n@Directive({\r\n selector: '[ng0Popover]',\r\n exportAs: 'ng0Popover',\r\n standalone: true\r\n})\r\nexport class PopoverDirective implements OnInit, OnDestroy {\r\n public header = input<string>();\r\n public content = input<PopoverContent>(undefined, { alias: 'ng0Popover' });\r\n public placement = input<PopoverPlacement>('bottom');\r\n public triggerBy = input<PopoverTrigger>('click');\r\n\r\n private _portal!: ComponentPortal<PopoverWrapperComponent>;\r\n private _overlayRef?: OverlayRef;\r\n\r\n constructor(\r\n private _overlayService: Overlay,\r\n private _elementRef: ElementRef,\r\n private _viewRef: ViewContainerRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this._portal = new ComponentPortal(PopoverWrapperComponent, this._viewRef);\r\n }\r\n\r\n private _createOverlay(): void {\r\n let wrapperInstance: PopoverWrapperComponent;\r\n\r\n const scrollStrategy = this._overlayService.scrollStrategies.reposition();\r\n const positionStrategy = this._overlayService.position()\r\n .flexibleConnectedTo(this._elementRef)\r\n .withPositions(this._getPositions());\r\n\r\n positionStrategy.positionChanges.subscribe(p => {\r\n // wrapperInstance.placement = (p.connectionPair as any).key;\r\n });\r\n\r\n this._overlayRef = this._overlayService.create({ scrollStrategy, positionStrategy });\r\n\r\n wrapperInstance = this._overlayRef.attach(this._portal).instance;\r\n wrapperInstance.header = this.header();\r\n wrapperInstance.content = this.content();\r\n wrapperInstance.placement = this.placement();\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = undefined;\r\n }\r\n }\r\n\r\n private _toggleOverlay() {\r\n if (this._overlayRef) {\r\n this._disposeOverlay();\r\n } else {\r\n this._createOverlay();\r\n }\r\n }\r\n\r\n private _getPositions(): any[] {\r\n const c = 'center', t = 'top', b = 'bottom', s = 'start', e = 'end';\r\n const top = { key: t, originX: c, originY: t, overlayX: c, overlayY: b, };\r\n const bottom = { key: b, originX: c, originY: b, overlayX: c, overlayY: t, };\r\n const start = { key: s, originX: s, originY: c, overlayX: e, overlayY: c, };\r\n const end = { key: e, originX: e, originY: c, overlayX: s, overlayY: c, };\r\n\r\n let positions: Array<any>;\r\n\r\n switch (this.placement()) {\r\n case 'bottom':\r\n positions = [bottom, top];\r\n break;\r\n case 'start':\r\n positions = [start, start];\r\n break;\r\n case 'end':\r\n positions = [end, start];\r\n break;\r\n case 'top':\r\n positions = [top, bottom];\r\n break;\r\n default:\r\n positions = [bottom, top];\r\n }\r\n\r\n return positions;\r\n }\r\n\r\n @HostListener('click') private _onClick(): void {\r\n if (this.triggerBy() === 'click') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('dblclick') private _onDblclick(): void {\r\n if (this.triggerBy() === 'dblclick') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('mouseenter') private _onMouseEnter(): void {\r\n if (this.triggerBy() === 'hover') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') private _onMouseLeave(): void {\r\n if (this.triggerBy() === 'hover') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('focus') private _onFocus(): void {\r\n if (this.triggerBy() === 'focus') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('focusout') private _onFocusout(): void {\r\n if (this.triggerBy() === 'focus') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._disposeOverlay();\r\n }\r\n}\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-popover.mjs","sources":["../../../projects/ng0/components/popover/popover-wrapper/popover-wrapper.component.ts","../../../projects/ng0/components/popover/popover-wrapper/popover-wrapper.component.html","../../../projects/ng0/components/popover/popover.directive.ts","../../../projects/ng0/components/popover/bootkit-ng0-components-popover.ts"],"sourcesContent":["import { Component, ElementRef, Renderer2, ChangeDetectionStrategy, OnInit, TemplateRef } from '@angular/core';\r\nimport { PopoverContent, PopoverPlacement } from '../types';\r\nimport { CommonModule } from '@angular/common';\r\n\r\n@Component({\r\n selector: 'jss-popover-wrapper',\r\n exportAs: 'jssPopoverWrapper',\r\n styleUrls: ['./popover-wrapper.component.scss'],\r\n templateUrl: './popover-wrapper.component.html',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n standalone: true,\r\n imports: [CommonModule]\r\n})\r\nexport class PopoverWrapperComponent implements OnInit {\r\n placement!: PopoverPlacement;\r\n header?: string;\r\n content: PopoverContent;\r\n protected _hasTemplate!: boolean;\r\n\r\n constructor(private _elementRef: ElementRef, private _renderer: Renderer2,) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this._hasTemplate = this.content instanceof TemplateRef;\r\n const e = this._elementRef.nativeElement;\r\n this._renderer.setAttribute(e, 'role', 'tooltip');\r\n ['popover', 'fade', 'show', 'bs-popover-' + this.placement].forEach(c => this._renderer.addClass(e, c));\r\n }\r\n}\r\n","<div class=\"popover-arrow\"></div>\r\n<h3 class=\"popover-header\" *ngIf=\"header\">{{header}}</h3>\r\n<div class=\"popover-body\">\r\n @if(_hasTemplate) {\r\n <ng-container [ngTemplateOutlet]=\"$any(content)\"></ng-container>\r\n }@else{\r\n {{content}}\r\n }\r\n</div>","import {\r\n Directive, TemplateRef, ViewContainerRef, OnDestroy, ElementRef, HostListener, OnInit,\r\n input\r\n} from '@angular/core';\r\nimport { Overlay, OverlayRef } from '@angular/cdk/overlay';\r\nimport { ComponentPortal } from '@angular/cdk/portal';\r\nimport { PopoverWrapperComponent } from './popover-wrapper/popover-wrapper.component';\r\nimport { PopoverContent, PopoverPlacement, PopoverTrigger } from './types';\r\n\r\n@Directive({\r\n selector: '[ng0Popover]',\r\n exportAs: 'ng0Popover',\r\n standalone: true\r\n})\r\nexport class PopoverDirective implements OnInit, OnDestroy {\r\n public header = input<string>();\r\n public content = input<PopoverContent>(undefined, { alias: 'ng0Popover' });\r\n public placement = input<PopoverPlacement>('bottom');\r\n public triggerBy = input<PopoverTrigger>('click');\r\n\r\n private _portal!: ComponentPortal<PopoverWrapperComponent>;\r\n private _overlayRef?: OverlayRef;\r\n\r\n constructor(\r\n private _overlayService: Overlay,\r\n private _elementRef: ElementRef,\r\n private _viewRef: ViewContainerRef) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this._portal = new ComponentPortal(PopoverWrapperComponent, this._viewRef);\r\n }\r\n\r\n private _createOverlay(): void {\r\n let wrapperInstance: PopoverWrapperComponent;\r\n\r\n const scrollStrategy = this._overlayService.scrollStrategies.reposition();\r\n const positionStrategy = this._overlayService.position()\r\n .flexibleConnectedTo(this._elementRef)\r\n .withPositions(this._getPositions());\r\n\r\n positionStrategy.positionChanges.subscribe(p => {\r\n // wrapperInstance.placement = (p.connectionPair as any).key;\r\n });\r\n\r\n this._overlayRef = this._overlayService.create({ scrollStrategy, positionStrategy });\r\n\r\n wrapperInstance = this._overlayRef.attach(this._portal).instance;\r\n wrapperInstance.header = this.header();\r\n wrapperInstance.content = this.content();\r\n wrapperInstance.placement = this.placement();\r\n }\r\n\r\n private _disposeOverlay(): void {\r\n if (this._overlayRef) {\r\n this._overlayRef.dispose();\r\n this._overlayRef = undefined;\r\n }\r\n }\r\n\r\n private _toggleOverlay() {\r\n if (this._overlayRef) {\r\n this._disposeOverlay();\r\n } else {\r\n this._createOverlay();\r\n }\r\n }\r\n\r\n private _getPositions(): any[] {\r\n const c = 'center', t = 'top', b = 'bottom', s = 'start', e = 'end';\r\n const top = { key: t, originX: c, originY: t, overlayX: c, overlayY: b, };\r\n const bottom = { key: b, originX: c, originY: b, overlayX: c, overlayY: t, };\r\n const start = { key: s, originX: s, originY: c, overlayX: e, overlayY: c, };\r\n const end = { key: e, originX: e, originY: c, overlayX: s, overlayY: c, };\r\n\r\n let positions: Array<any>;\r\n\r\n switch (this.placement()) {\r\n case 'bottom':\r\n positions = [bottom, top];\r\n break;\r\n case 'start':\r\n positions = [start, start];\r\n break;\r\n case 'end':\r\n positions = [end, start];\r\n break;\r\n case 'top':\r\n positions = [top, bottom];\r\n break;\r\n default:\r\n positions = [bottom, top];\r\n }\r\n\r\n return positions;\r\n }\r\n\r\n @HostListener('click') private _onClick(): void {\r\n if (this.triggerBy() === 'click') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('dblclick') private _onDblclick(): void {\r\n if (this.triggerBy() === 'dblclick') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('mouseenter') private _onMouseEnter(): void {\r\n if (this.triggerBy() === 'hover') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('mouseleave') private _onMouseLeave(): void {\r\n if (this.triggerBy() === 'hover') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('focus') private _onFocus(): void {\r\n if (this.triggerBy() === 'focus') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n @HostListener('focusout') private _onFocusout(): void {\r\n if (this.triggerBy() === 'focus') {\r\n this._toggleOverlay()\r\n }\r\n }\r\n\r\n ngOnDestroy(): void {\r\n this._disposeOverlay();\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":";;;;;;;MAaa,uBAAuB,CAAA;AAMZ,IAAA,WAAA;AAAiC,IAAA,SAAA;AALrD,IAAA,SAAS;AACT,IAAA,MAAM;AACN,IAAA,OAAO;AACG,IAAA,YAAY;IAEtB,WAAA,CAAoB,WAAuB,EAAU,SAAoB,EAAA;QAArD,IAAA,CAAA,WAAW,GAAX,WAAW;QAAsB,IAAA,CAAA,SAAS,GAAT,SAAS;IAC9D;IAEA,QAAQ,GAAA;QACJ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,YAAY,WAAW;AACvD,QAAA,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa;QACxC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC;AACjD,QAAA,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3G;uGAdS,uBAAuB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,SAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,qBAAA,EAAA,QAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECbpC,wSAQM,EAAA,MAAA,EAAA,CAAA,g6BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDGQ,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,IAAA,EAAA,QAAA,EAAA,QAAA,EAAA,MAAA,EAAA,CAAA,MAAA,EAAA,UAAA,EAAA,UAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,QAAA,EAAA,oBAAA,EAAA,MAAA,EAAA,CAAA,yBAAA,EAAA,kBAAA,EAAA,0BAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAEb,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBATnC,SAAS;+BACI,qBAAqB,EAAA,QAAA,EACrB,mBAAmB,EAAA,eAAA,EAGZ,uBAAuB,CAAC,MAAM,EAAA,UAAA,EACnC,IAAI,EAAA,OAAA,EACP,CAAC,YAAY,CAAC,EAAA,QAAA,EAAA,wSAAA,EAAA,MAAA,EAAA,CAAA,g6BAAA,CAAA,EAAA;;;MEGd,gBAAgB,CAAA;AAUb,IAAA,eAAA;AACA,IAAA,WAAA;AACA,IAAA,QAAA;IAXL,MAAM,GAAG,KAAK,CAAA,IAAA,SAAA,GAAA,CAAA,SAAA,EAAA,EAAA,SAAA,EAAA,QAAA,EAAA,CAAA,GAAA,EAAA,CAAA,CAAU;AACxB,IAAA,OAAO,GAAG,KAAK,CAAiB,SAAS,2CAAI,KAAK,EAAE,YAAY,EAAA,CAAA,GAAA,CAArB,EAAE,KAAK,EAAE,YAAY,EAAE,GAAC;AACnE,IAAA,SAAS,GAAG,KAAK,CAAmB,QAAQ,qDAAC;AAC7C,IAAA,SAAS,GAAG,KAAK,CAAiB,OAAO,qDAAC;AAEzC,IAAA,OAAO;AACP,IAAA,WAAW;AAEnB,IAAA,WAAA,CACY,eAAwB,EACxB,WAAuB,EACvB,QAA0B,EAAA;QAF1B,IAAA,CAAA,eAAe,GAAf,eAAe;QACf,IAAA,CAAA,WAAW,GAAX,WAAW;QACX,IAAA,CAAA,QAAQ,GAAR,QAAQ;IACpB;IAEA,QAAQ,GAAA;AACJ,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,eAAe,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC;IAC9E;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,eAAwC;QAE5C,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,UAAU,EAAE;AACzE,QAAA,MAAM,gBAAgB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ;AACjD,aAAA,mBAAmB,CAAC,IAAI,CAAC,WAAW;AACpC,aAAA,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;AAExC,QAAA,gBAAgB,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAG;;AAE/C,QAAA,CAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAEpF,QAAA,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ;AAChE,QAAA,eAAe,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE;AACtC,QAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE;AACxC,QAAA,eAAe,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;IAChD;IAEQ,eAAe,GAAA;AACnB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;AAClB,YAAA,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;AAC1B,YAAA,IAAI,CAAC,WAAW,GAAG,SAAS;QAChC;IACJ;IAEQ,cAAc,GAAA;AAClB,QAAA,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,eAAe,EAAE;QAC1B;aAAO;YACH,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEQ,aAAa,GAAA;AACjB,QAAA,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,QAAQ,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,KAAK;QACnE,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG;QACzE,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG;QAC5E,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG;QAC3E,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG;AAEzE,QAAA,IAAI,SAAqB;AAEzB,QAAA,QAAQ,IAAI,CAAC,SAAS,EAAE;AACpB,YAAA,KAAK,QAAQ;AACT,gBAAA,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;gBACzB;AACJ,YAAA,KAAK,OAAO;AACR,gBAAA,SAAS,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC1B;AACJ,YAAA,KAAK,KAAK;AACN,gBAAA,SAAS,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;gBACxB;AACJ,YAAA,KAAK,KAAK;AACN,gBAAA,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC;gBACzB;AACJ,YAAA;AACI,gBAAA,SAAS,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC;;AAGjC,QAAA,OAAO,SAAS;IACpB;IAE+B,QAAQ,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEkC,WAAW,GAAA;AACzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,UAAU,EAAE;YACjC,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEoC,aAAa,GAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEoC,aAAa,GAAA;AAC7C,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAE+B,QAAQ,GAAA;AACnC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEkC,WAAW,GAAA;AACzC,QAAA,IAAI,IAAI,CAAC,SAAS,EAAE,KAAK,OAAO,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE;QACzB;IACJ;IAEA,WAAW,GAAA;QACP,IAAI,CAAC,eAAe,EAAE;IAC1B;uGAzHS,gBAAgB,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAAA,IAAA,CAAA,OAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,EAAA,EAAA,KAAA,EAAA,EAAA,CAAA,gBAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,cAAA,EAAA,MAAA,EAAA,EAAA,MAAA,EAAA,EAAA,iBAAA,EAAA,QAAA,EAAA,UAAA,EAAA,QAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,OAAA,EAAA,EAAA,iBAAA,EAAA,SAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,iBAAA,EAAA,WAAA,EAAA,UAAA,EAAA,WAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,IAAA,EAAA,EAAA,SAAA,EAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,YAAA,EAAA,UAAA,EAAA,eAAA,EAAA,EAAA,EAAA,QAAA,EAAA,CAAA,YAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA;;2FAAhB,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAL5B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACP,oBAAA,QAAQ,EAAE,cAAc;AACxB,oBAAA,QAAQ,EAAE,YAAY;AACtB,oBAAA,UAAU,EAAE;AACf,iBAAA;sIAoFkC,QAAQ,EAAA,CAAA;sBAAtC,YAAY;uBAAC,OAAO;gBAMa,WAAW,EAAA,CAAA;sBAA5C,YAAY;uBAAC,UAAU;gBAMY,aAAa,EAAA,CAAA;sBAAhD,YAAY;uBAAC,YAAY;gBAMU,aAAa,EAAA,CAAA;sBAAhD,YAAY;uBAAC,YAAY;gBAMK,QAAQ,EAAA,CAAA;sBAAtC,YAAY;uBAAC,OAAO;gBAMa,WAAW,EAAA,CAAA;sBAA5C,YAAY;uBAAC,UAAU;;;AC/H5B;;AAEG;;;;"}
@@ -0,0 +1,427 @@
1
+ import * as i0 from '@angular/core';
2
+ import { signal, inject, DOCUMENT, DestroyRef, ElementRef, Renderer2, ChangeDetectorRef, input, booleanAttribute, model, TemplateRef, forwardRef, HostListener, ContentChild, ViewChild, ChangeDetectionStrategy, ViewEncapsulation, Component, NgModule } from '@angular/core';
3
+ import * as i1 from '@angular/common';
4
+ import { CommonModule } from '@angular/common';
5
+ import { dataSourceAttribute, defaultBooleanValueComparer, BooleanValueComparerAttribute, defaultValueExtractor, ValueExtractorAttribute, stringFilter, DataRequest } from '@bootkit/ng0/data';
6
+ import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
7
+ import { NG_VALUE_ACCESSOR } from '@angular/forms';
8
+ import * as i2 from '@angular/cdk/overlay';
9
+ import { Overlay, ViewportRuler, OverlayModule } from '@angular/cdk/overlay';
10
+ import { CssClassAttribute, _IdGenerator } from '@bootkit/ng0/common';
11
+ import { LocalizationService, defaultValueFormatter, ValueFormatterAttribute } from '@bootkit/ng0/localization';
12
+ import * as i3 from '@angular/cdk/listbox';
13
+ import { CdkListboxModule } from '@angular/cdk/listbox';
14
+
15
+ /**
16
+ * Select component that allows users to choose an option from a dropdown list.
17
+ */
18
+ class SelectComponent {
19
+ _resizeObserver;
20
+ _resizeObserverInitialized = false;
21
+ _viewpoerRulerSubscription;
22
+ _cdkListboxValue = signal(undefined, ...(ngDevMode ? [{ debugName: "_cdkListboxValue" }] : []));
23
+ _filterElementRef;
24
+ _onChangeCallback;
25
+ _onTouchedCallback;
26
+ _options = signal([], ...(ngDevMode ? [{ debugName: "_options" }] : []));
27
+ _isDisabled = signal(false, ...(ngDevMode ? [{ debugName: "_isDisabled" }] : []));
28
+ _selectedOptionIndex = signal(-1, ...(ngDevMode ? [{ debugName: "_selectedOptionIndex" }] : []));
29
+ _activeOptionIndex = signal(-1, ...(ngDevMode ? [{ debugName: "_activeOptionIndex" }] : []));
30
+ _optionTemplate;
31
+ _positionStrategy;
32
+ _scrollStrategy;
33
+ _overlay = inject(Overlay);
34
+ _document = inject(DOCUMENT);
35
+ _ls = inject(LocalizationService);
36
+ _destroyRef = inject(DestroyRef);
37
+ _el = inject((ElementRef));
38
+ _renderer = inject(Renderer2);
39
+ _viewportRuler = inject(ViewportRuler);
40
+ _changeDetector = inject(ChangeDetectorRef);
41
+ /**
42
+ * The data source for the select component.
43
+ * This can be an array of data, a function that returns an observable of data,
44
+ * or an instance of DataSource.
45
+ */
46
+ source = input.required(...(ngDevMode ? [{ debugName: "source", transform: v => dataSourceAttribute(v) }] : [{
47
+ transform: v => dataSourceAttribute(v)
48
+ }]));
49
+ /**
50
+ * Indicates whether multi selection is enabled or not.
51
+ */
52
+ multiple = input(false, ...(ngDevMode ? [{ debugName: "multiple", transform: booleanAttribute }] : [{
53
+ transform: booleanAttribute
54
+ }]));
55
+ /**
56
+ * Indicates whether the dropdown is open or closed.
57
+ */
58
+ open = model(false, ...(ngDevMode ? [{ debugName: "open" }] : []));
59
+ /**
60
+ * A custom comparer function or the name of a field for comparing two objects.
61
+ */
62
+ compareBy = input(defaultBooleanValueComparer, ...(ngDevMode ? [{ debugName: "compareBy", transform: BooleanValueComparerAttribute }] : [{
63
+ transform: BooleanValueComparerAttribute
64
+ }]));
65
+ /**
66
+ * Custom format function to convert an item to a string for display.
67
+ * Default converts the item to a string using its toString method.
68
+ */
69
+ formatBy = input(defaultValueFormatter, ...(ngDevMode ? [{ debugName: "formatBy", transform: ValueFormatterAttribute(this._ls.get()) }] : [{
70
+ transform: ValueFormatterAttribute(this._ls.get())
71
+ }]));
72
+ /**
73
+ * Custom value extractor function to extract the value of any object while writing values.
74
+ */
75
+ writeBy = input(defaultValueExtractor, ...(ngDevMode ? [{ debugName: "writeBy", transform: ValueExtractorAttribute }] : [{
76
+ transform: ValueExtractorAttribute
77
+ }]));
78
+ /**
79
+ * Indicates whether the dropdown is filterable.
80
+ */
81
+ filterable = input(false, ...(ngDevMode ? [{ debugName: "filterable", transform: booleanAttribute }] : [{ transform: booleanAttribute }]));
82
+ /**
83
+ * Placeholder text for the filter input field.
84
+ */
85
+ filterPlaceholder = input('', ...(ngDevMode ? [{ debugName: "filterPlaceholder" }] : []));
86
+ /**
87
+ * Custom filter function to filter items based on a filter value.
88
+ * Default checks if the item contains the filter value (case-insensitive).
89
+ */
90
+ filterBy = input(stringFilter, ...(ngDevMode ? [{ debugName: "filterBy" }] : []));
91
+ /**
92
+ * CSS class or classes to apply to the list container.
93
+ */
94
+ itemClass = input((item) => undefined, ...(ngDevMode ? [{ debugName: "itemClass", transform: CssClassAttribute }] : [{
95
+ transform: CssClassAttribute
96
+ }]));
97
+ constructor() {
98
+ this._renderer.addClass(this._el.nativeElement, 'form-select');
99
+ this._renderer.setAttribute(this._el.nativeElement, 'tabindex', '0');
100
+ this._scrollStrategy = this._overlay.scrollStrategies.block();
101
+ }
102
+ ngOnInit() {
103
+ this._loadItems();
104
+ this._handleDataSourceChange();
105
+ }
106
+ _loadItems() {
107
+ var r = new DataRequest();
108
+ this.source().load(r).pipe(takeUntilDestroyed(this._destroyRef)).subscribe(res => {
109
+ this._insertOptions(0, ...res.data);
110
+ });
111
+ }
112
+ _handleDataSourceChange() {
113
+ let options = this._options();
114
+ this.source().change.subscribe(e => {
115
+ e.changes.forEach(change => {
116
+ switch (change.type) {
117
+ case 'insert':
118
+ this._insertOptions(change.index, ...change.items);
119
+ break;
120
+ case 'replace':
121
+ options[change.index].value = change.value;
122
+ break;
123
+ case 'remove':
124
+ options.splice(change.index, change.count);
125
+ }
126
+ });
127
+ });
128
+ }
129
+ /**
130
+ * Selects an option by index
131
+ */
132
+ _selectByIndex(index) {
133
+ let optionsCount = this._options().length;
134
+ if (optionsCount == 0 || index < 0 || index > optionsCount - 1) {
135
+ throw new Error('Index out of range');
136
+ }
137
+ if (index == this._selectedOptionIndex()) {
138
+ return;
139
+ }
140
+ let option = this._options()[index];
141
+ this._cdkListboxValue.set(this.writeBy()(option.value));
142
+ this._onChangeCallback(this._cdkListboxValue());
143
+ }
144
+ // /**
145
+ // * Sets an option as active
146
+ // */
147
+ // public active(index: number) {
148
+ // if (index < 0) {
149
+ // throw Error();
150
+ // }
151
+ // this._activeOptionIndex.set(index);
152
+ // if (this.open()) {
153
+ // this.scrollItemIntoView(this._activeOptionIndex(), 'nearest');
154
+ // }
155
+ // }
156
+ // /**
157
+ // * Scrolls the item at the specified index into view within the dropdown list.
158
+ // * @param index The index of the item to scroll into view.
159
+ // * @param position The vertical alignment of the item after scrolling.
160
+ // * Can be 'start', 'center', 'end', or 'nearest'.
161
+ // * Default is 'nearest'.
162
+ // * @param behavior The scrolling behavior.
163
+ // */
164
+ // public scrollItemIntoView(index: number, position?: ScrollLogicalPosition, behavior?: ScrollBehavior) {
165
+ // let item = this._options()[index];
166
+ // let elm = this._document.getElementById(item.id) as HTMLUListElement;
167
+ // elm!.scrollIntoView({ block: position, behavior: behavior });
168
+ // }
169
+ _insertOptions(index, ...items) {
170
+ // let filter = this.filterBy()()
171
+ var options = items.map(x => ({
172
+ id: this._getNextOptionId(),
173
+ value: x,
174
+ show: true
175
+ }));
176
+ if (Number.isInteger(index)) {
177
+ this._options().splice(index, 0, ...options);
178
+ }
179
+ else {
180
+ this._options().push(...options);
181
+ }
182
+ this._changeDetector.markForCheck();
183
+ }
184
+ writeValue(obj) {
185
+ let value;
186
+ if (this.multiple()) {
187
+ if (Array.isArray(obj)) {
188
+ value = obj;
189
+ }
190
+ else if (obj === null || obj === undefined) {
191
+ value = [];
192
+ }
193
+ else {
194
+ throw Error('Provide an array or null as the value of ng0-select component.');
195
+ }
196
+ }
197
+ else {
198
+ value = [obj];
199
+ }
200
+ this._cdkListboxValue.set(value);
201
+ // Update selection state of items
202
+ // let compareBy = this.compareBy();
203
+ // if (this.multiple()) {
204
+ // this._items().forEach(x => x.selected = (value as any[]).some(y => compareBy(x.value, y)));
205
+ // } else {
206
+ // this._items().forEach(x => x.selected = compareBy(x.value, value));
207
+ // }
208
+ }
209
+ registerOnChange(fn) {
210
+ this._onChangeCallback = fn;
211
+ }
212
+ registerOnTouched(fn) {
213
+ this._onTouchedCallback = fn;
214
+ }
215
+ setDisabledState(isDisabled) {
216
+ this._isDisabled.set(isDisabled);
217
+ }
218
+ _onKeydown(e, firedByFilter = false) {
219
+ let open = this.open();
220
+ if (this._isDisabled())
221
+ return;
222
+ let optionsCount = this._options().length;
223
+ if (optionsCount == 0) {
224
+ return;
225
+ }
226
+ switch (e.key) {
227
+ case 'ArrowDown':
228
+ if (open) {
229
+ if (this._activeOptionIndex() < optionsCount - 1) {
230
+ // this.active(this._activeOptionIndex() + 1);
231
+ }
232
+ }
233
+ else {
234
+ if (this._selectedOptionIndex() < optionsCount - 1) {
235
+ this._selectByIndex(this._selectedOptionIndex() + 1);
236
+ }
237
+ }
238
+ e.preventDefault();
239
+ break;
240
+ case 'ArrowUp':
241
+ if (open) {
242
+ if (this._activeOptionIndex() > 0) {
243
+ // this.active(this._activeOptionIndex()! - 1);
244
+ }
245
+ }
246
+ else {
247
+ if (this._selectedOptionIndex() > 0) {
248
+ this._selectByIndex(this._selectedOptionIndex() - 1);
249
+ }
250
+ }
251
+ e.preventDefault();
252
+ break;
253
+ case 'Enter':
254
+ if (open) {
255
+ if (this._activeOptionIndex() == this._selectedOptionIndex()) {
256
+ this.open.set(false);
257
+ }
258
+ else {
259
+ this._selectByIndex(this._activeOptionIndex());
260
+ this.open.set(false);
261
+ }
262
+ }
263
+ else {
264
+ this.open.set(true);
265
+ }
266
+ e.preventDefault();
267
+ break;
268
+ case ' ':
269
+ if (!open) {
270
+ this.open.set(true);
271
+ }
272
+ e.preventDefault();
273
+ break;
274
+ case 'Escape':
275
+ this.open.set(false);
276
+ e.preventDefault();
277
+ break;
278
+ case 'Home':
279
+ if (open) {
280
+ // this.active(0);
281
+ }
282
+ else {
283
+ this._selectByIndex(0);
284
+ }
285
+ e.preventDefault();
286
+ break;
287
+ case 'End':
288
+ if (open) {
289
+ // this.active(optionsCount - 1);
290
+ }
291
+ else {
292
+ this._selectByIndex(optionsCount - 1);
293
+ }
294
+ e.preventDefault();
295
+ break;
296
+ }
297
+ }
298
+ _onFilterBlur() {
299
+ // use setTimeout to allow next element receives the focus.
300
+ setTimeout(() => {
301
+ if (!this._el.nativeElement.matches(':focus')) {
302
+ this.open.set(false);
303
+ }
304
+ }, 0);
305
+ }
306
+ _filterItems(filter) {
307
+ let filterFunc = this.filterBy();
308
+ this._options().forEach(x => x.show = filterFunc(x.value, filter));
309
+ }
310
+ _onOverlayAttach() {
311
+ this._activeOptionIndex.set(this._selectedOptionIndex());
312
+ this._listenToResizeEvents();
313
+ if (this.filterable()) {
314
+ setTimeout(() => {
315
+ this._filterElementRef?.nativeElement.focus();
316
+ }, 0);
317
+ }
318
+ if (this._selectedOptionIndex() > -1) {
319
+ // this.scrollItemIntoView(this._selectedOptionIndex(), 'start', 'instant');
320
+ }
321
+ }
322
+ _onOverlayDetach() {
323
+ this._unlistenFromResizeEvents();
324
+ if (this.filterable()) {
325
+ this._el?.nativeElement.focus();
326
+ this._options().forEach(x => x.show = false);
327
+ }
328
+ }
329
+ _getNextOptionId() {
330
+ return `ng0-select-item-${_IdGenerator.next().toString()}`;
331
+ }
332
+ _listenToResizeEvents() {
333
+ this._viewportRuler.change().subscribe(x => {
334
+ this.open.set(false);
335
+ });
336
+ this._resizeObserver = new ResizeObserver(e => {
337
+ // Sterategy 1: close overlay
338
+ if (!this._resizeObserverInitialized) {
339
+ this._resizeObserverInitialized = true;
340
+ return;
341
+ }
342
+ else {
343
+ this.open.set(false);
344
+ this._resizeObserver?.disconnect();
345
+ }
346
+ // Sterategy 2: update overlay size
347
+ // const width = (e[0].target as HTMLDivElement).offsetWidth;
348
+ // this._connectedOverlay.overlayRef.updateSize({ width });
349
+ });
350
+ this._resizeObserver.observe(this._el.nativeElement);
351
+ }
352
+ _unlistenFromResizeEvents() {
353
+ this._viewpoerRulerSubscription?.unsubscribe();
354
+ this._viewpoerRulerSubscription = undefined;
355
+ this._resizeObserver?.disconnect();
356
+ this._resizeObserver = undefined;
357
+ this._resizeObserverInitialized = false;
358
+ }
359
+ _onHostClick(e) {
360
+ if (this._isDisabled())
361
+ return;
362
+ this.open.update(x => !x);
363
+ // this._onTouchedCallback?.(this._selectedValue());
364
+ }
365
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
366
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.2.1", type: SelectComponent, isStandalone: true, selector: "ng0-select", inputs: { source: { classPropertyName: "source", publicName: "source", isSignal: true, isRequired: true, transformFunction: null }, multiple: { classPropertyName: "multiple", publicName: "multiple", isSignal: true, isRequired: false, transformFunction: null }, open: { classPropertyName: "open", publicName: "open", isSignal: true, isRequired: false, transformFunction: null }, compareBy: { classPropertyName: "compareBy", publicName: "compareBy", isSignal: true, isRequired: false, transformFunction: null }, formatBy: { classPropertyName: "formatBy", publicName: "formatBy", isSignal: true, isRequired: false, transformFunction: null }, writeBy: { classPropertyName: "writeBy", publicName: "writeBy", isSignal: true, isRequired: false, transformFunction: null }, filterable: { classPropertyName: "filterable", publicName: "filterable", isSignal: true, isRequired: false, transformFunction: null }, filterPlaceholder: { classPropertyName: "filterPlaceholder", publicName: "filterPlaceholder", isSignal: true, isRequired: false, transformFunction: null }, filterBy: { classPropertyName: "filterBy", publicName: "filterBy", isSignal: true, isRequired: false, transformFunction: null }, itemClass: { classPropertyName: "itemClass", publicName: "itemClass", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { open: "openChange" }, host: { listeners: { "keydown": "_onKeydown($event)", "click": "_onHostClick($event)" }, properties: { "class.ng0-select-open": "open()", "class.ng0-select-loading": "source().isLoading()", "attr.aria-activedescendant": "_activeOptionIndex() > -1 ? (_options()[_activeOptionIndex()].id) : undefined", "attr.disabled": "_isDisabled()", "attr.aria-disabled": "_isDisabled()" } }, providers: [{
367
+ provide: NG_VALUE_ACCESSOR,
368
+ useExisting: forwardRef(() => SelectComponent),
369
+ multi: true
370
+ }], queries: [{ propertyName: "_optionTemplate", first: true, predicate: TemplateRef, descendants: true }], viewQueries: [{ propertyName: "_filterElementRef", first: true, predicate: ["filterInput"], descendants: true }], exportAs: ["ng0Select"], ngImport: i0, template: "@let formattedValue = formatBy()(_cdkListboxValue());\r\n\r\n@if(formattedValue == null || formattedValue == '') {\r\n&nbsp;\r\n}@else {\r\n{{formattedValue}}\r\n}\r\n\r\n@if(source().isLoading()) {\r\n<div class=\"spinner-border text-success spinner-border-sm ng0-select-spinner\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n</div>\r\n}\r\n\r\n<ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"_el.nativeElement\"\r\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\r\n [cdkConnectedOverlayOpen]=\"open()\"\r\n [cdkConnectedOverlayPush]=\"false\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown-container', 'shadow']\"\r\n [cdkConnectedOverlayWidth]=\"_el.nativeElement.clientWidth\"\r\n (overlayOutsideClick)=\"open.set(false)\"\r\n (attach)=\"_onOverlayAttach()\"\r\n (detach)=\"_onOverlayDetach()\">\r\n\r\n @if(filterable()) {\r\n <div class=\"ng0-select-filter-container border-bottom\">\r\n <input #filterInput\r\n type=\"text\"\r\n class=\"ng0-select-filter-input form-control form-control-sm\"\r\n [attr.placeholder]=\"filterPlaceholder()\"\r\n (keydown)=\"_onKeydown($event, true)\"\r\n (blur)=\"_onFilterBlur()\"\r\n (input)=\"_filterItems($event.target.value)\">\r\n </div>\r\n }\r\n\r\n <ul class=\"ng0-select-dropdown\"\r\n cdkListbox\r\n [cdkListboxValue]=\"_cdkListboxValue()\"\r\n [attr.tabindex]=\"_isDisabled() ? undefined : -1\"\r\n [class.is-open]=\"open()\">\r\n\r\n @for (option of _options(); track $index) {\r\n <li [cdkOption]=\"option.value\"\r\n #cdkOption=\"cdkOption\"\r\n [attr.id]=\"option.id\"\r\n class=\"ng0-select-option\"\r\n [class.ng0-select-option-active]=\"cdkOption.isActive()\"\r\n [class.ng0-select-option-selected]=\"cdkOption.isSelected()\"\r\n [class.ng0-select-option-filtered]=\"!option.show\"\r\n (click)=\"cdkOption.select(); open.set(false)\"\r\n (keyup.enter)=\"open.set(false)\">\r\n @if(_optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_optionTemplate; context: { $implicit: option}\" />\r\n } @else {\r\n @let v = formatBy()(option.value);\r\n @if(v) {\r\n {{v}}\r\n }@else {\r\n &nbsp;\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>", styles: ["ng0-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;display:flex!important;align-items:center}ng0-select.disabled{background-color:var(--bs-secondary-bg)}.ng0-select-dropdown-container{display:flex;flex-direction:column;background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);padding:.5rem var(--bs-dropdown-padding-x);--ng0-select-item-padding-x: 1rem;--ng0-select-item-padding-y: .25rem}.ng0-select-dropdown-container ul.ng0-select-dropdown{list-style:none;border-start-start-radius:0;border-start-end-radius:0;padding:0!important;margin:0;flex-grow:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.4) transparent}.ng0-select-dropdown-container ul.ng0-select-dropdown.is-open{border-top:none}.ng0-select-dropdown-container ul.ng0-select-dropdown li{overflow:hidden;cursor:pointer;padding:var(--ng0-select-item-padding-y) var(--ng0-select-item-padding-x)}.ng0-select-dropdown-container ul.ng0-select-dropdown li:hover{background-color:var(--bs-tertiary-bg)}.ng0-select-dropdown-container ul.ng0-select-dropdown li.ng0-select-option-selected{background-color:var(--bs-primary);color:var(--bs-light)}.ng0-select-dropdown-container ul.ng0-select-dropdown li.ng0-select-option-active:not(.ng0-select-option-selected){background-color:var(--bs-gray-300);color:var(--bs-body)}.ng0-select-dropdown-container ul.ng0-select-dropdown li.ng0-select-option-filtered{display:none!important}.ng0-select-dropdown-container .ng0-select-filter-container{padding:1rem var(--ng0-select-item-padding-x);background-color:inherit}.ng0-select-dropdown-container .ng0-select-filter-container .ng0-select-filter-input{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: OverlayModule }, { kind: "directive", type: i2.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"] }, { kind: "ngmodule", type: CdkListboxModule }, { kind: "directive", type: i3.CdkListbox, selector: "[cdkListbox]", inputs: ["id", "tabindex", "cdkListboxValue", "cdkListboxMultiple", "cdkListboxDisabled", "cdkListboxUseActiveDescendant", "cdkListboxOrientation", "cdkListboxCompareWith", "cdkListboxNavigationWrapDisabled", "cdkListboxNavigatesDisabledOptions"], outputs: ["cdkListboxValueChange"], exportAs: ["cdkListbox"] }, { kind: "directive", type: i3.CdkOption, selector: "[cdkOption]", inputs: ["id", "cdkOption", "cdkOptionTypeaheadLabel", "cdkOptionDisabled", "tabindex"], exportAs: ["cdkOption"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
371
+ }
372
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectComponent, decorators: [{
373
+ type: Component,
374
+ args: [{ selector: 'ng0-select', exportAs: 'ng0Select', standalone: true, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
375
+ CommonModule,
376
+ OverlayModule,
377
+ CdkListboxModule
378
+ ], providers: [{
379
+ provide: NG_VALUE_ACCESSOR,
380
+ useExisting: forwardRef(() => SelectComponent),
381
+ multi: true
382
+ }], host: {
383
+ '[class.ng0-select-open]': 'open()',
384
+ '[class.ng0-select-loading]': 'source().isLoading()',
385
+ '[attr.aria-activedescendant]': '_activeOptionIndex() > -1 ? (_options()[_activeOptionIndex()].id) : undefined',
386
+ '[attr.disabled]': '_isDisabled()',
387
+ '[attr.aria-disabled]': '_isDisabled()'
388
+ }, template: "@let formattedValue = formatBy()(_cdkListboxValue());\r\n\r\n@if(formattedValue == null || formattedValue == '') {\r\n&nbsp;\r\n}@else {\r\n{{formattedValue}}\r\n}\r\n\r\n@if(source().isLoading()) {\r\n<div class=\"spinner-border text-success spinner-border-sm ng0-select-spinner\" role=\"status\">\r\n <span class=\"visually-hidden\">Loading...</span>\r\n</div>\r\n}\r\n\r\n<ng-template cdkConnectedOverlay\r\n [cdkConnectedOverlayOrigin]=\"_el.nativeElement\"\r\n [cdkConnectedOverlayScrollStrategy]=\"_scrollStrategy\"\r\n [cdkConnectedOverlayOpen]=\"open()\"\r\n [cdkConnectedOverlayPush]=\"false\"\r\n [cdkConnectedOverlayFlexibleDimensions]=\"true\"\r\n [cdkConnectedOverlayPanelClass]=\"['ng0-select-dropdown-container', 'shadow']\"\r\n [cdkConnectedOverlayWidth]=\"_el.nativeElement.clientWidth\"\r\n (overlayOutsideClick)=\"open.set(false)\"\r\n (attach)=\"_onOverlayAttach()\"\r\n (detach)=\"_onOverlayDetach()\">\r\n\r\n @if(filterable()) {\r\n <div class=\"ng0-select-filter-container border-bottom\">\r\n <input #filterInput\r\n type=\"text\"\r\n class=\"ng0-select-filter-input form-control form-control-sm\"\r\n [attr.placeholder]=\"filterPlaceholder()\"\r\n (keydown)=\"_onKeydown($event, true)\"\r\n (blur)=\"_onFilterBlur()\"\r\n (input)=\"_filterItems($event.target.value)\">\r\n </div>\r\n }\r\n\r\n <ul class=\"ng0-select-dropdown\"\r\n cdkListbox\r\n [cdkListboxValue]=\"_cdkListboxValue()\"\r\n [attr.tabindex]=\"_isDisabled() ? undefined : -1\"\r\n [class.is-open]=\"open()\">\r\n\r\n @for (option of _options(); track $index) {\r\n <li [cdkOption]=\"option.value\"\r\n #cdkOption=\"cdkOption\"\r\n [attr.id]=\"option.id\"\r\n class=\"ng0-select-option\"\r\n [class.ng0-select-option-active]=\"cdkOption.isActive()\"\r\n [class.ng0-select-option-selected]=\"cdkOption.isSelected()\"\r\n [class.ng0-select-option-filtered]=\"!option.show\"\r\n (click)=\"cdkOption.select(); open.set(false)\"\r\n (keyup.enter)=\"open.set(false)\">\r\n @if(_optionTemplate) {\r\n <ng-container *ngTemplateOutlet=\"_optionTemplate; context: { $implicit: option}\" />\r\n } @else {\r\n @let v = formatBy()(option.value);\r\n @if(v) {\r\n {{v}}\r\n }@else {\r\n &nbsp;\r\n }\r\n }\r\n </li>\r\n }\r\n </ul>\r\n</ng-template>", styles: ["ng0-select{user-select:none;-webkit-user-select:none;-moz-user-select:none;display:flex!important;align-items:center}ng0-select.disabled{background-color:var(--bs-secondary-bg)}.ng0-select-dropdown-container{display:flex;flex-direction:column;background-color:var(--bs-body-bg);border-radius:var(--bs-border-radius);padding:.5rem var(--bs-dropdown-padding-x);--ng0-select-item-padding-x: 1rem;--ng0-select-item-padding-y: .25rem}.ng0-select-dropdown-container ul.ng0-select-dropdown{list-style:none;border-start-start-radius:0;border-start-end-radius:0;padding:0!important;margin:0;flex-grow:1;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(0,0,0,.4) transparent}.ng0-select-dropdown-container ul.ng0-select-dropdown.is-open{border-top:none}.ng0-select-dropdown-container ul.ng0-select-dropdown li{overflow:hidden;cursor:pointer;padding:var(--ng0-select-item-padding-y) var(--ng0-select-item-padding-x)}.ng0-select-dropdown-container ul.ng0-select-dropdown li:hover{background-color:var(--bs-tertiary-bg)}.ng0-select-dropdown-container ul.ng0-select-dropdown li.ng0-select-option-selected{background-color:var(--bs-primary);color:var(--bs-light)}.ng0-select-dropdown-container ul.ng0-select-dropdown li.ng0-select-option-active:not(.ng0-select-option-selected){background-color:var(--bs-gray-300);color:var(--bs-body)}.ng0-select-dropdown-container ul.ng0-select-dropdown li.ng0-select-option-filtered{display:none!important}.ng0-select-dropdown-container .ng0-select-filter-container{padding:1rem var(--ng0-select-item-padding-x);background-color:inherit}.ng0-select-dropdown-container .ng0-select-filter-container .ng0-select-filter-input{width:100%}\n"] }]
389
+ }], ctorParameters: () => [], propDecorators: { _filterElementRef: [{
390
+ type: ViewChild,
391
+ args: ['filterInput']
392
+ }], _optionTemplate: [{
393
+ type: ContentChild,
394
+ args: [TemplateRef]
395
+ }], _onKeydown: [{
396
+ type: HostListener,
397
+ args: ['keydown', ['$event']]
398
+ }], _onHostClick: [{
399
+ type: HostListener,
400
+ args: ['click', ['$event']]
401
+ }] } });
402
+
403
+ const Items = [SelectComponent];
404
+ /**
405
+ * Select module.
406
+ */
407
+ class SelectModule {
408
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
409
+ static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.2.1", ngImport: i0, type: SelectModule, imports: [SelectComponent], exports: [SelectComponent] });
410
+ static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectModule, imports: [Items] });
411
+ }
412
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.2.1", ngImport: i0, type: SelectModule, decorators: [{
413
+ type: NgModule,
414
+ args: [{
415
+ imports: Items,
416
+ exports: Items
417
+ }]
418
+ }] });
419
+
420
+ // export * from './types';
421
+
422
+ /**
423
+ * Generated bundle index. Do not edit.
424
+ */
425
+
426
+ export { SelectComponent, SelectModule };
427
+ //# sourceMappingURL=bootkit-ng0-components-select.mjs.map