@haluo/biz 2.0.15 → 2.0.16

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/haluo-biz.js CHANGED
@@ -1890,13 +1890,22 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
1890
1890
  }
1891
1891
  });
1892
1892
  };
1893
- const changeBrandId = () => {
1893
+ const changeBrandId = (val) => {
1894
1894
  selectData.goodId = "";
1895
1895
  selectData.carId = "";
1896
+ if (!val) {
1897
+ goodList.value = [];
1898
+ carList.value = [];
1899
+ return;
1900
+ }
1896
1901
  getGoodList();
1897
1902
  };
1898
- const changeGoodId = () => {
1903
+ const changeGoodId = (val) => {
1899
1904
  selectData.carId = "";
1905
+ if (!val) {
1906
+ carList.value = [];
1907
+ return;
1908
+ }
1900
1909
  getCarList();
1901
1910
  };
1902
1911
  const activeTab = ref("1");
@@ -2082,6 +2091,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2082
2091
  placeholder: "\u8BF7\u9009\u62E9\u54C1\u724C",
2083
2092
  size: "large",
2084
2093
  class: "select_1",
2094
+ filterable: "",
2095
+ clearable: "",
2085
2096
  onChange: changeBrandId
2086
2097
  }, {
2087
2098
  default: withCtx(() => [
@@ -2101,6 +2112,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2101
2112
  placeholder: "\u8BF7\u9009\u62E9\u8F66\u578B",
2102
2113
  size: "large",
2103
2114
  class: "select_1",
2115
+ filterable: "",
2116
+ clearable: "",
2104
2117
  onChange: changeGoodId
2105
2118
  }, {
2106
2119
  default: withCtx(() => [
@@ -2119,7 +2132,9 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
2119
2132
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => selectData.carId = $event),
2120
2133
  placeholder: "\u8BF7\u9009\u62E9\u6B3E\u578B",
2121
2134
  size: "large",
2122
- class: "select_2"
2135
+ class: "select_2",
2136
+ filterable: "",
2137
+ clearable: ""
2123
2138
  }, {
2124
2139
  default: withCtx(() => [
2125
2140
  (openBlock(true), createElementBlock(Fragment, null, renderList(carList.value, (item, index) => {
@@ -2509,7 +2524,10 @@ const _sfc_main = {
2509
2524
  replaceSeamless: 0,
2510
2525
  seamlessCount: 0,
2511
2526
  overLine: "",
2512
- currentVideo: null
2527
+ lasteDropDom: "",
2528
+ currentVideo: null,
2529
+ targetMove: "",
2530
+ moverClasses: ["halo-img-content", "halo-video-content"]
2513
2531
  };
2514
2532
  },
2515
2533
  computed: {
@@ -2796,8 +2814,11 @@ const _sfc_main = {
2796
2814
  this.parseGood(node);
2797
2815
  } else if (node.classList.contains("halo-img-content")) {
2798
2816
  const img = node.querySelector("img");
2799
- img.setAttribute("tabindex", -1);
2817
+ node.setAttribute("tabindex", -1);
2818
+ node.setAttribute("draggable", true);
2819
+ node.setAttribute("contenteditable", false);
2800
2820
  img.setAttribute("draggable", false);
2821
+ this.setDragMove(node);
2801
2822
  const desc = img.dataset.desc;
2802
2823
  img.style.margin = "0";
2803
2824
  const seamlessFlag = ((_a = JSON.parse(img.getAttribute("data"))) == null ? void 0 : _a.seamlessFlag) || "0";
@@ -2859,6 +2880,9 @@ const _sfc_main = {
2859
2880
  const replaceBtn = me2.insertVideoBtns(me2.editor, video);
2860
2881
  node.appendChild(delBtn);
2861
2882
  node.appendChild(replaceBtn);
2883
+ node.setAttribute("tabindex", -1);
2884
+ node.setAttribute("draggable", true);
2885
+ me2.setDragMove(node);
2862
2886
  },
2863
2887
  async parseArticle(node) {
2864
2888
  const data = JSON.parse(node.dataset.article);
@@ -3240,6 +3264,57 @@ const _sfc_main = {
3240
3264
  this.styleStatus.size = parseInt(this.fontInfo.size) === 100 ? 17 : this.fontInfo.size;
3241
3265
  this.styleStatus.color = this.fontInfo.color;
3242
3266
  });
3267
+ editorDom.ondragover = function(e) {
3268
+ if (me2.targetMove && me2.moverClasses.includes(me2.targetMove.className)) {
3269
+ if (e.target.offsetParent === editorDom) {
3270
+ me2.overLine = e.target.offsetHeight + e.target.offsetTop + "px";
3271
+ me2.lasteDropDom = e.target;
3272
+ }
3273
+ e.preventDefault();
3274
+ }
3275
+ };
3276
+ editorDom.ondrop = function(e) {
3277
+ if (me2.targetMove && me2.moverClasses.includes(me2.targetMove.className)) {
3278
+ const target = me2.lasteDropDom || e.target;
3279
+ if (target.parentNode !== editorDom) {
3280
+ return;
3281
+ }
3282
+ if (target === editorDom) {
3283
+ target.appendChild(me2.targetMove);
3284
+ } else {
3285
+ target.after(me2.targetMove);
3286
+ }
3287
+ me2.targetMove = "";
3288
+ me2.lasteDropDom = "";
3289
+ e.preventDefault();
3290
+ }
3291
+ me2.overLine = "";
3292
+ };
3293
+ me2.editor.addEventListener("dragover", (event) => {
3294
+ event.preventDefault();
3295
+ });
3296
+ me2.editor.addEventListener("drop", (event) => {
3297
+ const clipboardData = event.dataTransfer || {};
3298
+ const files = clipboardData.files;
3299
+ if (files && files.length) {
3300
+ files.forEach((file) => {
3301
+ if (file.type.includes("image")) {
3302
+ me2.$emit("insertImgs", [file], "img", (type, src) => {
3303
+ me2.visibleImg = false;
3304
+ me2.imgUploadHandler(type, src);
3305
+ });
3306
+ }
3307
+ if (file.type.includes("video")) {
3308
+ me2.uploadVideo({
3309
+ target: {
3310
+ files: [file]
3311
+ }
3312
+ });
3313
+ }
3314
+ });
3315
+ event.preventDefault();
3316
+ }
3317
+ });
3243
3318
  me2.editor.addEventListener("willPaste", function(type, handler) {
3244
3319
  function validateDom() {
3245
3320
  const fragment = type && type.fragment || {};
@@ -3357,8 +3432,10 @@ const _sfc_main = {
3357
3432
  var p = this.createElement("div", {
3358
3433
  "class": "halo-img-content",
3359
3434
  "contenteditable": "false",
3360
- "draggable": "false"
3435
+ "draggable": "true",
3436
+ "tabindex": "-1"
3361
3437
  }, [...childList]);
3438
+ me2.setDragMove(p);
3362
3439
  this.insertElement(p, range);
3363
3440
  if (isSeameless) {
3364
3441
  me2.removeDefault(p, "nextElementSibling");
@@ -3417,31 +3494,7 @@ const _sfc_main = {
3417
3494
  p.onclick = function() {
3418
3495
  me2.setToast("\u4E0D\u652F\u6301\u64AD\u653E");
3419
3496
  };
3420
- let targetMove = "";
3421
- p.ondragstart = function(e) {
3422
- if (!(e.target.className.indexOf("halo-video-content") < 0)) {
3423
- e.dataTransfer.setData("text/html", e.target);
3424
- e.dataTransfer.effectAllowed = "move";
3425
- e.dataTransfer.dropEffect = "move";
3426
- targetMove = e.target;
3427
- }
3428
- };
3429
- editorDom.ondragover = function(e) {
3430
- if (targetMove && !(targetMove.className.indexOf("halo-video-content") < 0)) {
3431
- e.preventDefault();
3432
- }
3433
- };
3434
- editorDom.ondrop = function(e) {
3435
- if (targetMove && !(targetMove.className.indexOf("halo-video-content") < 0)) {
3436
- if (e.target === editorDom) {
3437
- e.target.appendChild(targetMove);
3438
- } else {
3439
- e.target.after(targetMove);
3440
- }
3441
- targetMove = "";
3442
- e.preventDefault();
3443
- }
3444
- };
3497
+ me2.setDragMove(p);
3445
3498
  this.insertElement(p);
3446
3499
  setTimeout(() => {
3447
3500
  document.documentElement.scrollTop = scrollTop;
@@ -3465,6 +3518,18 @@ const _sfc_main = {
3465
3518
  };
3466
3519
  me2.sticky();
3467
3520
  },
3521
+ setDragMove(p) {
3522
+ const className = p.getAttribute("class");
3523
+ const me2 = this;
3524
+ p.ondragstart = function(e) {
3525
+ if (!(e.target.className.indexOf(className) < 0)) {
3526
+ e.dataTransfer.setData("text/html", e.target);
3527
+ e.dataTransfer.effectAllowed = "move";
3528
+ e.dataTransfer.dropEffect = "move";
3529
+ me2.targetMove = e.target;
3530
+ }
3531
+ };
3532
+ },
3468
3533
  removeDefault(next, key) {
3469
3534
  const me2 = this;
3470
3535
  const cur = next[key];
@@ -3899,9 +3964,14 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
3899
3964
  withDirectives(createElementVNode("div", {
3900
3965
  style: normalizeStyle({ textAlign: $options.align }),
3901
3966
  class: "placeholder"
3902
- }, "\u8BF7\u8F93\u5165\u6B63\u6587", 4), [
3967
+ }, "\u8BF7\u8F93\u5165\u6B63\u6587 ", 4), [
3903
3968
  [vShow, !$options.isInputing && !$data.titleCount && !$data.hasArticleCard]
3904
3969
  ]),
3970
+ $data.overLine ? (openBlock(), createElementBlock("div", {
3971
+ key: 0,
3972
+ class: "overline",
3973
+ style: normalizeStyle({ top: $data.overLine })
3974
+ }, null, 4)) : createCommentVNode("", true),
3905
3975
  createElementVNode("div", {
3906
3976
  id: "editor-content",
3907
3977
  style: normalizeStyle({ cursor: $data.cursorStyle }),
@@ -1892,13 +1892,22 @@
1892
1892
  }
1893
1893
  });
1894
1894
  };
1895
- const changeBrandId = () => {
1895
+ const changeBrandId = (val) => {
1896
1896
  selectData.goodId = "";
1897
1897
  selectData.carId = "";
1898
+ if (!val) {
1899
+ goodList.value = [];
1900
+ carList.value = [];
1901
+ return;
1902
+ }
1898
1903
  getGoodList();
1899
1904
  };
1900
- const changeGoodId = () => {
1905
+ const changeGoodId = (val) => {
1901
1906
  selectData.carId = "";
1907
+ if (!val) {
1908
+ carList.value = [];
1909
+ return;
1910
+ }
1902
1911
  getCarList();
1903
1912
  };
1904
1913
  const activeTab = vue.ref("1");
@@ -2084,6 +2093,8 @@
2084
2093
  placeholder: "\u8BF7\u9009\u62E9\u54C1\u724C",
2085
2094
  size: "large",
2086
2095
  class: "select_1",
2096
+ filterable: "",
2097
+ clearable: "",
2087
2098
  onChange: changeBrandId
2088
2099
  }, {
2089
2100
  default: vue.withCtx(() => [
@@ -2103,6 +2114,8 @@
2103
2114
  placeholder: "\u8BF7\u9009\u62E9\u8F66\u578B",
2104
2115
  size: "large",
2105
2116
  class: "select_1",
2117
+ filterable: "",
2118
+ clearable: "",
2106
2119
  onChange: changeGoodId
2107
2120
  }, {
2108
2121
  default: vue.withCtx(() => [
@@ -2121,7 +2134,9 @@
2121
2134
  "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => selectData.carId = $event),
2122
2135
  placeholder: "\u8BF7\u9009\u62E9\u6B3E\u578B",
2123
2136
  size: "large",
2124
- class: "select_2"
2137
+ class: "select_2",
2138
+ filterable: "",
2139
+ clearable: ""
2125
2140
  }, {
2126
2141
  default: vue.withCtx(() => [
2127
2142
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(carList.value, (item, index) => {
@@ -2511,7 +2526,10 @@
2511
2526
  replaceSeamless: 0,
2512
2527
  seamlessCount: 0,
2513
2528
  overLine: "",
2514
- currentVideo: null
2529
+ lasteDropDom: "",
2530
+ currentVideo: null,
2531
+ targetMove: "",
2532
+ moverClasses: ["halo-img-content", "halo-video-content"]
2515
2533
  };
2516
2534
  },
2517
2535
  computed: {
@@ -2798,8 +2816,11 @@
2798
2816
  this.parseGood(node);
2799
2817
  } else if (node.classList.contains("halo-img-content")) {
2800
2818
  const img = node.querySelector("img");
2801
- img.setAttribute("tabindex", -1);
2819
+ node.setAttribute("tabindex", -1);
2820
+ node.setAttribute("draggable", true);
2821
+ node.setAttribute("contenteditable", false);
2802
2822
  img.setAttribute("draggable", false);
2823
+ this.setDragMove(node);
2803
2824
  const desc = img.dataset.desc;
2804
2825
  img.style.margin = "0";
2805
2826
  const seamlessFlag = ((_a = JSON.parse(img.getAttribute("data"))) == null ? void 0 : _a.seamlessFlag) || "0";
@@ -2861,6 +2882,9 @@
2861
2882
  const replaceBtn = me2.insertVideoBtns(me2.editor, video);
2862
2883
  node.appendChild(delBtn);
2863
2884
  node.appendChild(replaceBtn);
2885
+ node.setAttribute("tabindex", -1);
2886
+ node.setAttribute("draggable", true);
2887
+ me2.setDragMove(node);
2864
2888
  },
2865
2889
  async parseArticle(node) {
2866
2890
  const data = JSON.parse(node.dataset.article);
@@ -3242,6 +3266,57 @@
3242
3266
  this.styleStatus.size = parseInt(this.fontInfo.size) === 100 ? 17 : this.fontInfo.size;
3243
3267
  this.styleStatus.color = this.fontInfo.color;
3244
3268
  });
3269
+ editorDom.ondragover = function(e) {
3270
+ if (me2.targetMove && me2.moverClasses.includes(me2.targetMove.className)) {
3271
+ if (e.target.offsetParent === editorDom) {
3272
+ me2.overLine = e.target.offsetHeight + e.target.offsetTop + "px";
3273
+ me2.lasteDropDom = e.target;
3274
+ }
3275
+ e.preventDefault();
3276
+ }
3277
+ };
3278
+ editorDom.ondrop = function(e) {
3279
+ if (me2.targetMove && me2.moverClasses.includes(me2.targetMove.className)) {
3280
+ const target = me2.lasteDropDom || e.target;
3281
+ if (target.parentNode !== editorDom) {
3282
+ return;
3283
+ }
3284
+ if (target === editorDom) {
3285
+ target.appendChild(me2.targetMove);
3286
+ } else {
3287
+ target.after(me2.targetMove);
3288
+ }
3289
+ me2.targetMove = "";
3290
+ me2.lasteDropDom = "";
3291
+ e.preventDefault();
3292
+ }
3293
+ me2.overLine = "";
3294
+ };
3295
+ me2.editor.addEventListener("dragover", (event) => {
3296
+ event.preventDefault();
3297
+ });
3298
+ me2.editor.addEventListener("drop", (event) => {
3299
+ const clipboardData = event.dataTransfer || {};
3300
+ const files = clipboardData.files;
3301
+ if (files && files.length) {
3302
+ files.forEach((file) => {
3303
+ if (file.type.includes("image")) {
3304
+ me2.$emit("insertImgs", [file], "img", (type, src) => {
3305
+ me2.visibleImg = false;
3306
+ me2.imgUploadHandler(type, src);
3307
+ });
3308
+ }
3309
+ if (file.type.includes("video")) {
3310
+ me2.uploadVideo({
3311
+ target: {
3312
+ files: [file]
3313
+ }
3314
+ });
3315
+ }
3316
+ });
3317
+ event.preventDefault();
3318
+ }
3319
+ });
3245
3320
  me2.editor.addEventListener("willPaste", function(type, handler) {
3246
3321
  function validateDom() {
3247
3322
  const fragment = type && type.fragment || {};
@@ -3359,8 +3434,10 @@
3359
3434
  var p = this.createElement("div", {
3360
3435
  "class": "halo-img-content",
3361
3436
  "contenteditable": "false",
3362
- "draggable": "false"
3437
+ "draggable": "true",
3438
+ "tabindex": "-1"
3363
3439
  }, [...childList]);
3440
+ me2.setDragMove(p);
3364
3441
  this.insertElement(p, range);
3365
3442
  if (isSeameless) {
3366
3443
  me2.removeDefault(p, "nextElementSibling");
@@ -3419,31 +3496,7 @@
3419
3496
  p.onclick = function() {
3420
3497
  me2.setToast("\u4E0D\u652F\u6301\u64AD\u653E");
3421
3498
  };
3422
- let targetMove = "";
3423
- p.ondragstart = function(e) {
3424
- if (!(e.target.className.indexOf("halo-video-content") < 0)) {
3425
- e.dataTransfer.setData("text/html", e.target);
3426
- e.dataTransfer.effectAllowed = "move";
3427
- e.dataTransfer.dropEffect = "move";
3428
- targetMove = e.target;
3429
- }
3430
- };
3431
- editorDom.ondragover = function(e) {
3432
- if (targetMove && !(targetMove.className.indexOf("halo-video-content") < 0)) {
3433
- e.preventDefault();
3434
- }
3435
- };
3436
- editorDom.ondrop = function(e) {
3437
- if (targetMove && !(targetMove.className.indexOf("halo-video-content") < 0)) {
3438
- if (e.target === editorDom) {
3439
- e.target.appendChild(targetMove);
3440
- } else {
3441
- e.target.after(targetMove);
3442
- }
3443
- targetMove = "";
3444
- e.preventDefault();
3445
- }
3446
- };
3499
+ me2.setDragMove(p);
3447
3500
  this.insertElement(p);
3448
3501
  setTimeout(() => {
3449
3502
  document.documentElement.scrollTop = scrollTop;
@@ -3467,6 +3520,18 @@
3467
3520
  };
3468
3521
  me2.sticky();
3469
3522
  },
3523
+ setDragMove(p) {
3524
+ const className = p.getAttribute("class");
3525
+ const me2 = this;
3526
+ p.ondragstart = function(e) {
3527
+ if (!(e.target.className.indexOf(className) < 0)) {
3528
+ e.dataTransfer.setData("text/html", e.target);
3529
+ e.dataTransfer.effectAllowed = "move";
3530
+ e.dataTransfer.dropEffect = "move";
3531
+ me2.targetMove = e.target;
3532
+ }
3533
+ };
3534
+ },
3470
3535
  removeDefault(next, key) {
3471
3536
  const me2 = this;
3472
3537
  const cur = next[key];
@@ -3901,9 +3966,14 @@
3901
3966
  vue.withDirectives(vue.createElementVNode("div", {
3902
3967
  style: vue.normalizeStyle({ textAlign: $options.align }),
3903
3968
  class: "placeholder"
3904
- }, "\u8BF7\u8F93\u5165\u6B63\u6587", 4), [
3969
+ }, "\u8BF7\u8F93\u5165\u6B63\u6587 ", 4), [
3905
3970
  [vue.vShow, !$options.isInputing && !$data.titleCount && !$data.hasArticleCard]
3906
3971
  ]),
3972
+ $data.overLine ? (vue.openBlock(), vue.createElementBlock("div", {
3973
+ key: 0,
3974
+ class: "overline",
3975
+ style: vue.normalizeStyle({ top: $data.overLine })
3976
+ }, null, 4)) : vue.createCommentVNode("", true),
3907
3977
  vue.createElementVNode("div", {
3908
3978
  id: "editor-content",
3909
3979
  style: vue.normalizeStyle({ cursor: $data.cursorStyle }),
package/dist/style.css CHANGED
@@ -806,6 +806,7 @@
806
806
  position: relative;
807
807
  text-align: center;
808
808
  left: 250px;
809
+ outline: none;
809
810
  }
810
811
  .editor #editor-content .halo-img-content .img-loading,
811
812
  .editor #editor-content .halo-img-content .img-fail {
@@ -936,6 +937,7 @@
936
937
  margin: 5px;
937
938
  padding-right: 5px;
938
939
  position: relative;
940
+ outline: none;
939
941
  }
940
942
  .editor #editor-content .halo-video-content .video-delete {
941
943
  width: 18px;
@@ -1063,6 +1065,14 @@
1063
1065
  height: 100vh;
1064
1066
  background-color: rgba(0, 0, 0, 0.3);
1065
1067
  }
1068
+ .editor .overline {
1069
+ position: absolute;
1070
+ z-index: 50;
1071
+ pointer-events: none;
1072
+ background-color: #1a74ff;
1073
+ width: 100%;
1074
+ height: 1px;
1075
+ }
1066
1076
  .video-progress {
1067
1077
  width: 440px;
1068
1078
  height: 220px;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@haluo/biz",
3
3
  "description": "rich text",
4
- "version": "2.0.15",
4
+ "version": "2.0.16",
5
5
  "type": "module",
6
6
  "module": "./dist/haluo-biz.js",
7
7
  "main": "./dist/haluo-biz.umd.cjs",