@whitesev/pops 1.5.9 → 1.6.0

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whitesev/pops",
3
- "version": "1.5.9",
3
+ "version": "1.6.0",
4
4
  "description": "弹窗库",
5
5
  "main": "dist/index.cjs.js",
6
6
  "module": "dist/index.esm.js",
@@ -1748,6 +1748,10 @@ export class PopsPanel {
1748
1748
  ".pops-panel-select select"
1749
1749
  )!,
1750
1750
  },
1751
+ $eleKey: {
1752
+ disable: "__disable__",
1753
+ value: "__value__",
1754
+ },
1751
1755
  $data: {
1752
1756
  defaultValue: formConfig.getValue(),
1753
1757
  },
@@ -1759,6 +1763,24 @@ export class PopsPanel {
1759
1763
  this.disable();
1760
1764
  }
1761
1765
  },
1766
+ /**
1767
+ * 给option元素设置属性
1768
+ * @param $ele
1769
+ * @param key
1770
+ * @param value
1771
+ */
1772
+ setNodeValue($ele: HTMLElement, key: string, value: any) {
1773
+ Reflect.set($ele, key, value);
1774
+ },
1775
+ /**
1776
+ * 获取option元素上设置的属性
1777
+ * @param $ele
1778
+ * @param value
1779
+ * @param key
1780
+ */
1781
+ getNodeValue($ele: HTMLElement, key: string) {
1782
+ return Reflect.get($ele, key);
1783
+ },
1762
1784
  disable() {
1763
1785
  this.$ele.select.setAttribute("disabled", "true");
1764
1786
  this.$ele.panelSelect.classList.add("pops-panel-select-disable");
@@ -1777,9 +1799,18 @@ export class PopsPanel {
1777
1799
  },
1778
1800
  initOption() {
1779
1801
  formConfig.data.forEach((dataItem) => {
1802
+ // 初始化默认选中
1780
1803
  let optionElement = document.createElement("option");
1781
- (optionElement as any)["__value__"] = dataItem.value;
1782
- (optionElement as any)["__disable__"] = dataItem.disable;
1804
+ this.setNodeValue(
1805
+ optionElement,
1806
+ this.$eleKey.value,
1807
+ dataItem.value
1808
+ );
1809
+ this.setNodeValue(
1810
+ optionElement,
1811
+ this.$eleKey.disable,
1812
+ dataItem.disable
1813
+ );
1783
1814
  if (dataItem.value === this.$data.defaultValue) {
1784
1815
  optionElement.setAttribute("selected", "true");
1785
1816
  }
@@ -1787,6 +1818,7 @@ export class PopsPanel {
1787
1818
  this.$ele.select.appendChild(optionElement);
1788
1819
  });
1789
1820
  },
1821
+ /** 检测所有option并设置禁用状态 */
1790
1822
  setSelectOptionsDisableStatus() {
1791
1823
  if (this.$ele.select.options && this.$ele.select.options.length) {
1792
1824
  Array.from(this.$ele.select.options).forEach((optionItem) => {
@@ -1794,18 +1826,33 @@ export class PopsPanel {
1794
1826
  });
1795
1827
  }
1796
1828
  },
1829
+ /** 设置禁用状态 */
1797
1830
  setOptionDisableStatus(optionElement: HTMLOptionElement) {
1798
- if (typeof (optionElement as any)["__disable__"] === "function") {
1799
- let disableStatus = (optionElement as any)["__disable__"](
1800
- (optionElement as any)["__value__"]
1801
- );
1802
- if (disableStatus) {
1803
- optionElement.setAttribute("disabled", "true");
1804
- } else {
1805
- optionElement.removeAttribute("disabled");
1806
- }
1831
+ let disable = false;
1832
+ let optionDisableAttr = this.getNodeValue(
1833
+ optionElement,
1834
+ this.$eleKey.disable
1835
+ );
1836
+ if (optionDisableAttr === "function") {
1837
+ let value = this.getNodeValue(optionElement, this.$eleKey.value);
1838
+ disable = Boolean(optionDisableAttr(value));
1839
+ }
1840
+ if (disable) {
1841
+ optionElement.setAttribute("disabled", "true");
1842
+ } else {
1843
+ optionElement.removeAttribute("disabled");
1807
1844
  }
1808
1845
  },
1846
+ /** 获取option上的信息 */
1847
+ getSelectOptionInfo($option: HTMLOptionElement) {
1848
+ let optionValue = this.getNodeValue($option, this.$eleKey.value);
1849
+ let optionText = $option.innerText || $option.textContent!;
1850
+ return {
1851
+ value: optionValue,
1852
+ text: optionText,
1853
+ $option: $option,
1854
+ };
1855
+ },
1809
1856
  /**
1810
1857
  * 监听选择内容改变
1811
1858
  */
@@ -1813,16 +1860,14 @@ export class PopsPanel {
1813
1860
  popsDOMUtils.on(this.$ele.select, "change", void 0, (event) => {
1814
1861
  this.setSelectOptionsDisableStatus();
1815
1862
  if (typeof formConfig.callback === "function") {
1816
- let isSelectedElement = (event as any).target[
1863
+ let $isSelectedElement = (event as any).target[
1817
1864
  (event as any).target.selectedIndex
1818
1865
  ] as HTMLOptionElement;
1819
- let isSelectedValue = (isSelectedElement as any)["__value__"];
1820
- let isSelectedText =
1821
- isSelectedElement.innerText || isSelectedElement.textContent!;
1866
+ let selectInfo = this.getSelectOptionInfo($isSelectedElement);
1822
1867
  formConfig.callback(
1823
1868
  event as any,
1824
- isSelectedValue,
1825
- isSelectedText
1869
+ selectInfo.value,
1870
+ selectInfo.text
1826
1871
  );
1827
1872
  }
1828
1873
  });
@@ -1899,6 +1944,24 @@ export class PopsPanel {
1899
1944
  this.disable();
1900
1945
  }
1901
1946
  },
1947
+ /**
1948
+ * 给option元素设置属性
1949
+ * @param $ele
1950
+ * @param key
1951
+ * @param value
1952
+ */
1953
+ setNodeValue($ele: HTMLElement, key: string, value: any) {
1954
+ Reflect.set($ele, key, value);
1955
+ },
1956
+ /**
1957
+ * 获取option元素上设置的属性
1958
+ * @param $ele
1959
+ * @param value
1960
+ * @param key
1961
+ */
1962
+ getNodeValue($ele: HTMLElement, key: string) {
1963
+ return Reflect.get($ele, key);
1964
+ },
1902
1965
  /** 禁用 */
1903
1966
  disable() {
1904
1967
  this.$ele.select.setAttribute("disabled", "true");
@@ -1933,31 +1996,14 @@ export class PopsPanel {
1933
1996
  this.$eleKey.disable,
1934
1997
  dataItem.disable
1935
1998
  );
1936
- if (dataItem.value === this.$data.defaultValue) {
1999
+
2000
+ if (this.$data.defaultValue.includes(dataItem.value)) {
1937
2001
  optionElement.setAttribute("selected", "true");
1938
2002
  }
1939
2003
  optionElement.innerText = dataItem.text;
1940
2004
  this.$ele.select.appendChild(optionElement);
1941
2005
  });
1942
2006
  },
1943
- /**
1944
- * 给option元素设置属性
1945
- * @param $ele
1946
- * @param key
1947
- * @param value
1948
- */
1949
- setNodeValue($ele: HTMLElement, key: string, value: any) {
1950
- Reflect.set($ele, key, value);
1951
- },
1952
- /**
1953
- * 获取option元素上设置的属性
1954
- * @param $ele
1955
- * @param value
1956
- * @param key
1957
- */
1958
- getNodeValue($ele: HTMLElement, key: string) {
1959
- return Reflect.get($ele, key);
1960
- },
1961
2007
  /** 检测所有option并设置禁用状态 */
1962
2008
  setSelectOptionsDisableStatus() {
1963
2009
  if (this.$ele.select.options && this.$ele.select.options.length) {