@koobiq/components 20.4.2 → 20.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/breadcrumbs/breadcrumbs.scss +16 -1
- package/fesm2022/koobiq-components-breadcrumbs.mjs +2 -2
- package/fesm2022/koobiq-components-breadcrumbs.mjs.map +1 -1
- package/fesm2022/koobiq-components-core.mjs +1 -1
- package/fesm2022/koobiq-components-core.mjs.map +1 -1
- package/fesm2022/koobiq-components-dl.mjs +6 -4
- package/fesm2022/koobiq-components-dl.mjs.map +1 -1
- package/fesm2022/koobiq-components-overflow-items.mjs +99 -42
- package/fesm2022/koobiq-components-overflow-items.mjs.map +1 -1
- package/fesm2022/koobiq-components-search-expandable.mjs +2 -0
- package/fesm2022/koobiq-components-search-expandable.mjs.map +1 -1
- package/fesm2022/koobiq-components-toggle.mjs +11 -4
- package/fesm2022/koobiq-components-toggle.mjs.map +1 -1
- package/fesm2022/koobiq-components-tree.mjs +49 -19
- package/fesm2022/koobiq-components-tree.mjs.map +1 -1
- package/overflow-items/index.d.ts +12 -3
- package/package.json +4 -4
- package/schematics/ng-add/index.js +1 -1
- package/tree/index.d.ts +10 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"koobiq-components-toggle.mjs","sources":["../../../packages/components/toggle/toggle.component.ts","../../../packages/components/toggle/toggle.component.html","../../../packages/components/toggle/toggle.module.ts","../../../packages/components/toggle/koobiq-components-toggle.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n effect,\n ElementRef,\n inject,\n Input,\n input,\n numberAttribute,\n OnDestroy,\n output,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { KBQ_CHECKBOX_CLICK_ACTION } from '@koobiq/components/checkbox';\nimport {\n KBQ_CHECKABLE_CLICK_ACTION,\n KbqAnimationCurves,\n KbqAnimationDurations,\n KbqCheckable,\n KbqCheckableClickAction,\n KbqCheckedState,\n KbqColorDirective,\n TransitionCheckState\n} from '@koobiq/components/core';\n\nlet nextUniqueId = 0;\n\ntype ToggleLabelPositionType = 'left' | 'right';\n\nexport class KbqToggleChange {\n source: KbqToggleComponent;\n checked: boolean;\n}\n\n/**\n * Toggle click action when user click on input element. Alias of `KbqCheckableClickAction`.\n */\nexport type KbqToggleClickAction = KbqCheckableClickAction;\n\n@Component({\n selector: 'kbq-toggle',\n imports: [\n CdkObserveContent\n ],\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.scss', './toggle-tokens.scss'],\n providers: [\n // Falls back to `KBQ_CHECKBOX_CLICK_ACTION` for backwards compatibility with apps that already\n // configure it globally to control click behavior for both checkbox and toggle.\n { provide: KBQ_CHECKABLE_CLICK_ACTION, useFactory: () => inject(KBQ_CHECKBOX_CLICK_ACTION, { optional: true }) }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-toggle',\n '[class.kbq-toggle_big]': 'big()',\n '[id]': 'id',\n '[attr.id]': 'id',\n '[class.kbq-disabled]': 'disabled || loading()',\n '[class.kbq-active]': 'checked',\n '[class.kbq-indeterminate]': 'indeterminate'\n },\n hostDirectives: [KbqCheckable],\n animations: [\n trigger('switch', [\n state(TransitionCheckState.Init, style({ left: '3px' })),\n state(TransitionCheckState.Unchecked, style({ left: '3px' })),\n state(TransitionCheckState.Indeterminate, style({ left: '10px', visibility: 'hidden' })),\n state(TransitionCheckState.Checked, style({ left: 'calc(100% - 11px)' })),\n transition(\n `${TransitionCheckState.Init} => ${TransitionCheckState.Checked}`,\n animate(KbqAnimationDurations.Entering)\n ),\n transition(\n `${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`,\n animate(KbqAnimationDurations.Rapid)\n ),\n transition(\n `${TransitionCheckState.Indeterminate} => *`,\n animate(`${KbqAnimationDurations.Instant} ${KbqAnimationCurves.EaseInOut}`)\n )\n ])\n ],\n exportAs: 'kbqToggle'\n})\nexport class KbqToggleComponent extends KbqColorDirective implements AfterViewInit, ControlValueAccessor, OnDestroy {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly checkable = inject(KbqCheckable, { self: true });\n\n readonly big = input<boolean>(false);\n\n readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n readonly labelPosition = input<ToggleLabelPositionType>('right');\n\n readonly ariaLabel = input<string>('', { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() id: string;\n\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n readonly name = input<string | null>(null);\n\n readonly value = input<string>(undefined!);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled() {\n return this.checkable.disabled();\n }\n\n set disabled(value: any) {\n this.checkable.disabled.set(value);\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: numberAttribute })\n get tabIndex(): number {\n return this.checkable.effectiveTabIndex();\n }\n\n set tabIndex(value: number) {\n this.checkable.tabIndex.set(value);\n }\n\n get checked() {\n return this.checkable.checked();\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n set checked(value: boolean) {\n if (value !== this.checkable.checked()) {\n this.checkable.checked.set(value);\n this.setTransitionCheckState();\n }\n }\n\n /**\n * Whether the toggle is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get indeterminate(): boolean {\n return this.checkable.indeterminate();\n }\n\n set indeterminate(value: boolean) {\n const changed = value !== this.checkable.indeterminate();\n\n this.checkable.indeterminate.set(value);\n\n if (changed) {\n this.setTransitionCheckState();\n this.indeterminateChange.emit(value);\n }\n }\n\n /**\n * Property for manually set loading state.\n */\n readonly loading = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n readonly change = output<KbqToggleChange>();\n\n /** Event emitted when the toggle's `indeterminate` value changes. */\n readonly indeterminateChange = output<boolean>();\n\n /** @docs-private */\n protected currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n\n /** Defines the behavior when a user clicks on the toggle. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() clickAction: KbqToggleClickAction = inject(KBQ_CHECKABLE_CLICK_ACTION, { optional: true }) || undefined;\n\n private uniqueId: string = `kbq-toggle-${++nextUniqueId}`;\n\n constructor() {\n super();\n\n this.id = this.uniqueId;\n\n // `writeValue` (ngModel/formControl) now runs on `KbqCheckable`, bypassing the `checked`/`indeterminate`\n // setters below, so this keeps the `[@switch]` animation state in sync for form-driven value changes too.\n effect(() => this.setTransitionCheckState());\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n focus(): void {\n this.focusMonitor.focusVia(this.inputElement().nativeElement, 'keyboard');\n }\n\n getAriaChecked(): KbqCheckedState {\n return this.checkable.getAriaChecked();\n }\n\n onChangeEvent(event: Event) {\n event.stopPropagation();\n }\n\n onLabelTextChange() {\n this.changeDetectorRef.markForCheck();\n }\n\n onInputClick(event: MouseEvent) {\n if (this.loading()) return;\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n\n const { shouldToggle, shouldClearIndeterminate } = this.checkable.resolveClick(this.clickAction);\n\n if (shouldToggle) {\n // When user manually click on the toggle, `indeterminate` is set to false.\n if (shouldClearIndeterminate) {\n Promise.resolve().then(() => {\n this.checkable.indeterminate.set(false);\n this.indeterminateChange.emit(false);\n });\n }\n\n this.checkable.toggle();\n this.checkable.onTouched();\n this.transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this.emitChangeEvent();\n } else if (!this.disabled) {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `kbq-toggle`.\n this.checkable.resetNativeInput(this.inputElement().nativeElement);\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n registerOnChange(fn: any) {\n this.checkable.registerOnChange(fn);\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n registerOnTouched(fn: any) {\n this.checkable.registerOnTouched(fn);\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n private setTransitionCheckState() {\n if (this.indeterminate) {\n this.transitionCheckState(TransitionCheckState.Indeterminate);\n } else {\n this.transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n }\n }\n\n private transitionCheckState(newState: TransitionCheckState) {\n if (this.currentCheckState === newState) return;\n\n this.currentCheckState = newState;\n }\n\n private emitChangeEvent() {\n // Note: `toggle()` already notifies the ControlValueAccessor change handler via `KbqCheckable.toggle()`.\n const event = new KbqToggleChange();\n\n event.source = this;\n event.checked = this.checked;\n\n this.change.emit(event);\n }\n}\n","<label class=\"kbq-toggle-layout\" [attr.for]=\"inputId\" [class.kbq-toggle-layout_left]=\"labelPosition() === 'left'\">\n <input\n #input\n role=\"switch\"\n type=\"checkbox\"\n class=\"kbq-toggle-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.name]=\"name()\"\n [attr.value]=\"value()\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onChangeEvent($event)\"\n (click)=\"onInputClick($event)\"\n (keydown.enter)=\"input.click()\"\n />\n <div class=\"kbq-toggle-bar-container\">\n <div class=\"kbq-toggle-bar\" [class.kbq-progress]=\"loading()\">\n <div class=\"kbq-toggle__circle\" [@switch]=\"currentCheckState\"></div>\n <div class=\"kbq-toggle__thumb\"></div>\n </div>\n </div>\n\n <div\n class=\"kbq-toggle__content\"\n [class.kbq-toggle__content_left]=\"labelPosition() === 'left'\"\n [class.kbq-toggle__content_right]=\"labelPosition() === 'right'\"\n >\n <span class=\"kbq-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { KbqToggleComponent } from './toggle.component';\n\n@NgModule({\n imports: [A11yModule, KbqToggleComponent],\n exports: [KbqToggleComponent]\n})\nexport class KbqToggleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"koobiq-components-toggle.mjs","sources":["../../../packages/components/toggle/toggle.component.ts","../../../packages/components/toggle/toggle.component.html","../../../packages/components/toggle/toggle.module.ts","../../../packages/components/toggle/koobiq-components-toggle.ts"],"sourcesContent":["import { animate, state, style, transition, trigger } from '@angular/animations';\nimport { FocusMonitor } from '@angular/cdk/a11y';\nimport { CdkObserveContent } from '@angular/cdk/observers';\nimport {\n AfterViewInit,\n booleanAttribute,\n ChangeDetectionStrategy,\n ChangeDetectorRef,\n Component,\n effect,\n ElementRef,\n inject,\n Input,\n input,\n numberAttribute,\n OnDestroy,\n output,\n viewChild,\n ViewEncapsulation\n} from '@angular/core';\nimport { ControlValueAccessor } from '@angular/forms';\nimport { KBQ_CHECKBOX_CLICK_ACTION } from '@koobiq/components/checkbox';\nimport {\n KBQ_CHECKABLE_CLICK_ACTION,\n KbqAnimationCurves,\n KbqAnimationDurations,\n KbqCheckable,\n KbqCheckableClickAction,\n KbqCheckedState,\n KbqColorDirective,\n TransitionCheckState\n} from '@koobiq/components/core';\n\nlet nextUniqueId = 0;\n\ntype ToggleLabelPositionType = 'left' | 'right';\n\nexport class KbqToggleChange {\n source: KbqToggleComponent;\n checked: boolean;\n}\n\n/**\n * Toggle click action when user click on input element. Alias of `KbqCheckableClickAction`.\n */\nexport type KbqToggleClickAction = KbqCheckableClickAction;\n\n@Component({\n selector: 'kbq-toggle',\n imports: [\n CdkObserveContent\n ],\n templateUrl: './toggle.component.html',\n styleUrls: ['./toggle.scss', './toggle-tokens.scss'],\n providers: [\n // Falls back to `KBQ_CHECKBOX_CLICK_ACTION` for backwards compatibility with apps that already\n // configure it globally to control click behavior for both checkbox and toggle.\n { provide: KBQ_CHECKABLE_CLICK_ACTION, useFactory: () => inject(KBQ_CHECKBOX_CLICK_ACTION, { optional: true }) }\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n host: {\n class: 'kbq-toggle',\n '[class.kbq-toggle_big]': 'big()',\n '[id]': 'id',\n '[attr.id]': 'id',\n '[class.kbq-disabled]': 'disabled || loading()',\n '[class.kbq-active]': 'checked',\n '[class.kbq-indeterminate]': 'indeterminate'\n },\n hostDirectives: [KbqCheckable],\n animations: [\n trigger('switch', [\n state(TransitionCheckState.Init, style({ left: '3px' })),\n state(TransitionCheckState.Unchecked, style({ left: '3px' })),\n state(TransitionCheckState.Indeterminate, style({ left: '10px', visibility: 'hidden' })),\n state(TransitionCheckState.Checked, style({ left: 'calc(100% - 11px)' })),\n transition(\n `${TransitionCheckState.Checked} <=> ${TransitionCheckState.Unchecked}`,\n animate(KbqAnimationDurations.Rapid)\n ),\n transition(\n `${TransitionCheckState.Indeterminate} => *`,\n animate(`${KbqAnimationDurations.Instant} ${KbqAnimationCurves.EaseInOut}`)\n )\n ])\n ],\n exportAs: 'kbqToggle'\n})\nexport class KbqToggleComponent extends KbqColorDirective implements AfterViewInit, ControlValueAccessor, OnDestroy {\n private readonly changeDetectorRef = inject(ChangeDetectorRef);\n private readonly focusMonitor = inject(FocusMonitor);\n private readonly checkable = inject(KbqCheckable, { self: true });\n\n readonly big = input<boolean>(false);\n\n readonly inputElement = viewChild.required<ElementRef<HTMLInputElement>>('input');\n\n readonly labelPosition = input<ToggleLabelPositionType>('right');\n\n readonly ariaLabel = input<string>('', { alias: 'aria-label' });\n readonly ariaLabelledby = input<string | null>(null, { alias: 'aria-labelledby' });\n\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() id: string;\n\n get inputId(): string {\n return `${this.id || this.uniqueId}-input`;\n }\n\n readonly name = input<string | null>(null);\n\n readonly value = input<string>(undefined!);\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n get disabled() {\n return this.checkable.disabled();\n }\n\n set disabled(value: any) {\n this.checkable.disabled.set(value);\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: numberAttribute })\n get tabIndex(): number {\n return this.checkable.effectiveTabIndex();\n }\n\n set tabIndex(value: number) {\n this.checkable.tabIndex.set(value);\n }\n\n get checked() {\n return this.checkable.checked();\n }\n\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input()\n set checked(value: boolean) {\n if (value !== this.checkable.checked()) {\n this.checkable.checked.set(value);\n this.setTransitionCheckState();\n }\n }\n\n /**\n * Whether the toggle is indeterminate. This is also known as \"mixed\" mode and can be used to\n * represent a checkbox with three states, e.g. a checkbox that represents a nested list of\n * checkable items. Note that whenever checkbox is manually clicked, indeterminate is immediately\n * set to false.\n */\n // TODO: Skipped for migration because:\n // Accessor inputs cannot be migrated as they are too complex.\n @Input({ transform: booleanAttribute })\n get indeterminate(): boolean {\n return this.checkable.indeterminate();\n }\n\n set indeterminate(value: boolean) {\n const changed = value !== this.checkable.indeterminate();\n\n this.checkable.indeterminate.set(value);\n\n if (changed) {\n this.setTransitionCheckState();\n this.indeterminateChange.emit(value);\n }\n }\n\n /**\n * Property for manually set loading state.\n */\n readonly loading = input<boolean, unknown>(false, { transform: booleanAttribute });\n\n readonly change = output<KbqToggleChange>();\n\n /** Event emitted when the toggle's `indeterminate` value changes. */\n readonly indeterminateChange = output<boolean>();\n\n /** @docs-private */\n protected currentCheckState: TransitionCheckState = TransitionCheckState.Init;\n\n /** Defines the behavior when a user clicks on the toggle. */\n // TODO: Skipped for migration because:\n // Your application code writes to the input. This prevents migration.\n @Input() clickAction: KbqToggleClickAction = inject(KBQ_CHECKABLE_CLICK_ACTION, { optional: true }) || undefined;\n\n private uniqueId: string = `kbq-toggle-${++nextUniqueId}`;\n\n constructor() {\n super();\n\n this.id = this.uniqueId;\n\n // `writeValue` (ngModel/formControl) now runs on `KbqCheckable`, bypassing the `checked`/`indeterminate`\n // setters below, so this keeps the `[@switch]` animation state in sync for form-driven value changes too.\n effect(() => this.setTransitionCheckState());\n }\n\n ngAfterViewInit(): void {\n this.focusMonitor.monitor(this.elementRef.nativeElement, true);\n }\n\n ngOnDestroy() {\n this.focusMonitor.stopMonitoring(this.elementRef.nativeElement);\n }\n\n focus(): void {\n this.focusMonitor.focusVia(this.inputElement().nativeElement, 'keyboard');\n }\n\n getAriaChecked(): KbqCheckedState {\n return this.checkable.getAriaChecked();\n }\n\n onChangeEvent(event: Event) {\n event.stopPropagation();\n }\n\n onLabelTextChange() {\n this.changeDetectorRef.markForCheck();\n }\n\n onInputClick(event: MouseEvent) {\n if (this.loading()) return;\n // We have to stop propagation for click events on the visual hidden input element.\n // By default, when a user clicks on a label element, a generated click event will be\n // dispatched on the associated input element. Since we are using a label element as our\n // root container, the click event on the `toggle` will be executed twice.\n // The real click event will bubble up, and the generated click event also tries to bubble up.\n // This will lead to multiple click events.\n // Preventing bubbling for the second event will solve that issue.\n event.stopPropagation();\n\n const { shouldToggle, shouldClearIndeterminate } = this.checkable.resolveClick(this.clickAction);\n\n if (shouldToggle) {\n // A first click starts from the unchecked position, so that it animates.\n if (this.currentCheckState === TransitionCheckState.Init) {\n this.transitionCheckState(TransitionCheckState.Unchecked);\n this.changeDetectorRef.detectChanges();\n }\n\n // When user manually click on the toggle, `indeterminate` is set to false.\n if (shouldClearIndeterminate) {\n Promise.resolve().then(() => {\n this.checkable.indeterminate.set(false);\n this.indeterminateChange.emit(false);\n });\n }\n\n this.checkable.toggle();\n this.checkable.onTouched();\n this.transitionCheckState(this.checked ? TransitionCheckState.Checked : TransitionCheckState.Unchecked);\n // Emit our custom change event if the native input emitted one.\n // It is important to only emit it, if the native input triggered one, because\n // we don't want to trigger a change event, when the `checked` variable changes for example.\n this.emitChangeEvent();\n } else if (!this.disabled) {\n // Reset native input when clicked with noop. The native checkbox becomes checked after\n // click, reset it to be align with `checked` value of `kbq-toggle`.\n this.checkable.resetNativeInput(this.inputElement().nativeElement);\n }\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n writeValue(value: any) {\n this.checked = !!value;\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n registerOnChange(fn: any) {\n this.checkable.registerOnChange(fn);\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n registerOnTouched(fn: any) {\n this.checkable.registerOnTouched(fn);\n }\n\n /**\n * Implemented as part of ControlValueAccessor.\n * @deprecated Unused - `ControlValueAccessor` is now implemented by the `KbqCheckable` host directive,\n * so this is never called by Angular forms. Will be removed in the next major version.\n */\n setDisabledState(isDisabled: boolean) {\n this.disabled = isDisabled;\n }\n\n private setTransitionCheckState() {\n if (this.indeterminate) {\n this.transitionCheckState(TransitionCheckState.Indeterminate);\n } else if (this.checked) {\n this.transitionCheckState(TransitionCheckState.Checked);\n } else if (this.currentCheckState !== TransitionCheckState.Init) {\n // `Init` draws the unchecked position already, so it stays until a value or a click arrives.\n this.transitionCheckState(TransitionCheckState.Unchecked);\n }\n }\n\n private transitionCheckState(newState: TransitionCheckState) {\n if (this.currentCheckState === newState) return;\n\n this.currentCheckState = newState;\n }\n\n private emitChangeEvent() {\n // Note: `toggle()` already notifies the ControlValueAccessor change handler via `KbqCheckable.toggle()`.\n const event = new KbqToggleChange();\n\n event.source = this;\n event.checked = this.checked;\n\n this.change.emit(event);\n }\n}\n","<label class=\"kbq-toggle-layout\" [attr.for]=\"inputId\" [class.kbq-toggle-layout_left]=\"labelPosition() === 'left'\">\n <input\n #input\n role=\"switch\"\n type=\"checkbox\"\n class=\"kbq-toggle-input cdk-visually-hidden\"\n [attr.aria-checked]=\"getAriaChecked()\"\n [attr.aria-label]=\"ariaLabel() || null\"\n [attr.aria-labelledby]=\"ariaLabelledby()\"\n [attr.name]=\"name()\"\n [attr.value]=\"value()\"\n [checked]=\"checked\"\n [disabled]=\"disabled\"\n [id]=\"inputId\"\n [indeterminate]=\"indeterminate\"\n [tabIndex]=\"tabIndex\"\n (change)=\"onChangeEvent($event)\"\n (click)=\"onInputClick($event)\"\n (keydown.enter)=\"input.click()\"\n />\n <div class=\"kbq-toggle-bar-container\">\n <div class=\"kbq-toggle-bar\" [class.kbq-progress]=\"loading()\">\n <div class=\"kbq-toggle__circle\" [@switch]=\"currentCheckState\"></div>\n <div class=\"kbq-toggle__thumb\"></div>\n </div>\n </div>\n\n <div\n class=\"kbq-toggle__content\"\n [class.kbq-toggle__content_left]=\"labelPosition() === 'left'\"\n [class.kbq-toggle__content_right]=\"labelPosition() === 'right'\"\n >\n <span class=\"kbq-toggle-label\" (cdkObserveContent)=\"onLabelTextChange()\">\n <ng-content />\n </span>\n\n <ng-content select=\"kbq-hint\" />\n </div>\n</label>\n","import { A11yModule } from '@angular/cdk/a11y';\nimport { NgModule } from '@angular/core';\nimport { KbqToggleComponent } from './toggle.component';\n\n@NgModule({\n imports: [A11yModule, KbqToggleComponent],\n exports: [KbqToggleComponent]\n})\nexport class KbqToggleModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
@@ -978,20 +978,7 @@ class KbqTreeOption extends KbqTreeNode {
|
|
|
978
978
|
this.updateCheckboxState = () => {
|
|
979
979
|
if (this.selectAllRow())
|
|
980
980
|
return;
|
|
981
|
-
|
|
982
|
-
if (this.descendantsAllSelected()) {
|
|
983
|
-
this.checkboxState = 'checked';
|
|
984
|
-
}
|
|
985
|
-
else if (this.descendantsPartiallySelected()) {
|
|
986
|
-
this.checkboxState = 'indeterminate';
|
|
987
|
-
}
|
|
988
|
-
else {
|
|
989
|
-
this.checkboxState = this.selected ? 'checked' : 'unchecked';
|
|
990
|
-
}
|
|
991
|
-
}
|
|
992
|
-
else {
|
|
993
|
-
this.checkboxState = this.selected ? 'checked' : 'unchecked';
|
|
994
|
-
}
|
|
981
|
+
this.syncCheckboxState();
|
|
995
982
|
this.updateParentsCheckboxState(this.data);
|
|
996
983
|
};
|
|
997
984
|
this.tree = tree;
|
|
@@ -999,7 +986,9 @@ class KbqTreeOption extends KbqTreeNode {
|
|
|
999
986
|
ngAfterContentInit() {
|
|
1000
987
|
if (this.selectAllRow())
|
|
1001
988
|
return;
|
|
1002
|
-
|
|
989
|
+
// Its own state only: rendering a row changes no ancestor's, and the tree recomputes every row once the data
|
|
990
|
+
// nodes change.
|
|
991
|
+
Promise.resolve().then(() => this.syncCheckboxState());
|
|
1003
992
|
this.value = this.tree.treeControl.getValue(this.data);
|
|
1004
993
|
}
|
|
1005
994
|
descendantsAllSelected() {
|
|
@@ -1011,9 +1000,13 @@ class KbqTreeOption extends KbqTreeNode {
|
|
|
1011
1000
|
return descendants.some((child) => this.tree?.selectionModel.isSelected(child));
|
|
1012
1001
|
}
|
|
1013
1002
|
updateParentsCheckboxState(node) {
|
|
1014
|
-
this.tree.treeControl.getParents(node, [])
|
|
1015
|
-
|
|
1016
|
-
|
|
1003
|
+
const parents = new Set(this.tree.treeControl.getParents(node, []));
|
|
1004
|
+
if (!parents.size)
|
|
1005
|
+
return;
|
|
1006
|
+
// Each ancestor reads its state off the selection rather than off its children, so recomputing it is enough.
|
|
1007
|
+
this.tree.unorderedOptions.forEach((option) => {
|
|
1008
|
+
if (parents.has(option.data))
|
|
1009
|
+
option.syncCheckboxState();
|
|
1017
1010
|
});
|
|
1018
1011
|
}
|
|
1019
1012
|
toggle() {
|
|
@@ -1119,8 +1112,9 @@ class KbqTreeOption extends KbqTreeNode {
|
|
|
1119
1112
|
}
|
|
1120
1113
|
markForCheck() {
|
|
1121
1114
|
this.changeDetectorRef.markForCheck();
|
|
1115
|
+
// Its own state only: after a selection or data change the tree calls this on every option.
|
|
1122
1116
|
if (this.showCheckbox) {
|
|
1123
|
-
this.
|
|
1117
|
+
this.syncCheckboxState();
|
|
1124
1118
|
}
|
|
1125
1119
|
}
|
|
1126
1120
|
/** @docs-private */
|
|
@@ -1129,6 +1123,25 @@ class KbqTreeOption extends KbqTreeNode {
|
|
|
1129
1123
|
return;
|
|
1130
1124
|
this.focus('mouse');
|
|
1131
1125
|
}
|
|
1126
|
+
/** Recomputes the option's own checkbox state, leaving its ancestors as they are. */
|
|
1127
|
+
syncCheckboxState() {
|
|
1128
|
+
if (this.selectAllRow())
|
|
1129
|
+
return;
|
|
1130
|
+
if (this.checkboxThirdState() && this.isExpandable) {
|
|
1131
|
+
if (this.descendantsAllSelected()) {
|
|
1132
|
+
this.checkboxState = 'checked';
|
|
1133
|
+
}
|
|
1134
|
+
else if (this.descendantsPartiallySelected()) {
|
|
1135
|
+
this.checkboxState = 'indeterminate';
|
|
1136
|
+
}
|
|
1137
|
+
else {
|
|
1138
|
+
this.checkboxState = this.selected ? 'checked' : 'unchecked';
|
|
1139
|
+
}
|
|
1140
|
+
}
|
|
1141
|
+
else {
|
|
1142
|
+
this.checkboxState = this.selected ? 'checked' : 'unchecked';
|
|
1143
|
+
}
|
|
1144
|
+
}
|
|
1132
1145
|
/** @nocollapse */ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.30", ngImport: i0, type: KbqTreeOption, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
1133
1146
|
/** @nocollapse */ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.30", type: KbqTreeOption, isStandalone: true, selector: "kbq-tree-option", inputs: { checkboxThirdState: { classPropertyName: "checkboxThirdState", publicName: "checkboxThirdState", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: false, isRequired: false, transformFunction: null }, selectable: { classPropertyName: "selectable", publicName: "selectable", isSignal: true, isRequired: false, transformFunction: null }, selectAllRow: { classPropertyName: "selectAllRow", publicName: "selectAllRow", isSignal: true, isRequired: false, transformFunction: null }, showCheckbox: { classPropertyName: "showCheckbox", publicName: "showCheckbox", isSignal: false, isRequired: false, transformFunction: null } }, outputs: { onSelectionChange: "onSelectionChange" }, host: { listeners: { "focusin": "focus()", "mouseenter": "onMouseenter()", "blur": "blur()", "click": "selectViaInteraction($event)", "keydown": "onKeydown($event)" }, properties: { "class.kbq-tree-option_multiple": "tree.multiple", "class.kbq-selected": "selected", "class.kbq-focused": "hasFocus", "class.kbq-disabled": "disabled", "class.kbq-action-button-focused": "actionButton()?.active", "attr.id": "id", "attr.tabindex": "-1", "attr.disabled": "disabled || null" }, classAttribute: "kbq-tree-option" }, providers: [
|
|
1134
1147
|
{ provide: KbqTreeNode, useExisting: KbqTreeOption },
|
|
@@ -1480,6 +1493,8 @@ class KbqTreeSelection extends KbqTreeBase {
|
|
|
1480
1493
|
this.optionShouldHoldFocusOnBlur = false;
|
|
1481
1494
|
/** Reference to the built-in "select all" row, rendered only while `selectAll` is on. */
|
|
1482
1495
|
this.selectAllOption = viewChild(KbqTreeOption, ...(ngDevMode ? [{ debugName: "selectAllOption" }] : []));
|
|
1496
|
+
/** `treeControl.dataNodes` the options' checkbox states were last recomputed against. */
|
|
1497
|
+
this.checkboxSyncedDataNodes = null;
|
|
1483
1498
|
this.navigationChange = output();
|
|
1484
1499
|
this.selectionChange = new EventEmitter();
|
|
1485
1500
|
this.onSelectAll = output();
|
|
@@ -1780,6 +1795,21 @@ class KbqTreeSelection extends KbqTreeBase {
|
|
|
1780
1795
|
super.renderNodeChanges(data, dataDiffer, viewContainer, parentData);
|
|
1781
1796
|
this.sortedNodes = this.getSortedNodes(viewContainer);
|
|
1782
1797
|
this.nodeOutlet.changeDetectorRef.detectChanges();
|
|
1798
|
+
this.scheduleCheckboxSync();
|
|
1799
|
+
}
|
|
1800
|
+
/**
|
|
1801
|
+
* Recomputes every option's checkbox state after `dataNodes` is replaced, which moves the descendants a branch
|
|
1802
|
+
* counts: no selection change follows to do it. A microtask later, as a flat data source assigns `dataNodes` only
|
|
1803
|
+
* after it emits.
|
|
1804
|
+
*/
|
|
1805
|
+
scheduleCheckboxSync() {
|
|
1806
|
+
Promise.resolve().then(() => {
|
|
1807
|
+
const dataNodes = this.treeControl?.dataNodes ?? null;
|
|
1808
|
+
if (this.destroyRef.destroyed || dataNodes === this.checkboxSyncedDataNodes)
|
|
1809
|
+
return;
|
|
1810
|
+
this.checkboxSyncedDataNodes = dataNodes;
|
|
1811
|
+
this.unorderedOptions?.forEach((option) => option.markForCheck());
|
|
1812
|
+
});
|
|
1783
1813
|
}
|
|
1784
1814
|
emitNavigationEvent(option) {
|
|
1785
1815
|
this.navigationChange.emit(new KbqTreeNavigationChange(this, option));
|