@whitesev/pops 2.0.8 → 2.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.umd.js CHANGED
@@ -5844,40 +5844,44 @@
5844
5844
  value: "select-1",
5845
5845
  text: "单选1",
5846
5846
  isHTML: false,
5847
- disable() {
5848
- return false;
5847
+ disable(value, allSelectedInfo) {
5848
+ return (allSelectedInfo.findIndex((it) => ["select-5"].includes(it.value)) !== -1);
5849
5849
  },
5850
5850
  },
5851
5851
  {
5852
5852
  value: "select-2",
5853
5853
  text: "单选2",
5854
5854
  isHTML: false,
5855
- disable() {
5856
- return false;
5855
+ disable(value, allSelectedInfo) {
5856
+ return (allSelectedInfo.findIndex((it) => ["select-5"].includes(it.value)) !== -1);
5857
5857
  },
5858
5858
  },
5859
5859
  {
5860
5860
  value: "select-3",
5861
5861
  text: "单选3",
5862
5862
  isHTML: false,
5863
- disable() {
5864
- return false;
5863
+ disable(value, allSelectedInfo) {
5864
+ return (allSelectedInfo.findIndex((it) => ["select-2", "select-5"].includes(it.value)) !== -1);
5865
5865
  },
5866
5866
  },
5867
5867
  {
5868
5868
  value: "select-4",
5869
5869
  text: "单选4",
5870
5870
  isHTML: false,
5871
- disable() {
5872
- return false;
5871
+ disable(value, allSelectedInfo) {
5872
+ return (allSelectedInfo.findIndex((it) => ["select-3", "select-5"].includes(it.value)) !== -1);
5873
5873
  },
5874
5874
  },
5875
5875
  {
5876
5876
  value: "select-5",
5877
- text: "单选5",
5877
+ text(value, allSelectedInfo) {
5878
+ return allSelectedInfo.findIndex((it) => ["select-4"].includes(it.value)) !== -1
5879
+ ? "单选5-禁用"
5880
+ : "单选5";
5881
+ },
5878
5882
  isHTML: false,
5879
- disable() {
5880
- return false;
5883
+ disable(value, allSelectedInfo) {
5884
+ return (allSelectedInfo.findIndex((it) => ["select-4"].includes(it.value)) !== -1);
5881
5885
  },
5882
5886
  },
5883
5887
  ],
@@ -7605,6 +7609,8 @@
7605
7609
  $suffix: void 0,
7606
7610
  /** 下拉箭头图标 */
7607
7611
  $suffixIcon: void 0,
7612
+ /** 下拉列表弹窗的下拉列表容器 */
7613
+ $selectContainer: void 0,
7608
7614
  },
7609
7615
  $data: {
7610
7616
  /** 默认值 */
@@ -7616,7 +7622,7 @@
7616
7622
  this.initDefault();
7617
7623
  this.inintEl();
7618
7624
  this.initPlaceHolder();
7619
- this.updateTagElement();
7625
+ this.initTagElement();
7620
7626
  this.setSelectContainerClickEvent();
7621
7627
  },
7622
7628
  /** 初始化默认值 */
@@ -7628,7 +7634,7 @@
7628
7634
  text: dataItem.text,
7629
7635
  value: dataItem.value,
7630
7636
  isHTML: Boolean(dataItem.isHTML),
7631
- disable: dataItem.disable,
7637
+ disable: dataItem.disable?.bind(dataItem),
7632
7638
  });
7633
7639
  }
7634
7640
  });
@@ -7664,18 +7670,15 @@
7664
7670
  });
7665
7671
  this.$el.$selectedPlaceHolderWrapper.appendChild($placeholder);
7666
7672
  },
7667
- /** 初始化tag */
7668
- updateTagElement() {
7673
+ /** 初始化tag元素 */
7674
+ initTagElement() {
7669
7675
  // 遍历数据,寻找对应的值
7670
7676
  formConfig.data.forEach((dataItem) => {
7671
7677
  let findValue = this.$data.selectInfo.find((item) => item.value === dataItem.value);
7672
7678
  if (findValue) {
7673
- // 选中的值和获取的所有的值相同
7674
- let selectedInfo = this.createSelectedItem({
7675
- text: dataItem.text,
7676
- isHTML: dataItem.isHTML,
7677
- });
7678
- this.addSelectedItem(selectedInfo.$tag);
7679
+ // 存在对应的值
7680
+ let selectedInfo = this.createSelectedTagItem(dataItem);
7681
+ this.addSelectedTagItem(selectedInfo.$tag);
7679
7682
  this.setSelectedItemCloseIconClickEvent({
7680
7683
  $tag: selectedInfo.$tag,
7681
7684
  $closeIcon: selectedInfo.$closeIcon,
@@ -7690,7 +7693,7 @@
7690
7693
  * 生成一个tag项
7691
7694
  * @param data 配置
7692
7695
  */
7693
- createSelectedItem(data) {
7696
+ createSelectedTagItem(data) {
7694
7697
  const $selectedItem = popsDOMUtils.createElement("div", {
7695
7698
  className: "el-select__selected-item el-select__choose_tag",
7696
7699
  innerHTML: /*html*/ `
@@ -7711,11 +7714,14 @@
7711
7714
  const $tagText = $selectedItem.querySelector(".el-select__tags-text");
7712
7715
  /** 关闭图标 */
7713
7716
  const $closeIcon = $selectedItem.querySelector(".el-icon.el-tag__close");
7717
+ let text = typeof data.text === "function"
7718
+ ? data.text(data, this.$data.selectInfo)
7719
+ : data.text;
7714
7720
  if (data.isHTML) {
7715
- PopsSafeUtils.setSafeHTML($tagText, data.text);
7721
+ PopsSafeUtils.setSafeHTML($tagText, text);
7716
7722
  }
7717
7723
  else {
7718
- $tagText.innerText = data.text;
7724
+ $tagText.innerText = text;
7719
7725
  }
7720
7726
  return {
7721
7727
  $tag: $selectedItem,
@@ -7724,9 +7730,10 @@
7724
7730
  };
7725
7731
  },
7726
7732
  /**
7727
- * 添加选中项元素
7733
+ * 添加选中项的tag元素
7734
+ * @param $tag 添加的元素
7728
7735
  */
7729
- addSelectedItem($ele) {
7736
+ addSelectedTagItem($tag) {
7730
7737
  // 往前添加
7731
7738
  // 去除前面的空白
7732
7739
  this.setSectionIsNear();
@@ -7734,26 +7741,26 @@
7734
7741
  let $prev = this.$el.$selectedInputWrapper.previousElementSibling;
7735
7742
  if ($prev) {
7736
7743
  // 存在前一个元素,添加到前面的元素的后面
7737
- popsDOMUtils.after($prev, $ele);
7744
+ popsDOMUtils.after($prev, $tag);
7738
7745
  }
7739
7746
  else {
7740
7747
  // 不存在前一个元素,添加到最前面
7741
- popsDOMUtils.before(this.$el.$selectedInputWrapper, $ele);
7748
+ popsDOMUtils.before(this.$el.$selectedInputWrapper, $tag);
7742
7749
  }
7743
7750
  }
7744
7751
  else if (this.$el.$section.contains(this.$el.$selectedPlaceHolderWrapper)) {
7745
7752
  let $prev = this.$el.$selectedPlaceHolderWrapper.previousElementSibling;
7746
7753
  if ($prev) {
7747
7754
  // 存在前一个元素,添加到前面的元素的后面
7748
- popsDOMUtils.after($prev, $ele);
7755
+ popsDOMUtils.after($prev, $tag);
7749
7756
  }
7750
7757
  else {
7751
7758
  // 不存在前一个元素,添加到最前面
7752
- popsDOMUtils.before(this.$el.$selectedPlaceHolderWrapper, $ele);
7759
+ popsDOMUtils.before(this.$el.$selectedPlaceHolderWrapper, $tag);
7753
7760
  }
7754
7761
  }
7755
7762
  else {
7756
- this.$el.$section.appendChild($ele);
7763
+ this.$el.$section.appendChild($tag);
7757
7764
  }
7758
7765
  // 隐藏元素
7759
7766
  this.hideInputWrapper();
@@ -7766,142 +7773,239 @@
7766
7773
  .forEach(($ele) => {
7767
7774
  $ele.remove();
7768
7775
  });
7769
- this.updateTagElement();
7776
+ this.initTagElement();
7770
7777
  },
7771
7778
  /**
7772
7779
  * 选中的值改变的回调
7773
- * @param currentSelectInfo 当前的选中信息
7780
+ * @param selectedDataList 当前的选中信息
7774
7781
  */
7775
- selectValueChangeCallBack(currentSelectInfo) {
7782
+ selectValueChangeCallBack(selectedDataList) {
7783
+ // 动态更新禁用状态
7784
+ this.updateSelectItem();
7776
7785
  if (typeof formConfig.callback === "function") {
7777
- formConfig.callback(currentSelectInfo || this.$data.selectInfo);
7786
+ formConfig.callback(selectedDataList || this.$data.selectInfo);
7778
7787
  }
7779
7788
  },
7780
- /** 设置下拉列表的点击事件 */
7781
- setSelectContainerClickEvent() {
7782
- const that = this;
7783
- popsDOMUtils.on(this.$el.$container, "click", (event) => {
7784
- /** 弹窗的选中的值 */
7785
- let selectedInfo = [];
7786
- selectedInfo = selectedInfo.concat(that.$data.selectInfo);
7787
- /**
7788
- * 设置项选中
7789
- * @param $ele
7790
- */
7791
- function setItemSelected($ele) {
7792
- $ele.classList.add("select-item-is-selected");
7793
- }
7794
- /**
7795
- * 设置项取消选中
7796
- * @param $ele
7797
- */
7798
- function removeItemSelected($ele) {
7799
- $ele.classList.remove("select-item-is-selected");
7789
+ /**
7790
+ * 更新选项弹窗内的所有选项元素的状态
7791
+ *
7792
+ * + 更新禁用状态
7793
+ * + 更新选中状态
7794
+ */
7795
+ updateSelectItem() {
7796
+ this.getAllSelectItemInfo(false).forEach(($selectInfo) => {
7797
+ const { data, $select } = $selectInfo;
7798
+ // 更新文字
7799
+ this.setSelectItemText(data, $selectInfo.$select);
7800
+ // 更新禁用状态
7801
+ if (typeof data.disable === "function" &&
7802
+ data.disable(data.value, this.$data.selectInfo)) {
7803
+ // 禁用
7804
+ this.setSelectItemDisabled($select);
7805
+ // 移除选中信息
7806
+ this.removeSelectedInfo(data, false);
7807
+ // 移除选中状态
7808
+ this.removeSelectItemSelected($select);
7800
7809
  }
7801
- /**
7802
- * 添加选中信息
7803
- */
7804
- function addSelectedInfo($ele) {
7805
- let info = getSelectedInfo($ele);
7806
- let findValue = selectedInfo.find((item) => item.value === info.value);
7807
- if (!findValue) {
7808
- selectedInfo.push({
7809
- value: info.value,
7810
- text: info.text,
7811
- isHTML: Boolean(info.isHTML),
7812
- disable: info.disable,
7813
- });
7814
- }
7815
- that.selectValueChangeCallBack(selectedInfo);
7810
+ else {
7811
+ // 取消禁用
7812
+ this.removeSelectItemDisabled($select);
7816
7813
  }
7817
- /**
7818
- * 移除选中信息
7819
- */
7820
- function removeSelectedInfo($ele) {
7821
- let info = getSelectedInfo($ele);
7822
- let findIndex = selectedInfo.findIndex((item) => item.value === info.value);
7823
- if (findIndex !== -1) {
7824
- selectedInfo.splice(findIndex, 1);
7825
- }
7826
- that.selectValueChangeCallBack(selectedInfo);
7814
+ // 更新选中状态
7815
+ let findValue = this.$data.selectInfo.find((it) => it.value === data.value);
7816
+ if (findValue) {
7817
+ this.setSelectItemSelected($select);
7827
7818
  }
7828
- /**
7829
- * 判断该项是否选中
7830
- * @param $ele
7831
- */
7832
- function isSelected($ele) {
7833
- return $ele.classList.contains("select-item-is-selected");
7819
+ else {
7820
+ this.removeSelectItemSelected($select);
7834
7821
  }
7835
- /**
7836
- * 获取选中的项的信息
7837
- */
7838
- function getSelectedInfo($ele) {
7839
- return Reflect.get($ele, "data-info");
7822
+ });
7823
+ },
7824
+ /**
7825
+ * 设置选项元素选中
7826
+ * @param $select 选项元素
7827
+ */
7828
+ setSelectItemSelected($select) {
7829
+ if (this.isSelectItemSelected($select))
7830
+ return;
7831
+ $select.classList.add("select-item-is-selected");
7832
+ },
7833
+ /**
7834
+ * 移除选项元素选中
7835
+ * @param $select 选项元素
7836
+ */
7837
+ removeSelectItemSelected($select) {
7838
+ $select.classList.remove("select-item-is-selected");
7839
+ },
7840
+ /**
7841
+ * 判断选项元素是否选中
7842
+ * @param $select
7843
+ */
7844
+ isSelectItemSelected($select) {
7845
+ return $select.classList.contains("select-item-is-selected");
7846
+ },
7847
+ /**
7848
+ * 添加选中信息
7849
+ * @param dataList 选择项列表的数据
7850
+ * @param $select 选项元素
7851
+ */
7852
+ addSelectedItemInfo(dataList, $select) {
7853
+ let info = this.getSelectedItemInfo($select);
7854
+ let findValue = dataList.find((item) => item.value === info.value);
7855
+ if (!findValue) {
7856
+ dataList.push({
7857
+ value: info.value,
7858
+ text: info.text,
7859
+ isHTML: Boolean(info.isHTML),
7860
+ disable: info.disable?.bind(info),
7861
+ });
7862
+ }
7863
+ this.selectValueChangeCallBack(dataList);
7864
+ },
7865
+ /**
7866
+ * 获取选中的项的信息
7867
+ * @param $select 选项元素
7868
+ */
7869
+ getSelectedItemInfo($select) {
7870
+ return Reflect.get($select, "data-info");
7871
+ },
7872
+ /**
7873
+ * 移除选中信息
7874
+ * @param dataList 选择项的数据
7875
+ * @param $select 选项元素
7876
+ */
7877
+ removeSelectedItemInfo(dataList, $select) {
7878
+ let info = this.getSelectedItemInfo($select);
7879
+ let findIndex = dataList.findIndex((item) => item.value === info.value);
7880
+ if (findIndex !== -1) {
7881
+ dataList.splice(findIndex, 1);
7882
+ }
7883
+ this.selectValueChangeCallBack(dataList);
7884
+ },
7885
+ /**
7886
+ * 获取所有选项的信息
7887
+ * @param [onlySelected=true] 是否仅获取选中的项的信息
7888
+ * + true (默认)仅获取选中项的信息
7889
+ * + false 获取所有选择项的信息
7890
+ */
7891
+ getAllSelectItemInfo(onlySelected = true) {
7892
+ return Array.from(this.$el.$selectContainer?.querySelectorAll(".select-item") ?? [])
7893
+ .map(($select) => {
7894
+ let data = this.getSelectedItemInfo($select);
7895
+ let result = {
7896
+ /** 选项信息数据 */
7897
+ data: data,
7898
+ /** 选项元素 */
7899
+ $select: $select,
7900
+ };
7901
+ if (onlySelected) {
7902
+ // 仅选中
7903
+ let isSelected = this.isSelectItemSelected($select);
7904
+ if (isSelected) {
7905
+ return result;
7906
+ }
7907
+ return;
7840
7908
  }
7841
- /**
7842
- * 获取所有选中的项的信息
7843
- */
7844
- function getAllSelectedInfo() {
7845
- return Array.from($selectContainer.querySelectorAll(".select-item"))
7846
- .map(($ele) => {
7847
- if (isSelected($ele)) {
7848
- return getSelectedInfo($ele);
7849
- }
7850
- })
7851
- .filter((item) => {
7852
- return item != null;
7853
- });
7909
+ else {
7910
+ return result;
7854
7911
  }
7855
- /**
7856
- * 创建一个选择项元素
7857
- */
7858
- function createSelectItemElement(dataInfo) {
7859
- let $item = popsDOMUtils.createElement("li", {
7860
- className: "select-item",
7861
- innerHTML: /*html*/ `<span>${dataInfo.text}</span>`,
7862
- });
7863
- Reflect.set($item, "data-info", dataInfo);
7864
- return $item;
7912
+ })
7913
+ .filter((item) => {
7914
+ return item != null;
7915
+ });
7916
+ },
7917
+ /**
7918
+ * 创建一个选择项元素
7919
+ * @param data 选择项的数据
7920
+ */
7921
+ createSelectItemElement(data) {
7922
+ let $select = popsDOMUtils.createElement("li", {
7923
+ className: "select-item",
7924
+ innerHTML: /*html*/ `
7925
+ <span class="select-item-text"></span>
7926
+ `,
7927
+ });
7928
+ this.setSelectItemText(data, $select);
7929
+ Reflect.set($select, "data-info", data);
7930
+ return $select;
7931
+ },
7932
+ /**
7933
+ * 设置选择项的文字
7934
+ * @param data 选择项的数据
7935
+ * @param $select 选择项元素
7936
+ */
7937
+ setSelectItemText(data, $select) {
7938
+ let text = typeof data.text === "function"
7939
+ ? data.text(data.value, this.$data.selectInfo)
7940
+ : data.text;
7941
+ let $selectSpan = $select.querySelector(".select-item-text");
7942
+ if (data.isHTML) {
7943
+ PopsSafeUtils.setSafeHTML($selectSpan, text);
7944
+ }
7945
+ else {
7946
+ $selectSpan.innerText = text;
7947
+ }
7948
+ },
7949
+ /**
7950
+ * 设置选择项的禁用状态
7951
+ * @param $select 选择项元素
7952
+ */
7953
+ setSelectItemDisabled($select) {
7954
+ $select.setAttribute("aria-disabled", "true");
7955
+ $select.setAttribute("disabled", "true");
7956
+ },
7957
+ /**
7958
+ * 移除选择项的禁用状态
7959
+ * @param $select 选择项元素
7960
+ */
7961
+ removeSelectItemDisabled($select) {
7962
+ $select.removeAttribute("aria-disabled");
7963
+ $select.removeAttribute("disabled");
7964
+ },
7965
+ /**
7966
+ * 判断选择项是否禁用
7967
+ * @param $select 选择项元素
7968
+ */
7969
+ isSelectItemDisabled($select) {
7970
+ return $select.hasAttribute("disabled") || $select.ariaDisabled;
7971
+ },
7972
+ /**
7973
+ * 设置选择项的点击事件
7974
+ * @param dataList 选中的信息列表
7975
+ * @param $select 选择项元素
7976
+ */
7977
+ setSelectElementClickEvent(dataList, $select) {
7978
+ popsDOMUtils.on($select, "click", (event) => {
7979
+ popsDOMUtils.preventEvent(event);
7980
+ if (this.isSelectItemDisabled($select)) {
7981
+ return;
7865
7982
  }
7866
- /**
7867
- * 设置选择项的禁用状态
7868
- */
7869
- function setSelectItemDisabled($el) {
7870
- $el.setAttribute("aria-disabled", "true");
7983
+ if (typeof formConfig.clickCallBack === "function") {
7984
+ let allSelectedInfo = this.getAllSelectItemInfo().map((it) => it.data);
7985
+ let clickResult = formConfig.clickCallBack(event, allSelectedInfo);
7986
+ if (typeof clickResult === "boolean" && !clickResult) {
7987
+ return;
7988
+ }
7871
7989
  }
7872
- /**
7873
- * 移除选择项的禁用状态
7874
- */
7875
- function removeSelectItemDisabled($el) {
7876
- $el.removeAttribute("aria-disabled");
7877
- $el.removeAttribute("disabled");
7990
+ // 修改选中状态
7991
+ if (this.isSelectItemSelected($select)) {
7992
+ this.removeSelectItemSelected($select);
7993
+ this.removeSelectedItemInfo(dataList, $select);
7878
7994
  }
7879
- /**
7880
- * 设置选择项的点击事件
7881
- */
7882
- function setSelectElementClickEvent($ele) {
7883
- popsDOMUtils.on($ele, "click", (event) => {
7884
- popsDOMUtils.preventEvent(event);
7885
- if ($ele.hasAttribute("disabled") || $ele.ariaDisabled) {
7886
- return;
7887
- }
7888
- if (typeof formConfig.clickCallBack === "function") {
7889
- let clickResult = formConfig.clickCallBack(event, getAllSelectedInfo());
7890
- if (typeof clickResult === "boolean" && !clickResult) {
7891
- return;
7892
- }
7893
- }
7894
- // 修改选中状态
7895
- if (isSelected($ele)) {
7896
- removeItemSelected($ele);
7897
- removeSelectedInfo($ele);
7898
- }
7899
- else {
7900
- setItemSelected($ele);
7901
- addSelectedInfo($ele);
7902
- }
7903
- });
7995
+ else {
7996
+ this.setSelectItemSelected($select);
7997
+ this.addSelectedItemInfo(dataList, $select);
7904
7998
  }
7999
+ });
8000
+ },
8001
+ /**
8002
+ * 设置下拉列表的点击事件
8003
+ */
8004
+ setSelectContainerClickEvent() {
8005
+ const that = this;
8006
+ popsDOMUtils.on(this.$el.$container, "click", (event) => {
8007
+ /** 弹窗的选中的值 */
8008
+ let selectedInfo = that.$data.selectInfo;
7905
8009
  let { style, ...userConfirmDetails } = formConfig.selectConfirmDialogDetails || {};
7906
8010
  let confirmDetails = popsUtils.assign({
7907
8011
  title: {
@@ -7923,6 +8027,7 @@
7923
8027
  callback(details, event) {
7924
8028
  that.$data.selectInfo = [...selectedInfo];
7925
8029
  that.updateSelectTagItem();
8030
+ that.$el.$selectContainer = null;
7926
8031
  details.close();
7927
8032
  },
7928
8033
  },
@@ -7933,6 +8038,7 @@
7933
8038
  originalRun();
7934
8039
  that.$data.selectInfo = [...selectedInfo];
7935
8040
  that.updateSelectTagItem();
8041
+ that.$el.$selectContainer = null;
7936
8042
  },
7937
8043
  clickEvent: {
7938
8044
  toClose: true,
@@ -7998,30 +8104,23 @@
7998
8104
  }, userConfirmDetails);
7999
8105
  let $dialog = pops.alert(confirmDetails);
8000
8106
  let $selectContainer = $dialog.$shadowRoot.querySelector(".select-container");
8107
+ this.$el.$selectContainer = $selectContainer;
8001
8108
  // 配置选项元素
8002
8109
  formConfig.data.forEach((item) => {
8003
- let $select = createSelectItemElement(item);
8110
+ let $select = this.createSelectItemElement(item);
8004
8111
  // 添加到confirm中
8005
8112
  $selectContainer.appendChild($select);
8006
8113
  // 设置每一项的点击事件
8007
- setSelectElementClickEvent($select);
8008
- // 设置禁用状态
8009
- if (typeof item.disable === "function" &&
8010
- item.disable(item.value)) {
8011
- setSelectItemDisabled($select);
8012
- // 后续不设置元素的选中状态
8013
- return;
8014
- }
8015
- // 移除禁用状态
8016
- removeSelectItemDisabled($select);
8017
- let findValue = selectedInfo.find((value) => value.value === item.value);
8018
- if (findValue) {
8019
- setItemSelected($select);
8020
- }
8114
+ this.setSelectElementClickEvent(selectedInfo, $select);
8021
8115
  });
8116
+ // 动态更新禁用状态
8117
+ this.updateSelectItem();
8022
8118
  });
8023
8119
  },
8024
- /** 设置关闭图标的点击事件 */
8120
+ /**
8121
+ * 设置关闭图标的点击事件
8122
+ * @param data 选中的信息
8123
+ */
8025
8124
  setSelectedItemCloseIconClickEvent(data) {
8026
8125
  popsDOMUtils.on(data.$closeIcon, "click", (event) => {
8027
8126
  popsDOMUtils.preventEvent(event);
@@ -8030,13 +8129,15 @@
8030
8129
  $tag: data.$tag,
8031
8130
  $closeIcon: data.$closeIcon,
8032
8131
  value: data.value,
8033
- text: data.text,
8132
+ text: typeof data.text === "function"
8133
+ ? data.text.bind(data)
8134
+ : data.text,
8034
8135
  });
8035
8136
  if (typeof result === "boolean" && !result) {
8036
8137
  return;
8037
8138
  }
8038
8139
  }
8039
- this.removeSelectedItem(data.$tag);
8140
+ this.removeSelectedTagItem(data.$tag);
8040
8141
  this.removeSelectedInfo({
8041
8142
  value: data.value,
8042
8143
  text: data.text,
@@ -8056,13 +8157,21 @@
8056
8157
  this.removeSectionIsNear();
8057
8158
  }
8058
8159
  },
8059
- /** 移除选中项元素 */
8060
- removeSelectedItem($ele) {
8061
- $ele.remove();
8160
+ /**
8161
+ * 移除选中项元素
8162
+ */
8163
+ removeSelectedTagItem($tag) {
8164
+ $tag.remove();
8062
8165
  this.checkTagEmpty();
8063
8166
  },
8064
- /** 移除选中的信息 */
8065
- removeSelectedInfo(data) {
8167
+ /**
8168
+ * 从保存的已选中的信息列表中移除目标信息
8169
+ * @param data 需要移除的信息
8170
+ * @param [triggerValueChangeCallBack=true] 是否触发值改变的回调
8171
+ * + true (默认)触发值改变的回调
8172
+ * + false 不触发值改变的回调
8173
+ */
8174
+ removeSelectedInfo(data, triggerValueChangeCallBack = true) {
8066
8175
  for (let index = 0; index < this.$data.selectInfo.length; index++) {
8067
8176
  const selectInfo = this.$data.selectInfo[index];
8068
8177
  if (selectInfo.value === data.value) {
@@ -8070,7 +8179,7 @@
8070
8179
  break;
8071
8180
  }
8072
8181
  }
8073
- this.selectValueChangeCallBack();
8182
+ triggerValueChangeCallBack && this.selectValueChangeCallBack();
8074
8183
  },
8075
8184
  /** 显示输入框 */
8076
8185
  showInputWrapper() {
@@ -9919,6 +10028,7 @@
9919
10028
  useShadowRoot: true,
9920
10029
  target: null,
9921
10030
  content: "默认文字",
10031
+ isDiffContent: false,
9922
10032
  position: "top",
9923
10033
  className: "",
9924
10034
  isFixed: false,
@@ -10044,6 +10154,19 @@
10044
10154
  if (text == null) {
10045
10155
  text = this.getContent();
10046
10156
  }
10157
+ if (this.$data.config.isDiffContent) {
10158
+ let contentPropKey = "data-content";
10159
+ // @ts-ignore
10160
+ let originContentText = this.$el.$content[contentPropKey];
10161
+ if (typeof originContentText === "string") {
10162
+ if (originContentText === text) {
10163
+ // 内容未改变,不修改避免渲染
10164
+ return;
10165
+ }
10166
+ }
10167
+ // @ts-ignore
10168
+ this.$el.$content[contentPropKey] = text;
10169
+ }
10047
10170
  PopsSafeUtils.setSafeHTML(this.$el.$content, text);
10048
10171
  }
10049
10172
  /**