Skip to content
This repository was archived by the owner on Jun 26, 2020. It is now read-only.

Commit 003bd92

Browse files
committed
Used the new Collection and View API to add multiple Views at a time.
1 parent 0081982 commit 003bd92

File tree

8 files changed

+61
-178
lines changed

8 files changed

+61
-178
lines changed

src/button/buttonview.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,8 +169,7 @@ export default class ButtonView extends View {
169169
this.children.add( this.iconView );
170170
}
171171

172-
this.children.add( this.tooltipView );
173-
this.children.add( this.labelView );
172+
this.children.add( this.tooltipView, this.labelView );
174173
}
175174

176175
/**

src/dropdown/button/splitbuttonview.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,7 @@ export default class SplitButtonView extends View {
126126
render() {
127127
super.render();
128128

129-
this.children.add( this.actionView );
130-
this.children.add( this.arrowView );
129+
this.children.add( this.actionView, this.arrowView );
131130

132131
this.focusTracker.add( this.actionView.element );
133132
this.focusTracker.add( this.arrowView.element );

src/dropdown/utils.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ export function addToolbarToDropdown( dropdownView, buttons ) {
141141
}
142142
} );
143143

144-
buttons.map( view => toolbarView.items.add( view ) );
144+
toolbarView.items.add( ...buttons );
145145

146146
dropdownView.panelView.children.add( toolbarView );
147147
toolbarView.items.delegate( 'execute' ).to( dropdownView );

src/toolbar/toolbarview.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,7 @@ export default class ToolbarView extends View {
119119
* @readonly
120120
* @member {module:ui/viewcollection~ViewCollection}
121121
*/
122-
this.children = this.createCollection();
123-
this.children.add( this.itemsView );
122+
this.children = this.createCollection( [ this.itemsView ] );
124123

125124
/**
126125
* A collection of {@link #items} that take part in the focus cycling
@@ -696,8 +695,7 @@ class DynamicGrouping {
696695
*/
697696
_groupLastItem() {
698697
if ( !this.groupedItems.length ) {
699-
this.viewChildren.add( new ToolbarSeparatorView() );
700-
this.viewChildren.add( this.groupedItemsDropdown );
698+
this.viewChildren.add( new ToolbarSeparatorView(), this.groupedItemsDropdown );
701699
this.viewFocusTracker.add( this.groupedItemsDropdown.element );
702700
}
703701

tests/dropdown/dropdownpanelview.js

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,7 @@ describe( 'DropdownPanelView', () => {
8585

8686
firstChildView.focus = sinon.spy();
8787

88-
view.children.add( firstChildView );
89-
view.children.add( new View() );
88+
view.children.add( firstChildView, new View() );
9089

9190
view.focus();
9291

@@ -104,8 +103,7 @@ describe( 'DropdownPanelView', () => {
104103

105104
lastChildView.focusLast = sinon.spy();
106105

107-
view.children.add( new View() );
108-
view.children.add( lastChildView );
106+
view.children.add( new View(), lastChildView );
109107

110108
view.focusLast();
111109

@@ -117,8 +115,7 @@ describe( 'DropdownPanelView', () => {
117115

118116
lastChildView.focus = sinon.spy();
119117

120-
view.children.add( new View() );
121-
view.children.add( lastChildView );
118+
view.children.add( new View(), lastChildView );
122119

123120
view.focusLast();
124121

tests/focuscycler.js

Lines changed: 19 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,21 @@ describe( 'FocusCycler', () => {
1717
testUtils.createSinonSandbox();
1818

1919
beforeEach( () => {
20-
focusables = new ViewCollection();
20+
testUtils.sinon.stub( global.window, 'getComputedStyle' );
21+
focusables = new ViewCollection( [
22+
nonFocusable(),
23+
focusable(),
24+
focusable(),
25+
focusable(),
26+
nonFocusable()
27+
] );
2128
focusTracker = {
2229
focusedElement: null
2330
};
2431
cycler = new FocusCycler( {
2532
focusables,
2633
focusTracker
2734
} );
28-
29-
testUtils.sinon.stub( global.window, 'getComputedStyle' );
30-
31-
focusables.add( nonFocusable() );
32-
focusables.add( focusable() );
33-
focusables.add( focusable() );
34-
focusables.add( focusable() );
35-
focusables.add( nonFocusable() );
3635
} );
3736

3837
describe( 'constructor()', () => {
@@ -60,12 +59,9 @@ describe( 'FocusCycler', () => {
6059
} );
6160

6261
it( 'returns null when no focusable items', () => {
63-
focusables = new ViewCollection();
62+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
6463
cycler = new FocusCycler( { focusables, focusTracker } );
6564

66-
focusables.add( nonFocusable() );
67-
focusables.add( nonFocusable() );
68-
6965
expect( cycler.first ).to.be.null;
7066
} );
7167

@@ -83,12 +79,9 @@ describe( 'FocusCycler', () => {
8379
} );
8480

8581
it( 'returns null when no focusable items', () => {
86-
focusables = new ViewCollection();
82+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
8783
cycler = new FocusCycler( { focusables, focusTracker } );
8884

89-
focusables.add( nonFocusable() );
90-
focusables.add( nonFocusable() );
91-
9285
expect( cycler.last ).to.be.null;
9386
} );
9487

@@ -126,23 +119,16 @@ describe( 'FocusCycler', () => {
126119
} );
127120

128121
it( 'returns null when no focusable items', () => {
129-
focusables = new ViewCollection();
122+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
130123
cycler = new FocusCycler( { focusables, focusTracker } );
131124

132-
focusables.add( nonFocusable() );
133-
focusables.add( nonFocusable() );
134-
135125
expect( cycler.next ).to.be.null;
136126
} );
137127

138128
it( 'returns null if the only focusable in focusables', () => {
139-
focusables = new ViewCollection();
129+
focusables = new ViewCollection( [ nonFocusable(), focusable(), nonFocusable() ] );
140130
cycler = new FocusCycler( { focusables, focusTracker } );
141131

142-
focusables.add( nonFocusable() );
143-
focusables.add( focusable() );
144-
focusables.add( nonFocusable() );
145-
146132
focusTracker.focusedElement = focusables.get( 1 ).element;
147133

148134
expect( cycler.first ).to.equal( focusables.get( 1 ) );
@@ -176,23 +162,16 @@ describe( 'FocusCycler', () => {
176162
} );
177163

178164
it( 'returns null when no focusable items', () => {
179-
focusables = new ViewCollection();
165+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
180166
cycler = new FocusCycler( { focusables, focusTracker } );
181167

182-
focusables.add( nonFocusable() );
183-
focusables.add( nonFocusable() );
184-
185168
expect( cycler.previous ).to.be.null;
186169
} );
187170

188171
it( 'returns null if the only focusable in focusables', () => {
189-
focusables = new ViewCollection();
172+
focusables = new ViewCollection( [ nonFocusable(), focusable(), nonFocusable() ] );
190173
cycler = new FocusCycler( { focusables, focusTracker } );
191174

192-
focusables.add( nonFocusable() );
193-
focusables.add( focusable() );
194-
focusables.add( nonFocusable() );
195-
196175
focusTracker.focusedElement = focusables.get( 1 ).element;
197176

198177
expect( cycler.first ).to.equal( focusables.get( 1 ) );
@@ -208,12 +187,9 @@ describe( 'FocusCycler', () => {
208187
} );
209188

210189
it( 'does not throw when no focusable items', () => {
211-
focusables = new ViewCollection();
190+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
212191
cycler = new FocusCycler( { focusables, focusTracker } );
213192

214-
focusables.add( nonFocusable() );
215-
focusables.add( nonFocusable() );
216-
217193
expect( () => {
218194
cycler.focusFirst();
219195
} ).to.not.throw();
@@ -231,11 +207,7 @@ describe( 'FocusCycler', () => {
231207
it( 'ignores invisible items', () => {
232208
const item = focusable();
233209

234-
focusables = new ViewCollection();
235-
focusables.add( nonFocusable() );
236-
focusables.add( focusable( true ) );
237-
focusables.add( item );
238-
210+
focusables = new ViewCollection( [ nonFocusable(), focusable( true ), item ] );
239211
cycler = new FocusCycler( { focusables, focusTracker } );
240212

241213
cycler.focusFirst();
@@ -251,12 +223,9 @@ describe( 'FocusCycler', () => {
251223
} );
252224

253225
it( 'does not throw when no focusable items', () => {
254-
focusables = new ViewCollection();
226+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
255227
cycler = new FocusCycler( { focusables, focusTracker } );
256228

257-
focusables.add( nonFocusable() );
258-
focusables.add( nonFocusable() );
259-
260229
expect( () => {
261230
cycler.focusLast();
262231
} ).to.not.throw();
@@ -281,12 +250,9 @@ describe( 'FocusCycler', () => {
281250
} );
282251

283252
it( 'does not throw when no focusable items', () => {
284-
focusables = new ViewCollection();
253+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
285254
cycler = new FocusCycler( { focusables, focusTracker } );
286255

287-
focusables.add( nonFocusable() );
288-
focusables.add( nonFocusable() );
289-
290256
expect( () => {
291257
cycler.focusNext();
292258
} ).to.not.throw();
@@ -311,12 +277,9 @@ describe( 'FocusCycler', () => {
311277
} );
312278

313279
it( 'does not throw when no focusable items', () => {
314-
focusables = new ViewCollection();
280+
focusables = new ViewCollection( [ nonFocusable(), nonFocusable() ] );
315281
cycler = new FocusCycler( { focusables, focusTracker } );
316282

317-
focusables.add( nonFocusable() );
318-
focusables.add( nonFocusable() );
319-
320283
expect( () => {
321284
cycler.focusPrevious();
322285
} ).to.not.throw();

tests/list/listview.js

Lines changed: 7 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,7 @@ describe( 'ListView', () => {
5858
const spyRemove = sinon.spy( view.focusTracker, 'remove' );
5959

6060
sinon.assert.notCalled( spyAdd );
61-
view.items.add( focusable() );
62-
view.items.add( focusable() );
61+
view.items.add( focusable(), focusable() );
6362

6463
view.render();
6564
sinon.assert.calledTwice( spyAdd );
@@ -94,17 +93,14 @@ describe( 'ListView', () => {
9493
sinon.assert.calledOnce( keyEvtData.preventDefault );
9594
sinon.assert.calledOnce( keyEvtData.stopPropagation );
9695

97-
view.items.add( nonFocusable() );
98-
view.items.add( nonFocusable() );
96+
view.items.add( nonFocusable(), nonFocusable() );
9997

10098
// No focusable children.
10199
view.keystrokes.press( keyEvtData );
102100
sinon.assert.calledTwice( keyEvtData.preventDefault );
103101
sinon.assert.calledTwice( keyEvtData.stopPropagation );
104102

105-
view.items.add( focusable() );
106-
view.items.add( nonFocusable() );
107-
view.items.add( focusable() );
103+
view.items.add( focusable(), nonFocusable(), focusable() );
108104

109105
// Mock the last item is focused.
110106
view.focusTracker.isFocused = true;
@@ -130,17 +126,14 @@ describe( 'ListView', () => {
130126
sinon.assert.calledOnce( keyEvtData.preventDefault );
131127
sinon.assert.calledOnce( keyEvtData.stopPropagation );
132128

133-
view.items.add( nonFocusable() );
134-
view.items.add( nonFocusable() );
129+
view.items.add( nonFocusable(), nonFocusable() );
135130

136131
// No focusable children.
137132
view.keystrokes.press( keyEvtData );
138133
sinon.assert.calledTwice( keyEvtData.preventDefault );
139134
sinon.assert.calledTwice( keyEvtData.stopPropagation );
140135

141-
view.items.add( focusable() );
142-
view.items.add( nonFocusable() );
143-
view.items.add( focusable() );
136+
view.items.add( focusable(), nonFocusable(), focusable() );
144137

145138
// Mock the last item is focused.
146139
view.focusTracker.isFocused = true;
@@ -162,9 +155,7 @@ describe( 'ListView', () => {
162155
view.focus();
163156

164157
// The second child is focusable.
165-
view.items.add( nonFocusable() );
166-
view.items.add( focusable() );
167-
view.items.add( nonFocusable() );
158+
view.items.add( nonFocusable(), focusable(), nonFocusable() );
168159

169160
const spy = sinon.spy( view.items.get( 1 ), 'focus' );
170161
view.focus();
@@ -179,9 +170,7 @@ describe( 'ListView', () => {
179170
view.focusLast();
180171

181172
// The second child is focusable.
182-
view.items.add( nonFocusable() );
183-
view.items.add( focusable() );
184-
view.items.add( nonFocusable() );
173+
view.items.add( nonFocusable(), focusable(), nonFocusable() );
185174

186175
const spy = sinon.spy( view.items.get( 1 ), 'focus' );
187176
view.focusLast();

0 commit comments

Comments
 (0)