@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.amd.js +297 -174
- package/dist/index.amd.js.map +1 -1
- package/dist/index.cjs.js +297 -174
- package/dist/index.cjs.js.map +1 -1
- package/dist/index.esm.js +297 -174
- package/dist/index.esm.js.map +1 -1
- package/dist/index.iife.js +297 -174
- package/dist/index.iife.js.map +1 -1
- package/dist/index.system.js +297 -174
- package/dist/index.system.js.map +1 -1
- package/dist/index.umd.js +297 -174
- package/dist/index.umd.js.map +1 -1
- package/dist/types/src/Pops.d.ts +1 -0
- package/dist/types/src/components/panel/selectMultipleType.d.ts +12 -15
- package/dist/types/src/components/tooltip/index.d.ts +1 -0
- package/dist/types/src/components/tooltip/indexType.d.ts +7 -0
- package/package.json +3 -2
- package/src/components/panel/PanelHandleContentDetails.ts +310 -195
- package/src/components/panel/config.ts +37 -11
- package/src/components/panel/selectMultipleType.ts +18 -15
- package/src/components/tooltip/config.ts +1 -0
- package/src/components/tooltip/index.ts +13 -0
- package/src/components/tooltip/indexType.ts +7 -0
package/dist/index.iife.js
CHANGED
|
@@ -5841,40 +5841,44 @@ var pops = (function () {
|
|
|
5841
5841
|
value: "select-1",
|
|
5842
5842
|
text: "单选1",
|
|
5843
5843
|
isHTML: false,
|
|
5844
|
-
disable() {
|
|
5845
|
-
return
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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
|
-
|
|
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.
|
|
7672
|
-
|
|
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
|
-
|
|
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,
|
|
7718
|
+
PopsSafeUtils.setSafeHTML($tagText, text);
|
|
7713
7719
|
}
|
|
7714
7720
|
else {
|
|
7715
|
-
$tagText.innerText =
|
|
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
|
-
|
|
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, $
|
|
7741
|
+
popsDOMUtils.after($prev, $tag);
|
|
7735
7742
|
}
|
|
7736
7743
|
else {
|
|
7737
7744
|
// 不存在前一个元素,添加到最前面
|
|
7738
|
-
popsDOMUtils.before(this.$el.$selectedInputWrapper, $
|
|
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, $
|
|
7752
|
+
popsDOMUtils.after($prev, $tag);
|
|
7746
7753
|
}
|
|
7747
7754
|
else {
|
|
7748
7755
|
// 不存在前一个元素,添加到最前面
|
|
7749
|
-
popsDOMUtils.before(this.$el.$selectedPlaceHolderWrapper, $
|
|
7756
|
+
popsDOMUtils.before(this.$el.$selectedPlaceHolderWrapper, $tag);
|
|
7750
7757
|
}
|
|
7751
7758
|
}
|
|
7752
7759
|
else {
|
|
7753
|
-
this.$el.$section.appendChild($
|
|
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.
|
|
7773
|
+
this.initTagElement();
|
|
7767
7774
|
},
|
|
7768
7775
|
/**
|
|
7769
7776
|
* 选中的值改变的回调
|
|
7770
|
-
* @param
|
|
7777
|
+
* @param selectedDataList 当前的选中信息
|
|
7771
7778
|
*/
|
|
7772
|
-
selectValueChangeCallBack(
|
|
7779
|
+
selectValueChangeCallBack(selectedDataList) {
|
|
7780
|
+
// 动态更新禁用状态
|
|
7781
|
+
this.updateSelectItem();
|
|
7773
7782
|
if (typeof formConfig.callback === "function") {
|
|
7774
|
-
formConfig.callback(
|
|
7783
|
+
formConfig.callback(selectedDataList || this.$data.selectInfo);
|
|
7775
7784
|
}
|
|
7776
7785
|
},
|
|
7777
|
-
/**
|
|
7778
|
-
|
|
7779
|
-
|
|
7780
|
-
|
|
7781
|
-
|
|
7782
|
-
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7792
|
-
|
|
7793
|
-
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7836
|
-
|
|
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
|
-
|
|
7856
|
-
|
|
7857
|
-
|
|
7858
|
-
|
|
7859
|
-
|
|
7860
|
-
|
|
7861
|
-
|
|
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
|
-
|
|
7867
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
-
|
|
8058
|
-
|
|
8157
|
+
/**
|
|
8158
|
+
* 移除选中项元素
|
|
8159
|
+
*/
|
|
8160
|
+
removeSelectedTagItem($tag) {
|
|
8161
|
+
$tag.remove();
|
|
8059
8162
|
this.checkTagEmpty();
|
|
8060
8163
|
},
|
|
8061
|
-
/**
|
|
8062
|
-
|
|
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
|
/**
|