• 修改element-ui源码给el-dialog添加全屏功能


    背景:

    el-dialog组件提供了fullscreen功能,但是无法满足业务需求。系统使用了许多dialog,不方便重新封装dialog组件,故直接对源码进行修改。


    1.克隆element官方的仓库到本地

    git clone https://github.com/ElemeFE/element

    2.下载到本地之后进入项目,安装依赖包

    1. cd element
    2. npm install

    3.打开package 文件夹,修改源代码

    打开 package/dialog/src/component.vue

    template:

    1. :class="['el-dialog', { 'is-fullscreen': isFullscreen, 'el-dialog--center': center }, customClass]"
    2. <button type="button" class="el-dialog__headerbtn" aria-label="Fullscreen" style="right: 46px;" v-if="fullscreen" @click="handleFullscreen">
    3. <i class="el-dialog__close el-icon el-icon-full-screen">i>
    4. button>

    script: 

    1. props: {
    2. ...,
    3. fullscreen: { // 修改fullscreen属性,默认为true
    4. type: Boolean,
    5. default: true,
    6. },
    7. ...
    8. }
    9. data() {
    10. return {
    11. isFullscreen: false, // 新增全屏状态
    12. ...
    13. };
    14. },
    15. computed: {
    16. style() {
    17. let style = {};
    18. if (!this.isFullscreen) { // 判断isFullscreen
    19. style.marginTop = this.top;
    20. if (this.width) {
    21. style.width = this.width;
    22. }
    23. }
    24. return style;
    25. },
    26. },
    27. methods: {
    28. // 新增toggle方法
    29. handleFullscreen() {
    30. this.isFullscreen = !this.isFullscreen;
    31. },
    32. ...
    33. }

    4.打包我们修改后的源码

    npm run dist

    此时会发现在根目录生成了一份 lib 文件夹(后续会用到)

    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

    执行之后会发现 在根目录生成一个 patches/element-ui+2.15.6.patch 的文件

    8.新增 postinstall 命令

    在 package.json scripts 配置 "postinstall": "patch-package"

    9.重新安装依赖包

    删除你的 node_modules文件夹

    npm install 重新安装依赖 重启项目


    参考

  • 相关阅读:
    2023年MathorCup高校数学建模挑战赛大数据挑战赛赛题浅析
    轻量级HTTP服务器Nginx:为何要选择Nginx
    TypeScript 笔记:String 字符串
    virt-install 使用问题
    c++11新特性--variadic templates(详细)
    HtmlUnit、Jsoup、webmagic基本介绍
    SI24R2F+畜牧业养殖方案
    使用 HTML、CSS 和 JavaScript 的实时计算器
    MySQL数据库优化总结
    【高级交换技术】配置QinQ终结子接口接入VLL示例
  • 原文地址:https://blog.csdn.net/qq_36157085/article/details/126869999