Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita3ee02a

Browse files
committed
refactor(listeners.service): add focusin Trigger
1 parent2f1b94d commita3ee02a

File tree

3 files changed

+39
-50
lines changed

3 files changed

+39
-50
lines changed

‎projects/coreui-angular/src/lib/coreui.types.ts‎

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ export enum BreakpointInfix {
88
md='md',
99
lg='lg',
1010
xl='xl',
11-
xxl='xxl'
11+
xxl='xxl',
1212
}
1313

1414
exporttypeBreakpointInfixStrings=keyoftypeofBreakpointInfix;
@@ -63,13 +63,7 @@ export type TextColors =
6363
|'white-50'
6464
|string;
6565

66-
exporttypeAlignment=
67-
|'baseline'
68-
|'top'
69-
|'middle'
70-
|'bottom'
71-
|'text-top'
72-
|'text-bottom';
66+
exporttypeAlignment='baseline'|'top'|'middle'|'bottom'|'text-top'|'text-bottom';
7367

7468
exporttypeBadgePositions=
7569
|'top-start'
@@ -111,7 +105,7 @@ export type Shapes =
111105
|'rounded-3'
112106
|string;
113107

114-
exporttypeTriggers='hover'|'focus'|'click';
108+
exporttypeTriggers='hover'|'focus'|'click'|'focusin';
115109

116110
exporttypePositions='fixed'|'sticky';
117111

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
1-
import{Renderer2}from'@angular/core';
21
import{TestBed}from'@angular/core/testing';
3-
2+
import{Renderer2}from'@angular/core';
43
import{ListenersService}from'./listeners.service';
54

65
describe('ListenersService',()=>{
7-
letrenderer:Renderer2;
8-
letservice:ListenersService;
9-
106
beforeEach(()=>{
117
TestBed.configureTestingModule({
12-
imports:[Renderer2,ListenersService],
13-
providers:[Renderer2]
8+
providers:[Renderer2],
149
});
15-
service=newListenersService(renderer);
16-
// service = TestBed.inject(ListenersService);
1710
});
1811

1912
it('should be created',()=>{
20-
expect(service).toBeTruthy();
13+
TestBed.runInInjectionContext(()=>{
14+
constservice=newListenersService();
15+
expect(service).toBeTruthy();
16+
});
2117
});
2218
});

‎projects/coreui-angular/src/lib/services/listeners.service.ts‎

Lines changed: 30 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,53 @@
1-
import{ElementRef,Injectable,Renderer2}from'@angular/core';
1+
import{ElementRef,inject,Injectable,Renderer2}from'@angular/core';
22
import{Triggers}from'../coreui.types';
33

44
exportinterfaceIListenersConfig{
5-
hostElement:ElementRef,
6-
trigger?:Triggers|Triggers[],
7-
callbackOn?:()=>void,
8-
callbackOff?:()=>void,
9-
callbackToggle?:()=>void,
5+
hostElement:ElementRef;
6+
trigger?:Triggers|Triggers[];
7+
callbackOn?:()=>void;
8+
callbackOff?:()=>void;
9+
callbackToggle?:()=>void;
1010
}
1111

1212
@Injectable()
1313
exportclassListenersService{
14+
readonlyrenderer=inject(Renderer2);
1415

1516
privatelisteners:Map<string,()=>void>=newMap();
1617

17-
constructor(
18-
privaterenderer:Renderer2
19-
){}
20-
21-
setListeners({ hostElement, trigger, callbackOn, callbackOff, callbackToggle}:IListenersConfig):void{
18+
setListeners({
19+
hostElement,
20+
trigger,
21+
callbackOn,
22+
callbackOff,
23+
callbackToggle,
24+
}:IListenersConfig):void{
2225
consthost=hostElement.nativeElement;
2326
consttriggers=Array.isArray(trigger) ?trigger :trigger?.split(' ')??[];
2427

2528
if(triggers?.includes('click')){
26-
typeofcallbackToggle==='function'&&this.listeners.set(
27-
'click',
28-
this.renderer.listen(host,'click',callbackToggle)
29-
);
29+
typeofcallbackToggle==='function'&&
30+
this.listeners.set('click',this.renderer.listen(host,'click',callbackToggle));
3031
}
3132
if(triggers?.includes('focus')){
32-
typeofcallbackOn==='function'&&this.listeners.set(
33-
'focus',
34-
this.renderer.listen(host,'focus',callbackOn)
35-
);
33+
typeofcallbackOn==='function'&&
34+
this.listeners.set('focus',this.renderer.listen(host,'focus',callbackOn));
35+
}
36+
if(triggers?.includes('focusin')){
37+
typeofcallbackOff==='function'&&
38+
this.listeners.set('focusout',this.renderer.listen(host,'focusout',callbackOff));
39+
typeofcallbackOn==='function'&&
40+
this.listeners.set('focusin',this.renderer.listen(host,'focusin',callbackOn));
3641
}
3742
if(triggers?.includes('click')||triggers?.includes('focus')){
38-
typeofcallbackOff==='function'&&this.listeners.set(
39-
'blur',
40-
this.renderer.listen(host,'blur',callbackOff)
41-
);
43+
typeofcallbackOff==='function'&&
44+
this.listeners.set('blur',this.renderer.listen(host,'blur',callbackOff));
4245
}
4346
if(triggers?.includes('hover')){
44-
typeofcallbackOn==='function'&&this.listeners.set(
45-
'mouseenter',
46-
this.renderer.listen(host,'mouseenter',callbackOn)
47-
);
48-
typeofcallbackOff==='function'&&this.listeners.set(
49-
'mouseleave',
50-
this.renderer.listen(host,'mouseleave',callbackOff)
51-
);
47+
typeofcallbackOn==='function'&&
48+
this.listeners.set('mouseenter',this.renderer.listen(host,'mouseenter',callbackOn));
49+
typeofcallbackOff==='function'&&
50+
this.listeners.set('mouseleave',this.renderer.listen(host,'mouseleave',callbackOff));
5251
}
5352
}
5453

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp