【sgSearch_v2】自定义组件:常用搜索栏筛选框组件(展开后更多搜索内容悬浮于其他组件之上,不影响整体布局高度)。

news2024/11/16 18:08:59

sgSearch_v2源码

<template>
  <div
    :class="$options.name"
    :expand="expandSearch"
    :showCollapseBtn="showCollapseBtn"
    @keyup.enter="(expandSearch = true), $emit(`keyupEnter`, {})"
  >
    <ul class="search-list">
      <slot name="searchFilter"></slot>

      <ul class="sg-search-btns">
        <slot name="searchBtns"></slot>
        <el-button type="" @click="expandSearch = !expandSearch" v-if="showCollapseBtn">
          <template v-if="expandSearch">展开<i class="el-icon-arrow-up" /></template>
          <template v-else>更多<i class="el-icon-arrow-down" /> </template>
        </el-button>
      </ul>

      <ul class="sg-operate-btns">
        <slot name="operateBtns"></slot>
      </ul>
    </ul>
  </div>
</template>
<script>
import sgCollapseBtn from "@/vue/components/admin/sgCollapseBtn";
export default {
  name: "sgSearch_v2",
  components: {
    sgCollapseBtn,
  },
  data() {
    return {
      expandSearch: false,
      showCollapseBtn: false,
    };
  },
  props: [
    "value", //是否显示
    "disabled", //是否禁用
    "collapse",
    "data",
    "showCollapseButton", //显示折叠按钮
  ],
  computed: {},
  watch: {
    collapse: {
      handler(newValue, oldValue) {
        this.expandSearch = !newValue;
      },
      deep: true, //深度监听
      immediate: true, //立即执行
    },
    expandSearch: {
      handler(newValue, oldValue) {
        this.$emit(`update:collapse`, !newValue);
      },
      deep: true, //深度监听
      // immediate: true, //立即执行
    },
    showCollapseButton: {
      handler(newValue, oldValue) {
        this.$nextTick(() => {
          this.getShowCollapseBtn();
        });
      },
      deep: true, //深度监听
      immediate: true, //立即执行
    },
  },
  created() {},
  mounted() {},
  methods: {
    getShowCollapseBtn(d) {
      if (this.showCollapseButton === "" || this.showCollapseButton) {
        this.showCollapseBtn = true;
      } else if (this.showCollapseButton === false) {
        this.showCollapseBtn = false;
      } else {
        let len_search_list = this.$el.querySelectorAll(`.search-list>li`).length;
        console.log(len_search_list);
        this.showCollapseBtn = len_search_list > 3;
      }
    },
  },
  destroyed() {
    this.removeEvents();
  },
};
</script>
<style lang="scss" scoped>
.sgSearch_v2 {
  position: relative;
  $defaultHeight: 40px; //默认高度
  $expandHeight: max-content; //展开高度

  $colCount: 4; //每行数量a
  $itemGap: 10px; //每一项间距
  $itemLabelGap: 5px; //每一项标签间距
  width: 100%;
  height: $defaultHeight;
  flex-grow: 1;
  box-sizing: border-box;
  .sgCollapseBtn {
    display: none;
  }
  & > .search-list {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    flex-grow: 1;
    display: flex;
    flex-wrap: wrap;
    & > * {
      flex-shrink: 0;
    }

    & > li {
      width: calc((100% - #{$itemGap} * (#{$colCount} - 1)) / #{$colCount});
      flex-wrap: nowrap;
      align-items: baseline;
      box-sizing: border-box;
      margin-right: $itemGap;
      margin-bottom: $itemGap;
      display: none;

      // 折叠的状态只显示前两个搜索项和搜索、重置按钮
      &:nth-child(1),
      &:nth-child(2),
      &:nth-child(3) {
        display: flex;
      }

      label {
        flex-shrink: 0;
        margin-right: $itemLabelGap;
        text-align: right;
      }

      &:nth-child(#{$colCount}n) {
        margin-right: 0;
      }
    }

    .sg-search-btns {
      display: flex;
      flex-wrap: nowrap;
      align-items: baseline;
      margin-bottom: 10px;

      & > * {
        margin-left: $itemGap;

        &:first-child {
          margin-left: 0;
        }
      }
    }
    .sg-operate-btns {
      display: flex;
      justify-content: flex-end;
      align-items: baseline;
      flex-wrap: nowrap;
      margin-left: auto;
      margin-bottom: 10px;

      & > * {
        margin-left: $itemGap;
      }
    }
  }

  &[expand] {
    z-index: 999;
    & > .search-list {
      background-color: white;
      box-shadow: 0 2px 12px 0 rgba(0, 0, 0, 0.1);
      & > li,
      .sg-operate-btns {
        display: flex;
      }
    }
  }
}
</style>

应用同【sgSearch】自定义组件:常用搜索栏筛选框组件(包括表格高度变化兼容)。_搜索框高度变化 表格-CSDN博客文章浏览阅读423次,点赞7次,收藏7次。【代码】【sgSearch】自定义组件:常用搜索栏筛选框组件(包括表格高度变化兼容)。_搜索框高度变化 表格https://blog.csdn.net/qq_37860634/article/details/136124062

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1630482.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第一阶段--Day1--什么是网络安全?网络安全常用术语

目录 1. 什么是网络安全&#xff1f; 信息系统&#xff08;Information System&#xff09; 信息系统安全三要素&#xff08;CIA&#xff09; 网络空间安全管理流程 网络安全管理 2. 网络安全的常用术语 3. 网络安全形势 4. 中国网络安全产业现状 1. 什么是网络安全&am…

Leetcode—1256. 加密数字【中等】Plus(bitset、find_first_not_of、erase)

2024每日刷题&#xff08;120&#xff09; Leetcode—1256. 加密数字 实现代码 class Solution { public:string encode(int num) {string ans;num 1;while(num ! 0) {ans to_string(num & 1);num num >> 1;}if(ans.empty()) {return "";} else {stri…

解决VMware启动异常

问题1&#xff1a;该虚拟机似乎正在使用中。如果该虚拟机未在使用&#xff0c;请按“获取所有权(T)”按钮获 取它的所有权。否则&#xff0c;请按“取消(C)”按钮以防损坏。 解决步骤&#xff1a; 按弹框提示的配置文件目录下删除后缀为lck的文件&#xff08;lock&#xff09;。…

上位机图像处理和嵌入式模块部署(树莓派4b之远程vnc桌面访问)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 对于很多嵌入式开发比较精通的同学来说&#xff0c;使用命令行和开发板之间进行沟通是他们完全能够接受的一种开发方式。但是对于更多的朋友来说&a…

Linux系统编程--信号与管道

1、信号与管道是什么&#xff1f; 首先了解信号与管道的意义&#xff0c;我们需要了解Linux系统中进程之间是如何通信的。Linux操作系统下&#xff0c;以进程为单位来分配或者管理资源&#xff0c;进程之间不能直接访问资源&#xff0c;因此&#xff0c;要求进程间的资源和信息…

windows服务启动提示‘服务没有响应控制功能’(mysql启动报错)

在安装mysql的时候&#xff0c;在windows服务项启动 或 使用命令net start mysql 时启动是报错&#xff0c;提示 服务没有响应控制功能 发生原因&#xff1a; Windows10 x64 或 更高的操作系统&#xff0c;有些系统缺少一些组件 解决办法&#xff1a; 1、下载最新的 Microsoft …

软文伪原创工具有哪些,推荐3款强大的软文伪原创工具

软文作为一种重要的营销和传播手段&#xff0c;受到了越来越多的关注。而随着科技的不断发展&#xff0c;各种软文生产的工具相续出现&#xff0c;如&#xff1a;软文伪原创工具&#xff0c;它能为人们提供便捷、高效的文章生产方式&#xff0c;也及可以节省文章写作的时间与精…

JAVA基础面试题(第十篇)下! 集合与数据结构

JAVA集合和数据结构也是面试常考的点&#xff0c;内容也是比较多。 在看之前希望各位如果方便可以点赞收藏&#xff0c;给我点个关注&#xff0c;创作不易&#xff01; JAVA集合 21. ConcurrentHashMap 的并发度是多少&#xff1f; 在JDK1.7中&#xff0c;并发度默认是16&a…

云渲染一张图多少钱

使用云渲染渲染一张效果图的价格没法确定多少钱一张&#xff0c;云渲染一张图的价格会受到多个因素的影响&#xff0c;如云渲染平台的定价策略、所选的渲染配置、优惠政策以及你提交的场景任务等。因此&#xff0c;无法给出确切的单一价格。 不同的云渲染平台会有不同的定价模…

HackMyVM-Slackware

目录 信息收集 arp-scan nmap nikto whatweb WEB web信息收集 gobuster wfuzz hydra ssh连接 提权 系统信息收集 get root 信息收集 arp-scan ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7b, IPv4…

PDF高效编辑器,一键转换将PDF文件转换成HTML文件,开启文件处理新篇章!

文件格式的转换与处理已成为我们日常工作中不可或缺的一部分。为了满足广大用户对高效、便捷文件处理的需求&#xff0c;我们荣幸地推出了全新的PDF高效编辑器——PDF到HTML一键转换工具&#xff01;这款工具将为您带来前所未有的文件处理体验&#xff0c;让您轻松驾驭文件格式…

vite+vue3配置less

在Vite项目中配置LESS&#xff0c;你需要安装相关的插件&#xff0c;并在Vite配置文件中进行配置。以下是步骤和示例代码&#xff1a; 安装LESS和LESS插件&#xff1a; npm install less --save-dev npm install less-loader --save-dev 在Vite配置文件中&#xff08;通常是v…

本地生活服务平台有哪些?哪个靠谱?

随着多家互联网大厂的本地生活服务布局日益展开&#xff0c;不少人都看到了其中的巨大市场缺口和广阔前景&#xff0c;想要入驻本地生活服务平台&#xff0c;瓜分这块巨大的蛋糕。而在当下这个选择大于努力的时代&#xff0c;能否分到蛋糕以及分到多少蛋糕的关键&#xff0c;就…

【Java数据结构】深入解析ArrayList与顺序表

【Java数据结构】深入解析ArrayList与顺序表 1.前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; 2.ArrayList的介绍 3.使用ArrayList 3.1 ArrayList的构造方法 3.11 第一个构造方法 3.12第二个构造方法 3.13第三个构造方法 3.2ArrayList中的tostring方…

vue2[黑马笔记]

vue基础 是什么—javascript框架 构建用户界面的前端框架 1.构建用户界面用vue往html页面中填充数据 2.框架现成的解决方案&#xff0c;遵守框架的规范去实现自己的业务功能学习vue 就是学习vue框架中规定的用法vue的指令组件&#xff08;对ul结构的复用&#xff09;&#x…

STM32G431RBT6之LCD与LED配置

首先,配置时钟树,时钟树的配置在我的另外一篇博客里,这里不再赘述. LCD与LED具有共同的IO口,同时创建工程较好. 打开原理图,发现LED的IO口是PC8~PC15,还有一个容易看漏的PD2.LCD的IO口是PC0到PC15. 当然,看产品手册也可以知道,但是还是推荐大家看原理图. 打开cubumx,给PC0~PC…

openjudge_2.5基本算法之搜索_1998:寻找Nemo

题目 1998:寻找Nemo 总时间限制: 2000ms 内存限制: 65536kB 描述 Nemo 是个顽皮的小孩. 一天他一个人跑到深海里去玩. 可是他迷路了. 于是他向父亲 Marlin 发送了求救信号.通过查找地图 Marlin 发现那片海像一个有着墙和门的迷宫.所有的墙都是平行于 X 轴或 Y 轴的. 墙的厚度可…

linux开发板开机启动向日葵

硬件&#xff1a;orangepi 5 pro 操作系统&#xff1a;ubuntu 20.4 lts 安装向日葵 根据我的实测&#xff0c;arm架构的ubuntu系统只能安装向日葵提供的麒麟系统的那个版本&#xff0c;具体安装方式官网下载页面有 允许任意用户连接到 X11 使用root用户登录后打开终端输入一下…

中仕公考:这几类人不能考公务员

拥有以上五类行为的学生无法参加公务员考试&#xff0c;当然这些只是基本的不能报考公务员的类别&#xff0c;现在各地区还会根据自己的情况调整范围&#xff0c;具体要以各地的公告为主。

电脑的无用设置功能(建议关闭)

目录 1、传递优化 ​2、常规​ 3、电源 1、传递优化 2、常规3、电源