diff --git a/src/viewcollection.js b/src/viewcollection.js index 7d964d98..8a990799 100644 --- a/src/viewcollection.js +++ b/src/viewcollection.js @@ -9,6 +9,7 @@ import CKEditorError from '@ckeditor/ckeditor5-utils/src/ckeditorerror'; import Collection from '@ckeditor/ckeditor5-utils/src/collection'; +import Locale from '@ckeditor/ckeditor5-utils/src/locale'; /** * Collects {@link module:ui/view~View} instances. @@ -53,8 +54,11 @@ export default class ViewCollection extends Collection { * * @param {Array.} [initialItems] The initial items of the collection. */ - constructor( initialItems = [] ) { - super( initialItems, { + constructor( itemsOrLocale = [] ) { + const locale = itemsOrLocale instanceof Locale ? itemsOrLocale : new Locale(); + const items = itemsOrLocale instanceof Locale ? [] : itemsOrLocale; + + super( items, { // An #id Number attribute should be legal and not break the `ViewCollection` instance. // https://github.com/ckeditor/ckeditor5-ui/issues/93 idProperty: 'viewUid' @@ -72,6 +76,14 @@ export default class ViewCollection extends Collection { } } ); + /** + * The {@link module:core/editor/editor~Editor#locale editor's locale} instance. + * See the view {@link module:ui/view~View#locale locale} property. + * + * @member {module:utils/locale~Locale} + */ + this.locale = locale; + /** * A parent element within which child views are rendered and managed in DOM. * diff --git a/tests/view.js b/tests/view.js index 226cd4c4..a110450c 100644 --- a/tests/view.js +++ b/tests/view.js @@ -13,6 +13,7 @@ import Collection from '@ckeditor/ckeditor5-utils/src/collection'; import ViewCollection from '../src/viewcollection'; import normalizeHtml from '@ckeditor/ckeditor5-utils/tests/_utils/normalizehtml'; import { assertCKEditorError } from '@ckeditor/ckeditor5-utils/tests/_utils/utils'; +import Locale from '@ckeditor/ckeditor5-utils/src/locale'; let TestView, view, childA, childB; @@ -63,7 +64,7 @@ describe( 'View', () => { const collection = new ViewCollection(); expect( view.locale ).to.equal( locale ); - expect( collection.locale ).to.be.undefined; + expect( collection.locale ).to.be.an.instanceOf( Locale ); view._viewCollections.add( collection ); expect( collection.locale ).to.equal( view.locale );