Skip to content

Commit 0687e19

Browse files
feat(uiSrefStatus): Emit all enclosed uiSref targetStates in the status object
Closes #142
1 parent bd67d25 commit 0687e19

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

src/directives/uiSrefStatus.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ export interface SrefStatus {
3232
entering: boolean;
3333
/** A transition is exiting the sref's target state */
3434
exiting: boolean;
35-
/** The sref's target state identifier */
36-
identifier: StateOrName;
35+
/** The enclosed sref(s) target state(s) */
36+
targetStates: TargetState[];
3737
}
3838

3939
/** @internalapi */
@@ -42,7 +42,7 @@ const inactiveStatus: SrefStatus = {
4242
exact: false,
4343
entering: false,
4444
exiting: false,
45-
identifier: null,
45+
targetStates: [],
4646
};
4747

4848
/**
@@ -120,18 +120,18 @@ function getSrefStatus(event: TransEvt, srefTarget: TargetState): SrefStatus {
120120
exact: isExact(),
121121
entering: isStartEvent ? isEntering() : false,
122122
exiting: isStartEvent ? isExiting() : false,
123-
identifier: srefTarget.identifier(),
123+
targetStates: [srefTarget],
124124
} as SrefStatus;
125125
}
126126

127127
/** @internalapi */
128-
function mergeSrefStatus(left: SrefStatus, right: SrefStatus) {
128+
function mergeSrefStatus(left: SrefStatus, right: SrefStatus): SrefStatus {
129129
return {
130130
active: left.active || right.active,
131131
exact: left.exact || right.exact,
132132
entering: left.entering || right.entering,
133133
exiting: left.exiting || right.exiting,
134-
identifier: left.identifier || right.identifier,
134+
targetStates: left.targetStates.concat(right.targetStates),
135135
};
136136
}
137137

test/uiSrefStatus/uiSrefStatus.spec.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -42,10 +42,11 @@ describe('uiSrefStatus', () => {
4242
de.triggerEventHandler('click', {});
4343
}));
4444

45-
it('should emit a event with identifier equals to `foo`', () => {
46-
expect(component.updated).toHaveBeenCalledWith(jasmine.objectContaining({
47-
identifier: 'foo',
48-
}));
45+
it('should emit a event with a TargetState pointing to `foo`', () => {
46+
expect(component.updated).toHaveBeenCalled();
47+
const arg: SrefStatus = (component.updated as jasmine.Spy).calls.mostRecent().args[0];
48+
expect(arg.targetStates.length).toEqual(1);
49+
expect(arg.targetStates[0].state()).toEqual(jasmine.objectContaining({ name: 'foo' }));
4950
});
5051
});
5152
});

0 commit comments

Comments
 (0)