• 修改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 重新安装依赖 重启项目


    参考

  • 相关阅读:
    PDF 工具箱
    Restful 风格
    华为数通企业面试笔试实验题
    Lua-掌握Lua语言基础1
    浏览器中子域名之间共享cookie
    ThreadLocal InheritableThreadLocal TransmittableThreadLocal简单使用
    单片机之从C语言基础到专家编程 - 4 C语言基础 - 4.11函数
    频敏变阻器 BP4G-31511/06350 BP4G-25010/04563 结构简单、操作方便
    面试必考精华版Leetcode1466. 重新规划路线
    python的paramiko模块
  • 原文地址:https://blog.csdn.net/qq_36157085/article/details/126869999