@mintplayer/ng-bootstrap 21.7.0 → 21.8.0

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 (65) hide show
  1. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs +16 -9
  2. package/fesm2022/mintplayer-ng-bootstrap-accordion.mjs.map +1 -1
  3. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs +2 -2
  4. package/fesm2022/mintplayer-ng-bootstrap-calendar.mjs.map +1 -1
  5. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs +4 -4
  6. package/fesm2022/mintplayer-ng-bootstrap-code-snippet.mjs.map +1 -1
  7. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs +133 -130
  8. package/fesm2022/mintplayer-ng-bootstrap-color-picker.mjs.map +1 -1
  9. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs +6 -6
  10. package/fesm2022/mintplayer-ng-bootstrap-dock.mjs.map +1 -1
  11. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs +5 -5
  12. package/fesm2022/mintplayer-ng-bootstrap-dropdown-menu.mjs.map +1 -1
  13. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs +3 -0
  14. package/fesm2022/mintplayer-ng-bootstrap-dropdown.mjs.map +1 -1
  15. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs +8 -9
  16. package/fesm2022/mintplayer-ng-bootstrap-file-upload.mjs.map +1 -1
  17. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs +6 -8
  18. package/fesm2022/mintplayer-ng-bootstrap-modal.mjs.map +1 -1
  19. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs +3 -3
  20. package/fesm2022/mintplayer-ng-bootstrap-multiselect.mjs.map +1 -1
  21. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs +25 -6
  22. package/fesm2022/mintplayer-ng-bootstrap-navbar.mjs.map +1 -1
  23. package/fesm2022/mintplayer-ng-bootstrap-range.mjs +16 -16
  24. package/fesm2022/mintplayer-ng-bootstrap-range.mjs.map +1 -1
  25. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs +58 -47
  26. package/fesm2022/mintplayer-ng-bootstrap-resizable.mjs.map +1 -1
  27. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs +8 -8
  28. package/fesm2022/mintplayer-ng-bootstrap-scrollspy.mjs.map +1 -1
  29. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs +3 -1
  30. package/fesm2022/mintplayer-ng-bootstrap-searchbox.mjs.map +1 -1
  31. package/fesm2022/mintplayer-ng-bootstrap-select.mjs +48 -49
  32. package/fesm2022/mintplayer-ng-bootstrap-select.mjs.map +1 -1
  33. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs +7 -7
  34. package/fesm2022/mintplayer-ng-bootstrap-select2.mjs.map +1 -1
  35. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs +5 -5
  36. package/fesm2022/mintplayer-ng-bootstrap-shell.mjs.map +1 -1
  37. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs +12 -6
  38. package/fesm2022/mintplayer-ng-bootstrap-tab-control.mjs.map +1 -1
  39. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs +7 -7
  40. package/fesm2022/mintplayer-ng-bootstrap-timepicker.mjs.map +1 -1
  41. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs +15 -18
  42. package/fesm2022/mintplayer-ng-bootstrap-toast.mjs.map +1 -1
  43. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs +102 -102
  44. package/fesm2022/mintplayer-ng-bootstrap-toggle-button.mjs.map +1 -1
  45. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs +7 -7
  46. package/fesm2022/mintplayer-ng-bootstrap-typeahead.mjs.map +1 -1
  47. package/package.json +1 -1
  48. package/types/mintplayer-ng-bootstrap-accordion.d.ts +5 -3
  49. package/types/mintplayer-ng-bootstrap-code-snippet.d.ts +2 -2
  50. package/types/mintplayer-ng-bootstrap-color-picker.d.ts +37 -34
  51. package/types/mintplayer-ng-bootstrap-dock.d.ts +1 -1
  52. package/types/mintplayer-ng-bootstrap-dropdown-menu.d.ts +9 -9
  53. package/types/mintplayer-ng-bootstrap-file-upload.d.ts +1 -1
  54. package/types/mintplayer-ng-bootstrap-modal.d.ts +1 -1
  55. package/types/mintplayer-ng-bootstrap-navbar.d.ts +5 -3
  56. package/types/mintplayer-ng-bootstrap-range.d.ts +9 -9
  57. package/types/mintplayer-ng-bootstrap-resizable.d.ts +10 -10
  58. package/types/mintplayer-ng-bootstrap-scrollspy.d.ts +1 -1
  59. package/types/mintplayer-ng-bootstrap-select.d.ts +16 -16
  60. package/types/mintplayer-ng-bootstrap-select2.d.ts +3 -3
  61. package/types/mintplayer-ng-bootstrap-shell.d.ts +1 -1
  62. package/types/mintplayer-ng-bootstrap-tab-control.d.ts +1 -1
  63. package/types/mintplayer-ng-bootstrap-timepicker.d.ts +3 -3
  64. package/types/mintplayer-ng-bootstrap-toggle-button.d.ts +15 -15
  65. package/types/mintplayer-ng-bootstrap-typeahead.d.ts +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-select.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/select/src/component/select.component.ts","../../../../libs/mintplayer-ng-bootstrap/select/src/component/select.component.html","../../../../libs/mintplayer-ng-bootstrap/select/src/value-accessors/select-value-accessor.ts","../../../../libs/mintplayer-ng-bootstrap/select/mintplayer-ng-bootstrap-select.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, inject, input, Renderer2, viewChild } from '@angular/core';\nimport { BsSelectSize } from '../types/select-size';\n\n@Component({\n selector: 'bs-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsSelectComponent {\n private renderer = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const selectBox = this.selectBox();\n if (selectBox) {\n this.renderer.setProperty(selectBox.nativeElement, 'disabled', disabled);\n }\n });\n }\n\n // For debugging purposes\n identifier = input(0);\n\n readonly selectBox = viewChild.required<ElementRef<HTMLSelectElement>>('selectBox');\n\n size = input<BsSelectSize>('md');\n multiple = input<boolean>(false);\n numberVisible = input<number | null>(null);\n disabled = input<boolean>(false);\n\n sizeClass = computed(() => {\n const size = this.size();\n switch (size) {\n case 'sm':\n case 'lg':\n return `form-select-${size}`;\n default:\n return null;\n }\n });\n\n multipleValue = computed(() => {\n if (this.multiple()) {\n return true;\n } else {\n return null;\n }\n });\n}\n","<select class=\"form-select\" #selectBox [class]=\"sizeClass()\" [attr.multiple]=\"multipleValue()\" [attr.size]=\"numberVisible()\" aria-label=\"Default select example\">\n <ng-content></ng-content>\n</select>\n","import { Directive, effect, ElementRef, forwardRef, inject, input, OnDestroy, Renderer2 } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { BsSelectComponent } from \"../component/select.component\";\n\n@Directive({\n selector: 'bs-select',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsSelectValueAccessor),\n multi: true,\n }],\n host: {\n '(change)': 'hostOnChange($event)',\n '(blur)': 'hostBlur($event)',\n },\n})\nexport class BsSelectValueAccessor implements ControlValueAccessor {\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n private selectBox = inject(BsSelectComponent);\n\n onChange = (_: any) => {};\n onTouched = () => {};\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n registerOnChange(fn: (p: any) => {}) {\n this.onChange = (valueString: string) => {\n // View -> Model\n this.value = this.getOptionValue(valueString);\n fn(this.value);\n // fn(valueString);\n };\n }\n setDisabledState(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n protected setProperty(key: string, value: any): void {\n // if (this._elementRef) {\n // this._renderer.setProperty(this._elementRef.nativeElement, key, value);\n // }\n if (this.selectBox.selectBox()) {\n this._renderer.setProperty(this.selectBox.selectBox().nativeElement, key, value);\n }\n }\n\n hostOnChange(event: Event) {\n this.onChange((<any>event.target).value);\n }\n\n hostBlur(ev: Event) {\n this.onTouched();\n }\n\n value: any;\n optionMap = new Map<string, any>();\n idCounter = 0;\n\n private compareWithFunction: (value1: any, value2: any) => boolean = Object.is;\n readonly compareWith = input<((value1: any, value2: any) => boolean) | undefined>(undefined);\n\n constructor() {\n effect(() => {\n const value = this.compareWith();\n if (value !== undefined) {\n if (typeof value !== 'function') {\n throw new Error('compareWith must be a function');\n }\n this.compareWithFunction = value;\n }\n });\n }\n\n buildValueString(id: string | null, value: any) {\n if (id == null) {\n return `${value}`;\n }\n\n if (value && (typeof value === 'object')) {\n value = 'Object';\n }\n\n return `${id}: ${value}`.slice(0, 50);\n }\n\n extractId(valueString: string) {\n return valueString.split(':')[0];\n }\n\n writeValue(value: any) {\n this.value = value;\n // console.log(`WriteValue ${this.selectBox.identifier}`, value);\n\n const id = this.getOptionId(value);\n const valueString = this.buildValueString(id, value);\n this.setProperty('value', valueString);\n }\n\n registerOption() {\n return (this.idCounter++).toString();\n }\n\n getOptionId(value: any) {\n for (const id of Array.from(this.optionMap.keys())) {\n if (this.compareWithFunction(this.optionMap.get(id), value)) {\n return id;\n }\n }\n\n // This shouldn't happen\n // debugger;\n \n return null;\n }\n\n getOptionValue(valueString: string) {\n const id = this.extractId(valueString);\n return this.optionMap.has(id) ? this.optionMap.get(id) : valueString;\n }\n}\n\n@Directive({\n selector: 'option',\n})\nexport class BsSelectOption implements OnDestroy {\n private element = inject(ElementRef);\n private renderer = inject(Renderer2);\n private select = inject(BsSelectValueAccessor, { optional: true, host: true });\n\n constructor() {\n if (this.select) {\n this.id = this.select.registerOption();\n }\n\n effect(() => {\n const val = this.ngValue();\n if (val !== undefined && this.select) {\n this.select.optionMap.set(this.id, val);\n this.setElementValue(this.select.buildValueString(this.id, val));\n this.select.writeValue(this.select.value);\n }\n });\n\n effect(() => {\n const val = this.value();\n if (val !== undefined) {\n this.setElementValue(val);\n if (this.select) {\n this.select.writeValue(this.select.value);\n }\n }\n });\n }\n\n id!: string;\n\n readonly ngValue = input<any>(undefined, { alias: 'ngValue' });\n\n readonly value = input<any>(undefined, { alias: 'value' });\n\n setElementValue(value: string) {\n // console.log('setElementValue', value);\n // const nativeSelect = this.select['selectBox'].selectBox;\n // if (nativeSelect) {\n // this.renderer.setProperty(nativeSelect.nativeElement, 'value', value);\n // }\n this.renderer.setProperty(this.element.nativeElement, 'value', value);\n }\n\n ngOnDestroy() {\n if (this.select) {\n this.select.optionMap.delete(this.id);\n this.select.writeValue(this.select.value);\n }\n }\n}\n\n// @Directive({\n// selector: 'bs-select',\n// providers: [{\n// provide: NG_VALUE_ACCESSOR,\n// useExisting: forwardRef(() => BsSelectValueAccessor),\n// multi: true,\n// }],\n// })\n// export class BsSelectValueAccessor implements ControlValueAccessor, AfterViewInit, OnDestroy {\n// constructor(private host: BsSelectComponent) {}\n\n// destroyed$ = new Subject();\n\n// onValueChange?: (value: any) => void;\n// onTouched?: () => void;\n\n// //#region Lifecycle hooks\n// ngAfterViewInit() {\n// fromEvent(this.host.selectBox.nativeElement, 'change')\n// .pipe(takeUntil(this.destroyed$))\n// .subscribe((ev) => {\n// if (this.onValueChange) {\n// const val = (<HTMLSelectElement>ev.target).value;\n// console.log('selected', val);\n// this.onValueChange(val);\n// }\n// });\n// }\n\n// ngOnDestroy() {\n// this.destroyed$.next(true);\n// }\n// //#endregion\n\n// @Input('ngValue') set ngValue(value: any) {\n// if (this.host) {\n// this.host.opt\n// }\n// }\n\n// //#region OptionId mapping\n// private compareWithFunction: (value1: any, value2: any) => boolean = Object.is;\n// private optionMap = new Map<string, any>();\n// @Input() public set compareWith(fn: (value1: any, value2: any) => boolean) {\n// if (typeof fn !== 'function') {\n// throw new Error('compareWith must be a function');\n// }\n// this.compareWithFunction = fn;\n// }\n\n// private getOptionId(value: any) {\n// for (const id of Array.from(this.optionMap.keys())) {\n// if (this.compareWith(this.optionMap.get(id), value)) {\n// return id;\n// }\n// }\n// return null;\n// }\n\n// private getOptionValue(valueString: string) {\n// const id = this.extractId(valueString);\n// return this.optionMap.has(id) ? this.optionMap.get(id) : valueString;\n// }\n\n// private extractId(valueString: string) {\n// return valueString.split(':')[0];\n// }\n// //#endregion\n\n// //#region ControlValueAccessor implementation\n// registerOnChange(fn: (_: any) => void) {\n// this.onValueChange = (valueString: string) => {\n// this.value = this.getOptionValue(valueString);\n// fn(this.value);\n// };\n// }\n \n// registerOnTouched(fn: () => void) {\n// this.onTouched = fn;\n// }\n\n// value: any;\n// writeValue(value: any) {\n// this.value = value;\n// if (this.host.selectBox) {\n// // this.host.selectBox.nativeElement.selectedIndex = this.host.selectBox.nativeElement.options.item();\n// }\n// }\n\n// setDisabledState(isDisabled: boolean) {\n// if (this.host.selectBox) {\n// this.host.selectBox.nativeElement.disabled = isDisabled;\n// }\n// }\n// //#endregion\n\n// }\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-select.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/select/src/value-accessors/select-value-accessor.ts","../../../../libs/mintplayer-ng-bootstrap/select/src/component/select.component.ts","../../../../libs/mintplayer-ng-bootstrap/select/src/component/select.component.html","../../../../libs/mintplayer-ng-bootstrap/select/mintplayer-ng-bootstrap-select.ts"],"sourcesContent":["import { Directive, effect, ElementRef, forwardRef, inject, input, OnDestroy, Renderer2 } from \"@angular/core\";\nimport { ControlValueAccessor, NG_VALUE_ACCESSOR } from \"@angular/forms\";\nimport { BsSelectComponent } from \"../component/select.component\";\n\n@Directive({\n selector: 'bs-select',\n providers: [{\n provide: NG_VALUE_ACCESSOR,\n useExisting: forwardRef(() => BsSelectValueAccessor),\n multi: true,\n }],\n host: {\n '(change)': 'hostOnChange($event)',\n '(blur)': 'hostBlur($event)',\n },\n})\nexport class BsSelectValueAccessor implements ControlValueAccessor {\n private _renderer = inject(Renderer2);\n private _elementRef = inject(ElementRef);\n private selectBox = inject(BsSelectComponent);\n\n onChange = (_: any) => {};\n onTouched = () => {};\n\n registerOnTouched(fn: () => void): void {\n this.onTouched = fn;\n }\n registerOnChange(fn: (p: any) => {}) {\n this.onChange = (valueString: string) => {\n // View -> Model\n this.value = this.getOptionValue(valueString);\n fn(this.value);\n // fn(valueString);\n };\n }\n setDisabledState(isDisabled: boolean): void {\n this.setProperty('disabled', isDisabled);\n }\n protected setProperty(key: string, value: any): void {\n if (this.selectBox.selectBox()) {\n this._renderer.setProperty(this.selectBox.selectBox().nativeElement, key, value);\n }\n }\n\n hostOnChange(event: Event) {\n this.onChange((<any>event.target).value);\n }\n\n hostBlur(ev: Event) {\n this.onTouched();\n }\n\n value: any;\n optionMap = new Map<string, any>();\n idCounter = 0;\n\n private compareWithFunction: (value1: any, value2: any) => boolean = Object.is;\n readonly compareWith = input<((value1: any, value2: any) => boolean) | undefined>(undefined);\n\n constructor() {\n effect(() => {\n const value = this.compareWith();\n if (value !== undefined) {\n if (typeof value !== 'function') {\n throw new Error('compareWith must be a function');\n }\n this.compareWithFunction = value;\n }\n });\n }\n\n buildValueString(id: string | null, value: any) {\n if (id == null) {\n return `${value}`;\n }\n\n if (value && (typeof value === 'object')) {\n value = 'Object';\n }\n\n return `${id}: ${value}`.slice(0, 50);\n }\n\n extractId(valueString: string) {\n return valueString.split(':')[0];\n }\n\n writeValue(value: any) {\n this.value = value;\n\n const id = this.getOptionId(value);\n const valueString = this.buildValueString(id, value);\n this.setProperty('value', valueString);\n }\n\n registerOption() {\n return (this.idCounter++).toString();\n }\n\n getOptionId(value: any) {\n for (const id of Array.from(this.optionMap.keys())) {\n if (this.compareWithFunction(this.optionMap.get(id), value)) {\n return id;\n }\n }\n\n // This shouldn't happen\n // debugger;\n \n return null;\n }\n\n getOptionValue(valueString: string) {\n const id = this.extractId(valueString);\n return this.optionMap.has(id) ? this.optionMap.get(id) : valueString;\n }\n}\n\n@Directive({\n selector: 'option',\n})\nexport class BsSelectOption implements OnDestroy {\n private element = inject(ElementRef);\n private renderer = inject(Renderer2);\n private select = inject(BsSelectValueAccessor, { optional: true, host: true });\n\n constructor() {\n if (this.select) {\n this.id = this.select.registerOption();\n }\n\n effect(() => {\n const val = this.ngValue();\n if (val !== undefined && this.select) {\n this.select.optionMap.set(this.id, val);\n this.setElementValue(this.select.buildValueString(this.id, val));\n this.select.writeValue(this.select.value);\n }\n });\n\n effect(() => {\n const val = this.value();\n if (val !== undefined) {\n this.setElementValue(val);\n if (this.select) {\n this.select.writeValue(this.select.value);\n }\n }\n });\n }\n\n id!: string;\n\n readonly ngValue = input<any>(undefined, { alias: 'ngValue' });\n\n readonly value = input<any>(undefined, { alias: 'value' });\n\n setElementValue(value: string) {\n // console.log('setElementValue', value);\n // const nativeSelect = this.select['selectBox'].selectBox;\n // if (nativeSelect) {\n // this.renderer.setProperty(nativeSelect.nativeElement, 'value', value);\n // }\n this.renderer.setProperty(this.element.nativeElement, 'value', value);\n }\n\n ngOnDestroy() {\n if (this.select) {\n this.select.optionMap.delete(this.id);\n this.select.writeValue(this.select.value);\n }\n }\n}\n\n// @Directive({\n// selector: 'bs-select',\n// providers: [{\n// provide: NG_VALUE_ACCESSOR,\n// useExisting: forwardRef(() => BsSelectValueAccessor),\n// multi: true,\n// }],\n// })\n// export class BsSelectValueAccessor implements ControlValueAccessor, AfterViewInit, OnDestroy {\n// constructor(private host: BsSelectComponent) {}\n\n// destroyed$ = new Subject();\n\n// onValueChange?: (value: any) => void;\n// onTouched?: () => void;\n\n// //#region Lifecycle hooks\n// ngAfterViewInit() {\n// fromEvent(this.host.selectBox.nativeElement, 'change')\n// .pipe(takeUntil(this.destroyed$))\n// .subscribe((ev) => {\n// if (this.onValueChange) {\n// const val = (<HTMLSelectElement>ev.target).value;\n// console.log('selected', val);\n// this.onValueChange(val);\n// }\n// });\n// }\n\n// ngOnDestroy() {\n// this.destroyed$.next(true);\n// }\n// //#endregion\n\n// @Input('ngValue') set ngValue(value: any) {\n// if (this.host) {\n// this.host.opt\n// }\n// }\n\n// //#region OptionId mapping\n// private compareWithFunction: (value1: any, value2: any) => boolean = Object.is;\n// private optionMap = new Map<string, any>();\n// @Input() public set compareWith(fn: (value1: any, value2: any) => boolean) {\n// if (typeof fn !== 'function') {\n// throw new Error('compareWith must be a function');\n// }\n// this.compareWithFunction = fn;\n// }\n\n// private getOptionId(value: any) {\n// for (const id of Array.from(this.optionMap.keys())) {\n// if (this.compareWith(this.optionMap.get(id), value)) {\n// return id;\n// }\n// }\n// return null;\n// }\n\n// private getOptionValue(valueString: string) {\n// const id = this.extractId(valueString);\n// return this.optionMap.has(id) ? this.optionMap.get(id) : valueString;\n// }\n\n// private extractId(valueString: string) {\n// return valueString.split(':')[0];\n// }\n// //#endregion\n\n// //#region ControlValueAccessor implementation\n// registerOnChange(fn: (_: any) => void) {\n// this.onValueChange = (valueString: string) => {\n// this.value = this.getOptionValue(valueString);\n// fn(this.value);\n// };\n// }\n \n// registerOnTouched(fn: () => void) {\n// this.onTouched = fn;\n// }\n\n// value: any;\n// writeValue(value: any) {\n// this.value = value;\n// if (this.host.selectBox) {\n// // this.host.selectBox.nativeElement.selectedIndex = this.host.selectBox.nativeElement.options.item();\n// }\n// }\n\n// setDisabledState(isDisabled: boolean) {\n// if (this.host.selectBox) {\n// this.host.selectBox.nativeElement.disabled = isDisabled;\n// }\n// }\n// //#endregion\n\n// }\n","import { ChangeDetectionStrategy, Component, computed, effect, ElementRef, forwardRef, inject, input, Renderer2, viewChild } from '@angular/core';\nimport { BsSelectValueAccessor } from '../value-accessors/select-value-accessor';\nimport { BsSelectSize } from '../types/select-size';\n\n@Component({\n selector: 'bs-select',\n templateUrl: './select.component.html',\n styleUrls: ['./select.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n hostDirectives: [{\n directive: forwardRef(() => BsSelectValueAccessor),\n inputs: ['compareWith'],\n }],\n})\nexport class BsSelectComponent {\n private renderer = inject(Renderer2);\n\n constructor() {\n effect(() => {\n const disabled = this.disabled();\n const selectBox = this.selectBox();\n if (selectBox) {\n this.renderer.setProperty(selectBox.nativeElement, 'disabled', disabled);\n }\n });\n }\n\n // For debugging purposes\n identifier = input(0);\n\n readonly selectBox = viewChild.required<ElementRef<HTMLSelectElement>>('selectBox');\n\n size = input<BsSelectSize>('md');\n multiple = input<boolean>(false);\n numberVisible = input<number | null>(null);\n disabled = input<boolean>(false);\n\n sizeClass = computed(() => {\n const size = this.size();\n switch (size) {\n case 'sm':\n case 'lg':\n return `form-select-${size}`;\n default:\n return null;\n }\n });\n\n multipleValue = computed(() => {\n if (this.multiple()) {\n return true;\n } else {\n return null;\n }\n });\n}\n","<select class=\"form-select\" #selectBox [class]=\"sizeClass()\" [attr.multiple]=\"multipleValue()\" [attr.size]=\"numberVisible()\" aria-label=\"Default select example\">\n <ng-content></ng-content>\n</select>\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { signal, model, viewChild, output, effect, ChangeDetectionStrategy, Component, inject, TemplateRef, input, isSignal, untracked, Directive } from '@angular/core';
3
+ import { model, signal, viewChild, output, effect, ChangeDetectionStrategy, Component, inject, TemplateRef, input, isSignal, untracked, Directive } from '@angular/core';
4
4
  import * as i1 from '@angular/forms';
5
5
  import { FormsModule } from '@angular/forms';
6
6
  import { BsHasOverlayComponent } from '@mintplayer/ng-bootstrap/has-overlay';
@@ -10,7 +10,7 @@ import { BsInListPipe } from '@mintplayer/ng-bootstrap/in-list';
10
10
 
11
11
  class BsSelect2Component {
12
12
  constructor() {
13
- this.isOpen = signal(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
13
+ this.isOpen = model(false, ...(ngDevMode ? [{ debugName: "isOpen" }] : []));
14
14
  this.isLoading = signal(false, ...(ngDevMode ? [{ debugName: "isLoading" }] : []));
15
15
  this.suggestions = model([], ...(ngDevMode ? [{ debugName: "suggestions" }] : []));
16
16
  this.defaultItemTemplate = viewChild.required('defaultItemTemplate');
@@ -18,7 +18,7 @@ class BsSelect2Component {
18
18
  this.itemsBox = viewChild.required('itemsBox');
19
19
  this.searchterm = model('', ...(ngDevMode ? [{ debugName: "searchterm" }] : []));
20
20
  this.provideSuggestions = output();
21
- this.isFocused = false;
21
+ this.isFocused = signal(false, ...(ngDevMode ? [{ debugName: "isFocused" }] : []));
22
22
  this.selectedItems = model([], ...(ngDevMode ? [{ debugName: "selectedItems" }] : []));
23
23
  this.charWidth = 10;
24
24
  this.searchWidth = signal(20, ...(ngDevMode ? [{ debugName: "searchWidth" }] : []));
@@ -64,7 +64,7 @@ class BsSelect2Component {
64
64
  this.searchBox().nativeElement.focus();
65
65
  }
66
66
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsSelect2Component, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
67
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: BsSelect2Component, isStandalone: true, selector: "bs-select2", inputs: { suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, searchterm: { classPropertyName: "searchterm", publicName: "searchterm", isSignal: true, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { suggestions: "suggestionsChange", searchterm: "searchtermChange", provideSuggestions: "provideSuggestions", selectedItems: "selectedItemsChange" }, host: { listeners: { "click": "focus()" }, properties: { "class.focus": "isFocused" } }, viewQueries: [{ propertyName: "defaultItemTemplate", first: true, predicate: ["defaultItemTemplate"], descendants: true, isSignal: true }, { propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true, isSignal: true }, { propertyName: "itemsBox", first: true, predicate: ["itemsBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [sameDropdownWidth]=\"true\" #itemsBox class=\"items-box text-wrap\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\">\n @for (item of selectedItems(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { $implicit: item, select2: this }\"></ng-container>\n }\n\n <input type=\"text\" autocomplete=\"off\"\n [ngModel]=\"searchterm()\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n #searchBox />\n <bs-dropdown-menu *bsDropdownMenu [maxHeight]=\"200\" role=\"listbox\">\n @for (suggestion of suggestions(); track $index) {\n <bs-dropdown-item (click)=\"onSuggestionClicked(suggestion)\" [isSelected]=\"selectedItems() | bsInList:suggestion.id\" role=\"option\" [attr.aria-selected]=\"(selectedItems() | bsInList:suggestion.id) || null\">\n <ng-container *ngTemplateOutlet=\"suggestionTemplate ?? defaultSuggestionTemplate; context: { $implicit: suggestion, select2: this }\"></ng-container>\n </bs-dropdown-item>\n }\n </bs-dropdown-menu>\n</div>\n\n<ng-template #defaultItemTemplate let-item let-select2=\"select2\">\n <span class=\"select2-item\">\n <button type=\"button\" (click)=\"select2.onRemoveItem(item,$event)\" aria-label=\"Remove item\" class=\"btn-close-inline\">\u00D7</button>\n {{ item.text }}\n </span>\n</ng-template>\n\n<ng-template #defaultSuggestionTemplate let-suggestion let-select2=\"select2\">\n {{ suggestion.text }}\n</ng-template>\n", styles: [".items-box{min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BsHasOverlayComponent, selector: "bs-has-overlay" }, { kind: "directive", type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "sameDropdownWidth", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { kind: "component", type: BsDropdownMenuComponent, selector: "bs-dropdown-menu", inputs: ["maxHeight"] }, { kind: "component", type: BsDropdownItemComponent, selector: "bs-dropdown-item", inputs: ["isSelected", "disabled"] }, { kind: "pipe", type: BsInListPipe, name: "bsInList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
67
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: BsSelect2Component, isStandalone: true, selector: "bs-select2", inputs: { isOpen: { classPropertyName: "isOpen", publicName: "isOpen", isSignal: true, isRequired: false, transformFunction: null }, suggestions: { classPropertyName: "suggestions", publicName: "suggestions", isSignal: true, isRequired: false, transformFunction: null }, searchterm: { classPropertyName: "searchterm", publicName: "searchterm", isSignal: true, isRequired: false, transformFunction: null }, selectedItems: { classPropertyName: "selectedItems", publicName: "selectedItems", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { isOpen: "isOpenChange", suggestions: "suggestionsChange", searchterm: "searchtermChange", provideSuggestions: "provideSuggestions", selectedItems: "selectedItemsChange" }, host: { listeners: { "click": "focus()" }, properties: { "class.focus": "isFocused()" } }, viewQueries: [{ propertyName: "defaultItemTemplate", first: true, predicate: ["defaultItemTemplate"], descendants: true, isSignal: true }, { propertyName: "searchBox", first: true, predicate: ["searchBox"], descendants: true, isSignal: true }, { propertyName: "itemsBox", first: true, predicate: ["itemsBox"], descendants: true, isSignal: true }], ngImport: i0, template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [sameDropdownWidth]=\"true\" #itemsBox class=\"items-box text-wrap\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\">\n @for (item of selectedItems(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { $implicit: item, select2: this }\"></ng-container>\n }\n\n <input type=\"text\" autocomplete=\"off\"\n [ngModel]=\"searchterm()\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [style.width.px]=\"searchWidth()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n #searchBox />\n <bs-dropdown-menu *bsDropdownMenu [maxHeight]=\"200\" role=\"listbox\">\n @for (suggestion of suggestions(); track $index) {\n <bs-dropdown-item (click)=\"onSuggestionClicked(suggestion)\" [isSelected]=\"selectedItems() | bsInList:suggestion.id\" role=\"option\" [attr.aria-selected]=\"(selectedItems() | bsInList:suggestion.id) || null\">\n <ng-container *ngTemplateOutlet=\"suggestionTemplate ?? defaultSuggestionTemplate; context: { $implicit: suggestion, select2: this }\"></ng-container>\n </bs-dropdown-item>\n }\n </bs-dropdown-menu>\n</div>\n\n<ng-template #defaultItemTemplate let-item let-select2=\"select2\">\n <span class=\"select2-item\">\n <button type=\"button\" (click)=\"select2.onRemoveItem(item,$event)\" aria-label=\"Remove item\" class=\"btn-close-inline\">\u00D7</button>\n {{ item.text }}\n </span>\n</ng-template>\n\n<ng-template #defaultSuggestionTemplate let-suggestion let-select2=\"select2\">\n {{ suggestion.text }}\n</ng-template>\n", styles: [".items-box{min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box .select2-item>button{background:none;border:none;padding:0;cursor:pointer;color:#999}.items-box .select2-item>button:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgModel, selector: "[ngModel]:not([formControlName]):not([formControl])", inputs: ["name", "disabled", "ngModel", "ngModelOptions"], outputs: ["ngModelChange"], exportAs: ["ngModel"] }, { kind: "component", type: BsHasOverlayComponent, selector: "bs-has-overlay" }, { kind: "directive", type: BsDropdownDirective, selector: "[bsDropdown]", inputs: ["hasBackdrop", "sameWidth", "closeOnClickOutside", "sameDropdownWidth", "isOpen"], outputs: ["isOpenChange"] }, { kind: "directive", type: BsDropdownMenuDirective, selector: "[bsDropdownMenu]" }, { kind: "component", type: BsDropdownMenuComponent, selector: "bs-dropdown-menu", inputs: ["maxHeight"] }, { kind: "component", type: BsDropdownItemComponent, selector: "bs-dropdown-item", inputs: ["isSelected", "disabled"] }, { kind: "pipe", type: BsInListPipe, name: "bsInList" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
68
68
  }
69
69
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsSelect2Component, decorators: [{
70
70
  type: Component,
@@ -78,10 +78,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
78
78
  BsDropdownItemComponent,
79
79
  BsInListPipe,
80
80
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
81
- '[class.focus]': 'isFocused',
81
+ '[class.focus]': 'isFocused()',
82
82
  '(click)': 'focus()',
83
- }, template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [sameDropdownWidth]=\"true\" #itemsBox class=\"items-box text-wrap\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\">\n @for (item of selectedItems(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { $implicit: item, select2: this }\"></ng-container>\n }\n\n <input type=\"text\" autocomplete=\"off\"\n [ngModel]=\"searchterm()\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n #searchBox />\n <bs-dropdown-menu *bsDropdownMenu [maxHeight]=\"200\" role=\"listbox\">\n @for (suggestion of suggestions(); track $index) {\n <bs-dropdown-item (click)=\"onSuggestionClicked(suggestion)\" [isSelected]=\"selectedItems() | bsInList:suggestion.id\" role=\"option\" [attr.aria-selected]=\"(selectedItems() | bsInList:suggestion.id) || null\">\n <ng-container *ngTemplateOutlet=\"suggestionTemplate ?? defaultSuggestionTemplate; context: { $implicit: suggestion, select2: this }\"></ng-container>\n </bs-dropdown-item>\n }\n </bs-dropdown-menu>\n</div>\n\n<ng-template #defaultItemTemplate let-item let-select2=\"select2\">\n <span class=\"select2-item\">\n <button type=\"button\" (click)=\"select2.onRemoveItem(item,$event)\" aria-label=\"Remove item\" class=\"btn-close-inline\">\u00D7</button>\n {{ item.text }}\n </span>\n</ng-template>\n\n<ng-template #defaultSuggestionTemplate let-suggestion let-select2=\"select2\">\n {{ suggestion.text }}\n</ng-template>\n", styles: [".items-box{min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"] }]
84
- }], ctorParameters: () => [], propDecorators: { suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }, { type: i0.Output, args: ["suggestionsChange"] }], defaultItemTemplate: [{ type: i0.ViewChild, args: ['defaultItemTemplate', { isSignal: true }] }], searchBox: [{ type: i0.ViewChild, args: ['searchBox', { isSignal: true }] }], itemsBox: [{ type: i0.ViewChild, args: ['itemsBox', { isSignal: true }] }], searchterm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchterm", required: false }] }, { type: i0.Output, args: ["searchtermChange"] }], provideSuggestions: [{ type: i0.Output, args: ["provideSuggestions"] }], selectedItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItems", required: false }] }, { type: i0.Output, args: ["selectedItemsChange"] }] } });
83
+ }, template: "<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [sameDropdownWidth]=\"true\" #itemsBox class=\"items-box text-wrap\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\">\n @for (item of selectedItems(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { $implicit: item, select2: this }\"></ng-container>\n }\n\n <input type=\"text\" autocomplete=\"off\"\n [ngModel]=\"searchterm()\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [style.width.px]=\"searchWidth()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n #searchBox />\n <bs-dropdown-menu *bsDropdownMenu [maxHeight]=\"200\" role=\"listbox\">\n @for (suggestion of suggestions(); track $index) {\n <bs-dropdown-item (click)=\"onSuggestionClicked(suggestion)\" [isSelected]=\"selectedItems() | bsInList:suggestion.id\" role=\"option\" [attr.aria-selected]=\"(selectedItems() | bsInList:suggestion.id) || null\">\n <ng-container *ngTemplateOutlet=\"suggestionTemplate ?? defaultSuggestionTemplate; context: { $implicit: suggestion, select2: this }\"></ng-container>\n </bs-dropdown-item>\n }\n </bs-dropdown-menu>\n</div>\n\n<ng-template #defaultItemTemplate let-item let-select2=\"select2\">\n <span class=\"select2-item\">\n <button type=\"button\" (click)=\"select2.onRemoveItem(item,$event)\" aria-label=\"Remove item\" class=\"btn-close-inline\">\u00D7</button>\n {{ item.text }}\n </span>\n</ng-template>\n\n<ng-template #defaultSuggestionTemplate let-suggestion let-select2=\"select2\">\n {{ suggestion.text }}\n</ng-template>\n", styles: [".items-box{min-height:38px;padding:0 5px 3px;cursor:text;border:1px solid #ccc}.items-box .select2-item{display:inline-block;background-color:#e4e4e4;color:#1a1a1a;border:1px solid #aaa;border-radius:4px;margin-top:5px;margin-right:5px;padding:0 5px;cursor:default;user-select:none;-webkit-user-select:none}.items-box .select2-item>span{cursor:pointer;color:#999}.items-box .select2-item>span:hover{color:#333}.items-box .select2-item>button{background:none;border:none;padding:0;cursor:pointer;color:#999}.items-box .select2-item>button:hover{color:#333}.items-box input{border:none;outline:0;margin:5px 0 2px;background:none}:host{display:block;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}:host.focus{color:#495057;background-color:#fff;border-color:#80bdff!important;outline:0;box-shadow:0 0 0 .2rem #007bff40}ul{max-height:200px;overflow-y:auto}ul>li{padding:10px;cursor:pointer}ul>li.selected{background:#ddd}ul>li:hover{color:#fff;background-color:#5897fb}\n"] }]
84
+ }], ctorParameters: () => [], propDecorators: { isOpen: [{ type: i0.Input, args: [{ isSignal: true, alias: "isOpen", required: false }] }, { type: i0.Output, args: ["isOpenChange"] }], suggestions: [{ type: i0.Input, args: [{ isSignal: true, alias: "suggestions", required: false }] }, { type: i0.Output, args: ["suggestionsChange"] }], defaultItemTemplate: [{ type: i0.ViewChild, args: ['defaultItemTemplate', { isSignal: true }] }], searchBox: [{ type: i0.ViewChild, args: ['searchBox', { isSignal: true }] }], itemsBox: [{ type: i0.ViewChild, args: ['itemsBox', { isSignal: true }] }], searchterm: [{ type: i0.Input, args: [{ isSignal: true, alias: "searchterm", required: false }] }, { type: i0.Output, args: ["searchtermChange"] }], provideSuggestions: [{ type: i0.Output, args: ["provideSuggestions"] }], selectedItems: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectedItems", required: false }] }, { type: i0.Output, args: ["selectedItemsChange"] }] } });
85
85
 
86
86
  class BsItemTemplateDirective {
87
87
  constructor() {
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-select2.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/select2/src/component/select2.component.ts","../../../../libs/mintplayer-ng-bootstrap/select2/src/component/select2.component.html","../../../../libs/mintplayer-ng-bootstrap/select2/src/directive/item-template/item-template.directive.ts","../../../../libs/mintplayer-ng-bootstrap/select2/src/directive/suggestion-template/suggestion-template.directive.ts","../../../../libs/mintplayer-ng-bootstrap/select2/mintplayer-ng-bootstrap-select2.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, input, model, output, signal, TemplateRef, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HasId } from '@mintplayer/ng-bootstrap/has-id';\nimport { BsHasOverlayComponent } from '@mintplayer/ng-bootstrap/has-overlay';\nimport { BsDropdownDirective, BsDropdownMenuDirective } from '@mintplayer/ng-bootstrap/dropdown';\nimport { BsDropdownMenuComponent, BsDropdownItemComponent } from '@mintplayer/ng-bootstrap/dropdown-menu';\nimport { BsInListPipe } from '@mintplayer/ng-bootstrap/in-list';\n\n@Component({\n selector: 'bs-select2',\n templateUrl: './select2.component.html',\n styleUrls: ['./select2.component.scss'],\n imports: [\n NgTemplateOutlet,\n FormsModule,\n BsHasOverlayComponent,\n BsDropdownDirective,\n BsDropdownMenuDirective,\n BsDropdownMenuComponent,\n BsDropdownItemComponent,\n BsInListPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.focus]': 'isFocused',\n '(click)': 'focus()',\n },\n})\nexport class BsSelect2Component<T extends HasId<U>, U> {\n\n isOpen = signal(false);\n isLoading = signal<boolean>(false);\n\n suggestions = model<T[]>([]);\n\n readonly defaultItemTemplate = viewChild.required<TemplateRef<any>>('defaultItemTemplate');\n readonly searchBox = viewChild.required<ElementRef<HTMLInputElement>>('searchBox');\n readonly itemsBox = viewChild.required<ElementRef<HTMLDivElement>>('itemsBox');\n searchterm = model('');\n provideSuggestions = output<string>();\n isFocused = false;\n\n selectedItems = model<T[]>([]);\n\n private charWidth = 10;\n searchWidth = signal(20);\n itemTemplate?: TemplateRef<T>;\n suggestionTemplate?: TemplateRef<T>;\n\n constructor() {\n effect(() => {\n const suggestions = this.suggestions();\n if (suggestions) {\n this.isLoading.set(false);\n }\n });\n }\n\n onProvideSuggestions(value: string) {\n this.searchterm.set(value);\n this.searchWidth.set(this.charWidth * (value.length + 2));\n if (value === '') {\n this.isOpen.set(false);\n } else {\n this.isLoading.set(true);\n this.isOpen.set(true);\n this.provideSuggestions.emit(value);\n }\n }\n\n onSuggestionClicked(suggestion: T) {\n this.searchterm.set('');\n this.isOpen.set(false);\n\n const currentItems = this.selectedItems();\n const existing = currentItems.find((value, index) => value.id === suggestion.id);\n if (existing === undefined) {\n this.selectedItems.set([...currentItems, suggestion]);\n } else {\n this.selectedItems.set(currentItems.filter(item => item.id !== suggestion.id));\n }\n\n this.searchBox().nativeElement.focus();\n }\n\n onRemoveItem(item: T, event: MouseEvent) {\n event.stopPropagation();\n const currentItems = this.selectedItems();\n this.selectedItems.set(currentItems.filter(i => i.id !== item.id));\n this.focus();\n }\n\n public focus() {\n this.searchBox().nativeElement.focus();\n }\n}\n","<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [sameDropdownWidth]=\"true\" #itemsBox class=\"items-box text-wrap\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\">\n @for (item of selectedItems(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { $implicit: item, select2: this }\"></ng-container>\n }\n\n <input type=\"text\" autocomplete=\"off\"\n [ngModel]=\"searchterm()\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused=true\"\n (blur)=\"isFocused=false\"\n [style.width.px]=\"searchWidth()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n #searchBox />\n <bs-dropdown-menu *bsDropdownMenu [maxHeight]=\"200\" role=\"listbox\">\n @for (suggestion of suggestions(); track $index) {\n <bs-dropdown-item (click)=\"onSuggestionClicked(suggestion)\" [isSelected]=\"selectedItems() | bsInList:suggestion.id\" role=\"option\" [attr.aria-selected]=\"(selectedItems() | bsInList:suggestion.id) || null\">\n <ng-container *ngTemplateOutlet=\"suggestionTemplate ?? defaultSuggestionTemplate; context: { $implicit: suggestion, select2: this }\"></ng-container>\n </bs-dropdown-item>\n }\n </bs-dropdown-menu>\n</div>\n\n<ng-template #defaultItemTemplate let-item let-select2=\"select2\">\n <span class=\"select2-item\">\n <button type=\"button\" (click)=\"select2.onRemoveItem(item,$event)\" aria-label=\"Remove item\" class=\"btn-close-inline\">×</button>\n {{ item.text }}\n </span>\n</ng-template>\n\n<ng-template #defaultSuggestionTemplate let-suggestion let-select2=\"select2\">\n {{ suggestion.text }}\n</ng-template>\n","import { Directive, effect, inject, input, isSignal, TemplateRef, untracked, WritableSignal } from '@angular/core';\nimport { BsSelect2Component } from '../../component/select2.component';\nimport { HasId } from '@mintplayer/ng-bootstrap/has-id';\n\n@Directive({\n selector: '[bsItemTemplate]',\n})\nexport class BsItemTemplateDirective<T extends HasId<U>, U> {\n private select2component = inject<BsSelect2Component<T, U>>(BsSelect2Component);\n private templateRef = inject<TemplateRef<T>>(TemplateRef);\n private sourceSignal?: WritableSignal<T[]>;\n private lastSourceValue?: T[];\n\n constructor() {\n this.select2component.itemTemplate = this.templateRef;\n\n // Sync input value to component\n effect(() => {\n const value = this.bsItemTemplateOf();\n if (value) {\n if (isSignal(value)) {\n // Store the signal reference for two-way binding\n this.sourceSignal = value as WritableSignal<T[]>;\n this.lastSourceValue = value();\n this.select2component.selectedItems.set(value());\n } else {\n // Plain array - one-way binding (backward compatible)\n this.sourceSignal = undefined;\n this.select2component.selectedItems.set(value as T[]);\n }\n }\n });\n\n // Sync changes from component back to source signal\n effect(() => {\n const componentValue = this.select2component.selectedItems();\n if (this.sourceSignal) {\n const sourceValue = untracked(() => this.sourceSignal!());\n if (componentValue !== sourceValue) {\n this.sourceSignal.set(componentValue);\n }\n }\n });\n\n // Sync changes from source signal to component\n effect(() => {\n if (this.sourceSignal) {\n const sourceValue = this.sourceSignal();\n if (sourceValue !== this.lastSourceValue) {\n this.lastSourceValue = sourceValue;\n const componentValue = untracked(() => this.select2component.selectedItems());\n if (sourceValue !== componentValue) {\n this.select2component.selectedItems.set(sourceValue);\n }\n }\n }\n });\n }\n\n public static ngTemplateContextGuard<T extends HasId<U>, U>(dir: BsItemTemplateDirective<T, U>, ctx: any): ctx is BsItemTemplateContext<Exclude<T, false | 0 | '' | null | undefined>, U> {\n return true;\n }\n\n readonly bsItemTemplateOf = input<T[] | WritableSignal<T[]> | undefined>(undefined);\n}\n\nexport class BsItemTemplateContext<T extends HasId<U>, U> {\n $implicit: T = null!;\n select2: BsSelect2Component<T, U> = null!;\n}","import { Directive, effect, inject, input, TemplateRef } from '@angular/core';\nimport { BsSelect2Component } from '../../component/select2.component';\nimport { HasId } from '@mintplayer/ng-bootstrap/has-id';\n\n@Directive({\n selector: '[bsSuggestionTemplate]',\n})\nexport class BsSuggestionTemplateDirective<T extends HasId<U>, U> {\n private select2component = inject<BsSelect2Component<T, U>>(BsSelect2Component);\n\n constructor() {\n const templateRef = inject<TemplateRef<T>>(TemplateRef);\n this.select2component.suggestionTemplate = templateRef;\n\n effect(() => {\n const value = this.bsSuggestionTemplateOf();\n if (value) {\n this.select2component.suggestions.set(value);\n }\n });\n }\n\n public static ngTemplateContextGuard<T extends HasId<U>, U>(dir: BsSuggestionTemplateDirective<T, U>, ctx: any): ctx is BsSuggestionTemplateContext<Exclude<T, false | 0 | '' | null | undefined>, U> {\n return true;\n }\n\n readonly bsSuggestionTemplateOf = input<T[] | undefined>(undefined);\n}\n\nexport class BsSuggestionTemplateContext<T extends HasId<U>, U> {\n $implicit: T = null!;\n select2: BsSelect2Component<T, U> = null!;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-select2.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/select2/src/component/select2.component.ts","../../../../libs/mintplayer-ng-bootstrap/select2/src/component/select2.component.html","../../../../libs/mintplayer-ng-bootstrap/select2/src/directive/item-template/item-template.directive.ts","../../../../libs/mintplayer-ng-bootstrap/select2/src/directive/suggestion-template/suggestion-template.directive.ts","../../../../libs/mintplayer-ng-bootstrap/select2/mintplayer-ng-bootstrap-select2.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, effect, ElementRef, input, model, output, signal, TemplateRef, viewChild } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport { HasId } from '@mintplayer/ng-bootstrap/has-id';\nimport { BsHasOverlayComponent } from '@mintplayer/ng-bootstrap/has-overlay';\nimport { BsDropdownDirective, BsDropdownMenuDirective } from '@mintplayer/ng-bootstrap/dropdown';\nimport { BsDropdownMenuComponent, BsDropdownItemComponent } from '@mintplayer/ng-bootstrap/dropdown-menu';\nimport { BsInListPipe } from '@mintplayer/ng-bootstrap/in-list';\n\n@Component({\n selector: 'bs-select2',\n templateUrl: './select2.component.html',\n styleUrls: ['./select2.component.scss'],\n imports: [\n NgTemplateOutlet,\n FormsModule,\n BsHasOverlayComponent,\n BsDropdownDirective,\n BsDropdownMenuDirective,\n BsDropdownMenuComponent,\n BsDropdownItemComponent,\n BsInListPipe,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: {\n '[class.focus]': 'isFocused()',\n '(click)': 'focus()',\n },\n})\nexport class BsSelect2Component<T extends HasId<U>, U> {\n\n isOpen = model(false);\n isLoading = signal<boolean>(false);\n\n suggestions = model<T[]>([]);\n\n readonly defaultItemTemplate = viewChild.required<TemplateRef<any>>('defaultItemTemplate');\n readonly searchBox = viewChild.required<ElementRef<HTMLInputElement>>('searchBox');\n readonly itemsBox = viewChild.required<ElementRef<HTMLDivElement>>('itemsBox');\n searchterm = model('');\n provideSuggestions = output<string>();\n isFocused = signal(false);\n\n selectedItems = model<T[]>([]);\n\n private charWidth = 10;\n searchWidth = signal(20);\n itemTemplate?: TemplateRef<T>;\n suggestionTemplate?: TemplateRef<T>;\n\n constructor() {\n effect(() => {\n const suggestions = this.suggestions();\n if (suggestions) {\n this.isLoading.set(false);\n }\n });\n }\n\n onProvideSuggestions(value: string) {\n this.searchterm.set(value);\n this.searchWidth.set(this.charWidth * (value.length + 2));\n if (value === '') {\n this.isOpen.set(false);\n } else {\n this.isLoading.set(true);\n this.isOpen.set(true);\n this.provideSuggestions.emit(value);\n }\n }\n\n onSuggestionClicked(suggestion: T) {\n this.searchterm.set('');\n this.isOpen.set(false);\n\n const currentItems = this.selectedItems();\n const existing = currentItems.find((value, index) => value.id === suggestion.id);\n if (existing === undefined) {\n this.selectedItems.set([...currentItems, suggestion]);\n } else {\n this.selectedItems.set(currentItems.filter(item => item.id !== suggestion.id));\n }\n\n this.searchBox().nativeElement.focus();\n }\n\n onRemoveItem(item: T, event: MouseEvent) {\n event.stopPropagation();\n const currentItems = this.selectedItems();\n this.selectedItems.set(currentItems.filter(i => i.id !== item.id));\n this.focus();\n }\n\n public focus() {\n this.searchBox().nativeElement.focus();\n }\n}\n","<bs-has-overlay></bs-has-overlay>\n<div bsDropdown [(isOpen)]=\"isOpen\" [hasBackdrop]=\"false\" [sameDropdownWidth]=\"true\" #itemsBox class=\"items-box text-wrap\" role=\"combobox\" [attr.aria-expanded]=\"isOpen()\">\n @for (item of selectedItems(); track item) {\n <ng-container *ngTemplateOutlet=\"itemTemplate ?? defaultItemTemplate; context: { $implicit: item, select2: this }\"></ng-container>\n }\n\n <input type=\"text\" autocomplete=\"off\"\n [ngModel]=\"searchterm()\"\n (ngModelChange)=\"onProvideSuggestions($event)\"\n (focus)=\"isFocused.set(true)\"\n (blur)=\"isFocused.set(false)\"\n [style.width.px]=\"searchWidth()\"\n aria-autocomplete=\"list\"\n aria-haspopup=\"listbox\"\n #searchBox />\n <bs-dropdown-menu *bsDropdownMenu [maxHeight]=\"200\" role=\"listbox\">\n @for (suggestion of suggestions(); track $index) {\n <bs-dropdown-item (click)=\"onSuggestionClicked(suggestion)\" [isSelected]=\"selectedItems() | bsInList:suggestion.id\" role=\"option\" [attr.aria-selected]=\"(selectedItems() | bsInList:suggestion.id) || null\">\n <ng-container *ngTemplateOutlet=\"suggestionTemplate ?? defaultSuggestionTemplate; context: { $implicit: suggestion, select2: this }\"></ng-container>\n </bs-dropdown-item>\n }\n </bs-dropdown-menu>\n</div>\n\n<ng-template #defaultItemTemplate let-item let-select2=\"select2\">\n <span class=\"select2-item\">\n <button type=\"button\" (click)=\"select2.onRemoveItem(item,$event)\" aria-label=\"Remove item\" class=\"btn-close-inline\">×</button>\n {{ item.text }}\n </span>\n</ng-template>\n\n<ng-template #defaultSuggestionTemplate let-suggestion let-select2=\"select2\">\n {{ suggestion.text }}\n</ng-template>\n","import { Directive, effect, inject, input, isSignal, TemplateRef, untracked, WritableSignal } from '@angular/core';\nimport { BsSelect2Component } from '../../component/select2.component';\nimport { HasId } from '@mintplayer/ng-bootstrap/has-id';\n\n@Directive({\n selector: '[bsItemTemplate]',\n})\nexport class BsItemTemplateDirective<T extends HasId<U>, U> {\n private select2component = inject<BsSelect2Component<T, U>>(BsSelect2Component);\n private templateRef = inject<TemplateRef<T>>(TemplateRef);\n private sourceSignal?: WritableSignal<T[]>;\n private lastSourceValue?: T[];\n\n constructor() {\n this.select2component.itemTemplate = this.templateRef;\n\n // Sync input value to component\n effect(() => {\n const value = this.bsItemTemplateOf();\n if (value) {\n if (isSignal(value)) {\n // Store the signal reference for two-way binding\n this.sourceSignal = value as WritableSignal<T[]>;\n this.lastSourceValue = value();\n this.select2component.selectedItems.set(value());\n } else {\n // Plain array - one-way binding (backward compatible)\n this.sourceSignal = undefined;\n this.select2component.selectedItems.set(value as T[]);\n }\n }\n });\n\n // Sync changes from component back to source signal\n effect(() => {\n const componentValue = this.select2component.selectedItems();\n if (this.sourceSignal) {\n const sourceValue = untracked(() => this.sourceSignal!());\n if (componentValue !== sourceValue) {\n this.sourceSignal.set(componentValue);\n }\n }\n });\n\n // Sync changes from source signal to component\n effect(() => {\n if (this.sourceSignal) {\n const sourceValue = this.sourceSignal();\n if (sourceValue !== this.lastSourceValue) {\n this.lastSourceValue = sourceValue;\n const componentValue = untracked(() => this.select2component.selectedItems());\n if (sourceValue !== componentValue) {\n this.select2component.selectedItems.set(sourceValue);\n }\n }\n }\n });\n }\n\n public static ngTemplateContextGuard<T extends HasId<U>, U>(dir: BsItemTemplateDirective<T, U>, ctx: any): ctx is BsItemTemplateContext<Exclude<T, false | 0 | '' | null | undefined>, U> {\n return true;\n }\n\n readonly bsItemTemplateOf = input<T[] | WritableSignal<T[]> | undefined>(undefined);\n}\n\nexport class BsItemTemplateContext<T extends HasId<U>, U> {\n $implicit: T = null!;\n select2: BsSelect2Component<T, U> = null!;\n}","import { Directive, effect, inject, input, TemplateRef } from '@angular/core';\nimport { BsSelect2Component } from '../../component/select2.component';\nimport { HasId } from '@mintplayer/ng-bootstrap/has-id';\n\n@Directive({\n selector: '[bsSuggestionTemplate]',\n})\nexport class BsSuggestionTemplateDirective<T extends HasId<U>, U> {\n private select2component = inject<BsSelect2Component<T, U>>(BsSelect2Component);\n\n constructor() {\n const templateRef = inject<TemplateRef<T>>(TemplateRef);\n this.select2component.suggestionTemplate = templateRef;\n\n effect(() => {\n const value = this.bsSuggestionTemplateOf();\n if (value) {\n this.select2component.suggestions.set(value);\n }\n });\n }\n\n public static ngTemplateContextGuard<T extends HasId<U>, U>(dir: BsSuggestionTemplateDirective<T, U>, ctx: any): ctx is BsSuggestionTemplateContext<Exclude<T, false | 0 | '' | null | undefined>, U> {\n return true;\n }\n\n readonly bsSuggestionTemplateOf = input<T[] | undefined>(undefined);\n}\n\nexport class BsSuggestionTemplateContext<T extends HasId<U>, U> {\n $implicit: T = null!;\n select2: BsSelect2Component<T, U> = null!;\n}","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
@@ -1,10 +1,10 @@
1
1
  import { NgTemplateOutlet } from '@angular/common';
2
2
  import * as i0 from '@angular/core';
3
- import { viewChild, input, computed, ChangeDetectionStrategy, Component, inject, TemplateRef, Directive } from '@angular/core';
3
+ import { signal, viewChild, input, computed, ChangeDetectionStrategy, Component, inject, TemplateRef, Directive } from '@angular/core';
4
4
 
5
5
  class BsShellComponent {
6
6
  constructor() {
7
- this.sidebarTemplate = null;
7
+ this.sidebarTemplate = signal(null, ...(ngDevMode ? [{ debugName: "sidebarTemplate" }] : []));
8
8
  this.rootElement = viewChild.required('root');
9
9
  this.state = input('auto', ...(ngDevMode ? [{ debugName: "state" }] : []));
10
10
  this.breakpoint = input('md', ...(ngDevMode ? [{ debugName: "breakpoint" }] : []));
@@ -21,18 +21,18 @@ class BsShellComponent {
21
21
  this.rootElement().nativeElement.style.setProperty('--size', size);
22
22
  }
23
23
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsShellComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
24
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: BsShellComponent, isStandalone: true, selector: "bs-shell", inputs: { state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, breakpoint: { classPropertyName: "breakpoint", publicName: "breakpoint", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "rootElement", first: true, predicate: ["root"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"sidebar-root\" [class]=\"[stateClass(), breakpointClass()]\" #root>\n <div class=\"sidebar position-fixed pe-none\">\n <div class=\"sidebar-body d-flex flex-column pe-all\">\n <ng-container *ngTemplateOutlet=\"sidebarTemplate\"></ng-container>\n </div>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pe-all{pointer-events:all!important}.sidebar-root{--size: 15rem;transition:margin-left .3s ease-in-out}.sidebar-root .sidebar{top:0;bottom:0;left:0;width:var(--size);z-index:500;transition:margin-left .3s,width .3s}.sidebar-root .sidebar .sidebar-body{background:#333}.sidebar-root.shell-xs.show{margin-left:0}.sidebar-root.shell-xs.show .sidebar{width:100%;margin-left:0}.sidebar-root.shell-xs.show{margin-left:var(--size)}.sidebar-root.shell-xs.show .sidebar{width:var(--size);margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs.hide{margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}@media(max-width:575.98px){.sidebar-root.shell-sm.show{margin-left:0}.sidebar-root.shell-sm.show .sidebar{width:100%;margin-left:0}}@media(min-width:576px){.sidebar-root.shell-sm.show{margin-left:var(--size)}.sidebar-root.shell-sm.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:575.98px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:575.98px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.show{margin-left:0}.sidebar-root.shell-md.show .sidebar{width:100%;margin-left:0}}@media(min-width:768px){.sidebar-root.shell-md.show{margin-left:var(--size)}.sidebar-root.shell-md.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:767.98px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.show{margin-left:0}.sidebar-root.shell-lg.show .sidebar{width:100%;margin-left:0}}@media(min-width:992px){.sidebar-root.shell-lg.show{margin-left:var(--size)}.sidebar-root.shell-lg.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:991.98px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.show{margin-left:0}.sidebar-root.shell-xl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1200px){.sidebar-root.shell-xl.show{margin-left:var(--size)}.sidebar-root.shell-xl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1199.98px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.show{margin-left:0}.sidebar-root.shell-xxl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1400px){.sidebar-root.shell-xxl.show{margin-left:var(--size)}.sidebar-root.shell-xxl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1399.98px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
24
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.1.6", type: BsShellComponent, isStandalone: true, selector: "bs-shell", inputs: { state: { classPropertyName: "state", publicName: "state", isSignal: true, isRequired: false, transformFunction: null }, breakpoint: { classPropertyName: "breakpoint", publicName: "breakpoint", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "rootElement", first: true, predicate: ["root"], descendants: true, isSignal: true }], ngImport: i0, template: "<div class=\"sidebar-root\" [class]=\"[stateClass(), breakpointClass()]\" #root>\n <div class=\"sidebar position-fixed pe-none\">\n <div class=\"sidebar-body d-flex flex-column pe-all\">\n <ng-container *ngTemplateOutlet=\"sidebarTemplate()\"></ng-container>\n </div>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pe-all{pointer-events:all!important}.sidebar-root{--size: 15rem;transition:margin-left .3s ease-in-out}.sidebar-root .sidebar{top:0;bottom:0;left:0;width:var(--size);z-index:500;transition:margin-left .3s,width .3s}.sidebar-root .sidebar .sidebar-body{background:#333}.sidebar-root.shell-xs.show{margin-left:0}.sidebar-root.shell-xs.show .sidebar{width:100%;margin-left:0}.sidebar-root.shell-xs.show{margin-left:var(--size)}.sidebar-root.shell-xs.show .sidebar{width:var(--size);margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs.hide{margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}@media(max-width:575.98px){.sidebar-root.shell-sm.show{margin-left:0}.sidebar-root.shell-sm.show .sidebar{width:100%;margin-left:0}}@media(min-width:576px){.sidebar-root.shell-sm.show{margin-left:var(--size)}.sidebar-root.shell-sm.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:575.98px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:575.98px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.show{margin-left:0}.sidebar-root.shell-md.show .sidebar{width:100%;margin-left:0}}@media(min-width:768px){.sidebar-root.shell-md.show{margin-left:var(--size)}.sidebar-root.shell-md.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:767.98px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.show{margin-left:0}.sidebar-root.shell-lg.show .sidebar{width:100%;margin-left:0}}@media(min-width:992px){.sidebar-root.shell-lg.show{margin-left:var(--size)}.sidebar-root.shell-lg.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:991.98px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.show{margin-left:0}.sidebar-root.shell-xl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1200px){.sidebar-root.shell-xl.show{margin-left:var(--size)}.sidebar-root.shell-xl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1199.98px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.show{margin-left:0}.sidebar-root.shell-xxl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1400px){.sidebar-root.shell-xxl.show{margin-left:var(--size)}.sidebar-root.shell-xxl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1399.98px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
25
25
  }
26
26
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsShellComponent, decorators: [{
27
27
  type: Component,
28
- args: [{ selector: 'bs-shell', imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sidebar-root\" [class]=\"[stateClass(), breakpointClass()]\" #root>\n <div class=\"sidebar position-fixed pe-none\">\n <div class=\"sidebar-body d-flex flex-column pe-all\">\n <ng-container *ngTemplateOutlet=\"sidebarTemplate\"></ng-container>\n </div>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pe-all{pointer-events:all!important}.sidebar-root{--size: 15rem;transition:margin-left .3s ease-in-out}.sidebar-root .sidebar{top:0;bottom:0;left:0;width:var(--size);z-index:500;transition:margin-left .3s,width .3s}.sidebar-root .sidebar .sidebar-body{background:#333}.sidebar-root.shell-xs.show{margin-left:0}.sidebar-root.shell-xs.show .sidebar{width:100%;margin-left:0}.sidebar-root.shell-xs.show{margin-left:var(--size)}.sidebar-root.shell-xs.show .sidebar{width:var(--size);margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs.hide{margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}@media(max-width:575.98px){.sidebar-root.shell-sm.show{margin-left:0}.sidebar-root.shell-sm.show .sidebar{width:100%;margin-left:0}}@media(min-width:576px){.sidebar-root.shell-sm.show{margin-left:var(--size)}.sidebar-root.shell-sm.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:575.98px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:575.98px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.show{margin-left:0}.sidebar-root.shell-md.show .sidebar{width:100%;margin-left:0}}@media(min-width:768px){.sidebar-root.shell-md.show{margin-left:var(--size)}.sidebar-root.shell-md.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:767.98px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.show{margin-left:0}.sidebar-root.shell-lg.show .sidebar{width:100%;margin-left:0}}@media(min-width:992px){.sidebar-root.shell-lg.show{margin-left:var(--size)}.sidebar-root.shell-lg.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:991.98px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.show{margin-left:0}.sidebar-root.shell-xl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1200px){.sidebar-root.shell-xl.show{margin-left:var(--size)}.sidebar-root.shell-xl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1199.98px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.show{margin-left:0}.sidebar-root.shell-xxl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1400px){.sidebar-root.shell-xxl.show{margin-left:var(--size)}.sidebar-root.shell-xxl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1399.98px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}\n"] }]
28
+ args: [{ selector: 'bs-shell', imports: [NgTemplateOutlet], changeDetection: ChangeDetectionStrategy.OnPush, template: "<div class=\"sidebar-root\" [class]=\"[stateClass(), breakpointClass()]\" #root>\n <div class=\"sidebar position-fixed pe-none\">\n <div class=\"sidebar-body d-flex flex-column pe-all\">\n <ng-container *ngTemplateOutlet=\"sidebarTemplate()\"></ng-container>\n </div>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n", styles: [".pe-all{pointer-events:all!important}.sidebar-root{--size: 15rem;transition:margin-left .3s ease-in-out}.sidebar-root .sidebar{top:0;bottom:0;left:0;width:var(--size);z-index:500;transition:margin-left .3s,width .3s}.sidebar-root .sidebar .sidebar-body{background:#333}.sidebar-root.shell-xs.show{margin-left:0}.sidebar-root.shell-xs.show .sidebar{width:100%;margin-left:0}.sidebar-root.shell-xs.show{margin-left:var(--size)}.sidebar-root.shell-xs.show .sidebar{width:var(--size);margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs.hide{margin-left:0}.sidebar-root.shell-xs.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}.sidebar-root.shell-xs:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xs:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}@media(max-width:575.98px){.sidebar-root.shell-sm.show{margin-left:0}.sidebar-root.shell-sm.show .sidebar{width:100%;margin-left:0}}@media(min-width:576px){.sidebar-root.shell-sm.show{margin-left:var(--size)}.sidebar-root.shell-sm.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:575.98px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm.hide{margin-left:0}.sidebar-root.shell-sm.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:575.98px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:576px){.sidebar-root.shell-sm:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-sm:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.show{margin-left:0}.sidebar-root.shell-md.show .sidebar{width:100%;margin-left:0}}@media(min-width:768px){.sidebar-root.shell-md.show{margin-left:var(--size)}.sidebar-root.shell-md.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:767.98px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md.hide{margin-left:0}.sidebar-root.shell-md.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:767.98px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:768px){.sidebar-root.shell-md:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-md:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.show{margin-left:0}.sidebar-root.shell-lg.show .sidebar{width:100%;margin-left:0}}@media(min-width:992px){.sidebar-root.shell-lg.show{margin-left:var(--size)}.sidebar-root.shell-lg.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:991.98px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg.hide{margin-left:0}.sidebar-root.shell-lg.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:991.98px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:992px){.sidebar-root.shell-lg:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-lg:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.show{margin-left:0}.sidebar-root.shell-xl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1200px){.sidebar-root.shell-xl.show{margin-left:var(--size)}.sidebar-root.shell-xl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1199.98px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl.hide{margin-left:0}.sidebar-root.shell-xl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1199.98px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1200px){.sidebar-root.shell-xl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.show{margin-left:0}.sidebar-root.shell-xxl.show .sidebar{width:100%;margin-left:0}}@media(min-width:1400px){.sidebar-root.shell-xxl.show{margin-left:var(--size)}.sidebar-root.shell-xxl.show .sidebar{width:var(--size);margin-left:0}}@media(max-width:1399.98px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl.hide{margin-left:0}.sidebar-root.shell-xxl.hide .sidebar{width:var(--size);margin-left:calc(-1 * var(--size))}}@media(max-width:1399.98px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:0}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:100%;margin-left:-100%}}@media(min-width:1400px){.sidebar-root.shell-xxl:not(.show):not(.hide){margin-left:var(--size)}.sidebar-root.shell-xxl:not(.show):not(.hide) .sidebar{width:var(--size);margin-left:0}}\n"] }]
29
29
  }], propDecorators: { rootElement: [{ type: i0.ViewChild, args: ['root', { isSignal: true }] }], state: [{ type: i0.Input, args: [{ isSignal: true, alias: "state", required: false }] }], breakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "breakpoint", required: false }] }] } });
30
30
 
31
31
  class BsShellSidebarDirective {
32
32
  constructor() {
33
33
  const shell = inject(BsShellComponent);
34
34
  const template = inject(TemplateRef);
35
- shell.sidebarTemplate = template;
35
+ shell.sidebarTemplate.set(template);
36
36
  }
37
37
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsShellSidebarDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive }); }
38
38
  static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "21.1.6", type: BsShellSidebarDirective, isStandalone: true, selector: "[bsShellSidebar]", ngImport: i0 }); }
@@ -1 +1 @@
1
- {"version":3,"file":"mintplayer-ng-bootstrap-shell.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/shell/src/shell/shell.component.ts","../../../../libs/mintplayer-ng-bootstrap/shell/src/shell/shell.component.html","../../../../libs/mintplayer-ng-bootstrap/shell/src/shell-sidebar/shell-sidebar.directive.ts","../../../../libs/mintplayer-ng-bootstrap/shell/mintplayer-ng-bootstrap-shell.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, input, TemplateRef, viewChild } from '@angular/core';\nimport { BsShellState } from '../shell-state';\nimport { Breakpoint } from '@mintplayer/ng-bootstrap';\n\n@Component({\n selector: 'bs-shell',\n templateUrl: './shell.component.html',\n styleUrl: './shell.component.scss',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsShellComponent {\n\n sidebarTemplate: TemplateRef<any> | null = null;\n readonly rootElement = viewChild.required<ElementRef<HTMLDivElement>>('root');\n\n state = input<BsShellState>('auto');\n breakpoint = input<Breakpoint>('md');\n\n stateClass = computed(() => {\n const state = this.state();\n if (state === 'auto') return null;\n else return state;\n });\n\n breakpointClass = computed(() => `shell-${this.breakpoint()}`);\n\n public setSize(size: string) {\n this.rootElement().nativeElement.style.setProperty('--size', size);\n }\n}\n","<div class=\"sidebar-root\" [class]=\"[stateClass(), breakpointClass()]\" #root>\n <div class=\"sidebar position-fixed pe-none\">\n <div class=\"sidebar-body d-flex flex-column pe-all\">\n <ng-container *ngTemplateOutlet=\"sidebarTemplate\"></ng-container>\n </div>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { BsShellComponent } from '../shell/shell.component';\n\n@Directive({\n selector: '[bsShellSidebar]',\n})\nexport class BsShellSidebarDirective {\n constructor() {\n const shell = inject(BsShellComponent);\n const template = inject(TemplateRef);\n shell.sidebarTemplate = template;\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mintplayer-ng-bootstrap-shell.mjs","sources":["../../../../libs/mintplayer-ng-bootstrap/shell/src/shell/shell.component.ts","../../../../libs/mintplayer-ng-bootstrap/shell/src/shell/shell.component.html","../../../../libs/mintplayer-ng-bootstrap/shell/src/shell-sidebar/shell-sidebar.directive.ts","../../../../libs/mintplayer-ng-bootstrap/shell/mintplayer-ng-bootstrap-shell.ts"],"sourcesContent":["import { NgTemplateOutlet } from '@angular/common';\nimport { ChangeDetectionStrategy, Component, computed, ElementRef, input, signal, TemplateRef, viewChild } from '@angular/core';\nimport { BsShellState } from '../shell-state';\nimport { Breakpoint } from '@mintplayer/ng-bootstrap';\n\n@Component({\n selector: 'bs-shell',\n templateUrl: './shell.component.html',\n styleUrl: './shell.component.scss',\n imports: [NgTemplateOutlet],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class BsShellComponent {\n\n sidebarTemplate = signal<TemplateRef<any> | null>(null);\n readonly rootElement = viewChild.required<ElementRef<HTMLDivElement>>('root');\n\n state = input<BsShellState>('auto');\n breakpoint = input<Breakpoint>('md');\n\n stateClass = computed(() => {\n const state = this.state();\n if (state === 'auto') return null;\n else return state;\n });\n\n breakpointClass = computed(() => `shell-${this.breakpoint()}`);\n\n public setSize(size: string) {\n this.rootElement().nativeElement.style.setProperty('--size', size);\n }\n}\n","<div class=\"sidebar-root\" [class]=\"[stateClass(), breakpointClass()]\" #root>\n <div class=\"sidebar position-fixed pe-none\">\n <div class=\"sidebar-body d-flex flex-column pe-all\">\n <ng-container *ngTemplateOutlet=\"sidebarTemplate()\"></ng-container>\n </div>\n </div>\n <div class=\"content\">\n <ng-content></ng-content>\n </div>\n</div>\n","import { Directive, inject, TemplateRef } from '@angular/core';\nimport { BsShellComponent } from '../shell/shell.component';\n\n@Directive({\n selector: '[bsShellSidebar]',\n})\nexport class BsShellSidebarDirective {\n constructor() {\n const shell = inject(BsShellComponent);\n const template = inject(TemplateRef);\n shell.sidebarTemplate.set(template);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;MAYa,gBAAgB,CAAA;AAP7B,IAAA,WAAA,GAAA;AASE,QAAA,IAAA,CAAA,eAAe,GAAG,MAAM,CAA0B,IAAI,2DAAC;AAC9C,QAAA,IAAA,CAAA,WAAW,GAAG,SAAS,CAAC,QAAQ,CAA6B,MAAM,CAAC;AAE7E,QAAA,IAAA,CAAA,KAAK,GAAG,KAAK,CAAe,MAAM,iDAAC;AACnC,QAAA,IAAA,CAAA,UAAU,GAAG,KAAK,CAAa,IAAI,sDAAC;AAEpC,QAAA,IAAA,CAAA,UAAU,GAAG,QAAQ,CAAC,MAAK;AACzB,YAAA,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE;YAC1B,IAAI,KAAK,KAAK,MAAM;AAAE,gBAAA,OAAO,IAAI;;AAC5B,gBAAA,OAAO,KAAK;AACnB,QAAA,CAAC,sDAAC;AAEF,QAAA,IAAA,CAAA,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAA,MAAA,EAAS,IAAI,CAAC,UAAU,EAAE,CAAA,CAAE,2DAAC;AAK/D,IAAA;AAHQ,IAAA,OAAO,CAAC,IAAY,EAAA;AACzB,QAAA,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC;IACpE;8GAlBW,gBAAgB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAhB,gBAAgB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,EAAA,iBAAA,EAAA,OAAA,EAAA,UAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,UAAA,EAAA,EAAA,iBAAA,EAAA,YAAA,EAAA,UAAA,EAAA,YAAA,EAAA,QAAA,EAAA,IAAA,EAAA,UAAA,EAAA,KAAA,EAAA,iBAAA,EAAA,IAAA,EAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,aAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,MAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECZ7B,2YAUA,EAAA,MAAA,EAAA,CAAA,s/KAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EDDY,gBAAgB,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,CAAA;;2FAGf,gBAAgB,EAAA,UAAA,EAAA,CAAA;kBAP5B,SAAS;AACE,YAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,UAAU,WAGX,CAAC,gBAAgB,CAAC,EAAA,eAAA,EACV,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,2YAAA,EAAA,MAAA,EAAA,CAAA,s/KAAA,CAAA,EAAA;yEAKuB,MAAM,EAAA,EAAA,QAAA,EAAA,IAAA,EAAA,CAAA,EAAA,CAAA,EAAA,KAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,OAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,UAAA,EAAA,CAAA,EAAA,IAAA,EAAA,EAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,IAAA,EAAA,KAAA,EAAA,YAAA,EAAA,QAAA,EAAA,KAAA,EAAA,CAAA,EAAA,CAAA,EAAA,EAAA,CAAA;;METjE,uBAAuB,CAAA;AAClC,IAAA,WAAA,GAAA;AACE,QAAA,MAAM,KAAK,GAAG,MAAM,CAAC,gBAAgB,CAAC;AACtC,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC;AACpC,QAAA,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC;IACrC;8GALW,uBAAuB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;kGAAvB,uBAAuB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,kBAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA;;2FAAvB,uBAAuB,EAAA,UAAA,EAAA,CAAA;kBAHnC,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,kBAAkB;AAC7B,iBAAA;;;ACLD;;AAEG;;;;"}
@@ -48,7 +48,7 @@ class BsTabControlComponent {
48
48
  this.dragBoundarySelector = computed(() => this.restrictDragging() ? 'ul' : '', ...(ngDevMode ? [{ debugName: "dragBoundarySelector" }] : []));
49
49
  this.tabPages = contentChildren(BsTabPageComponent, ...(ngDevMode ? [{ debugName: "tabPages" }] : []));
50
50
  this.activeTab = signal(null, ...(ngDevMode ? [{ debugName: "activeTab" }] : []));
51
- this.orderedTabPages = [];
51
+ this.orderedTabPages = signal([], ...(ngDevMode ? [{ debugName: "orderedTabPages" }] : []));
52
52
  this.tabControlId = signal(0, ...(ngDevMode ? [{ debugName: "tabControlId" }] : []));
53
53
  this.tabControlName = computed(() => `bs-tab-control-${this.tabControlId()}`, ...(ngDevMode ? [{ debugName: "tabControlName" }] : []));
54
54
  this.topTabs = computed(() => this.tabsPosition() === 'top', ...(ngDevMode ? [{ debugName: "topTabs" }] : []));
@@ -70,8 +70,10 @@ class BsTabControlComponent {
70
70
  // Update orderedTabPages whenever content children change
71
71
  effect(() => {
72
72
  const list = this.tabPages();
73
- const toAdd = list.filter(tp => !this.orderedTabPages.includes(tp));
74
- this.orderedTabPages = this.orderedTabPages.concat(toAdd).filter((tp) => list.includes(tp));
73
+ this.orderedTabPages.update(current => {
74
+ const toAdd = list.filter(tp => !current.includes(tp));
75
+ return current.concat(toAdd).filter((tp) => list.includes(tp));
76
+ });
75
77
  });
76
78
  }
77
79
  static { this.tabControlCounter = 0; }
@@ -88,13 +90,17 @@ class BsTabControlComponent {
88
90
  }
89
91
  moveTab(ev) {
90
92
  if (ev.previousContainer === ev.container) {
91
- moveItemInArray(this.orderedTabPages, ev.previousIndex, ev.currentIndex);
93
+ this.orderedTabPages.update(current => {
94
+ const copy = [...current];
95
+ moveItemInArray(copy, ev.previousIndex, ev.currentIndex);
96
+ return copy;
97
+ });
92
98
  }
93
99
  }
94
100
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsTabControlComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
95
101
  static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.1.6", type: BsTabControlComponent, isStandalone: true, selector: "bs-tab-control", inputs: { border: { classPropertyName: "border", publicName: "border", isSignal: true, isRequired: false, transformFunction: null }, restrictDragging: { classPropertyName: "restrictDragging", publicName: "restrictDragging", isSignal: true, isRequired: false, transformFunction: null }, selectFirstTab: { classPropertyName: "selectFirstTab", publicName: "selectFirstTab", isSignal: true, isRequired: false, transformFunction: null }, tabsPosition: { classPropertyName: "tabsPosition", publicName: "tabsPosition", isSignal: true, isRequired: false, transformFunction: null }, allowDragDrop: { classPropertyName: "allowDragDrop", publicName: "allowDragDrop", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "d-block position-relative" }, providers: [
96
102
  { provide: 'TAB_CONTROL', useExisting: BsTabControlComponent }
97
- ], queries: [{ propertyName: "tabPages", predicate: BsTabPageComponent, isSignal: true }], ngImport: i0, template: "@let activeTabValue = activeTab();\n@if (topTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages; track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n<div class=\"tab-content flex-grow-1 overflow-auto\" bsNoNoscript [class.border]=\"border() && activeTabValue\" [class.border-top]=\"border() && !activeTabValue\">\n\t<ng-content></ng-content>\n</div>\n@if (bottomTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc bottom-tabs\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages; track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion:reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}:host ::ng-deep .nav-link.disabled,:host ::ng-deep .nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}:host ::ng-deep .nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}:host ::ng-deep .nav-underline .nav-link:hover,:host ::ng-deep .nav-underline .nav-link:focus{border-bottom-color:currentcolor}:host ::ng-deep .nav-underline .nav-link.active,:host ::ng-deep .nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-grow:1;flex-basis:0;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;top:2px;z-index:10;flex-shrink:0}.tsc .nav.nav-tabs{border-bottom:0}.tsc.bottom-tabs{margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs{border-bottom-width:0px}.tsc.bottom-tabs .nav.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.tsc.bottom-tabs .nav.nav-tabs .nav-item{margin-bottom:2px;margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs .nav-item.show .nav-link,.tsc.bottom-tabs .nav.nav-tabs .nav-link.active{border-color:#fff #dee2e6 #dee2e6 #dee2e6}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: BsNoNoscriptDirective, selector: "[bsNoNoscript]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
103
+ ], queries: [{ propertyName: "tabPages", predicate: BsTabPageComponent, isSignal: true }], ngImport: i0, template: "@let activeTabValue = activeTab();\n@if (topTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages(); track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n<div class=\"tab-content flex-grow-1 overflow-auto\" bsNoNoscript [class.border]=\"border() && activeTabValue\" [class.border-top]=\"border() && !activeTabValue\">\n\t<ng-content></ng-content>\n</div>\n@if (bottomTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc bottom-tabs\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages(); track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion:reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}:host ::ng-deep .nav-link.disabled,:host ::ng-deep .nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}:host ::ng-deep .nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}:host ::ng-deep .nav-underline .nav-link:hover,:host ::ng-deep .nav-underline .nav-link:focus{border-bottom-color:currentcolor}:host ::ng-deep .nav-underline .nav-link.active,:host ::ng-deep .nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-grow:1;flex-basis:0;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;top:2px;z-index:10;flex-shrink:0}.tsc .nav.nav-tabs{border-bottom:0}.tsc.bottom-tabs{margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs{border-bottom-width:0px}.tsc.bottom-tabs .nav.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.tsc.bottom-tabs .nav.nav-tabs .nav-item{margin-bottom:2px;margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs .nav-item.show .nav-link,.tsc.bottom-tabs .nav.nav-tabs .nav-link.active{border-color:#fff #dee2e6 #dee2e6 #dee2e6}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "ngmodule", type: DragDropModule }, { kind: "directive", type: i1.CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "directive", type: i1.CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: BsNoNoscriptDirective, selector: "[bsNoNoscript]" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
98
104
  }
99
105
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImport: i0, type: BsTabControlComponent, decorators: [{
100
106
  type: Component,
@@ -102,7 +108,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.1.6", ngImpor
102
108
  { provide: 'TAB_CONTROL', useExisting: BsTabControlComponent }
103
109
  ], changeDetection: ChangeDetectionStrategy.OnPush, host: {
104
110
  'class': 'd-block position-relative',
105
- }, template: "@let activeTabValue = activeTab();\n@if (topTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages; track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n<div class=\"tab-content flex-grow-1 overflow-auto\" bsNoNoscript [class.border]=\"border() && activeTabValue\" [class.border-top]=\"border() && !activeTabValue\">\n\t<ng-content></ng-content>\n</div>\n@if (bottomTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc bottom-tabs\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages; track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion:reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}:host ::ng-deep .nav-link.disabled,:host ::ng-deep .nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}:host ::ng-deep .nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}:host ::ng-deep .nav-underline .nav-link:hover,:host ::ng-deep .nav-underline .nav-link:focus{border-bottom-color:currentcolor}:host ::ng-deep .nav-underline .nav-link.active,:host ::ng-deep .nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-grow:1;flex-basis:0;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;top:2px;z-index:10;flex-shrink:0}.tsc .nav.nav-tabs{border-bottom:0}.tsc.bottom-tabs{margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs{border-bottom-width:0px}.tsc.bottom-tabs .nav.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.tsc.bottom-tabs .nav.nav-tabs .nav-item{margin-bottom:2px;margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs .nav-item.show .nav-link,.tsc.bottom-tabs .nav.nav-tabs .nav-link.active{border-color:#fff #dee2e6 #dee2e6 #dee2e6}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"] }]
111
+ }, template: "@let activeTabValue = activeTab();\n@if (topTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages(); track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n<div class=\"tab-content flex-grow-1 overflow-auto\" bsNoNoscript [class.border]=\"border() && activeTabValue\" [class.border-top]=\"border() && !activeTabValue\">\n\t<ng-content></ng-content>\n</div>\n@if (bottomTabs()) {\n\t<div class=\"overflow-hidden mw-100 tsc bottom-tabs\">\n\t\t<ul cdkDropList #list #tabList=\"cdkDropList\"\n\t\t\t[cdkDropListData]=\"tabPages()\"\n\t\t\t[cdkDropListConnectedTo]=\"[]\"\n\t\t\t[cdkDropListOrientation]=\"'horizontal'\"\n\t\t\t(cdkDropListDropped)=\"moveTab($event)\"\n\t\t\t[cdkDropListDisabled]=\"disableDragDrop()\"\n\t\t\tclass=\"nav nav-tabs flex-nowrap overflow-x-auto overflow-y-hidden\"\n\t\t\trole=\"tablist\">\n\t\t\t@for (tab of orderedTabPages(); track tab) {\n\t\t\t\t@if (tab.headerTemplate()) {\n\t\t\t\t\t<li class=\"nav-item\" role=\"presentation\" cdkDrag [cdkDragBoundary]=\"dragBoundarySelector()\" [cdkDragStartDelay]=\"500\" (cdkDragStarted)=\"startDragTab($event)\">\n\t\t\t\t\t\t<button type=\"button\"\n\t\t\t\t\t\t\t[id]=\"tab.tabName()\"\n\t\t\t\t\t\t\tclass=\"nav-link text-nowrap\"\n\t\t\t\t\t\t\t[class.active]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[class.disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\trole=\"tab\"\n\t\t\t\t\t\t\t[attr.aria-selected]=\"activeTabValue === tab\"\n\t\t\t\t\t\t\t[attr.aria-controls]=\"tab.tabName() + '-panel'\"\n\t\t\t\t\t\t\t[attr.aria-disabled]=\"tab.disabled() || null\"\n\t\t\t\t\t\t\t[disabled]=\"tab.disabled()\"\n\t\t\t\t\t\t\t(click)=\"setActiveTab(tab)\">\n\t\t\t\t\t\t\t<ng-container [ngTemplateOutlet]=\"tab.headerTemplate()!.template\"></ng-container>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</li>\n\t\t\t\t}\n\t\t\t}\n\t\t</ul>\n\t</div>\n}\n", styles: [":host ::ng-deep .nav{--bs-nav-link-padding-x: 1rem;--bs-nav-link-padding-y: .5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color: var(--bs-link-color);--bs-nav-link-hover-color: var(--bs-link-hover-color);--bs-nav-link-disabled-color: var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}:host ::ng-deep .nav-link{display:block;padding:var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:none;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion:reduce){:host ::ng-deep .nav-link{transition:none}}:host ::ng-deep .nav-link:hover,:host ::ng-deep .nav-link:focus{color:var(--bs-nav-link-hover-color)}:host ::ng-deep .nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem #0d6efd40}:host ::ng-deep .nav-link.disabled,:host ::ng-deep .nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}:host ::ng-deep .nav-tabs{--bs-nav-tabs-border-width: var(--bs-border-width);--bs-nav-tabs-border-color: var(--bs-border-color);--bs-nav-tabs-border-radius: var(--bs-border-radius);--bs-nav-tabs-link-hover-border-color: var(--bs-secondary-bg) var(--bs-secondary-bg) var(--bs-border-color);--bs-nav-tabs-link-active-color: var(--bs-emphasis-color);--bs-nav-tabs-link-active-bg: var(--bs-body-bg);--bs-nav-tabs-link-active-border-color: var(--bs-border-color) var(--bs-border-color) var(--bs-body-bg);border-bottom:var(--bs-nav-tabs-border-width) solid var(--bs-nav-tabs-border-color)}:host ::ng-deep .nav-tabs .nav-link{margin-bottom:calc(-1 * var(--bs-nav-tabs-border-width));border:var(--bs-nav-tabs-border-width) solid transparent;border-top-left-radius:var(--bs-nav-tabs-border-radius);border-top-right-radius:var(--bs-nav-tabs-border-radius)}:host ::ng-deep .nav-tabs .nav-link:hover,:host ::ng-deep .nav-tabs .nav-link:focus{isolation:isolate;border-color:var(--bs-nav-tabs-link-hover-border-color)}:host ::ng-deep .nav-tabs .nav-link.active,:host ::ng-deep .nav-tabs .nav-item.show .nav-link{color:var(--bs-nav-tabs-link-active-color);background-color:var(--bs-nav-tabs-link-active-bg);border-color:var(--bs-nav-tabs-link-active-border-color)}:host ::ng-deep .nav-tabs .dropdown-menu{margin-top:calc(-1 * var(--bs-nav-tabs-border-width));border-top-left-radius:0;border-top-right-radius:0}:host ::ng-deep .nav-pills{--bs-nav-pills-border-radius: var(--bs-border-radius);--bs-nav-pills-link-active-color: #fff;--bs-nav-pills-link-active-bg: #0d6efd}:host ::ng-deep .nav-pills .nav-link{border-radius:var(--bs-nav-pills-border-radius)}:host ::ng-deep .nav-pills .nav-link.active,:host ::ng-deep .nav-pills .show>.nav-link{color:var(--bs-nav-pills-link-active-color);background-color:var(--bs-nav-pills-link-active-bg)}:host ::ng-deep .nav-underline{--bs-nav-underline-gap: 1rem;--bs-nav-underline-border-width: .125rem;--bs-nav-underline-link-active-color: var(--bs-emphasis-color);gap:var(--bs-nav-underline-gap)}:host ::ng-deep .nav-underline .nav-link{padding-right:0;padding-left:0;border-bottom:var(--bs-nav-underline-border-width) solid transparent}:host ::ng-deep .nav-underline .nav-link:hover,:host ::ng-deep .nav-underline .nav-link:focus{border-bottom-color:currentcolor}:host ::ng-deep .nav-underline .nav-link.active,:host ::ng-deep .nav-underline .show>.nav-link{font-weight:700;color:var(--bs-nav-underline-link-active-color);border-bottom-color:currentcolor}:host ::ng-deep .nav-fill>.nav-link,:host ::ng-deep .nav-fill .nav-item{flex:1 1 auto;text-align:center}:host ::ng-deep .nav-justified>.nav-link,:host ::ng-deep .nav-justified .nav-item{flex-grow:1;flex-basis:0;text-align:center}:host ::ng-deep .nav-fill .nav-item .nav-link,:host ::ng-deep .nav-justified .nav-item .nav-link{width:100%}:host ::ng-deep .tab-content>.tab-pane{display:none}:host ::ng-deep .tab-content>.active{display:block}:host ::ng-deep .tab-content{margin-top:-1px}.tsc{max-height:41px;top:2px;z-index:10;flex-shrink:0}.tsc .nav.nav-tabs{border-bottom:0}.tsc.bottom-tabs{margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs{border-bottom-width:0px}.tsc.bottom-tabs .nav.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:0;border-top-right-radius:0;border-bottom-left-radius:.25rem;border-bottom-right-radius:.25rem}.tsc.bottom-tabs .nav.nav-tabs .nav-item{margin-bottom:2px;margin-top:-1px}.tsc.bottom-tabs .nav.nav-tabs .nav-item.show .nav-link,.tsc.bottom-tabs .nav.nav-tabs .nav-link.active{border-color:#fff #dee2e6 #dee2e6 #dee2e6}.tab-content.noscript::ng-deep>bs-tab-page>.tab-page-content{border:var(--bs-border-width) var(--bs-border-style) var(--bs-border-color)!important;margin-top:-1px}.overflow-y-hidden{overflow-y:hidden}\n"] }]
106
112
  }], ctorParameters: () => [], propDecorators: { border: [{ type: i0.Input, args: [{ isSignal: true, alias: "border", required: false }] }], restrictDragging: [{ type: i0.Input, args: [{ isSignal: true, alias: "restrictDragging", required: false }] }], selectFirstTab: [{ type: i0.Input, args: [{ isSignal: true, alias: "selectFirstTab", required: false }] }], tabsPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabsPosition", required: false }] }], allowDragDrop: [{ type: i0.Input, args: [{ isSignal: true, alias: "allowDragDrop", required: false }] }], tabPages: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => BsTabPageComponent), { isSignal: true }] }] } });
107
113
 
108
114
  /**