教你修改element-ui源碼給el-dialog添加全屏功能
背景:
el-dialog組件提供了fullscreen功能,但是無法滿足業(yè)務(wù)需求。系統(tǒng)使用了許多dialog,不方便重新封裝dialog組件,故直接對源碼進行修改。
1.克隆element官方的倉庫到本地
git clone https://github.com/ElemeFE/element
2.下載到本地之后進入項目,安裝依賴包
cd elementnpm install
3.打開package 文件夾,修改源代碼
打開 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屬性,默認為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
此時會發(fā)現(xiàn)在根目錄生成了一份 lib 文件夾(后續(xù)會用到)
5.安裝 patch-package
npm i patch-package --save-dev
6.替換項目中的 element-ui
首先我們找到 node_modules/element-ui/ 刪除目錄下的 lib 文件夾
拷貝我們剛才生成的一份 lib 文件夾到 node_modules/element-ui/ 下面
7.生成 patches 補丁文件
npx patch-package package-name
執(zhí)行之后會發(fā)現(xiàn) 在根目錄生成一個 patches/element-ui+2.15.6.patch 的文件

8.新增 postinstall 命令
在 package.json scripts 配置 "postinstall": "patch-package"

9.重新安裝依賴包
刪除你的 node_modules文件夾
npm install 重新安裝依賴 重啟項目
相關(guān)文章
Javascript使用post方法提交數(shù)據(jù)實例
這篇文章主要介紹了Javascript使用post方法提交數(shù)據(jù),實例分析了javascript實現(xiàn)post提交數(shù)據(jù)的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08
詳談ES6中的迭代器(Iterator)和生成器(Generator)
下面小編就為大家?guī)硪黄斦凟S6中的迭代器(Iterator)和生成器(Generator)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-07-07
three.js創(chuàng)造時空裂縫特效實現(xiàn)示例
這篇文章主要為大家介紹了three.js創(chuàng)造時空裂縫特效實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-11-11
JS逆向之?webpack?打包站點實戰(zhàn)原理分享
本文主要介紹了JS逆向之webpack打包站點實戰(zhàn)原理分享,webpack是前端程序員用來進行打包JS的技術(shù),打包之后的代碼特征非常明顯,更多相關(guān)知識需要的小伙伴可以參考下面文章詳細內(nèi)容2022-06-06

