@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/dist/index.amd.js CHANGED
@@ -8327,6 +8327,10 @@ define((function () { 'use strict';
8327
8327
  panelSelect: liElement.querySelector(".pops-panel-select"),
8328
8328
  select: liElement.querySelector(".pops-panel-select select"),
8329
8329
  },
8330
+ $eleKey: {
8331
+ disable: "__disable__",
8332
+ value: "__value__",
8333
+ },
8330
8334
  $data: {
8331
8335
  defaultValue: formConfig.getValue(),
8332
8336
  },
@@ -8338,6 +8342,24 @@ define((function () { 'use strict';
8338
8342
  this.disable();
8339
8343
  }
8340
8344
  },
8345
+ /**
8346
+ * 给option元素设置属性
8347
+ * @param $ele
8348
+ * @param key
8349
+ * @param value
8350
+ */
8351
+ setNodeValue($ele, key, value) {
8352
+ Reflect.set($ele, key, value);
8353
+ },
8354
+ /**
8355
+ * 获取option元素上设置的属性
8356
+ * @param $ele
8357
+ * @param value
8358
+ * @param key
8359
+ */
8360
+ getNodeValue($ele, key) {
8361
+ return Reflect.get($ele, key);
8362
+ },
8341
8363
  disable() {
8342
8364
  this.$ele.select.setAttribute("disabled", "true");
8343
8365
  this.$ele.panelSelect.classList.add("pops-panel-select-disable");
@@ -8352,9 +8374,10 @@ define((function () { 'use strict';
8352
8374
  },
8353
8375
  initOption() {
8354
8376
  formConfig.data.forEach((dataItem) => {
8377
+ // 初始化默认选中
8355
8378
  let optionElement = document.createElement("option");
8356
- optionElement["__value__"] = dataItem.value;
8357
- optionElement["__disable__"] = dataItem.disable;
8379
+ this.setNodeValue(optionElement, this.$eleKey.value, dataItem.value);
8380
+ this.setNodeValue(optionElement, this.$eleKey.disable, dataItem.disable);
8358
8381
  if (dataItem.value === this.$data.defaultValue) {
8359
8382
  optionElement.setAttribute("selected", "true");
8360
8383
  }
@@ -8362,6 +8385,7 @@ define((function () { 'use strict';
8362
8385
  this.$ele.select.appendChild(optionElement);
8363
8386
  });
8364
8387
  },
8388
+ /** 检测所有option并设置禁用状态 */
8365
8389
  setSelectOptionsDisableStatus() {
8366
8390
  if (this.$ele.select.options && this.$ele.select.options.length) {
8367
8391
  Array.from(this.$ele.select.options).forEach((optionItem) => {
@@ -8369,16 +8393,30 @@ define((function () { 'use strict';
8369
8393
  });
8370
8394
  }
8371
8395
  },
8396
+ /** 设置禁用状态 */
8372
8397
  setOptionDisableStatus(optionElement) {
8373
- if (typeof optionElement["__disable__"] === "function") {
8374
- let disableStatus = optionElement["__disable__"](optionElement["__value__"]);
8375
- if (disableStatus) {
8376
- optionElement.setAttribute("disabled", "true");
8377
- }
8378
- else {
8379
- optionElement.removeAttribute("disabled");
8380
- }
8398
+ let disable = false;
8399
+ let optionDisableAttr = this.getNodeValue(optionElement, this.$eleKey.disable);
8400
+ if (optionDisableAttr === "function") {
8401
+ let value = this.getNodeValue(optionElement, this.$eleKey.value);
8402
+ disable = Boolean(optionDisableAttr(value));
8403
+ }
8404
+ if (disable) {
8405
+ optionElement.setAttribute("disabled", "true");
8381
8406
  }
8407
+ else {
8408
+ optionElement.removeAttribute("disabled");
8409
+ }
8410
+ },
8411
+ /** 获取option上的信息 */
8412
+ getSelectOptionInfo($option) {
8413
+ let optionValue = this.getNodeValue($option, this.$eleKey.value);
8414
+ let optionText = $option.innerText || $option.textContent;
8415
+ return {
8416
+ value: optionValue,
8417
+ text: optionText,
8418
+ $option: $option,
8419
+ };
8382
8420
  },
8383
8421
  /**
8384
8422
  * 监听选择内容改变
@@ -8387,10 +8425,9 @@ define((function () { 'use strict';
8387
8425
  popsDOMUtils.on(this.$ele.select, "change", void 0, (event) => {
8388
8426
  this.setSelectOptionsDisableStatus();
8389
8427
  if (typeof formConfig.callback === "function") {
8390
- let isSelectedElement = event.target[event.target.selectedIndex];
8391
- let isSelectedValue = isSelectedElement["__value__"];
8392
- let isSelectedText = isSelectedElement.innerText || isSelectedElement.textContent;
8393
- formConfig.callback(event, isSelectedValue, isSelectedText);
8428
+ let $isSelectedElement = event.target[event.target.selectedIndex];
8429
+ let selectInfo = this.getSelectOptionInfo($isSelectedElement);
8430
+ formConfig.callback(event, selectInfo.value, selectInfo.text);
8394
8431
  }
8395
8432
  });
8396
8433
  },
@@ -8458,6 +8495,24 @@ define((function () { 'use strict';
8458
8495
  this.disable();
8459
8496
  }
8460
8497
  },
8498
+ /**
8499
+ * 给option元素设置属性
8500
+ * @param $ele
8501
+ * @param key
8502
+ * @param value
8503
+ */
8504
+ setNodeValue($ele, key, value) {
8505
+ Reflect.set($ele, key, value);
8506
+ },
8507
+ /**
8508
+ * 获取option元素上设置的属性
8509
+ * @param $ele
8510
+ * @param value
8511
+ * @param key
8512
+ */
8513
+ getNodeValue($ele, key) {
8514
+ return Reflect.get($ele, key);
8515
+ },
8461
8516
  /** 禁用 */
8462
8517
  disable() {
8463
8518
  this.$ele.select.setAttribute("disabled", "true");
@@ -8480,31 +8535,13 @@ define((function () { 'use strict';
8480
8535
  let optionElement = document.createElement("option");
8481
8536
  this.setNodeValue(optionElement, this.$eleKey.value, dataItem.value);
8482
8537
  this.setNodeValue(optionElement, this.$eleKey.disable, dataItem.disable);
8483
- if (dataItem.value === this.$data.defaultValue) {
8538
+ if (this.$data.defaultValue.includes(dataItem.value)) {
8484
8539
  optionElement.setAttribute("selected", "true");
8485
8540
  }
8486
8541
  optionElement.innerText = dataItem.text;
8487
8542
  this.$ele.select.appendChild(optionElement);
8488
8543
  });
8489
8544
  },
8490
- /**
8491
- * 给option元素设置属性
8492
- * @param $ele
8493
- * @param key
8494
- * @param value
8495
- */
8496
- setNodeValue($ele, key, value) {
8497
- Reflect.set($ele, key, value);
8498
- },
8499
- /**
8500
- * 获取option元素上设置的属性
8501
- * @param $ele
8502
- * @param value
8503
- * @param key
8504
- */
8505
- getNodeValue($ele, key) {
8506
- return Reflect.get($ele, key);
8507
- },
8508
8545
  /** 检测所有option并设置禁用状态 */
8509
8546
  setSelectOptionsDisableStatus() {
8510
8547
  if (this.$ele.select.options && this.$ele.select.options.length) {