-
+
diff --git a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.ts b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.ts
index 87d9d22..3686f35 100644
--- a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.ts
+++ b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/components/tree-nodes-selector/tree-nodes-selector.component.ts
@@ -13,6 +13,7 @@ import {
import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms';
import { uuid } from '@msfa-utils/uuid';
import { TreeNode, TreeNodeModel, TreeNodesSelectorService } from '../../services/tree-nodes-selector.service';
+import { TreeNodesSelectorPanelComponent } from '../tree-nodes-selector-panel/tree-nodes-selector-panel.component';
interface PropagateChangeFn {
(_: unknown): void;
@@ -45,6 +46,8 @@ export class TreeNodesSelectorComponent implements ControlValueAccessor {
@Output() selectedTreeNodesChanged = new EventEmitter
();
@ViewChild('togglePanelBtn') togglePanelBtn: ElementRef;
+ @ViewChild(TreeNodesSelectorPanelComponent)
+ private treeNodesSelectorPanel: TreeNodesSelectorPanelComponent;
rootNode: TreeNodeModel | null = null;
displayPanel = false;
@@ -91,7 +94,22 @@ export class TreeNodesSelectorComponent implements ControlValueAccessor {
this.displayPanel = false;
}
+ onClickOutsidePanel(): void {
+ if (!this.treeNodesSelectorPanel) {
+ this.closePanel();
+ return;
+ }
+
+ this.treeNodesSelectorPanel.closePanel();
+ }
+
togglePanel(): void {
this.displayPanel = !this.displayPanel;
}
+
+ focusControlToggleBtn(): void {
+ const togglePanelBtnElement = this.togglePanelBtn.nativeElement as HTMLElement;
+
+ togglePanelBtnElement.focus();
+ }
}
diff --git a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/pipes/aria-label-text-for-expansion-btn.pipe.spec.ts b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/pipes/aria-label-text-for-expansion-btn.pipe.spec.ts
new file mode 100644
index 0000000..c360906
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/pipes/aria-label-text-for-expansion-btn.pipe.spec.ts
@@ -0,0 +1,9 @@
+import { TreeNodesSelectorService } from '../services/tree-nodes-selector.service';
+import { AriaLabelTextForExpansionBtnPipe } from './aria-label-text-for-expansion-btn.pipe';
+
+describe('AriaLabelTextForExpansionBtnPipe', () => {
+ it('create an instance', () => {
+ const pipe = new AriaLabelTextForExpansionBtnPipe(new TreeNodesSelectorService());
+ expect(pipe).toBeTruthy();
+ });
+});
diff --git a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/pipes/aria-label-text-for-expansion-btn.pipe.ts b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/pipes/aria-label-text-for-expansion-btn.pipe.ts
new file mode 100644
index 0000000..d73be46
--- /dev/null
+++ b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/pipes/aria-label-text-for-expansion-btn.pipe.ts
@@ -0,0 +1,17 @@
+import { Pipe, PipeTransform } from '@angular/core';
+import { TreeNodeModel, TreeNodesSelectorService } from '../services/tree-nodes-selector.service';
+
+@Pipe({
+ name: 'ariaLabelTextForExpansionBtn',
+})
+export class AriaLabelTextForExpansionBtnPipe implements PipeTransform {
+ constructor(private treeNodesSelectorService: TreeNodesSelectorService) {}
+
+ transform(treeNode: TreeNodeModel, parentTreeNode: TreeNodeModel, expandedChildUuid: string): string {
+ return this.treeNodesSelectorService.getAriaLabelTextForExpansionButton(
+ parentTreeNode,
+ treeNode,
+ expandedChildUuid
+ );
+ }
+}
diff --git a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/services/tree-nodes-selector.service.ts b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/services/tree-nodes-selector.service.ts
index a093412..64ece57 100644
--- a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/services/tree-nodes-selector.service.ts
+++ b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/services/tree-nodes-selector.service.ts
@@ -77,10 +77,19 @@ export class TreeNodesSelectorService {
);
}
- getAriaLabelTextForExpansionButton(parentTreeNode: TreeNodeModel, treeNode: TreeNodeModel): string {
- const isActiveNode = parentTreeNode && treeNode ? parentTreeNode.expandedChildUuid === treeNode.uuid : false;
+ /*
+ Taking expandedChildUuid as a seperate param despite being a property of the parent tree node
+ because there is no change detection for properties within objects.*/
+ getAriaLabelTextForExpansionButton(
+ parentTreeNode: TreeNodeModel,
+ treeNode: TreeNodeModel,
+ expandedChildUuid: string
+ ): string {
+ const isActiveNode = parentTreeNode && treeNode ? expandedChildUuid === treeNode.uuid : false;
- return `${isActiveNode ? 'Döljer' : 'Visar'} ${treeNode.grandChildrenItemType} för ${treeNode.label}`;
+ return `${isActiveNode ? 'Döljer' : 'Visar'} ${
+ parentTreeNode.grandChildrenItemType ? this.getCleanedText(parentTreeNode.grandChildrenItemType) : 'innehåll'
+ } för ${treeNode.label}`;
}
hasChildLeafNodes(node: TreeNode): boolean {
diff --git a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/tree-nodes-selector.module.ts b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/tree-nodes-selector.module.ts
index 54920ff..9f9ff63 100644
--- a/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/tree-nodes-selector.module.ts
+++ b/apps/mina-sidor-fa/src/app/shared/components/tree-nodes-selector/tree-nodes-selector.module.ts
@@ -4,9 +4,10 @@ import { TreeNodesSelectorPanelComponent } from './components/tree-nodes-selecto
import { TreeNodesSelectorComponent } from './components/tree-nodes-selector/tree-nodes-selector.component';
import { ExpandedTreeNodeComponent } from './components/expanded-tree-node/expanded-tree-node.component';
import { DigiNgTypographyDynamicHeadingModule } from '@af/digi-ng/_typography/typography-dynamic-heading';
+import { AriaLabelTextForExpansionBtnPipe } from './pipes/aria-label-text-for-expansion-btn.pipe';
@NgModule({
- declarations: [TreeNodesSelectorComponent, TreeNodesSelectorPanelComponent, ExpandedTreeNodeComponent],
+ declarations: [TreeNodesSelectorComponent, TreeNodesSelectorPanelComponent, ExpandedTreeNodeComponent, AriaLabelTextForExpansionBtnPipe],
imports: [CommonModule, DigiNgTypographyDynamicHeadingModule],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
exports: [TreeNodesSelectorComponent],