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