教你修改element-ui源碼給el-dialog添加全屏功能
背景:
el-dialog組件提供了fullscreen功能,但是無(wú)法滿足業(yè)務(wù)需求。系統(tǒng)使用了許多dialog,不方便重新封裝dialog組件,故直接對(duì)源碼進(jìn)行修改。
1.克隆element官方的倉(cāng)庫(kù)到本地
git clone https://github.com/ElemeFE/element
2.下載到本地之后進(jìn)入項(xiàng)目,安裝依賴包
cd elementnpm install
3.打開(kāi)package 文件夾,修改源代碼
打開(kāi) package/dialog/src/component.vue
template:
<!-- div role="dialog" 的class修改為:--> :class="['el-dialog', { 'is-fullscreen': isFullscreen, 'el-dialog--center': center }, customClass]" <!-- 在button aria-label="Close"前添加按鈕: --> <button type="button" class="el-dialog__headerbtn" aria-label="Fullscreen" style="right: 46px;" v-if="fullscreen" @click="handleFullscreen"> <i class="el-dialog__close el-icon el-icon-full-screen"></i> </button>
script:
props: { ..., fullscreen: { // 修改fullscreen屬性,默認(rèn)為true type: Boolean, default: true, }, ... } data() { return { isFullscreen: false, // 新增全屏狀態(tài) ... }; }, computed: { style() { let style = {}; if (!this.isFullscreen) { // 判斷isFullscreen style.marginTop = this.top; if (this.width) { style.width = this.width; } } return style; }, }, methods: { // 新增toggle方法 handleFullscreen() { this.isFullscreen = !this.isFullscreen; }, ... }
4.打包我們修改后的源碼
npm run dist
此時(shí)會(huì)發(fā)現(xiàn)在根目錄生成了一份 lib 文件夾(后續(xù)會(huì)用到)
5.安裝 patch-package
npm i patch-package --save-dev
6.替換項(xiàng)目中的 element-ui
首先我們找到 node_modules/element-ui/ 刪除目錄下的 lib 文件夾
拷貝我們剛才生成的一份 lib 文件夾到 node_modules/element-ui/ 下面
7.生成 patches 補(bǔ)丁文件
npx patch-package package-name
執(zhí)行之后會(huì)發(fā)現(xiàn) 在根目錄生成一個(gè) patches/element-ui+2.15.6.patch 的文件
8.新增 postinstall 命令
在 package.json scripts 配置 "postinstall": "patch-package"
9.重新安裝依賴包
刪除你的 node_modules文件夾
npm install
重新安裝依賴 重啟項(xiàng)目
相關(guān)文章
javascript中parseInt()函數(shù)的定義和用法分析
這篇文章主要介紹了javascript中parseInt()函數(shù)的定義和用法,較為詳細(xì)的分析了parseInt()函數(shù)的定義及具體用法,以及參數(shù)使用時(shí)的注意事項(xiàng),需要的朋友可以參考下2014-12-12webpack開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境的深入理解
這篇文章主要介紹了webpack開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境的深入理解,詳細(xì)的介紹了什么是開(kāi)發(fā)環(huán)境和生產(chǎn)環(huán)境并配置,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2018-11-11js實(shí)現(xiàn)簡(jiǎn)易點(diǎn)擊切換顯示或隱藏
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)簡(jiǎn)易點(diǎn)擊切換顯示或隱藏,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-11-11layui問(wèn)題之自動(dòng)滾動(dòng)二級(jí)iframe頁(yè)面到指定位置的方法
今天小編就為大家分享一篇layui問(wèn)題之自動(dòng)滾動(dòng)二級(jí)iframe頁(yè)面到指定位置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09原生JavaScript+LESS實(shí)現(xiàn)瀑布流
這篇文章主要介紹了原生JavaScript+LESS實(shí)現(xiàn)瀑布流的方法,附上了具體實(shí)例,這里推薦給有需要的小伙伴。2014-12-12