@g1cloud/page-builder-editor 1.0.0-alpha.97 → 1.0.0-alpha.99

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.
@@ -216,23 +216,24 @@
216
216
  flex-direction: row;
217
217
  align-items: center;
218
218
  }
219
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .color label {
220
+ display: inline-block;
221
+ width: 80px;
222
+ }
219
223
  .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .color .bs-text-input {
220
- flex-grow: 1;
224
+ flex-grow: 0;
225
+ width: 104px;
221
226
  }
222
- .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image {
223
- flex: 1;
224
- padding-left: 8px;
227
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image label {
228
+ display: inline-block;
229
+ width: 80px;
225
230
  }
226
- .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image button {
227
- color: #fff;
228
- border: none;
229
- padding: 4px 12px;
230
- cursor: pointer;
231
- line-height: 1;
232
- width: 120px;
233
- height: 26px;
234
- background-color: var(--primary);
235
- border-radius: 2px;
231
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image .bs-button.select-button {
232
+ width: 132px;
233
+ }
234
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image .url {
235
+ word-break: break-word !important;
236
+ word-wrap: break-word !important;
236
237
  }
237
238
  .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-border .color {
238
239
  width: 50%;
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, withDirectives, unref, createVNode } from "vue";
2
2
  import { vT, BSTextInput } from "@g1cloud/bluesea";
3
- import { P as PbColorPicker } from "./index-CzHVyJKJ.js";
3
+ import { P as PbColorPicker } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-color" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _hoisted_3 = { class: "bs-layout-horizontal flex-align-center color" };
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, withDirectives, unref, createVNode } from "vue";
2
2
  import { vT, BSTextInput } from "@g1cloud/bluesea";
3
- import { t as toCssLength } from "./index-CzHVyJKJ.js";
3
+ import { t as toCssLength } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-number flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, withDirectives, unref, createTextVNode, defineAsyncComponent } from "vue";
2
2
  import { useModal, vT } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-CzHVyJKJ.js";
3
+ import { u as usePageBuilderEditor } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-html flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,5 +1,5 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, withDirectives, unref, createTextVNode, toDisplayString, createVNode, createCommentVNode, Fragment } from "vue";
2
- import { u as usePageBuilderEditor, C as ChangePropertyCommand } from "./index-CzHVyJKJ.js";
2
+ import { u as usePageBuilderEditor, C as ChangePropertyCommand } from "./index-DWYmZB2S.js";
3
3
  import { useModal, vT, BSButton, BSMultiLangTextInput, showNotification } from "@g1cloud/bluesea";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image" };
5
5
  const _hoisted_2 = { class: "title" };
@@ -21,9 +21,10 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
21
21
  const part = pageBuilder.context.getSelectedParts();
22
22
  const modal = useModal();
23
23
  const selectMedia = () => {
24
+ var _a;
24
25
  const imageProvider = pageBuilder.getProvider("imageProvider");
25
26
  if (imageProvider) {
26
- imageProvider({ modal, mediaTypes: ["Image"] }, (media2) => {
27
+ imageProvider({ modal, mediaTypes: ["Image"], selectedMediaUrls: ((_a = media.value) == null ? void 0 : _a.fileUrl) ? [media.value.fileUrl] : [] }, (media2) => {
27
28
  updateProperty({ [props.property.propertyName]: media2 });
28
29
  });
29
30
  }
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, withDirectives, unref, createBlock } from "vue";
2
2
  import { vT, BSMultiLangTextArea, BSTextArea } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-CzHVyJKJ.js";
3
+ import { u as usePageBuilderEditor } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-multiline-text" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createElementBlock, createElementVNode, withDirectives, unref, createBlock } from "vue";
2
2
  import { vT, BSMultiLangTextInput, BSTextInput } from "@g1cloud/bluesea";
3
- import { u as usePageBuilderEditor } from "./index-CzHVyJKJ.js";
3
+ import { u as usePageBuilderEditor } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-text flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, openBlock, createElementBlock, createElementVNode, withDirectives, unref } from "vue";
2
2
  import { useModal, vT } from "@g1cloud/bluesea";
3
- import { s as selectYoutubeVideo } from "./index-CzHVyJKJ.js";
3
+ import { s as selectYoutubeVideo } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "property-editor property-editor-image flex-align-center" };
5
5
  const _hoisted_2 = { class: "title" };
6
6
  const _sfc_main = /* @__PURE__ */ defineComponent({
@@ -1,6 +1,6 @@
1
1
  import { defineComponent, computed, openBlock, createBlock, unref, withCtx, createElementVNode, createElementBlock, Fragment, renderList, toDisplayString } from "vue";
2
2
  import { useModalHandle, BSModalFrame } from "@g1cloud/bluesea";
3
- import { w as widgetPartDefinitions } from "./index-CzHVyJKJ.js";
3
+ import { w as widgetPartDefinitions } from "./index-DWYmZB2S.js";
4
4
  const _hoisted_1 = { class: "bs-layout-vertical pb-part-add-modal" };
5
5
  const _hoisted_2 = { class: "bs-layout-horizontal-wrap ml-16 mb-8 gap-8" };
6
6
  const _hoisted_3 = ["onClick", "textContent"];
@@ -6798,7 +6798,9 @@ class Part {
6798
6798
  if (!inlineStyle) return styleObject;
6799
6799
  inlineStyle.split(";").forEach((rule) => {
6800
6800
  if (rule.trim()) {
6801
- const [property, value] = rule.split(":").map((part) => part.trim());
6801
+ const index = rule.indexOf(":");
6802
+ const property = rule.slice(0, index).trim();
6803
+ const value = rule.slice(index + 1).trim();
6802
6804
  if (property && value) {
6803
6805
  const camelCasedProperty = property.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
6804
6806
  styleObject[camelCasedProperty] = value;
@@ -8592,16 +8594,16 @@ class PartManager {
8592
8594
  const defaultPartPropertyEditors = () => {
8593
8595
  return {
8594
8596
  "readonly-text": () => defineAsyncComponent(() => import("./PbPropertyEditorReadonlyText-BJ5qx69O.js")),
8595
- "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-B3BdY0s1.js")),
8597
+ "text": () => defineAsyncComponent(() => import("./PbPropertyEditorText-CXzFycVD.js")),
8596
8598
  "number": () => defineAsyncComponent(() => import("./PbPropertyEditorNumber-B76ArSb5.js")),
8597
8599
  "boolean": () => defineAsyncComponent(() => import("./PbPropertyEditorBoolean-c5CNiTpt.js")),
8598
- "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-DAsGTyGC.js")),
8600
+ "multiline-text": () => defineAsyncComponent(() => import("./PbPropertyEditorMultilineText-DKF6Ogyq.js")),
8599
8601
  "select": () => defineAsyncComponent(() => import("./PbPropertyEditorSelect-B5sfulvx.js")),
8600
- "css-length": () => defineAsyncComponent(() => import("./PbPropertyEditorCssLength-nk7YdWvQ.js")),
8601
- "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-CaSd-97a.js")),
8602
- "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-YVF4DEZ7.js")),
8603
- "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-CclJiLCC.js")),
8604
- "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-Qn817R8S.js"))
8602
+ "css-length": () => defineAsyncComponent(() => import("./PbPropertyEditorCssLength-CqQObPGf.js")),
8603
+ "color": () => defineAsyncComponent(() => import("./PbPropertyEditorColor-BqVNRgdH.js")),
8604
+ "image": () => defineAsyncComponent(() => import("./PbPropertyEditorImage-BMr4-UFz.js")),
8605
+ "html": () => defineAsyncComponent(() => import("./PbPropertyEditorHtml-Cicp7p_s.js")),
8606
+ "youtube": () => defineAsyncComponent(() => import("./PbPropertyEditorYoutube-CgCsG9wD.js"))
8605
8607
  };
8606
8608
  };
8607
8609
  const getPropertyValueOfParts = (parts, propertyName) => {
@@ -11898,10 +11900,10 @@ const _sfc_main$i = defineComponent({
11898
11900
  }
11899
11901
  );
11900
11902
  watch(
11901
- () => color.value,
11902
- () => setTimeout(() => {
11903
+ () => appliedColor.value,
11904
+ () => {
11903
11905
  if (appliedColor.value) emit("change-color", appliedColor.value);
11904
- }, 100),
11906
+ },
11905
11907
  { deep: true }
11906
11908
  );
11907
11909
  watch(
@@ -11965,9 +11967,12 @@ const PbColorPicker = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_
11965
11967
  const _hoisted_1$g = { class: "group-editor group-editor-background" };
11966
11968
  const _hoisted_2$8 = { class: "flex-align-center" };
11967
11969
  const _hoisted_3$5 = { class: "title" };
11968
- const _hoisted_4$4 = { class: "bs-layout-horizontal" };
11969
- const _hoisted_5$4 = { class: "color" };
11970
- const _hoisted_6$4 = { class: "image" };
11970
+ const _hoisted_4$4 = { class: "color" };
11971
+ const _hoisted_5$4 = { class: "image mt-4" };
11972
+ const _hoisted_6$4 = {
11973
+ key: 0,
11974
+ class: "url mt-8"
11975
+ };
11971
11976
  const _sfc_main$h = /* @__PURE__ */ defineComponent({
11972
11977
  __name: "PbPropertyGroupEditorBackground",
11973
11978
  props: {
@@ -11978,28 +11983,31 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
11978
11983
  const props = __props;
11979
11984
  const pageBuilder = usePageBuilderEditor();
11980
11985
  const modal = useModal();
11981
- const color = computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundColor"));
11982
- const emptyColor = () => {
11983
- };
11984
11986
  const updatePropertyValue = (properties) => {
11985
11987
  pageBuilder.commandRegistry.executeCommand(
11986
11988
  ChangePropertyCommand.COMMAND_ID,
11987
11989
  { properties, targetParts: props.selectedParts }
11988
11990
  );
11989
11991
  };
11992
+ const color = computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundColor"));
11993
+ const emptyColor = () => {
11994
+ };
11990
11995
  const saveOriginalColor = () => {
11991
11996
  };
11992
11997
  const updateColor = (value) => updatePropertyValue({ backgroundColor: value });
11998
+ const deleteColor = (value) => updatePropertyValue({ backgroundColor: "" });
11999
+ const image = computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundImage"));
11993
12000
  const selectImage = () => {
11994
12001
  const imageProvider = pageBuilder.getProvider("imageProvider");
11995
12002
  if (imageProvider) {
11996
- imageProvider({ modal, mediaTypes: ["Image"] }, (media) => {
12003
+ imageProvider({ modal, mediaTypes: ["Image"], selectedMediaUrls: image.value ? [image.value] : [] }, (media) => {
11997
12004
  if (media.mediaType === "Image" && media.fileUrl) {
11998
12005
  updatePropertyValue({ backgroundImage: media.fileUrl });
11999
12006
  }
12000
12007
  });
12001
12008
  }
12002
12009
  };
12010
+ const deleteImage = (value) => updatePropertyValue({ backgroundImage: "" });
12003
12011
  return (_ctx, _cache) => {
12004
12012
  return openBlock(), createElementBlock("div", _hoisted_1$g, [
12005
12013
  createElementVNode("div", _hoisted_2$8, [
@@ -12008,27 +12016,63 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
12008
12016
  [unref(vT), { key: "pb.prop.background" }]
12009
12017
  ])
12010
12018
  ]),
12011
- createElementVNode("div", _hoisted_4$4, [
12012
- createElementVNode("div", _hoisted_5$4, [
12019
+ createElementVNode("div", null, [
12020
+ createElementVNode("div", _hoisted_4$4, [
12021
+ withDirectives(createElementVNode("label", null, null, 512), [
12022
+ [unref(vT), { key: "pb.prop.color" }]
12023
+ ]),
12013
12024
  createVNode(PbColorPicker, {
12014
12025
  value: color.value,
12015
12026
  "hide-delete": "",
12016
12027
  onEmpty: _cache[0] || (_cache[0] = ($event) => emptyColor()),
12017
- onHide: _cache[1] || (_cache[1] = ($event) => updateColor($event)),
12018
12028
  onShow: saveOriginalColor,
12019
- onChangeColor: _cache[2] || (_cache[2] = ($event) => updateColor($event))
12029
+ onChangeColor: _cache[1] || (_cache[1] = ($event) => updateColor($event))
12020
12030
  }, null, 8, ["value"]),
12021
12031
  createVNode(unref(BSTextInput), {
12022
12032
  "model-value": color.value,
12023
12033
  class: "ml-4",
12024
12034
  width: "",
12025
12035
  "onUpdate:modelValue": updateColor
12026
- }, null, 8, ["model-value"])
12036
+ }, null, 8, ["model-value"]),
12037
+ color.value ? withDirectives((openBlock(), createBlock$1(unref(BSButton), {
12038
+ key: 0,
12039
+ class: "ml-4 px-4",
12040
+ "left-icon": "close",
12041
+ onClick: deleteColor
12042
+ }, null, 512)), [
12043
+ [
12044
+ unref(vT),
12045
+ { key: "pb.menu.delete" },
12046
+ void 0,
12047
+ { title: true }
12048
+ ]
12049
+ ]) : createCommentVNode("", true)
12027
12050
  ]),
12028
- createElementVNode("div", _hoisted_6$4, [
12029
- withDirectives(createElementVNode("button", { onClick: selectImage }, null, 512), [
12030
- [unref(vT), { key: "pb.prop.selectImage" }]
12031
- ])
12051
+ createElementVNode("div", _hoisted_5$4, [
12052
+ withDirectives(createElementVNode("label", null, null, 512), [
12053
+ [unref(vT), { key: "pb.prop.image" }]
12054
+ ]),
12055
+ createVNode(unref(BSButton), {
12056
+ caption: { key: "pb.prop.selectImage" },
12057
+ "button-color": "blue",
12058
+ class: "select-button",
12059
+ onClick: selectImage
12060
+ }),
12061
+ image.value ? (openBlock(), createElementBlock("div", _hoisted_6$4, [
12062
+ createTextVNode(toDisplayString(image.value) + " ", 1),
12063
+ withDirectives(createVNode(unref(BSButton), {
12064
+ class: "ml-4 px-4",
12065
+ "left-icon": "close",
12066
+ onClick: deleteImage
12067
+ }, null, 512), [
12068
+ [
12069
+ unref(vT),
12070
+ { key: "pb.menu.delete" },
12071
+ void 0,
12072
+ { title: true }
12073
+ ]
12074
+ ])
12075
+ ])) : createCommentVNode("", true)
12032
12076
  ])
12033
12077
  ])
12034
12078
  ])
@@ -12807,9 +12851,10 @@ const _sfc_main$d = /* @__PURE__ */ defineComponent({
12807
12851
  const part = pageBuilder.context.getSelectedParts();
12808
12852
  const modal = useModal();
12809
12853
  const selectMedia = () => {
12854
+ var _a;
12810
12855
  const imageProvider = pageBuilder.getProvider("imageProvider");
12811
12856
  if (imageProvider) {
12812
- imageProvider({ modal }, (media2) => {
12857
+ imageProvider({ modal, selectedMediaUrls: ((_a = media.value) == null ? void 0 : _a.fileUrl) ? [media.value.fileUrl] : [] }, (media2) => {
12813
12858
  if (media2.mediaType === "Image") {
12814
12859
  updateProperty({ media: media2, thumbnail: "" });
12815
12860
  } else if (media2.mediaType === "Video") {
@@ -13342,7 +13387,7 @@ __publicField(_OpenAddWidgetModalCommand, "COMMAND_ID", "OpenAddWidgetModal");
13342
13387
  let OpenAddWidgetModalCommand = _OpenAddWidgetModalCommand;
13343
13388
  const openWidgetAddModal = (modal, args, callback) => {
13344
13389
  modal.openModal({
13345
- component: defineAsyncComponent(() => import("./PbWidgetAddModal-D4uBFMPN.js")),
13390
+ component: defineAsyncComponent(() => import("./PbWidgetAddModal-CKLzgZaN.js")),
13346
13391
  style: {
13347
13392
  width: "80%",
13348
13393
  height: "80%",
@@ -15779,6 +15824,10 @@ const enTexts = [
15779
15824
  key: "pb.menu.addWidgetInside",
15780
15825
  text: "Add Widget Inside"
15781
15826
  },
15827
+ {
15828
+ key: "pb.menu.delete",
15829
+ text: "Delete"
15830
+ },
15782
15831
  {
15783
15832
  key: "pb.menu.deletePart",
15784
15833
  text: "Delete"
@@ -15835,6 +15884,10 @@ const enTexts = [
15835
15884
  key: "pb.prop.background",
15836
15885
  text: "Background"
15837
15886
  },
15887
+ {
15888
+ key: "pb.prop.color",
15889
+ text: "Color"
15890
+ },
15838
15891
  {
15839
15892
  key: "pb.prop.selectImage",
15840
15893
  text: "Select Image"
@@ -16117,6 +16170,10 @@ const jaTexts = [
16117
16170
  key: "pb.menu.addWidgetInside",
16118
16171
  text: "内側にウィジェットを追加"
16119
16172
  },
16173
+ {
16174
+ key: "pb.menu.delete",
16175
+ text: "削除"
16176
+ },
16120
16177
  {
16121
16178
  key: "pb.menu.deletePart",
16122
16179
  text: "削除"
@@ -16173,6 +16230,10 @@ const jaTexts = [
16173
16230
  key: "pb.prop.background",
16174
16231
  text: "背景"
16175
16232
  },
16233
+ {
16234
+ key: "pb.prop.color",
16235
+ text: "色"
16236
+ },
16176
16237
  {
16177
16238
  key: "pb.prop.selectImage",
16178
16239
  text: "画像を選択"
@@ -16455,6 +16516,10 @@ const koTexts = [
16455
16516
  key: "pb.menu.addWidgetInside",
16456
16517
  text: "안쪽에 위젯 추가"
16457
16518
  },
16519
+ {
16520
+ key: "pb.menu.delete",
16521
+ text: "삭제"
16522
+ },
16458
16523
  {
16459
16524
  key: "pb.menu.deletePart",
16460
16525
  text: "삭제"
@@ -16511,6 +16576,10 @@ const koTexts = [
16511
16576
  key: "pb.prop.background",
16512
16577
  text: "배경"
16513
16578
  },
16579
+ {
16580
+ key: "pb.prop.color",
16581
+ text: "색상"
16582
+ },
16514
16583
  {
16515
16584
  key: "pb.prop.selectImage",
16516
16585
  text: "이미지 선택"
@@ -16793,6 +16862,10 @@ const zhTexts = [
16793
16862
  key: "pb.menu.addWidgetInside",
16794
16863
  text: "在内部添加小部件"
16795
16864
  },
16865
+ {
16866
+ key: "pb.menu.delete",
16867
+ text: "删除"
16868
+ },
16796
16869
  {
16797
16870
  key: "pb.menu.deletePart",
16798
16871
  text: "删除"
@@ -16849,6 +16922,10 @@ const zhTexts = [
16849
16922
  key: "pb.prop.background",
16850
16923
  text: "背景"
16851
16924
  },
16925
+ {
16926
+ key: "pb.prop.color",
16927
+ text: "色"
16928
+ },
16852
16929
  {
16853
16930
  key: "pb.prop.selectImage",
16854
16931
  text: "选择图片"
@@ -17131,6 +17208,10 @@ const frTexts = [
17131
17208
  key: "pb.menu.addWidgetInside",
17132
17209
  text: "Ajouter un widget à l'intérieur"
17133
17210
  },
17211
+ {
17212
+ key: "pb.menu.delete",
17213
+ text: "Supprimer"
17214
+ },
17134
17215
  {
17135
17216
  key: "pb.menu.deletePart",
17136
17217
  text: "Supprimer"
@@ -17187,6 +17268,10 @@ const frTexts = [
17187
17268
  key: "pb.prop.background",
17188
17269
  text: "Arrière-plan"
17189
17270
  },
17271
+ {
17272
+ key: "pb.prop.color",
17273
+ text: "Couleur"
17274
+ },
17190
17275
  {
17191
17276
  key: "pb.prop.selectImage",
17192
17277
  text: "Sélectionner une image"
@@ -35,4 +35,5 @@ export type PageBuilderContextMenu = {
35
35
  export type ImageProviderArg = {
36
36
  modal: BSModal;
37
37
  mediaTypes: string[];
38
+ selectedMediaUrls?: string[];
38
39
  };
@@ -1,4 +1,4 @@
1
- import { B, b, M, c, d, e, _, a, f, g, h, i, j, k, l, m, n, R, o, S, p, W, q, r, v, x, y, z, A, D, E } from "./index-CzHVyJKJ.js";
1
+ import { B, b, M, c, d, e, _, a, f, g, h, i, j, k, l, m, n, R, o, S, p, W, q, r, v, x, y, z, A, D, E } from "./index-DWYmZB2S.js";
2
2
  export {
3
3
  B as BLOCK_TYPE,
4
4
  b as Block,
@@ -6799,7 +6799,9 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
6799
6799
  if (!inlineStyle) return styleObject;
6800
6800
  inlineStyle.split(";").forEach((rule) => {
6801
6801
  if (rule.trim()) {
6802
- const [property, value] = rule.split(":").map((part) => part.trim());
6802
+ const index = rule.indexOf(":");
6803
+ const property = rule.slice(0, index).trim();
6804
+ const value = rule.slice(index + 1).trim();
6803
6805
  if (property && value) {
6804
6806
  const camelCasedProperty = property.replace(/-([a-z])/g, (_, letter) => letter.toUpperCase());
6805
6807
  styleObject[camelCasedProperty] = value;
@@ -11899,10 +11901,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
11899
11901
  }
11900
11902
  );
11901
11903
  vue.watch(
11902
- () => color.value,
11903
- () => setTimeout(() => {
11904
+ () => appliedColor.value,
11905
+ () => {
11904
11906
  if (appliedColor.value) emit("change-color", appliedColor.value);
11905
- }, 100),
11907
+ },
11906
11908
  { deep: true }
11907
11909
  );
11908
11910
  vue.watch(
@@ -11966,9 +11968,12 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
11966
11968
  const _hoisted_1$v = { class: "group-editor group-editor-background" };
11967
11969
  const _hoisted_2$m = { class: "flex-align-center" };
11968
11970
  const _hoisted_3$c = { class: "title" };
11969
- const _hoisted_4$8 = { class: "bs-layout-horizontal" };
11970
- const _hoisted_5$7 = { class: "color" };
11971
- const _hoisted_6$6 = { class: "image" };
11971
+ const _hoisted_4$8 = { class: "color" };
11972
+ const _hoisted_5$7 = { class: "image mt-4" };
11973
+ const _hoisted_6$6 = {
11974
+ key: 0,
11975
+ class: "url mt-8"
11976
+ };
11972
11977
  const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
11973
11978
  __name: "PbPropertyGroupEditorBackground",
11974
11979
  props: {
@@ -11979,28 +11984,31 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
11979
11984
  const props = __props;
11980
11985
  const pageBuilder = usePageBuilderEditor();
11981
11986
  const modal = bluesea.useModal();
11982
- const color = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundColor"));
11983
- const emptyColor = () => {
11984
- };
11985
11987
  const updatePropertyValue = (properties) => {
11986
11988
  pageBuilder.commandRegistry.executeCommand(
11987
11989
  ChangePropertyCommand.COMMAND_ID,
11988
11990
  { properties, targetParts: props.selectedParts }
11989
11991
  );
11990
11992
  };
11993
+ const color = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundColor"));
11994
+ const emptyColor = () => {
11995
+ };
11991
11996
  const saveOriginalColor = () => {
11992
11997
  };
11993
11998
  const updateColor = (value) => updatePropertyValue({ backgroundColor: value });
11999
+ const deleteColor = (value) => updatePropertyValue({ backgroundColor: "" });
12000
+ const image = vue.computed(() => getPropertyValueOfParts(props.selectedParts, "backgroundImage"));
11994
12001
  const selectImage = () => {
11995
12002
  const imageProvider = pageBuilder.getProvider("imageProvider");
11996
12003
  if (imageProvider) {
11997
- imageProvider({ modal, mediaTypes: ["Image"] }, (media) => {
12004
+ imageProvider({ modal, mediaTypes: ["Image"], selectedMediaUrls: image.value ? [image.value] : [] }, (media) => {
11998
12005
  if (media.mediaType === "Image" && media.fileUrl) {
11999
12006
  updatePropertyValue({ backgroundImage: media.fileUrl });
12000
12007
  }
12001
12008
  });
12002
12009
  }
12003
12010
  };
12011
+ const deleteImage = (value) => updatePropertyValue({ backgroundImage: "" });
12004
12012
  return (_ctx, _cache) => {
12005
12013
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$v, [
12006
12014
  vue.createElementVNode("div", _hoisted_2$m, [
@@ -12009,27 +12017,63 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
12009
12017
  [vue.unref(bluesea.vT), { key: "pb.prop.background" }]
12010
12018
  ])
12011
12019
  ]),
12012
- vue.createElementVNode("div", _hoisted_4$8, [
12013
- vue.createElementVNode("div", _hoisted_5$7, [
12020
+ vue.createElementVNode("div", null, [
12021
+ vue.createElementVNode("div", _hoisted_4$8, [
12022
+ vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
12023
+ [vue.unref(bluesea.vT), { key: "pb.prop.color" }]
12024
+ ]),
12014
12025
  vue.createVNode(PbColorPicker, {
12015
12026
  value: color.value,
12016
12027
  "hide-delete": "",
12017
12028
  onEmpty: _cache[0] || (_cache[0] = ($event) => emptyColor()),
12018
- onHide: _cache[1] || (_cache[1] = ($event) => updateColor($event)),
12019
12029
  onShow: saveOriginalColor,
12020
- onChangeColor: _cache[2] || (_cache[2] = ($event) => updateColor($event))
12030
+ onChangeColor: _cache[1] || (_cache[1] = ($event) => updateColor($event))
12021
12031
  }, null, 8, ["value"]),
12022
12032
  vue.createVNode(vue.unref(bluesea.BSTextInput), {
12023
12033
  "model-value": color.value,
12024
12034
  class: "ml-4",
12025
12035
  width: "",
12026
12036
  "onUpdate:modelValue": updateColor
12027
- }, null, 8, ["model-value"])
12037
+ }, null, 8, ["model-value"]),
12038
+ color.value ? vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(bluesea.BSButton), {
12039
+ key: 0,
12040
+ class: "ml-4 px-4",
12041
+ "left-icon": "close",
12042
+ onClick: deleteColor
12043
+ }, null, 512)), [
12044
+ [
12045
+ vue.unref(bluesea.vT),
12046
+ { key: "pb.menu.delete" },
12047
+ void 0,
12048
+ { title: true }
12049
+ ]
12050
+ ]) : vue.createCommentVNode("", true)
12028
12051
  ]),
12029
- vue.createElementVNode("div", _hoisted_6$6, [
12030
- vue.withDirectives(vue.createElementVNode("button", { onClick: selectImage }, null, 512), [
12031
- [vue.unref(bluesea.vT), { key: "pb.prop.selectImage" }]
12032
- ])
12052
+ vue.createElementVNode("div", _hoisted_5$7, [
12053
+ vue.withDirectives(vue.createElementVNode("label", null, null, 512), [
12054
+ [vue.unref(bluesea.vT), { key: "pb.prop.image" }]
12055
+ ]),
12056
+ vue.createVNode(vue.unref(bluesea.BSButton), {
12057
+ caption: { key: "pb.prop.selectImage" },
12058
+ "button-color": "blue",
12059
+ class: "select-button",
12060
+ onClick: selectImage
12061
+ }),
12062
+ image.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$6, [
12063
+ vue.createTextVNode(vue.toDisplayString(image.value) + " ", 1),
12064
+ vue.withDirectives(vue.createVNode(vue.unref(bluesea.BSButton), {
12065
+ class: "ml-4 px-4",
12066
+ "left-icon": "close",
12067
+ onClick: deleteImage
12068
+ }, null, 512), [
12069
+ [
12070
+ vue.unref(bluesea.vT),
12071
+ { key: "pb.menu.delete" },
12072
+ void 0,
12073
+ { title: true }
12074
+ ]
12075
+ ])
12076
+ ])) : vue.createCommentVNode("", true)
12033
12077
  ])
12034
12078
  ])
12035
12079
  ])
@@ -12808,9 +12852,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
12808
12852
  const part = pageBuilder.context.getSelectedParts();
12809
12853
  const modal = bluesea.useModal();
12810
12854
  const selectMedia = () => {
12855
+ var _a;
12811
12856
  const imageProvider = pageBuilder.getProvider("imageProvider");
12812
12857
  if (imageProvider) {
12813
- imageProvider({ modal }, (media2) => {
12858
+ imageProvider({ modal, selectedMediaUrls: ((_a = media.value) == null ? void 0 : _a.fileUrl) ? [media.value.fileUrl] : [] }, (media2) => {
12814
12859
  if (media2.mediaType === "Image") {
12815
12860
  updateProperty({ media: media2, thumbnail: "" });
12816
12861
  } else if (media2.mediaType === "Video") {
@@ -15780,6 +15825,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
15780
15825
  key: "pb.menu.addWidgetInside",
15781
15826
  text: "Add Widget Inside"
15782
15827
  },
15828
+ {
15829
+ key: "pb.menu.delete",
15830
+ text: "Delete"
15831
+ },
15783
15832
  {
15784
15833
  key: "pb.menu.deletePart",
15785
15834
  text: "Delete"
@@ -15836,6 +15885,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
15836
15885
  key: "pb.prop.background",
15837
15886
  text: "Background"
15838
15887
  },
15888
+ {
15889
+ key: "pb.prop.color",
15890
+ text: "Color"
15891
+ },
15839
15892
  {
15840
15893
  key: "pb.prop.selectImage",
15841
15894
  text: "Select Image"
@@ -16118,6 +16171,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
16118
16171
  key: "pb.menu.addWidgetInside",
16119
16172
  text: "内側にウィジェットを追加"
16120
16173
  },
16174
+ {
16175
+ key: "pb.menu.delete",
16176
+ text: "削除"
16177
+ },
16121
16178
  {
16122
16179
  key: "pb.menu.deletePart",
16123
16180
  text: "削除"
@@ -16174,6 +16231,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
16174
16231
  key: "pb.prop.background",
16175
16232
  text: "背景"
16176
16233
  },
16234
+ {
16235
+ key: "pb.prop.color",
16236
+ text: "色"
16237
+ },
16177
16238
  {
16178
16239
  key: "pb.prop.selectImage",
16179
16240
  text: "画像を選択"
@@ -16456,6 +16517,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
16456
16517
  key: "pb.menu.addWidgetInside",
16457
16518
  text: "안쪽에 위젯 추가"
16458
16519
  },
16520
+ {
16521
+ key: "pb.menu.delete",
16522
+ text: "삭제"
16523
+ },
16459
16524
  {
16460
16525
  key: "pb.menu.deletePart",
16461
16526
  text: "삭제"
@@ -16512,6 +16577,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
16512
16577
  key: "pb.prop.background",
16513
16578
  text: "배경"
16514
16579
  },
16580
+ {
16581
+ key: "pb.prop.color",
16582
+ text: "색상"
16583
+ },
16515
16584
  {
16516
16585
  key: "pb.prop.selectImage",
16517
16586
  text: "이미지 선택"
@@ -16794,6 +16863,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
16794
16863
  key: "pb.menu.addWidgetInside",
16795
16864
  text: "在内部添加小部件"
16796
16865
  },
16866
+ {
16867
+ key: "pb.menu.delete",
16868
+ text: "删除"
16869
+ },
16797
16870
  {
16798
16871
  key: "pb.menu.deletePart",
16799
16872
  text: "删除"
@@ -16850,6 +16923,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
16850
16923
  key: "pb.prop.background",
16851
16924
  text: "背景"
16852
16925
  },
16926
+ {
16927
+ key: "pb.prop.color",
16928
+ text: "色"
16929
+ },
16853
16930
  {
16854
16931
  key: "pb.prop.selectImage",
16855
16932
  text: "选择图片"
@@ -17132,6 +17209,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
17132
17209
  key: "pb.menu.addWidgetInside",
17133
17210
  text: "Ajouter un widget à l'intérieur"
17134
17211
  },
17212
+ {
17213
+ key: "pb.menu.delete",
17214
+ text: "Supprimer"
17215
+ },
17135
17216
  {
17136
17217
  key: "pb.menu.deletePart",
17137
17218
  text: "Supprimer"
@@ -17188,6 +17269,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
17188
17269
  key: "pb.prop.background",
17189
17270
  text: "Arrière-plan"
17190
17271
  },
17272
+ {
17273
+ key: "pb.prop.color",
17274
+ text: "Couleur"
17275
+ },
17191
17276
  {
17192
17277
  key: "pb.prop.selectImage",
17193
17278
  text: "Sélectionner une image"
@@ -17842,9 +17927,10 @@ var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "sy
17842
17927
  const part = pageBuilder.context.getSelectedParts();
17843
17928
  const modal = bluesea.useModal();
17844
17929
  const selectMedia = () => {
17930
+ var _a;
17845
17931
  const imageProvider = pageBuilder.getProvider("imageProvider");
17846
17932
  if (imageProvider) {
17847
- imageProvider({ modal, mediaTypes: ["Image"] }, (media2) => {
17933
+ imageProvider({ modal, mediaTypes: ["Image"], selectedMediaUrls: ((_a = media.value) == null ? void 0 : _a.fileUrl) ? [media.value.fileUrl] : [] }, (media2) => {
17848
17934
  updateProperty({ [props.property.propertyName]: media2 });
17849
17935
  });
17850
17936
  }
package/dist/style.css CHANGED
@@ -216,23 +216,24 @@
216
216
  flex-direction: row;
217
217
  align-items: center;
218
218
  }
219
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .color label {
220
+ display: inline-block;
221
+ width: 80px;
222
+ }
219
223
  .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .color .bs-text-input {
220
- flex-grow: 1;
224
+ flex-grow: 0;
225
+ width: 104px;
221
226
  }
222
- .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image {
223
- flex: 1;
224
- padding-left: 8px;
227
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image label {
228
+ display: inline-block;
229
+ width: 80px;
225
230
  }
226
- .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image button {
227
- color: #fff;
228
- border: none;
229
- padding: 4px 12px;
230
- cursor: pointer;
231
- line-height: 1;
232
- width: 120px;
233
- height: 26px;
234
- background-color: var(--primary);
235
- border-radius: 2px;
231
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image .bs-button.select-button {
232
+ width: 132px;
233
+ }
234
+ .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-background .image .url {
235
+ word-break: break-word !important;
236
+ word-wrap: break-word !important;
236
237
  }
237
238
  .pb-editor .pb-editor-body .pb-sidebar .pb-sidebar-properties .pb-sidebar-property-group .group-editor-border .color {
238
239
  width: 50%;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@g1cloud/page-builder-editor",
3
3
  "private": false,
4
- "version": "1.0.0-alpha.97",
4
+ "version": "1.0.0-alpha.99",
5
5
  "engins": {
6
6
  "node": ">= 20.0.0"
7
7
  },
@@ -17,7 +17,7 @@
17
17
  "author": "zag@g1project.net",
18
18
  "license": "LicenseRef-LICENSE",
19
19
  "peerDependencies": {
20
- "@g1cloud/bluesea": "5.0.0-beta.3",
20
+ "@g1cloud/bluesea": "5.0.0-beta.21",
21
21
  "vue3-youtube": "^0.1.9"
22
22
  },
23
23
  "dependencies": {
@@ -31,7 +31,7 @@
31
31
  "vue-router": "^4.4.3",
32
32
  "vue3-click-away": "^1.2.4",
33
33
  "yjs": "^13.6.14",
34
- "@g1cloud/page-builder-viewer": "1.0.0-alpha.97"
34
+ "@g1cloud/page-builder-viewer": "1.0.0-alpha.99"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/node": "^20.12.7",
@@ -5,25 +5,35 @@
5
5
  flex-direction: row;
6
6
  align-items: center;
7
7
 
8
+ label {
9
+ display: inline-block;
10
+ width: 80px;
11
+ }
12
+
8
13
  .bs-text-input {
9
- flex-grow: 1;
14
+ flex-grow: 0;
15
+ width: 104px;
10
16
  }
11
17
  }
12
18
 
13
19
  .image {
14
- flex: 1;
15
- padding-left: 8px;
20
+ // flex: 1;
21
+ // display: flex;
22
+ // flex-direction: row;
23
+ // align-items: center;
24
+
25
+ label {
26
+ display: inline-block;
27
+ width: 80px;
28
+ }
29
+
30
+ .bs-button.select-button {
31
+ width: 132px;
32
+ }
16
33
 
17
- button {
18
- color: #fff;
19
- border: none;
20
- padding: 4px 12px;
21
- cursor: pointer;
22
- line-height: 1;
23
- width: 120px;
24
- height: 26px;
25
- background-color: var(--primary);
26
- border-radius: 2px;
34
+ .url {
35
+ word-break: break-word !important;
36
+ word-wrap: break-word !important;
27
37
  }
28
38
  }
29
39
  }