blob: 09235cb886c7f6d4f9490e997363b6178b1260c5 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
'use strict'
import scrollableModule from '../scrollable'
const availableChildrenTypes = ['cell', 'loading', 'refresh']
function getProto (Scrollable) {
return {
create () {
const node = Scrollable.prototype.create.call(this)
node.classList.add('list-wrap')
this.scrollElement.classList.add('list-element')
return node
},
createChildren () {
const children = this.data.children || []
children.forEach(function (data) {
const type = data.type
if (availableChildrenTypes.indexOf(type) === -1) {
// throw new Error('[h5-render] invalid child type "'
// + type + '" for list.')
console.warn('[h5-render] invalid child type "'
+ type + '" for list.')
}
})
return Scrollable.prototype.createChildren.call(this)
},
appendChild (data) {
const type = data.type
if (availableChildrenTypes.indexOf(type) === -1) {
// throw new Error('[h5-render] invalid child type "'
// + type + '" for list.')
console.warn('[h5-render] invalid child type "'
+ type + '" for list.')
}
return Scrollable.prototype.appendChild.call(this, data)
},
insertBefore (child, before) {
const type = child.data.type
if (availableChildrenTypes.indexOf(type) === -1) {
// throw new Error('[h5-render] invalid child type "'
// + type + '" for list.')
console.warn('[h5-render] invalid child type "'
+ type + '" for list.')
}
return Scrollable.prototype.insertBefore.call(this, child, before)
}
}
}
function init (Weex) {
const Scrollable = scrollableModule.init(Weex)
function List (data, nodeType) {
Scrollable.call(this, data, nodeType)
}
const extend = Weex.utils.extend
List.prototype = Object.create(Scrollable.prototype)
extend(List.prototype, getProto(Scrollable))
return List
}
export default { init }