上传文件至 'components/editor'
This commit is contained in:
parent
af4ae590f7
commit
10634bcf45
|
@ -0,0 +1,115 @@
|
|||
Component({
|
||||
data: {
|
||||
formats: {},
|
||||
readOnly: false,
|
||||
placeholder: '请写下吐槽的内容',
|
||||
editorHeight: 300,
|
||||
keyboardHeight: 0,
|
||||
isIOS: false
|
||||
},
|
||||
readOnlyChange() {
|
||||
this.setData({
|
||||
readOnly: !this.data.readOnly
|
||||
})
|
||||
},
|
||||
onLoad() {
|
||||
const platform = wx.getSystemInfoSync().platform
|
||||
const isIOS = platform === 'ios'
|
||||
this.setData({ isIOS})
|
||||
const that = this
|
||||
this.updatePosition(0)
|
||||
let keyboardHeight = 0
|
||||
wx.onKeyboardHeightChange(res => {
|
||||
if (res.height === keyboardHeight) return
|
||||
const duration = res.height > 0 ? res.duration * 1000 : 0
|
||||
keyboardHeight = res.height
|
||||
setTimeout(() => {
|
||||
wx.pageScrollTo({
|
||||
scrollTop: 0,
|
||||
success() {
|
||||
that.updatePosition(keyboardHeight)
|
||||
that.editorCtx.scrollIntoView()
|
||||
}
|
||||
})
|
||||
}, duration)
|
||||
|
||||
})
|
||||
},
|
||||
updatePosition(keyboardHeight) {
|
||||
const toolbarHeight = 50
|
||||
const { windowHeight, platform } = wx.getSystemInfoSync()
|
||||
let editorHeight = keyboardHeight > 0 ? (windowHeight - keyboardHeight - toolbarHeight) : windowHeight
|
||||
this.setData({ editorHeight, keyboardHeight })
|
||||
},
|
||||
calNavigationBarAndStatusBar() {
|
||||
const systemInfo = wx.getSystemInfoSync()
|
||||
const { statusBarHeight, platform } = systemInfo
|
||||
const isIOS = platform === 'ios'
|
||||
const navigationBarHeight = isIOS ? 44 : 48
|
||||
return statusBarHeight + navigationBarHeight
|
||||
},
|
||||
onEditorReady() {
|
||||
const that = this
|
||||
|
||||
wx.createSelectorQuery().select('#editor').context(function (res) {
|
||||
that.editorCtx = res.context
|
||||
}).exec()
|
||||
},
|
||||
blur() {
|
||||
this.editorCtx.blur()
|
||||
},
|
||||
format(e) {
|
||||
let { name, value } = e.target.dataset
|
||||
if (!name) return
|
||||
console.log('format', name, value)
|
||||
this.editorCtx.format(name, value)
|
||||
|
||||
},
|
||||
onStatusChange(e) {
|
||||
const formats = e.detail
|
||||
this.setData({ formats })
|
||||
},
|
||||
insertDivider() {
|
||||
this.editorCtx.insertDivider({
|
||||
success: function () {
|
||||
console.log('insert divider success')
|
||||
}
|
||||
})
|
||||
},
|
||||
clear() {
|
||||
this.editorCtx.clear({
|
||||
success: function (res) {
|
||||
console.log("clear success")
|
||||
}
|
||||
})
|
||||
},
|
||||
removeFormat() {
|
||||
this.editorCtx.removeFormat()
|
||||
},
|
||||
insertDate() {
|
||||
const date = new Date()
|
||||
const formatDate = `${date.getFullYear()}/${date.getMonth() + 1}/${date.getDate()}`
|
||||
this.editorCtx.insertText({
|
||||
text: formatDate
|
||||
})
|
||||
},
|
||||
insertImage() {
|
||||
const that = this
|
||||
wx.chooseImage({
|
||||
count: 1,
|
||||
success: function (res) {
|
||||
that.editorCtx.insertImage({
|
||||
src: res.tempFilePaths[0],
|
||||
data: {
|
||||
id: 'abcd',
|
||||
role: 'god'
|
||||
},
|
||||
width: '80%',
|
||||
success: function () {
|
||||
console.log('insert image success')
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"component":true,
|
||||
"navigationBarTitleText": "发表吐槽",
|
||||
"disableScroll": true
|
||||
}
|
|
@ -0,0 +1,16 @@
|
|||
<view class="container" style="height:{{editorHeight}}px;">
|
||||
<editor id="editor" class="ql-container" placeholder="{{placeholder}}" bindstatuschange="onStatusChange" bindready="onEditorReady">
|
||||
</editor>
|
||||
</view>
|
||||
|
||||
<view class="toolbar" catchtouchend="format" hidden="{{keyboardHeight > 0 ? false : true}}" style="bottom: {{isIOS ? keyboardHeight : 0}}px">
|
||||
<i class="iconfont icon-charutupian" catchtouchend="insertImage"></i>
|
||||
<i class="iconfont icon-format-header-2 {{formats.header === 2 ? 'ql-active' : ''}}" data-name="header" data-value="{{2}}"></i>
|
||||
<i class="iconfont icon-format-header-3 {{formats.header === 3 ? 'ql-active' : ''}}" data-name="header" data-value="{{3}}"></i>
|
||||
<i class="iconfont icon-zitijiacu {{formats.bold ? 'ql-active' : ''}}" data-name="bold"></i>
|
||||
<i class="iconfont icon-zitixieti {{formats.italic ? 'ql-active' : ''}}" data-name="italic"></i>
|
||||
<i class="iconfont icon-zitixiahuaxian {{formats.underline ? 'ql-active' : ''}}" data-name="underline"></i>
|
||||
<i class="iconfont icon--checklist" data-name="list" data-value="check"></i>
|
||||
<i class="iconfont icon-youxupailie {{formats.list === 'ordered' ? 'ql-active' : ''}}" data-name="list" data-value="ordered"></i>
|
||||
<i class="iconfont icon-wuxupailie {{formats.list === 'bullet' ? 'ql-active' : ''}}" data-name="list" data-value="bullet"></i>
|
||||
</view>
|
|
@ -0,0 +1,51 @@
|
|||
@import "../lib/weui.wxss";
|
||||
@import "../assets/iconfont.wxss"
|
||||
|
||||
.container {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.ql-container {
|
||||
box-sizing: border-box;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
font-size: 16px;
|
||||
line-height: 1.5;
|
||||
overflow: auto;
|
||||
padding: 10px 10px 20px 10px;
|
||||
border: 1px solid #ECECEC;
|
||||
background: #ffffff;
|
||||
|
||||
}
|
||||
|
||||
|
||||
.ql-active {
|
||||
color: #22C704;
|
||||
}
|
||||
|
||||
.iconfont {
|
||||
display: inline-block;
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
cursor: pointer;
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.toolbar {
|
||||
box-sizing: border-box;
|
||||
padding: 0 10px;
|
||||
height: 50px;
|
||||
width: 100%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: flex-start;
|
||||
border: 1px solid #ECECEC;
|
||||
border-left: none;
|
||||
border-right: none;
|
||||
background: #ffffff;
|
||||
position: relative;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue