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