@whitesev/pops 1.6.4 → 1.6.6

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.
Files changed (38) hide show
  1. package/dist/index.amd.js +111 -89
  2. package/dist/index.amd.js.map +1 -1
  3. package/dist/index.cjs.js +111 -89
  4. package/dist/index.cjs.js.map +1 -1
  5. package/dist/index.esm.js +111 -89
  6. package/dist/index.esm.js.map +1 -1
  7. package/dist/index.iife.js +111 -89
  8. package/dist/index.iife.js.map +1 -1
  9. package/dist/index.system.js +111 -89
  10. package/dist/index.system.js.map +1 -1
  11. package/dist/index.umd.js +111 -89
  12. package/dist/index.umd.js.map +1 -1
  13. package/dist/types/src/Pops.d.ts +14 -13
  14. package/dist/types/src/components/panel/PanelHandleContentDetails.d.ts +31 -15
  15. package/dist/types/src/components/panel/buttonType.d.ts +6 -2
  16. package/dist/types/src/components/panel/deepMenuType.d.ts +6 -2
  17. package/dist/types/src/components/panel/formsType.d.ts +6 -2
  18. package/dist/types/src/components/panel/indexType.d.ts +22 -3
  19. package/dist/types/src/components/panel/inputType.d.ts +6 -2
  20. package/dist/types/src/components/panel/ownType.d.ts +3 -1
  21. package/dist/types/src/components/panel/selectMultipleType.d.ts +6 -2
  22. package/dist/types/src/components/panel/selectType.d.ts +6 -2
  23. package/dist/types/src/components/panel/sliderType.d.ts +6 -2
  24. package/dist/types/src/components/panel/switchType.d.ts +6 -2
  25. package/dist/types/src/components/panel/textareaType.d.ts +6 -2
  26. package/package.json +1 -1
  27. package/src/components/panel/PanelHandleContentDetails.ts +123 -95
  28. package/src/components/panel/buttonType.ts +6 -2
  29. package/src/components/panel/deepMenuType.ts +6 -2
  30. package/src/components/panel/formsType.ts +6 -2
  31. package/src/components/panel/indexType.ts +22 -3
  32. package/src/components/panel/inputType.ts +6 -2
  33. package/src/components/panel/ownType.ts +3 -1
  34. package/src/components/panel/selectMultipleType.ts +6 -2
  35. package/src/components/panel/selectType.ts +6 -2
  36. package/src/components/panel/sliderType.ts +6 -2
  37. package/src/components/panel/switchType.ts +6 -2
  38. package/src/components/panel/textareaType.ts +6 -2
package/dist/index.umd.js CHANGED
@@ -7286,11 +7286,21 @@
7286
7286
  * 右侧主内容的ul容器
7287
7287
  */
7288
7288
  sectionContainerULElement: null,
7289
+ /**
7290
+ * 元素
7291
+ */
7289
7292
  $el: {
7293
+ /** 内容 */
7290
7294
  $content: null,
7295
+ /** 左侧容器 */
7291
7296
  $contentAside: null,
7297
+ /** 右侧容器 */
7292
7298
  $contentSectionContainer: null,
7293
7299
  },
7300
+ /**
7301
+ * 初始化
7302
+ * @param details
7303
+ */
7294
7304
  init(details) {
7295
7305
  // @ts-ignore
7296
7306
  this.$el = null;
@@ -7304,40 +7314,48 @@
7304
7314
  this.sectionContainerULElement =
7305
7315
  this.$el.$contentSectionContainer.querySelectorAll("ul")[1];
7306
7316
  /**
7307
- * 默认点击的左侧容器
7317
+ * 默认点击的左侧容器项
7308
7318
  */
7309
- let asideDefaultItemElement = null;
7319
+ let $asideDefaultItemElement = null;
7320
+ /** 是否滚动到默认位置(第一个项) */
7310
7321
  let isScrollToDefaultView = false;
7311
- details.config.content.forEach((asideItem) => {
7312
- let asideLiElement = this.getAsideItem(asideItem);
7313
- this.setAsideItemClickEvent(asideLiElement, asideItem);
7314
- this.asideULElement.appendChild(asideLiElement);
7315
- if (asideDefaultItemElement == null) {
7322
+ details.config.content.forEach((asideItemConfig) => {
7323
+ let $asideLiElement = this.createAsideItem(asideItemConfig);
7324
+ this.setAsideItemClickEvent($asideLiElement, asideItemConfig);
7325
+ this.asideULElement.appendChild($asideLiElement);
7326
+ if ($asideDefaultItemElement == null) {
7316
7327
  let flag = false;
7317
- if (typeof asideItem.isDefault === "function") {
7318
- flag = Boolean(asideItem.isDefault());
7328
+ if (typeof asideItemConfig.isDefault === "function") {
7329
+ flag = Boolean(asideItemConfig.isDefault());
7319
7330
  }
7320
7331
  else {
7321
- flag = Boolean(asideItem.isDefault);
7332
+ flag = Boolean(asideItemConfig.isDefault);
7322
7333
  }
7323
7334
  if (flag) {
7324
- asideDefaultItemElement = asideLiElement;
7325
- isScrollToDefaultView = Boolean(asideItem.scrollToDefaultView);
7335
+ $asideDefaultItemElement = $asideLiElement;
7336
+ isScrollToDefaultView = Boolean(asideItemConfig.scrollToDefaultView);
7326
7337
  }
7327
7338
  }
7339
+ if (typeof asideItemConfig.afterRender === "function") {
7340
+ // 执行渲染完毕的回调
7341
+ asideItemConfig.afterRender({
7342
+ asideConfig: asideItemConfig,
7343
+ $asideLiElement: $asideLiElement,
7344
+ });
7345
+ }
7328
7346
  });
7329
7347
  /* 点击左侧列表 */
7330
- if (asideDefaultItemElement == null &&
7348
+ if ($asideDefaultItemElement == null &&
7331
7349
  this.asideULElement.children.length) {
7332
7350
  /* 默认第一个 */
7333
- asideDefaultItemElement = this.asideULElement
7351
+ $asideDefaultItemElement = this.asideULElement
7334
7352
  .children[0];
7335
7353
  }
7336
- if (asideDefaultItemElement) {
7354
+ if ($asideDefaultItemElement) {
7337
7355
  /* 点击选择的那一项 */
7338
- asideDefaultItemElement.click();
7356
+ $asideDefaultItemElement.click();
7339
7357
  if (isScrollToDefaultView) {
7340
- asideDefaultItemElement?.scrollIntoView();
7358
+ $asideDefaultItemElement?.scrollIntoView();
7341
7359
  }
7342
7360
  }
7343
7361
  else {
@@ -7376,13 +7394,13 @@
7376
7394
  * @param element
7377
7395
  * @param attributes
7378
7396
  */
7379
- addElementAttributes(element, attributes) {
7397
+ setElementAttributes(element, attributes) {
7380
7398
  if (attributes == null) {
7381
7399
  return;
7382
7400
  }
7383
7401
  if (Array.isArray(attributes)) {
7384
7402
  attributes.forEach((attrObject) => {
7385
- this.addElementAttributes(element, attrObject);
7403
+ this.setElementAttributes(element, attrObject);
7386
7404
  });
7387
7405
  }
7388
7406
  else {
@@ -7401,34 +7419,58 @@
7401
7419
  return;
7402
7420
  }
7403
7421
  Object.keys(props).forEach((propName) => {
7404
- element[propName] = props[propName];
7422
+ Reflect.set(element, propName, props[propName]);
7405
7423
  });
7406
7424
  },
7407
7425
  /**
7408
- * 获取左侧容器元素<li>
7426
+ * 为元素设置classname
7427
+ * @param element
7428
+ * @param className
7429
+ */
7430
+ setElementClassName(element, className) {
7431
+ if (className == null) {
7432
+ return;
7433
+ }
7434
+ if (typeof className === "function") {
7435
+ className = className();
7436
+ }
7437
+ if (typeof className === "string") {
7438
+ let splitClassName = className.split(" ");
7439
+ splitClassName.forEach((classNameStr) => {
7440
+ element.classList.add(classNameStr);
7441
+ });
7442
+ }
7443
+ else if (Array.isArray(className)) {
7444
+ className.forEach((classNameStr) => {
7445
+ this.setElementClassName(element, classNameStr);
7446
+ });
7447
+ }
7448
+ },
7449
+ /**
7450
+ * 创建左侧容器元素<li>
7409
7451
  * @param asideConfig
7410
7452
  */
7411
- getAsideItem(asideConfig) {
7453
+ createAsideItem(asideConfig) {
7412
7454
  let liElement = document.createElement("li");
7413
7455
  liElement.id = asideConfig.id;
7414
7456
  liElement["__forms__"] = asideConfig.forms;
7415
7457
  liElement.innerHTML = asideConfig.title;
7416
- this.addElementAttributes(liElement, asideConfig.attributes);
7458
+ /* 处理className */
7459
+ this.setElementClassName(liElement, asideConfig.className);
7460
+ this.setElementAttributes(liElement, asideConfig.attributes);
7417
7461
  this.setElementProps(liElement, asideConfig.props);
7418
7462
  return liElement;
7419
7463
  },
7420
7464
  /**
7421
- * 获取中间容器的元素<li>
7465
+ * 创建中间容器的元素<li>
7422
7466
  * type ==> switch
7423
7467
  * @param formConfig
7424
7468
  */
7425
- getSectionContainerItem_switch(formConfig) {
7469
+ createSectionContainerItem_switch(formConfig) {
7426
7470
  let liElement = document.createElement("li");
7427
7471
  liElement["__formConfig__"] = formConfig;
7428
- if (formConfig.className) {
7429
- liElement.className = formConfig.className;
7430
- }
7431
- this.addElementAttributes(liElement, formConfig.attributes);
7472
+ this.setElementClassName(liElement, formConfig.className);
7473
+ this.setElementAttributes(liElement, formConfig.attributes);
7432
7474
  this.setElementProps(liElement, formConfig.props);
7433
7475
  /* 左边底部的描述的文字 */
7434
7476
  let leftDescriptionText = "";
@@ -7525,13 +7567,11 @@
7525
7567
  * type ==> slider
7526
7568
  * @param formConfig
7527
7569
  */
7528
- getSectionContainerItem_slider(formConfig) {
7570
+ createSectionContainerItem_slider(formConfig) {
7529
7571
  let liElement = document.createElement("li");
7530
7572
  liElement["__formConfig__"] = formConfig;
7531
- if (formConfig.className) {
7532
- liElement.className = formConfig.className;
7533
- }
7534
- this.addElementAttributes(liElement, formConfig.attributes);
7573
+ this.setElementClassName(liElement, formConfig.className);
7574
+ this.setElementAttributes(liElement, formConfig.attributes);
7535
7575
  this.setElementProps(liElement, formConfig.props);
7536
7576
  /* 左边底部的描述的文字 */
7537
7577
  let leftDescriptionText = "";
@@ -7591,13 +7631,11 @@
7591
7631
  * type ==> slider
7592
7632
  * @param formConfig
7593
7633
  */
7594
- getSectionContainerItem_slider_new(formConfig) {
7634
+ createSectionContainerItem_slider_new(formConfig) {
7595
7635
  let liElement = document.createElement("li");
7596
7636
  liElement["__formConfig__"] = formConfig;
7597
- if (formConfig.className) {
7598
- liElement.className = formConfig.className;
7599
- }
7600
- this.addElementAttributes(liElement, formConfig.attributes);
7637
+ this.setElementClassName(liElement, formConfig.className);
7638
+ this.setElementAttributes(liElement, formConfig.attributes);
7601
7639
  this.setElementProps(liElement, formConfig.props);
7602
7640
  /* 左边底部的描述的文字 */
7603
7641
  let leftDescriptionText = "";
@@ -8148,13 +8186,11 @@
8148
8186
  * type ==> input
8149
8187
  * @param formConfig
8150
8188
  */
8151
- getSectionContainerItem_input(formConfig) {
8189
+ createSectionContainerItem_input(formConfig) {
8152
8190
  let liElement = document.createElement("li");
8153
8191
  liElement["__formConfig__"] = formConfig;
8154
- if (formConfig.className) {
8155
- liElement.className = formConfig.className;
8156
- }
8157
- this.addElementAttributes(liElement, formConfig.attributes);
8192
+ this.setElementClassName(liElement, formConfig.className);
8193
+ this.setElementAttributes(liElement, formConfig.attributes);
8158
8194
  this.setElementProps(liElement, formConfig.props);
8159
8195
  let inputType = "text";
8160
8196
  if (formConfig.isPassword) {
@@ -8352,13 +8388,11 @@
8352
8388
  * type ==> textarea
8353
8389
  * @param formConfig
8354
8390
  */
8355
- getSectionContainerItem_textarea(formConfig) {
8391
+ createSectionContainerItem_textarea(formConfig) {
8356
8392
  let liElement = document.createElement("li");
8357
8393
  liElement["__formConfig__"] = formConfig;
8358
- if (formConfig.className) {
8359
- liElement.className = formConfig.className;
8360
- }
8361
- this.addElementAttributes(liElement, formConfig.attributes);
8394
+ this.setElementClassName(liElement, formConfig.className);
8395
+ this.setElementAttributes(liElement, formConfig.attributes);
8362
8396
  this.setElementProps(liElement, formConfig.props);
8363
8397
  /* 左边底部的描述的文字 */
8364
8398
  let leftDescriptionText = "";
@@ -8427,13 +8461,11 @@
8427
8461
  * type ==> select
8428
8462
  * @param formConfig
8429
8463
  */
8430
- getSectionContainerItem_select(formConfig) {
8464
+ createSectionContainerItem_select(formConfig) {
8431
8465
  let liElement = document.createElement("li");
8432
8466
  liElement["__formConfig__"] = formConfig;
8433
- if (formConfig.className) {
8434
- liElement.className = formConfig.className;
8435
- }
8436
- this.addElementAttributes(liElement, formConfig.attributes);
8467
+ this.setElementClassName(liElement, formConfig.className);
8468
+ this.setElementAttributes(liElement, formConfig.attributes);
8437
8469
  this.setElementProps(liElement, formConfig.props);
8438
8470
  /* 左边底部的描述的文字 */
8439
8471
  let leftDescriptionText = "";
@@ -8580,13 +8612,11 @@
8580
8612
  * type ==> select-multiple
8581
8613
  * @param formConfig
8582
8614
  */
8583
- getSectionContainerItem_select_multiple_new(formConfig) {
8615
+ createSectionContainerItem_select_multiple_new(formConfig) {
8584
8616
  let liElement = document.createElement("li");
8585
8617
  Reflect.set(liElement, "__formConfig__", formConfig);
8586
- if (formConfig.className) {
8587
- liElement.className = formConfig.className;
8588
- }
8589
- this.addElementAttributes(liElement, formConfig.attributes);
8618
+ this.setElementClassName(liElement, formConfig.className);
8619
+ this.setElementAttributes(liElement, formConfig.attributes);
8590
8620
  this.setElementProps(liElement, formConfig.props);
8591
8621
  /* 左边底部的描述的文字 */
8592
8622
  let leftDescriptionText = "";
@@ -9110,13 +9140,11 @@
9110
9140
  * type ==> button
9111
9141
  * @param formConfig
9112
9142
  */
9113
- getSectionContainerItem_button(formConfig) {
9143
+ createSectionContainerItem_button(formConfig) {
9114
9144
  let liElement = document.createElement("li");
9115
9145
  liElement["__formConfig__"] = formConfig;
9116
- if (formConfig.className) {
9117
- liElement.className = formConfig.className;
9118
- }
9119
- this.addElementAttributes(liElement, formConfig.attributes);
9146
+ this.setElementClassName(liElement, formConfig.className);
9147
+ this.setElementAttributes(liElement, formConfig.attributes);
9120
9148
  this.setElementProps(liElement, formConfig.props);
9121
9149
  /* 左边底部的描述的文字 */
9122
9150
  let leftDescriptionText = "";
@@ -9261,16 +9289,14 @@
9261
9289
  * 获取深层容器的元素<li>
9262
9290
  * @param formConfig
9263
9291
  */
9264
- getSectionContainerItem_deepMenu(formConfig) {
9292
+ createSectionContainerItem_deepMenu(formConfig) {
9265
9293
  let that = this;
9266
9294
  let liElement = document.createElement("li");
9267
9295
  liElement.classList.add("pops-panel-deepMenu-nav-item");
9268
9296
  liElement["__formConfig__"] = formConfig;
9269
- if (formConfig.className) {
9270
- liElement.classList.add(formConfig.className);
9271
- }
9297
+ this.setElementClassName(liElement, formConfig.className);
9272
9298
  // 设置属性
9273
- this.addElementAttributes(liElement, formConfig.attributes);
9299
+ this.setElementAttributes(liElement, formConfig.attributes);
9274
9300
  // 设置元素上的属性
9275
9301
  this.setElementProps(liElement, formConfig.props);
9276
9302
  /* 左边底部的描述的文字 */
@@ -9332,10 +9358,8 @@
9332
9358
  formHeaderDivElement.innerHTML = formItemConfig["text"];
9333
9359
  /* 加进容器内 */
9334
9360
  formContainerListElement.appendChild(formHeaderDivElement);
9335
- if (formItemConfig.className) {
9336
- popsDOMUtils.addClassName(formContainerListElement, formItemConfig.className);
9337
- }
9338
- that.addElementAttributes(formContainerListElement, formItemConfig.attributes);
9361
+ that.setElementClassName(formContainerListElement, formItemConfig.className);
9362
+ that.setElementAttributes(formContainerListElement, formItemConfig.attributes);
9339
9363
  that.setElementProps(formContainerListElement, formItemConfig.props);
9340
9364
  childForms.forEach((childFormConfig) => {
9341
9365
  that.uListContainerAddItem(childFormConfig, {
@@ -9434,7 +9458,7 @@
9434
9458
  * type ===> own
9435
9459
  * @param formConfig
9436
9460
  */
9437
- getSectionContainerItem_own(formConfig) {
9461
+ createSectionContainerItem_own(formConfig) {
9438
9462
  let liElement = document.createElement("li");
9439
9463
  liElement["__formConfig__"] = formConfig;
9440
9464
  if (formConfig.className) {
@@ -9447,35 +9471,35 @@
9447
9471
  * 获取中间容器的元素<li>
9448
9472
  * @param formConfig
9449
9473
  */
9450
- getSectionContainerItem(formConfig) {
9474
+ createSectionContainerItem(formConfig) {
9451
9475
  /** 配置项的类型 */
9452
9476
  let formType = formConfig["type"];
9453
9477
  if (formType === "switch") {
9454
- return this.getSectionContainerItem_switch(formConfig);
9478
+ return this.createSectionContainerItem_switch(formConfig);
9455
9479
  }
9456
9480
  else if (formType === "slider") {
9457
- return this.getSectionContainerItem_slider_new(formConfig);
9481
+ return this.createSectionContainerItem_slider_new(formConfig);
9458
9482
  }
9459
9483
  else if (formType === "input") {
9460
- return this.getSectionContainerItem_input(formConfig);
9484
+ return this.createSectionContainerItem_input(formConfig);
9461
9485
  }
9462
9486
  else if (formType === "textarea") {
9463
- return this.getSectionContainerItem_textarea(formConfig);
9487
+ return this.createSectionContainerItem_textarea(formConfig);
9464
9488
  }
9465
9489
  else if (formType === "select") {
9466
- return this.getSectionContainerItem_select(formConfig);
9490
+ return this.createSectionContainerItem_select(formConfig);
9467
9491
  }
9468
9492
  else if (formType === "select-multiple") {
9469
- return this.getSectionContainerItem_select_multiple_new(formConfig);
9493
+ return this.createSectionContainerItem_select_multiple_new(formConfig);
9470
9494
  }
9471
9495
  else if (formType === "button") {
9472
- return this.getSectionContainerItem_button(formConfig);
9496
+ return this.createSectionContainerItem_button(formConfig);
9473
9497
  }
9474
9498
  else if (formType === "deepMenu") {
9475
- return this.getSectionContainerItem_deepMenu(formConfig);
9499
+ return this.createSectionContainerItem_deepMenu(formConfig);
9476
9500
  }
9477
9501
  else if (formType === "own") {
9478
- return this.getSectionContainerItem_own(formConfig);
9502
+ return this.createSectionContainerItem_own(formConfig);
9479
9503
  }
9480
9504
  else {
9481
9505
  console.error("尚未实现的type类型", formConfig);
@@ -9502,10 +9526,8 @@
9502
9526
  formHeaderDivElement.innerHTML = __formConfig_forms["text"];
9503
9527
  /* 加进容器内 */
9504
9528
  formContainerListElement.appendChild(formHeaderDivElement);
9505
- if (__formConfig_forms.className) {
9506
- popsDOMUtils.addClassName(formContainerListElement, __formConfig_forms.className);
9507
- }
9508
- that.addElementAttributes(formContainerListElement, formConfig.attributes);
9529
+ that.setElementClassName(formContainerListElement, formConfig.className);
9530
+ that.setElementAttributes(formContainerListElement, formConfig.attributes);
9509
9531
  that.setElementProps(formContainerListElement, formConfig.props);
9510
9532
  childForms.forEach((childFormConfig) => {
9511
9533
  that.uListContainerAddItem(childFormConfig, {
@@ -9531,7 +9553,7 @@
9531
9553
  * @param containerOptions
9532
9554
  */
9533
9555
  uListContainerAddItem(formConfig, containerOptions) {
9534
- let itemLiElement = this.getSectionContainerItem(formConfig);
9556
+ let itemLiElement = this.createSectionContainerItem(formConfig);
9535
9557
  if (itemLiElement) {
9536
9558
  containerOptions["ulElement"].appendChild(itemLiElement);
9537
9559
  }