@bagelink/vue 1.2.105 → 1.2.109

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.cjs CHANGED
@@ -27927,7 +27927,8 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
27927
27927
  flushQueue,
27928
27928
  fileToUrl,
27929
27929
  addFile,
27930
- browse
27930
+ browse,
27931
+ pk
27931
27932
  } = useFileUpload({
27932
27933
  disabled: props2.disabled,
27933
27934
  dirPath: props2.dirPath,
@@ -27949,9 +27950,21 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
27949
27950
  emit2("addFileStart");
27950
27951
  addFile((_a = e.dataTransfer) == null ? void 0 : _a.files);
27951
27952
  await flushQueue();
27952
- emit2("update:modelValue", pathKeys.value);
27953
27953
  isDragOver.value = false;
27954
27954
  }
27955
+ watchDebounced(() => vue.toValue(pk), (value) => {
27956
+ if (props2.multiple) emit2("update:modelValue", value);
27957
+ else emit2("update:modelValue", value[0] || void 0);
27958
+ }, { deep: true, immediate: true });
27959
+ watchDebounced(() => props2.modelValue, (newVal, oldVal) => {
27960
+ if (`${newVal}` === `${oldVal}`) return;
27961
+ if (newVal === void 0) return;
27962
+ if (Array.isArray(newVal)) {
27963
+ pk.value = newVal;
27964
+ } else {
27965
+ pk.value = [newVal];
27966
+ }
27967
+ }, { immediate: true, debounce: 500 });
27955
27968
  return (_ctx, _cache) => {
27956
27969
  const _directive_tooltip = vue.resolveDirective("tooltip");
27957
27970
  const _directive_lightbox = vue.resolveDirective("lightbox");
@@ -28187,7 +28200,7 @@ const _sfc_main$w = /* @__PURE__ */ vue.defineComponent({
28187
28200
  };
28188
28201
  }
28189
28202
  });
28190
- const UploadInput = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-38a4d4a9"]]);
28203
+ const UploadInput = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["__scopeId", "data-v-2ba685b5"]]);
28191
28204
  const FONT_AWESOME_ICONS = [
28192
28205
  "trash-can",
28193
28206
  "message",
@@ -32834,50 +32847,49 @@ const _sfc_main$t = /* @__PURE__ */ vue.defineComponent({
32834
32847
  }
32835
32848
  });
32836
32849
  const Image$1 = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["__scopeId", "data-v-2f5e271c"]]);
32837
- const _hoisted_1$m = { class: "upload-data-container" };
32838
- const _hoisted_2$d = ["textContent"];
32839
- const _hoisted_3$a = {
32850
+ const _hoisted_1$m = ["textContent"];
32851
+ const _hoisted_2$d = {
32840
32852
  key: 1,
32841
32853
  class: "loading-container"
32842
32854
  };
32843
- const _hoisted_4$6 = {
32855
+ const _hoisted_3$a = {
32844
32856
  key: 2,
32845
32857
  class: "config-section"
32846
32858
  };
32847
- const _hoisted_5$6 = { class: "file-info mb-1" };
32848
- const _hoisted_6$5 = { class: "file-chip" };
32849
- const _hoisted_7$4 = { class: "header-config" };
32850
- const _hoisted_8$3 = { class: "mapping-table" };
32851
- const _hoisted_9$2 = { class: "tbl" };
32852
- const _hoisted_10$2 = { class: "field-label" };
32853
- const _hoisted_11$2 = { key: 0 };
32854
- const _hoisted_12$2 = { key: 2 };
32855
- const _hoisted_13$1 = { key: 3 };
32856
- const _hoisted_14$1 = {
32859
+ const _hoisted_4$6 = { class: "file-info mb-1" };
32860
+ const _hoisted_5$6 = { class: "file-chip" };
32861
+ const _hoisted_6$5 = { class: "header-config" };
32862
+ const _hoisted_7$4 = { class: "mapping-table" };
32863
+ const _hoisted_8$3 = { class: "tbl" };
32864
+ const _hoisted_9$2 = { class: "field-label" };
32865
+ const _hoisted_10$2 = { key: 0 };
32866
+ const _hoisted_11$2 = { key: 2 };
32867
+ const _hoisted_12$2 = { key: 3 };
32868
+ const _hoisted_13$1 = {
32857
32869
  key: 0,
32858
32870
  class: "field-disabled-reason"
32859
32871
  };
32860
- const _hoisted_15 = { key: 1 };
32861
- const _hoisted_16 = { class: "default-value-container" };
32862
- const _hoisted_17 = { class: "action-buttons-cell" };
32863
- const _hoisted_18 = {
32872
+ const _hoisted_14$1 = { key: 1 };
32873
+ const _hoisted_15 = { class: "default-value-container" };
32874
+ const _hoisted_16 = { class: "action-buttons-cell" };
32875
+ const _hoisted_17 = {
32864
32876
  key: 0,
32865
32877
  class: "action-buttons"
32866
32878
  };
32867
- const _hoisted_19 = {
32879
+ const _hoisted_18 = {
32868
32880
  key: 1,
32869
32881
  class: "action-buttons"
32870
32882
  };
32883
+ const _hoisted_19 = { key: 0 };
32871
32884
  const _hoisted_20 = { key: 0 };
32872
32885
  const _hoisted_21 = { key: 0 };
32873
- const _hoisted_22 = { key: 0 };
32874
- const _hoisted_23 = { key: 1 };
32875
- const _hoisted_24 = { class: "mb-1" };
32876
- const _hoisted_25 = { key: 0 };
32877
- const _hoisted_26 = { class: "flex gap-1" };
32878
- const _hoisted_27 = { class: "default-value-container" };
32879
- const _hoisted_28 = { class: "action-buttons-cell" };
32880
- const _hoisted_29 = { key: 0 };
32886
+ const _hoisted_22 = { key: 1 };
32887
+ const _hoisted_23 = { class: "mb-1" };
32888
+ const _hoisted_24 = { key: 0 };
32889
+ const _hoisted_25 = { class: "flex gap-1" };
32890
+ const _hoisted_26 = { class: "default-value-container" };
32891
+ const _hoisted_27 = { class: "action-buttons-cell" };
32892
+ const _hoisted_28 = { key: 0 };
32881
32893
  const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
32882
32894
  __name: "ImportData",
32883
32895
  props: {
@@ -33052,7 +33064,6 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
33052
33064
  }
33053
33065
  if (field.attrs && field.attrs.options && field.attrs.options.length > 0) {
33054
33066
  field.options = field.attrs.options;
33055
- console.log(`Added options for field ${field.id}:`, field.options);
33056
33067
  }
33057
33068
  allFields.push(field);
33058
33069
  }
@@ -33438,7 +33449,6 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
33438
33449
  }
33439
33450
  const { addFile, browse, fileQueue } = useFileUpload();
33440
33451
  async function handleFilesUploaded() {
33441
- console.log("fileQueue", fileQueue.value);
33442
33452
  file.value = fileQueue.value[0].file;
33443
33453
  if (!file.value) return;
33444
33454
  isLoading.value = true;
@@ -33461,15 +33471,12 @@ const _sfc_main$s = /* @__PURE__ */ vue.defineComponent({
33461
33471
  }
33462
33472
  function openTransformDialog(field) {
33463
33473
  try {
33464
- console.log("Opening transform dialog for field:", field.id, field);
33465
33474
  if (!field.options) {
33466
33475
  field.options = [];
33467
33476
  }
33468
33477
  if (field.attrs && field.attrs.options) {
33469
- console.log("Copying options from attrs for field:", field.id);
33470
- field.options = Array.isArray(field.attrs.options) ? field.attrs.options : [];
33478
+ field.options = field.attrs.options;
33471
33479
  }
33472
- console.log("Field options after processing:", field.options);
33473
33480
  selectedTransformField.value = field;
33474
33481
  if (!transformations[field.id]) {
33475
33482
  transformations[field.id] = [];
@@ -33561,25 +33568,6 @@ ${unmatchedValues.length} values could not be automatically matched.`);
33561
33568
  alert("An error occurred while trying to auto-populate transformations. See console for details.");
33562
33569
  }
33563
33570
  }
33564
- function debugFieldOptions() {
33565
- console.log("Checking all fields for options:");
33566
- schemaFields.value.forEach((field) => {
33567
- var _a;
33568
- console.log(`Field ${field.id} (${field.label}):`, {
33569
- directOptions: field.options,
33570
- hasDirectOptions: field.options && field.options.length > 0,
33571
- attrOptions: (_a = field.attrs) == null ? void 0 : _a.options,
33572
- hasAttrOptions: field.attrs && field.attrs.options && field.attrs.options.length > 0,
33573
- visibleButton: field.options && field.options.length > 0 || field.attrs && field.attrs.options && field.attrs.options.length > 0
33574
- });
33575
- });
33576
- }
33577
- vue.watchEffect(() => {
33578
- if (props2.schema && props2.schema.length > 0) {
33579
- console.log("Schema loaded, checking options");
33580
- debugFieldOptions();
33581
- }
33582
- });
33583
33571
  function detectDateFormat(value) {
33584
33572
  const formats = [
33585
33573
  /^\d{4}-\d{2}-\d{2}$/,
@@ -33921,554 +33909,560 @@ ${unmatchedValues.length} values could not be automatically matched.`);
33921
33909
  }
33922
33910
  return (_ctx, _cache) => {
33923
33911
  const _directive_tooltip = vue.resolveDirective("tooltip");
33924
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$m, [
33925
- vue.createElementVNode("h2", {
33926
- textContent: vue.toDisplayString(props2.title || "Upload and Map Data")
33927
- }, null, 8, _hoisted_2$d),
33928
- !file.value ? (vue.openBlock(), vue.createBlock(vue.unref(DragOver), {
33929
- key: 0,
33930
- accept: ".csv,.xls,.xlsx",
33931
- onAddFiles: vue.unref(addFile),
33932
- onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(browse)(false))
33933
- }, {
33934
- default: vue.withCtx(() => [
33935
- vue.createVNode(vue.unref(_sfc_main$15), { class: "flex flex-column items-center justify-center outline-dashed outline-3 hover" }, {
33936
- default: vue.withCtx(() => [
33937
- vue.createVNode(vue.unref(_sfc_main$v), {
33938
- name: "upload_file",
33939
- size: "5"
33940
- }),
33941
- _cache[30] || (_cache[30] = vue.createElementVNode("p", null, "Drag and drop an Excel or CSV file here", -1)),
33942
- _cache[31] || (_cache[31] = vue.createElementVNode("p", null, "or click to select a file", -1)),
33943
- _cache[32] || (_cache[32] = vue.createElementVNode("p", { class: "txt-12 color-gray" }, " Accepts .xlsx, .xls, and .csv files ", -1))
33944
- ]),
33945
- _: 1
33946
- })
33947
- ]),
33948
- _: 1
33949
- }, 8, ["onAddFiles"])) : vue.createCommentVNode("", true),
33950
- isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$a, _cache[33] || (_cache[33] = [
33951
- vue.createElementVNode("div", { class: "spinner" }, null, -1),
33952
- vue.createElementVNode("p", null, "Processing your file...", -1)
33953
- ]))) : vue.createCommentVNode("", true),
33954
- file.value && !isLoading.value && sheetNames.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$6, [
33955
- vue.createElementVNode("div", _hoisted_5$6, [
33956
- vue.createElementVNode("div", _hoisted_6$5, vue.toDisplayString(file.value.name), 1),
33957
- vue.createVNode(vue.unref(Btn), {
33958
- thin: "",
33959
- round: "",
33960
- value: "Change File",
33961
- onClick: _cache[1] || (_cache[1] = ($event) => file.value = null)
33962
- })
33963
- ]),
33964
- sheetNames.value.length > 1 ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
33912
+ return vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$15), { class: "upload-data-container h-100p grid overflow-hidden list-wrap" }, {
33913
+ default: vue.withCtx(() => [
33914
+ vue.createElementVNode("h2", {
33915
+ class: "line-height-1 m-0 pb-2 txt-center",
33916
+ textContent: vue.toDisplayString(props2.title || "Upload and Map Data")
33917
+ }, null, 8, _hoisted_1$m),
33918
+ !file.value ? (vue.openBlock(), vue.createBlock(vue.unref(DragOver), {
33965
33919
  key: 0,
33966
- modelValue: selectedSheet.value,
33967
- "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectedSheet.value = $event),
33968
- options: sheetNames.value,
33969
- label: "Select Sheet"
33970
- }, null, 8, ["modelValue", "options"])) : vue.createCommentVNode("", true),
33971
- vue.createElementVNode("div", _hoisted_7$4, [
33972
- _cache[34] || (_cache[34] = vue.createElementVNode("label", null, "File has headers?", -1)),
33973
- vue.createVNode(vue.unref(CheckInput), {
33974
- modelValue: hasHeaders.value,
33975
- "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => hasHeaders.value = $event),
33976
- label: "First row contains column names"
33977
- }, null, 8, ["modelValue"])
33978
- ])
33979
- ])) : vue.createCommentVNode("", true),
33980
- file.value && !isLoading.value && fileHeaders.value.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$15), { key: 3 }, {
33981
- default: vue.withCtx(() => [
33982
- _cache[38] || (_cache[38] = vue.createElementVNode("h3", { class: "mt-0" }, " Map Fields ", -1)),
33983
- _cache[39] || (_cache[39] = vue.createElementVNode("p", { class: "instructions" }, " Match each required field to a column from your file, set default values, or configure transformations ", -1)),
33984
- vue.createElementVNode("div", _hoisted_8$3, [
33985
- vue.createElementVNode("table", _hoisted_9$2, [
33986
- _cache[35] || (_cache[35] = vue.createElementVNode("thead", null, [
33987
- vue.createElementVNode("tr", null, [
33988
- vue.createElementVNode("th", null, "Schema Field"),
33989
- vue.createElementVNode("th", null, "File Column"),
33990
- vue.createElementVNode("th", null, "Default Value"),
33991
- vue.createElementVNode("th", null, "Data Type"),
33992
- vue.createElementVNode("th", null, "Actions")
33920
+ accept: ".csv,.xls,.xlsx",
33921
+ onAddFiles: vue.unref(addFile),
33922
+ onClick: _cache[0] || (_cache[0] = ($event) => vue.unref(browse)(false))
33923
+ }, {
33924
+ default: vue.withCtx(() => [
33925
+ vue.createVNode(vue.unref(_sfc_main$15), { class: "flex flex-column items-center justify-center outline-dashed outline-3 bg-input hover h-100p justify-content-center" }, {
33926
+ default: vue.withCtx(() => [
33927
+ vue.createVNode(vue.unref(_sfc_main$v), {
33928
+ name: "upload",
33929
+ size: "5"
33930
+ }),
33931
+ _cache[30] || (_cache[30] = vue.createElementVNode("p", null, "Drag and drop an Excel or CSV file here", -1)),
33932
+ _cache[31] || (_cache[31] = vue.createElementVNode("p", null, "or click to select a file", -1)),
33933
+ _cache[32] || (_cache[32] = vue.createElementVNode("p", { class: "txt-12 color-gray" }, " Accepts .xlsx, .xls, and .csv files ", -1))
33934
+ ]),
33935
+ _: 1
33936
+ })
33937
+ ]),
33938
+ _: 1
33939
+ }, 8, ["onAddFiles"])) : vue.createCommentVNode("", true),
33940
+ isLoading.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$d, _cache[33] || (_cache[33] = [
33941
+ vue.createElementVNode("div", { class: "spinner" }, null, -1),
33942
+ vue.createElementVNode("p", null, "Processing your file...", -1)
33943
+ ]))) : vue.createCommentVNode("", true),
33944
+ file.value && !isLoading.value && sheetNames.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_3$a, [
33945
+ vue.createElementVNode("div", _hoisted_4$6, [
33946
+ vue.createElementVNode("div", _hoisted_5$6, vue.toDisplayString(file.value.name), 1),
33947
+ vue.createVNode(vue.unref(Btn), {
33948
+ thin: "",
33949
+ round: "",
33950
+ value: "Change File",
33951
+ onClick: _cache[1] || (_cache[1] = ($event) => file.value = null)
33952
+ })
33953
+ ]),
33954
+ sheetNames.value.length > 1 ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
33955
+ key: 0,
33956
+ modelValue: selectedSheet.value,
33957
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => selectedSheet.value = $event),
33958
+ options: sheetNames.value,
33959
+ label: "Select Sheet"
33960
+ }, null, 8, ["modelValue", "options"])) : vue.createCommentVNode("", true),
33961
+ vue.createElementVNode("div", _hoisted_6$5, [
33962
+ vue.createVNode(vue.unref(CheckInput), {
33963
+ modelValue: hasHeaders.value,
33964
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => hasHeaders.value = $event),
33965
+ label: "Mark this if file has a header row"
33966
+ }, null, 8, ["modelValue"])
33967
+ ])
33968
+ ])) : vue.createCommentVNode("", true),
33969
+ file.value && !isLoading.value && fileHeaders.value.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(_sfc_main$15), {
33970
+ key: 3,
33971
+ class: "overflow h-100p"
33972
+ }, {
33973
+ default: vue.withCtx(() => [
33974
+ _cache[37] || (_cache[37] = vue.createElementVNode("h3", { class: "mt-0" }, " Map Fields ", -1)),
33975
+ _cache[38] || (_cache[38] = vue.createElementVNode("p", { class: "instructions" }, " Match each required field to a column from your file, set default values, or configure transformations ", -1)),
33976
+ vue.createElementVNode("div", _hoisted_7$4, [
33977
+ vue.createElementVNode("table", _hoisted_8$3, [
33978
+ _cache[34] || (_cache[34] = vue.createElementVNode("thead", null, [
33979
+ vue.createElementVNode("tr", null, [
33980
+ vue.createElementVNode("th", null, "Schema Field"),
33981
+ vue.createElementVNode("th", null, "File Column"),
33982
+ vue.createElementVNode("th", null, "Default Value"),
33983
+ vue.createElementVNode("th", null, "Data Type"),
33984
+ vue.createElementVNode("th", null, "Actions")
33985
+ ])
33986
+ ], -1)),
33987
+ vue.createElementVNode("tbody", null, [
33988
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(schemaFields.value, (field) => {
33989
+ return vue.openBlock(), vue.createElementBlock("tr", {
33990
+ key: field.id,
33991
+ class: vue.normalizeClass({ "array-field-row": field.isArrayField || field.$el === "array" })
33992
+ }, [
33993
+ vue.createElementVNode("td", null, [
33994
+ vue.createElementVNode("div", _hoisted_9$2, [
33995
+ vue.createTextVNode(vue.toDisplayString(field.label) + " ", 1),
33996
+ field.isArrayField ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_10$2, "↳")) : vue.createCommentVNode("", true),
33997
+ field.$el === "array" ? (vue.openBlock(), vue.createBlock(vue.unref(Pill), {
33998
+ key: 1,
33999
+ outline: "",
34000
+ thin: "",
34001
+ value: "Array"
34002
+ })) : vue.createCommentVNode("", true),
34003
+ isFieldRequired(field) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_11$2, "*")) : vue.createCommentVNode("", true),
34004
+ getFieldDescription(field).isConditional ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_12$2, "†")) : vue.createCommentVNode("", true)
34005
+ ]),
34006
+ field.disabled ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13$1, vue.toDisplayString(field.disabledReason), 1)) : vue.createCommentVNode("", true),
34007
+ getFieldDescription(field).isConditional ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14$1, vue.toDisplayString(getFieldDescription(field).description), 1)) : vue.createCommentVNode("", true)
34008
+ ]),
34009
+ vue.createElementVNode("td", null, [
34010
+ vue.createVNode(vue.unref(SelectInput), {
34011
+ modelValue: fieldMapping[field.id],
34012
+ "onUpdate:modelValue": ($event) => fieldMapping[field.id] = $event,
34013
+ options: fileHeaders.value,
34014
+ required: isFieldRequired(field),
34015
+ disabled: field.disabled,
34016
+ onChange: ($event) => handleSelectChange($event, field.id)
34017
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "options", "required", "disabled", "onChange"])
34018
+ ]),
34019
+ vue.createElementVNode("td", null, [
34020
+ vue.createElementVNode("div", _hoisted_15, [
34021
+ vue.createTextVNode(vue.toDisplayString(initDefaultValue(field.id)) + " ", 1),
34022
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(renderField)(getFieldWithDefaults(field)))))
34023
+ ])
34024
+ ]),
34025
+ vue.createElementVNode("td", null, [
34026
+ vue.createVNode(vue.unref(SelectInput), {
34027
+ modelValue: fieldDataTypes[field.id],
34028
+ "onUpdate:modelValue": ($event) => fieldDataTypes[field.id] = $event,
34029
+ options: dataTypeOptions,
34030
+ disabled: !fieldMapping[field.id] && !defaultValues[field.id]
34031
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
34032
+ ]),
34033
+ vue.createElementVNode("td", null, [
34034
+ vue.createElementVNode("div", _hoisted_16, [
34035
+ vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34036
+ thin: "",
34037
+ disabled: field.disabled,
34038
+ icon: "transform",
34039
+ onClick: ($event) => openTransformDialog(field)
34040
+ }, null, 8, ["disabled", "onClick"]), [
34041
+ [_directive_tooltip, "Transform"]
34042
+ ]),
34043
+ field.$el === "array" ? vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(Btn), {
34044
+ key: 0,
34045
+ thin: "",
34046
+ icon: "attach_file",
34047
+ disabled: field.disabled,
34048
+ onClick: ($event) => openRelatedDialog(field)
34049
+ }, null, 8, ["disabled", "onClick"])), [
34050
+ [_directive_tooltip, "Related File"]
34051
+ ]) : vue.createCommentVNode("", true)
34052
+ ])
34053
+ ])
34054
+ ], 2);
34055
+ }), 128))
33993
34056
  ])
33994
- ], -1)),
33995
- vue.createElementVNode("tbody", null, [
33996
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(schemaFields.value, (field) => {
33997
- return vue.openBlock(), vue.createElementBlock("tr", {
33998
- key: field.id,
33999
- class: vue.normalizeClass({ "array-field-row": field.isArrayField || field.$el === "array" })
34000
- }, [
34001
- vue.createElementVNode("td", null, [
34002
- vue.createElementVNode("div", _hoisted_10$2, [
34003
- vue.createTextVNode(vue.toDisplayString(field.label) + " ", 1),
34004
- field.isArrayField ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_11$2, "↳")) : vue.createCommentVNode("", true),
34005
- field.$el === "array" ? (vue.openBlock(), vue.createBlock(vue.unref(Pill), {
34006
- key: 1,
34007
- outline: "",
34057
+ ])
34058
+ ]),
34059
+ mappingComplete.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_17, [
34060
+ vue.createVNode(vue.unref(Btn), { onClick: showPreview }, {
34061
+ default: vue.withCtx(() => _cache[35] || (_cache[35] = [
34062
+ vue.createTextVNode(" Preview Data ")
34063
+ ])),
34064
+ _: 1
34065
+ })
34066
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, _cache[36] || (_cache[36] = [
34067
+ vue.createElementVNode("div", { class: "mapping-incomplete-message" }, " Please map the required fields to continue ", -1)
34068
+ ])))
34069
+ ]),
34070
+ _: 1
34071
+ })) : vue.createCommentVNode("", true),
34072
+ vue.createVNode(vue.unref(_sfc_main$f), {
34073
+ visible: showTransformDialog.value,
34074
+ "onUpdate:visible": _cache[11] || (_cache[11] = ($event) => showTransformDialog.value = $event),
34075
+ title: "Configure Transformations",
34076
+ width: "800"
34077
+ }, {
34078
+ default: vue.withCtx(() => [
34079
+ selectedTransformField.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_19, [
34080
+ vue.createElementVNode("p", null, [
34081
+ _cache[39] || (_cache[39] = vue.createTextVNode("Create transformations for ")),
34082
+ vue.createElementVNode("strong", null, vue.toDisplayString(selectedTransformField.value.label), 1)
34083
+ ]),
34084
+ vue.createVNode(vue.unref(Btn), {
34085
+ icon: "auto_awesome",
34086
+ thin: "",
34087
+ value: "Autodetect",
34088
+ onClick: _cache[4] || (_cache[4] = ($event) => autoPopulateTransformations(selectedTransformField.value.id))
34089
+ }),
34090
+ vue.createElementVNode("table", null, [
34091
+ _cache[40] || (_cache[40] = vue.createElementVNode("thead", null, [
34092
+ vue.createElementVNode("tr", null, [
34093
+ vue.createElementVNode("th", null, "Source Value"),
34094
+ vue.createElementVNode("th", null, "Target Value"),
34095
+ vue.createElementVNode("th", null, "Action")
34096
+ ])
34097
+ ], -1)),
34098
+ vue.createElementVNode("tbody", null, [
34099
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(transformations[selectedTransformField.value.id] || [], (transform, index2) => {
34100
+ return vue.openBlock(), vue.createElementBlock("tr", { key: index2 }, [
34101
+ vue.createElementVNode("td", null, vue.toDisplayString(transform.sourceValue), 1),
34102
+ vue.createElementVNode("td", null, vue.toDisplayString(transform.targetValue), 1),
34103
+ vue.createElementVNode("td", null, [
34104
+ vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34008
34105
  thin: "",
34009
- value: "Array"
34010
- })) : vue.createCommentVNode("", true),
34011
- isFieldRequired(field) ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_12$2, "*")) : vue.createCommentVNode("", true),
34012
- getFieldDescription(field).isConditional ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_13$1, "")) : vue.createCommentVNode("", true)
34013
- ]),
34014
- field.disabled ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_14$1, vue.toDisplayString(field.disabledReason), 1)) : vue.createCommentVNode("", true),
34015
- getFieldDescription(field).isConditional ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_15, vue.toDisplayString(getFieldDescription(field).description), 1)) : vue.createCommentVNode("", true)
34016
- ]),
34017
- vue.createElementVNode("td", null, [
34018
- vue.createVNode(vue.unref(SelectInput), {
34019
- modelValue: fieldMapping[field.id],
34020
- "onUpdate:modelValue": ($event) => fieldMapping[field.id] = $event,
34021
- options: fileHeaders.value,
34022
- required: isFieldRequired(field),
34023
- disabled: field.disabled,
34024
- onChange: ($event) => handleSelectChange($event, field.id)
34025
- }, null, 8, ["modelValue", "onUpdate:modelValue", "options", "required", "disabled", "onChange"])
34026
- ]),
34027
- vue.createElementVNode("td", null, [
34028
- vue.createElementVNode("div", _hoisted_16, [
34029
- vue.createTextVNode(vue.toDisplayString(initDefaultValue(field.id)) + " ", 1),
34030
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(renderField)(getFieldWithDefaults(field)))))
34106
+ icon: "delete",
34107
+ color: "red",
34108
+ onClick: ($event) => removeTransformation(selectedTransformField.value.id, index2)
34109
+ }, null, 8, ["onClick"]), [
34110
+ [_directive_tooltip, "Remove"]
34111
+ ])
34031
34112
  ])
34032
- ]),
34113
+ ]);
34114
+ }), 128)),
34115
+ vue.createElementVNode("tr", null, [
34033
34116
  vue.createElementVNode("td", null, [
34034
- vue.createVNode(vue.unref(SelectInput), {
34035
- modelValue: fieldDataTypes[field.id],
34036
- "onUpdate:modelValue": ($event) => fieldDataTypes[field.id] = $event,
34037
- options: dataTypeOptions,
34038
- disabled: !fieldMapping[field.id] && !defaultValues[field.id]
34039
- }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
34117
+ fieldMapping[selectedTransformField.value.id] ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34118
+ key: 0,
34119
+ modelValue: selectedSourceValue.value,
34120
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => selectedSourceValue.value = $event),
34121
+ searchable: "",
34122
+ options: sourceValueOptions.value,
34123
+ placeholder: "Select source value"
34124
+ }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34125
+ key: 1,
34126
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => selectedSourceValue.value = $event),
34127
+ type: "text",
34128
+ placeholder: "Source value"
34129
+ }, null, 512)), [
34130
+ [vue.vModelText, selectedSourceValue.value]
34131
+ ])
34040
34132
  ]),
34041
34133
  vue.createElementVNode("td", null, [
34042
- vue.createElementVNode("div", _hoisted_17, [
34043
- vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34044
- thin: "",
34045
- disabled: field.disabled,
34046
- icon: "transform",
34047
- onClick: ($event) => openTransformDialog(field)
34048
- }, null, 8, ["disabled", "onClick"]), [
34049
- [_directive_tooltip, "Transform"]
34050
- ]),
34051
- field.$el === "array" ? vue.withDirectives((vue.openBlock(), vue.createBlock(vue.unref(Btn), {
34052
- key: 0,
34053
- thin: "",
34054
- icon: "attach_file",
34055
- disabled: field.disabled,
34056
- onClick: ($event) => openRelatedDialog(field)
34057
- }, null, 8, ["disabled", "onClick"])), [
34058
- [_directive_tooltip, "Related File"]
34059
- ]) : vue.createCommentVNode("", true)
34134
+ selectedTransformField.value.options && selectedTransformField.value.options.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34135
+ key: 0,
34136
+ modelValue: selectedTargetValue.value,
34137
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => selectedTargetValue.value = $event),
34138
+ searchable: "",
34139
+ options: selectedTransformField.value.options,
34140
+ placeholder: "Select target value"
34141
+ }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34142
+ key: 1,
34143
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => selectedTargetValue.value = $event),
34144
+ type: "text",
34145
+ placeholder: "Target value"
34146
+ }, null, 512)), [
34147
+ [vue.vModelText, selectedTargetValue.value]
34060
34148
  ])
34061
- ])
34062
- ], 2);
34063
- }), 128))
34064
- ])
34065
- ])
34066
- ]),
34067
- mappingComplete.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_18, [
34068
- vue.createVNode(vue.unref(Btn), { onClick: showPreview }, {
34069
- default: vue.withCtx(() => _cache[36] || (_cache[36] = [
34070
- vue.createTextVNode(" Preview Data ")
34071
- ])),
34072
- _: 1
34073
- })
34074
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_19, _cache[37] || (_cache[37] = [
34075
- vue.createElementVNode("div", { class: "mapping-incomplete-message" }, " Please map the required fields to continue ", -1)
34076
- ])))
34077
- ]),
34078
- _: 1
34079
- })) : vue.createCommentVNode("", true),
34080
- vue.createVNode(vue.unref(_sfc_main$f), {
34081
- visible: showTransformDialog.value,
34082
- "onUpdate:visible": _cache[11] || (_cache[11] = ($event) => showTransformDialog.value = $event),
34083
- title: "Configure Transformations",
34084
- width: "800"
34085
- }, {
34086
- default: vue.withCtx(() => [
34087
- selectedTransformField.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_20, [
34088
- vue.createElementVNode("p", null, [
34089
- _cache[40] || (_cache[40] = vue.createTextVNode("Create transformations for ")),
34090
- vue.createElementVNode("strong", null, vue.toDisplayString(selectedTransformField.value.label), 1)
34091
- ]),
34092
- vue.createVNode(vue.unref(Btn), {
34093
- icon: "auto_awesome",
34094
- thin: "",
34095
- value: "Autodetect",
34096
- onClick: _cache[4] || (_cache[4] = ($event) => autoPopulateTransformations(selectedTransformField.value.id))
34097
- }),
34098
- vue.createElementVNode("table", null, [
34099
- _cache[41] || (_cache[41] = vue.createElementVNode("thead", null, [
34100
- vue.createElementVNode("tr", null, [
34101
- vue.createElementVNode("th", null, "Source Value"),
34102
- vue.createElementVNode("th", null, "Target Value"),
34103
- vue.createElementVNode("th", null, "Action")
34104
- ])
34105
- ], -1)),
34106
- vue.createElementVNode("tbody", null, [
34107
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(transformations[selectedTransformField.value.id] || [], (transform, index2) => {
34108
- return vue.openBlock(), vue.createElementBlock("tr", { key: index2 }, [
34109
- vue.createElementVNode("td", null, vue.toDisplayString(transform.sourceValue), 1),
34110
- vue.createElementVNode("td", null, vue.toDisplayString(transform.targetValue), 1),
34149
+ ]),
34111
34150
  vue.createElementVNode("td", null, [
34112
34151
  vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34113
34152
  thin: "",
34114
- icon: "delete",
34115
- color: "red",
34116
- onClick: ($event) => removeTransformation(selectedTransformField.value.id, index2)
34117
- }, null, 8, ["onClick"]), [
34118
- [_directive_tooltip, "Remove"]
34153
+ icon: "add",
34154
+ color: "primary",
34155
+ onClick: _cache[9] || (_cache[9] = ($event) => addTransformation(selectedTransformField.value.id))
34156
+ }, null, 512), [
34157
+ [_directive_tooltip, "Add"]
34119
34158
  ])
34120
34159
  ])
34121
- ]);
34122
- }), 128)),
34123
- vue.createElementVNode("tr", null, [
34124
- vue.createElementVNode("td", null, [
34125
- fieldMapping[selectedTransformField.value.id] ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34126
- key: 0,
34127
- modelValue: selectedSourceValue.value,
34128
- "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => selectedSourceValue.value = $event),
34129
- searchable: "",
34130
- options: sourceValueOptions.value,
34131
- placeholder: "Select source value"
34132
- }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34133
- key: 1,
34134
- "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => selectedSourceValue.value = $event),
34135
- type: "text",
34136
- placeholder: "Source value"
34137
- }, null, 512)), [
34138
- [vue.vModelText, selectedSourceValue.value]
34139
- ])
34140
- ]),
34141
- vue.createElementVNode("td", null, [
34142
- selectedTransformField.value.options && selectedTransformField.value.options.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34143
- key: 0,
34144
- modelValue: selectedTargetValue.value,
34145
- "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => selectedTargetValue.value = $event),
34146
- searchable: "",
34147
- options: selectedTransformField.value.options,
34148
- placeholder: "Select target value"
34149
- }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34150
- key: 1,
34151
- "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => selectedTargetValue.value = $event),
34152
- type: "text",
34153
- placeholder: "Target value"
34154
- }, null, 512)), [
34155
- [vue.vModelText, selectedTargetValue.value]
34156
- ])
34157
- ]),
34158
- vue.createElementVNode("td", null, [
34159
- vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34160
- thin: "",
34161
- icon: "add",
34162
- color: "primary",
34163
- onClick: _cache[9] || (_cache[9] = ($event) => addTransformation(selectedTransformField.value.id))
34164
- }, null, 512), [
34165
- [_directive_tooltip, "Add"]
34166
- ])
34167
34160
  ])
34168
34161
  ])
34169
- ])
34170
- ]),
34171
- vue.createVNode(vue.unref(Btn), {
34172
- thin: "",
34173
- value: "Close",
34174
- onClick: _cache[10] || (_cache[10] = ($event) => showTransformDialog.value = false)
34175
- })
34176
- ])) : vue.createCommentVNode("", true)
34177
- ]),
34178
- _: 1
34179
- }, 8, ["visible"]),
34180
- vue.createVNode(vue.unref(_sfc_main$f), {
34181
- visible: showRelatedDialog.value,
34182
- "onUpdate:visible": _cache[17] || (_cache[17] = ($event) => showRelatedDialog.value = $event),
34183
- title: "Configure Related Data",
34184
- width: "900"
34185
- }, {
34186
- default: vue.withCtx(() => {
34187
- var _a;
34188
- return [
34189
- selectedRelationField.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_21, [
34190
- vue.createElementVNode("p", null, "Upload a file with related data for " + vue.toDisplayString(selectedRelationField.value.label), 1),
34191
- !relatedFiles[selectedRelationField.value.id] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_22, [
34192
- vue.createVNode(vue.unref(DragOver), {
34193
- accept: ".csv,.xls,.xlsx",
34194
- onAddFiles: _cache[12] || (_cache[12] = (files2) => {
34195
- if (files2[0]) processRelatedFile(selectedRelationField.value.id, files2[0]);
34162
+ ]),
34163
+ vue.createVNode(vue.unref(Btn), {
34164
+ thin: "",
34165
+ value: "Close",
34166
+ onClick: _cache[10] || (_cache[10] = ($event) => showTransformDialog.value = false)
34167
+ })
34168
+ ])) : vue.createCommentVNode("", true)
34169
+ ]),
34170
+ _: 1
34171
+ }, 8, ["visible"]),
34172
+ vue.createVNode(vue.unref(_sfc_main$f), {
34173
+ visible: showRelatedDialog.value,
34174
+ "onUpdate:visible": _cache[17] || (_cache[17] = ($event) => showRelatedDialog.value = $event),
34175
+ title: "Configure Related Data",
34176
+ width: "900"
34177
+ }, {
34178
+ default: vue.withCtx(() => {
34179
+ var _a;
34180
+ return [
34181
+ selectedRelationField.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_20, [
34182
+ vue.createElementVNode("p", null, "Upload a file with related data for " + vue.toDisplayString(selectedRelationField.value.label), 1),
34183
+ !relatedFiles[selectedRelationField.value.id] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_21, [
34184
+ vue.createVNode(vue.unref(DragOver), {
34185
+ accept: ".csv,.xls,.xlsx",
34186
+ onAddFiles: _cache[12] || (_cache[12] = (files2) => {
34187
+ if (files2[0]) processRelatedFile(selectedRelationField.value.id, files2[0]);
34188
+ })
34189
+ }, {
34190
+ default: vue.withCtx(() => [
34191
+ vue.createVNode(vue.unref(_sfc_main$15), { class: "flex flex-column items-center justify-center outline-dashed outline-3 hover bg-input" }, {
34192
+ default: vue.withCtx(() => [
34193
+ vue.createVNode(vue.unref(_sfc_main$v), {
34194
+ name: "upload",
34195
+ size: "5"
34196
+ }),
34197
+ _cache[41] || (_cache[41] = vue.createElementVNode("p", null, "Drag and drop an Excel or CSV file here", -1)),
34198
+ _cache[42] || (_cache[42] = vue.createElementVNode("p", null, "or click to select a file", -1)),
34199
+ _cache[43] || (_cache[43] = vue.createElementVNode("p", { class: "txt-12 color-gray" }, " Accepts .xlsx, .xls, and .csv files ", -1))
34200
+ ]),
34201
+ _: 1
34202
+ })
34203
+ ]),
34204
+ _: 1
34196
34205
  })
34197
- }, {
34198
- default: vue.withCtx(() => [
34199
- vue.createVNode(vue.unref(_sfc_main$15), { class: "flex flex-column items-center justify-center outline-dashed outline-3 hover" }, {
34206
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_22, [
34207
+ vue.createElementVNode("div", _hoisted_23, [
34208
+ vue.createVNode(vue.unref(Pill), null, {
34200
34209
  default: vue.withCtx(() => [
34201
- vue.createVNode(vue.unref(_sfc_main$v), {
34202
- name: "upload_file",
34203
- size: "5"
34204
- }),
34205
- _cache[42] || (_cache[42] = vue.createElementVNode("p", null, "Drag and drop an Excel or CSV file here", -1)),
34206
- _cache[43] || (_cache[43] = vue.createElementVNode("p", null, "or click to select a file", -1)),
34207
- _cache[44] || (_cache[44] = vue.createElementVNode("p", { class: "txt-12 color-gray" }, " Accepts .xlsx, .xls, and .csv files ", -1))
34210
+ vue.createTextVNode(vue.toDisplayString(relatedFiles[selectedRelationField.value.id].name), 1)
34208
34211
  ]),
34209
34212
  _: 1
34213
+ }),
34214
+ vue.createVNode(vue.unref(Btn), {
34215
+ thin: "",
34216
+ round: "",
34217
+ value: "Change File",
34218
+ onClick: _cache[13] || (_cache[13] = ($event) => relatedFiles[selectedRelationField.value.id] = null)
34210
34219
  })
34211
34220
  ]),
34212
- _: 1
34213
- })
34214
- ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_23, [
34215
- vue.createElementVNode("div", _hoisted_24, [
34216
- vue.createVNode(vue.unref(Pill), null, {
34217
- default: vue.withCtx(() => [
34218
- vue.createTextVNode(vue.toDisplayString(relatedFiles[selectedRelationField.value.id].name), 1)
34221
+ relatedFileData[selectedRelationField.value.id] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_24, [
34222
+ _cache[46] || (_cache[46] = vue.createElementVNode("h4", null, "Configure Relationship", -1)),
34223
+ vue.createElementVNode("div", _hoisted_25, [
34224
+ vue.createVNode(vue.unref(SelectInput), {
34225
+ modelValue: parentKeyField[selectedRelationField.value.id],
34226
+ "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => parentKeyField[selectedRelationField.value.id] = $event),
34227
+ options: fileHeaders.value,
34228
+ label: "Source Key Field (from this file)"
34229
+ }, null, 8, ["modelValue", "options"]),
34230
+ vue.createVNode(vue.unref(SelectInput), {
34231
+ modelValue: relatedKeyField[selectedRelationField.value.id],
34232
+ "onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => relatedKeyField[selectedRelationField.value.id] = $event),
34233
+ options: Object.keys(relatedFileData[selectedRelationField.value.id][0] || {}),
34234
+ label: "Related Key Field (from related file)"
34235
+ }, null, 8, ["modelValue", "options"])
34219
34236
  ]),
34220
- _: 1
34221
- }),
34222
- vue.createVNode(vue.unref(Btn), {
34223
- thin: "",
34224
- round: "",
34225
- value: "Change File",
34226
- onClick: _cache[13] || (_cache[13] = ($event) => relatedFiles[selectedRelationField.value.id] = null)
34227
- })
34237
+ _cache[47] || (_cache[47] = vue.createElementVNode("h4", null, "Map Related Fields", -1)),
34238
+ vue.createElementVNode("table", null, [
34239
+ _cache[45] || (_cache[45] = vue.createElementVNode("thead", null, [
34240
+ vue.createElementVNode("tr", null, [
34241
+ vue.createElementVNode("th", null, "Child Field"),
34242
+ vue.createElementVNode("th", null, "Related File Column"),
34243
+ vue.createElementVNode("th", null, "Default Value"),
34244
+ vue.createElementVNode("th", null, "Data Type"),
34245
+ vue.createElementVNode("th", null, "Actions")
34246
+ ])
34247
+ ], -1)),
34248
+ vue.createElementVNode("tbody", null, [
34249
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(((_a = selectedRelationField.value.attrs) == null ? void 0 : _a.schema) || [], (schemaItem) => {
34250
+ var _a2, _b;
34251
+ return vue.openBlock(), vue.createElementBlock("tr", {
34252
+ key: schemaItem.id
34253
+ }, [
34254
+ vue.createElementVNode("td", null, vue.toDisplayString(schemaItem.label), 1),
34255
+ vue.createElementVNode("td", null, [
34256
+ vue.createVNode(vue.unref(SelectInput), {
34257
+ modelValue: relatedFileMappings[selectedRelationField.value.id][schemaItem.id],
34258
+ "onUpdate:modelValue": ($event) => relatedFileMappings[selectedRelationField.value.id][schemaItem.id] = $event,
34259
+ options: Object.keys(relatedFileData[selectedRelationField.value.id][0] || {}),
34260
+ placeholder: "Select column..."
34261
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "options"])
34262
+ ]),
34263
+ vue.createElementVNode("td", null, [
34264
+ vue.createElementVNode("div", _hoisted_26, [
34265
+ vue.createTextVNode(vue.toDisplayString(initRelatedDefaultValue(selectedRelationField.value.id, schemaItem.id)) + " ", 1),
34266
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(renderField)(getRelatedFieldWithDefaults(selectedRelationField.value.id, schemaItem)))))
34267
+ ])
34268
+ ]),
34269
+ vue.createElementVNode("td", null, [
34270
+ vue.createVNode(vue.unref(SelectInput), {
34271
+ modelValue: relatedFieldDataTypes[`${selectedRelationField.value.id}.${schemaItem.id}`],
34272
+ "onUpdate:modelValue": ($event) => relatedFieldDataTypes[`${selectedRelationField.value.id}.${schemaItem.id}`] = $event,
34273
+ options: dataTypeOptions,
34274
+ disabled: !((_a2 = relatedFileMappings[selectedRelationField.value.id]) == null ? void 0 : _a2[schemaItem.id]) && !((_b = relatedDefaultValues[selectedRelationField.value.id]) == null ? void 0 : _b[schemaItem.id])
34275
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
34276
+ ]),
34277
+ vue.createElementVNode("td", null, [
34278
+ vue.createElementVNode("div", _hoisted_27, [
34279
+ vue.createVNode(vue.unref(Btn), {
34280
+ thin: "",
34281
+ icon: "transform",
34282
+ onClick: ($event) => openRelatedTransformDialog(selectedRelationField.value.id, schemaItem)
34283
+ }, {
34284
+ default: vue.withCtx(() => _cache[44] || (_cache[44] = [
34285
+ vue.createTextVNode(" Transform ")
34286
+ ])),
34287
+ _: 2
34288
+ }, 1032, ["onClick"])
34289
+ ])
34290
+ ])
34291
+ ]);
34292
+ }), 128))
34293
+ ])
34294
+ ])
34295
+ ])) : vue.createCommentVNode("", true)
34296
+ ])),
34297
+ vue.createVNode(vue.unref(Btn), {
34298
+ value: "Close",
34299
+ onClick: _cache[16] || (_cache[16] = ($event) => showRelatedDialog.value = false)
34300
+ })
34301
+ ])) : vue.createCommentVNode("", true)
34302
+ ];
34303
+ }),
34304
+ _: 1
34305
+ }, 8, ["visible"]),
34306
+ vue.createVNode(vue.unref(_sfc_main$f), {
34307
+ visible: showPreviewModal.value,
34308
+ "onUpdate:visible": _cache[21] || (_cache[21] = ($event) => showPreviewModal.value = $event),
34309
+ title: "Data Preview & Edit",
34310
+ width: "1200"
34311
+ }, {
34312
+ default: vue.withCtx(() => [
34313
+ vue.createElementVNode("div", null, [
34314
+ vue.createVNode(vue.unref(Spreadsheet), {
34315
+ modelValue: previewData.value,
34316
+ "onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => previewData.value = $event),
34317
+ "column-config": spreadsheetColumns.value,
34318
+ "allow-add-row": ""
34319
+ }, null, 8, ["modelValue", "column-config"])
34320
+ ]),
34321
+ vue.createElementVNode("div", null, [
34322
+ vue.createElementVNode("div", null, " Showing all " + vue.toDisplayString(previewData.value.length) + " records. You can edit values directly. ", 1),
34323
+ vue.createElementVNode("div", null, [
34324
+ vue.createVNode(vue.unref(Btn), {
34325
+ value: "Cancel",
34326
+ onClick: _cache[19] || (_cache[19] = ($event) => showPreviewModal.value = false)
34327
+ }),
34328
+ vue.createVNode(vue.unref(Btn), {
34329
+ value: "Import Data",
34330
+ onClick: _cache[20] || (_cache[20] = ($event) => processData())
34331
+ })
34332
+ ])
34333
+ ])
34334
+ ]),
34335
+ _: 1
34336
+ }, 8, ["visible"]),
34337
+ vue.createVNode(vue.unref(_sfc_main$f), {
34338
+ visible: showRelatedTransformDialog.value,
34339
+ "onUpdate:visible": _cache[29] || (_cache[29] = ($event) => showRelatedTransformDialog.value = $event),
34340
+ title: "Configure Related Transformations",
34341
+ width: "800"
34342
+ }, {
34343
+ default: vue.withCtx(() => {
34344
+ var _a, _b, _c;
34345
+ return [
34346
+ selectedRelatedTransformField.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_28, [
34347
+ vue.createElementVNode("p", null, [
34348
+ _cache[48] || (_cache[48] = vue.createTextVNode("Create transformations for ")),
34349
+ vue.createElementVNode("strong", null, vue.toDisplayString(selectedRelatedTransformField.value.field.label), 1),
34350
+ vue.createTextVNode(" in " + vue.toDisplayString((_a = selectedRelationField.value) == null ? void 0 : _a.label), 1)
34228
34351
  ]),
34229
- relatedFileData[selectedRelationField.value.id] ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_25, [
34230
- _cache[47] || (_cache[47] = vue.createElementVNode("h4", null, "Configure Relationship", -1)),
34231
- vue.createElementVNode("div", _hoisted_26, [
34232
- vue.createVNode(vue.unref(SelectInput), {
34233
- modelValue: parentKeyField[selectedRelationField.value.id],
34234
- "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => parentKeyField[selectedRelationField.value.id] = $event),
34235
- options: fileHeaders.value,
34236
- label: "Source Key Field (from this file)"
34237
- }, null, 8, ["modelValue", "options"]),
34238
- vue.createVNode(vue.unref(SelectInput), {
34239
- modelValue: relatedKeyField[selectedRelationField.value.id],
34240
- "onUpdate:modelValue": _cache[15] || (_cache[15] = ($event) => relatedKeyField[selectedRelationField.value.id] = $event),
34241
- options: Object.keys(relatedFileData[selectedRelationField.value.id][0] || {}),
34242
- label: "Related Key Field (from related file)"
34243
- }, null, 8, ["modelValue", "options"])
34244
- ]),
34245
- _cache[48] || (_cache[48] = vue.createElementVNode("h4", null, "Map Related Fields", -1)),
34352
+ vue.createElementVNode("div", null, [
34353
+ vue.createElementVNode("div", null, [
34354
+ vue.createVNode(vue.unref(Btn), {
34355
+ thin: "",
34356
+ icon: "auto_awesome",
34357
+ value: "Autolink",
34358
+ color: "primary",
34359
+ onClick: _cache[22] || (_cache[22] = ($event) => autoPopulateRelatedTransformations(
34360
+ selectedRelatedTransformField.value.parentId,
34361
+ selectedRelatedTransformField.value.field.id
34362
+ ))
34363
+ })
34364
+ ])
34365
+ ]),
34366
+ vue.createElementVNode("div", null, [
34246
34367
  vue.createElementVNode("table", null, [
34247
- _cache[46] || (_cache[46] = vue.createElementVNode("thead", null, [
34368
+ _cache[49] || (_cache[49] = vue.createElementVNode("thead", null, [
34248
34369
  vue.createElementVNode("tr", null, [
34249
- vue.createElementVNode("th", null, "Child Field"),
34250
- vue.createElementVNode("th", null, "Related File Column"),
34251
- vue.createElementVNode("th", null, "Default Value"),
34252
- vue.createElementVNode("th", null, "Data Type"),
34253
- vue.createElementVNode("th", null, "Actions")
34370
+ vue.createElementVNode("th", null, "Source Value"),
34371
+ vue.createElementVNode("th", null, "Target Value"),
34372
+ vue.createElementVNode("th", null, "Action")
34254
34373
  ])
34255
34374
  ], -1)),
34256
34375
  vue.createElementVNode("tbody", null, [
34257
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(((_a = selectedRelationField.value.attrs) == null ? void 0 : _a.schema) || [], (schemaItem) => {
34258
- var _a2, _b;
34259
- return vue.openBlock(), vue.createElementBlock("tr", {
34260
- key: schemaItem.id
34261
- }, [
34262
- vue.createElementVNode("td", null, vue.toDisplayString(schemaItem.label), 1),
34263
- vue.createElementVNode("td", null, [
34264
- vue.createVNode(vue.unref(SelectInput), {
34265
- modelValue: relatedFileMappings[selectedRelationField.value.id][schemaItem.id],
34266
- "onUpdate:modelValue": ($event) => relatedFileMappings[selectedRelationField.value.id][schemaItem.id] = $event,
34267
- options: Object.keys(relatedFileData[selectedRelationField.value.id][0] || {}),
34268
- placeholder: "Select column..."
34269
- }, null, 8, ["modelValue", "onUpdate:modelValue", "options"])
34270
- ]),
34271
- vue.createElementVNode("td", null, [
34272
- vue.createElementVNode("div", _hoisted_27, [
34273
- vue.createTextVNode(vue.toDisplayString(initRelatedDefaultValue(selectedRelationField.value.id, schemaItem.id)) + " ", 1),
34274
- (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(vue.unref(renderField)(getRelatedFieldWithDefaults(selectedRelationField.value.id, schemaItem)))))
34275
- ])
34276
- ]),
34376
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(((_b = relatedTransformations[selectedRelatedTransformField.value.parentId]) == null ? void 0 : _b[selectedRelatedTransformField.value.field.id]) || [], (transform, index2) => {
34377
+ return vue.openBlock(), vue.createElementBlock("tr", { key: index2 }, [
34378
+ vue.createElementVNode("td", null, vue.toDisplayString(transform.sourceValue), 1),
34379
+ vue.createElementVNode("td", null, vue.toDisplayString(transform.targetValue), 1),
34277
34380
  vue.createElementVNode("td", null, [
34278
- vue.createVNode(vue.unref(SelectInput), {
34279
- modelValue: relatedFieldDataTypes[`${selectedRelationField.value.id}.${schemaItem.id}`],
34280
- "onUpdate:modelValue": ($event) => relatedFieldDataTypes[`${selectedRelationField.value.id}.${schemaItem.id}`] = $event,
34281
- options: dataTypeOptions,
34282
- disabled: !((_a2 = relatedFileMappings[selectedRelationField.value.id]) == null ? void 0 : _a2[schemaItem.id]) && !((_b = relatedDefaultValues[selectedRelationField.value.id]) == null ? void 0 : _b[schemaItem.id])
34283
- }, null, 8, ["modelValue", "onUpdate:modelValue", "disabled"])
34284
- ]),
34285
- vue.createElementVNode("td", null, [
34286
- vue.createElementVNode("div", _hoisted_28, [
34287
- vue.createVNode(vue.unref(Btn), {
34288
- thin: "",
34289
- icon: "transform",
34290
- onClick: ($event) => openRelatedTransformDialog(selectedRelationField.value.id, schemaItem)
34291
- }, {
34292
- default: vue.withCtx(() => _cache[45] || (_cache[45] = [
34293
- vue.createTextVNode(" Transform ")
34294
- ])),
34295
- _: 2
34296
- }, 1032, ["onClick"])
34381
+ vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34382
+ thin: "",
34383
+ icon: "delete",
34384
+ color: "red",
34385
+ onClick: ($event) => removeRelatedTransformation(
34386
+ selectedRelatedTransformField.value.parentId,
34387
+ selectedRelatedTransformField.value.field.id,
34388
+ index2
34389
+ )
34390
+ }, null, 8, ["onClick"]), [
34391
+ [_directive_tooltip, "Remove"]
34297
34392
  ])
34298
34393
  ])
34299
34394
  ]);
34300
- }), 128))
34301
- ])
34302
- ])
34303
- ])) : vue.createCommentVNode("", true)
34304
- ])),
34305
- vue.createVNode(vue.unref(Btn), {
34306
- value: "Close",
34307
- onClick: _cache[16] || (_cache[16] = ($event) => showRelatedDialog.value = false)
34308
- })
34309
- ])) : vue.createCommentVNode("", true)
34310
- ];
34311
- }),
34312
- _: 1
34313
- }, 8, ["visible"]),
34314
- vue.createVNode(vue.unref(_sfc_main$f), {
34315
- visible: showPreviewModal.value,
34316
- "onUpdate:visible": _cache[21] || (_cache[21] = ($event) => showPreviewModal.value = $event),
34317
- title: "Data Preview & Edit",
34318
- width: "1200"
34319
- }, {
34320
- default: vue.withCtx(() => [
34321
- vue.createElementVNode("div", null, [
34322
- vue.createVNode(vue.unref(Spreadsheet), {
34323
- modelValue: previewData.value,
34324
- "onUpdate:modelValue": _cache[18] || (_cache[18] = ($event) => previewData.value = $event),
34325
- "column-config": spreadsheetColumns.value,
34326
- "allow-add-row": ""
34327
- }, null, 8, ["modelValue", "column-config"])
34328
- ]),
34329
- vue.createElementVNode("div", null, [
34330
- vue.createElementVNode("div", null, " Showing all " + vue.toDisplayString(previewData.value.length) + " records. You can edit values directly. ", 1),
34331
- vue.createElementVNode("div", null, [
34332
- vue.createVNode(vue.unref(Btn), {
34333
- value: "Cancel",
34334
- onClick: _cache[19] || (_cache[19] = ($event) => showPreviewModal.value = false)
34335
- }),
34336
- vue.createVNode(vue.unref(Btn), {
34337
- value: "Import Data",
34338
- onClick: _cache[20] || (_cache[20] = ($event) => processData())
34339
- })
34340
- ])
34341
- ])
34342
- ]),
34343
- _: 1
34344
- }, 8, ["visible"]),
34345
- vue.createVNode(vue.unref(_sfc_main$f), {
34346
- visible: showRelatedTransformDialog.value,
34347
- "onUpdate:visible": _cache[29] || (_cache[29] = ($event) => showRelatedTransformDialog.value = $event),
34348
- title: "Configure Related Transformations",
34349
- width: "800"
34350
- }, {
34351
- default: vue.withCtx(() => {
34352
- var _a, _b, _c;
34353
- return [
34354
- selectedRelatedTransformField.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_29, [
34355
- vue.createElementVNode("p", null, [
34356
- _cache[49] || (_cache[49] = vue.createTextVNode("Create transformations for ")),
34357
- vue.createElementVNode("strong", null, vue.toDisplayString(selectedRelatedTransformField.value.field.label), 1),
34358
- vue.createTextVNode(" in " + vue.toDisplayString((_a = selectedRelationField.value) == null ? void 0 : _a.label), 1)
34359
- ]),
34360
- vue.createElementVNode("div", null, [
34361
- vue.createElementVNode("div", null, [
34362
- vue.createVNode(vue.unref(Btn), {
34363
- thin: "",
34364
- icon: "auto_awesome",
34365
- value: "Autolink",
34366
- color: "primary",
34367
- onClick: _cache[22] || (_cache[22] = ($event) => autoPopulateRelatedTransformations(
34368
- selectedRelatedTransformField.value.parentId,
34369
- selectedRelatedTransformField.value.field.id
34370
- ))
34371
- })
34372
- ])
34373
- ]),
34374
- vue.createElementVNode("div", null, [
34375
- vue.createElementVNode("table", null, [
34376
- _cache[50] || (_cache[50] = vue.createElementVNode("thead", null, [
34377
- vue.createElementVNode("tr", null, [
34378
- vue.createElementVNode("th", null, "Source Value"),
34379
- vue.createElementVNode("th", null, "Target Value"),
34380
- vue.createElementVNode("th", null, "Action")
34381
- ])
34382
- ], -1)),
34383
- vue.createElementVNode("tbody", null, [
34384
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(((_b = relatedTransformations[selectedRelatedTransformField.value.parentId]) == null ? void 0 : _b[selectedRelatedTransformField.value.field.id]) || [], (transform, index2) => {
34385
- return vue.openBlock(), vue.createElementBlock("tr", { key: index2 }, [
34386
- vue.createElementVNode("td", null, vue.toDisplayString(transform.sourceValue), 1),
34387
- vue.createElementVNode("td", null, vue.toDisplayString(transform.targetValue), 1),
34395
+ }), 128)),
34396
+ vue.createElementVNode("tr", null, [
34397
+ vue.createElementVNode("td", null, [
34398
+ ((_c = relatedFileMappings[selectedRelatedTransformField.value.parentId]) == null ? void 0 : _c[selectedRelatedTransformField.value.field.id]) ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34399
+ key: 0,
34400
+ modelValue: selectedRelatedSourceValue.value,
34401
+ "onUpdate:modelValue": _cache[23] || (_cache[23] = ($event) => selectedRelatedSourceValue.value = $event),
34402
+ searchable: "",
34403
+ options: relatedSourceValueOptions.value,
34404
+ placeholder: "Select source value"
34405
+ }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34406
+ key: 1,
34407
+ "onUpdate:modelValue": _cache[24] || (_cache[24] = ($event) => selectedRelatedSourceValue.value = $event),
34408
+ type: "text",
34409
+ placeholder: "Source value"
34410
+ }, null, 512)), [
34411
+ [vue.vModelText, selectedRelatedSourceValue.value]
34412
+ ])
34413
+ ]),
34414
+ vue.createElementVNode("td", null, [
34415
+ selectedRelatedTransformField.value.field.options && selectedRelatedTransformField.value.field.options.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34416
+ key: 0,
34417
+ modelValue: selectedRelatedTargetValue.value,
34418
+ "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => selectedRelatedTargetValue.value = $event),
34419
+ searchable: "",
34420
+ options: selectedRelatedTransformField.value.field.options,
34421
+ placeholder: "Select target value"
34422
+ }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34423
+ key: 1,
34424
+ "onUpdate:modelValue": _cache[26] || (_cache[26] = ($event) => selectedRelatedTargetValue.value = $event),
34425
+ type: "text",
34426
+ placeholder: "Target value"
34427
+ }, null, 512)), [
34428
+ [vue.vModelText, selectedRelatedTargetValue.value]
34429
+ ])
34430
+ ]),
34388
34431
  vue.createElementVNode("td", null, [
34389
34432
  vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34390
34433
  thin: "",
34391
- icon: "delete",
34392
- color: "red",
34393
- onClick: ($event) => removeRelatedTransformation(
34434
+ icon: "add",
34435
+ color: "primary",
34436
+ onClick: _cache[27] || (_cache[27] = ($event) => addRelatedTransformation(
34394
34437
  selectedRelatedTransformField.value.parentId,
34395
- selectedRelatedTransformField.value.field.id,
34396
- index2
34397
- )
34398
- }, null, 8, ["onClick"]), [
34399
- [_directive_tooltip, "Remove"]
34438
+ selectedRelatedTransformField.value.field.id
34439
+ ))
34440
+ }, null, 512), [
34441
+ [_directive_tooltip, "Add"]
34400
34442
  ])
34401
34443
  ])
34402
- ]);
34403
- }), 128)),
34404
- vue.createElementVNode("tr", null, [
34405
- vue.createElementVNode("td", null, [
34406
- ((_c = relatedFileMappings[selectedRelatedTransformField.value.parentId]) == null ? void 0 : _c[selectedRelatedTransformField.value.field.id]) ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34407
- key: 0,
34408
- modelValue: selectedRelatedSourceValue.value,
34409
- "onUpdate:modelValue": _cache[23] || (_cache[23] = ($event) => selectedRelatedSourceValue.value = $event),
34410
- searchable: "",
34411
- options: relatedSourceValueOptions.value,
34412
- placeholder: "Select source value"
34413
- }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34414
- key: 1,
34415
- "onUpdate:modelValue": _cache[24] || (_cache[24] = ($event) => selectedRelatedSourceValue.value = $event),
34416
- type: "text",
34417
- placeholder: "Source value"
34418
- }, null, 512)), [
34419
- [vue.vModelText, selectedRelatedSourceValue.value]
34420
- ])
34421
- ]),
34422
- vue.createElementVNode("td", null, [
34423
- selectedRelatedTransformField.value.field.options && selectedRelatedTransformField.value.field.options.length > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(SelectInput), {
34424
- key: 0,
34425
- modelValue: selectedRelatedTargetValue.value,
34426
- "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => selectedRelatedTargetValue.value = $event),
34427
- searchable: "",
34428
- options: selectedRelatedTransformField.value.field.options,
34429
- placeholder: "Select target value"
34430
- }, null, 8, ["modelValue", "options"])) : vue.withDirectives((vue.openBlock(), vue.createElementBlock("input", {
34431
- key: 1,
34432
- "onUpdate:modelValue": _cache[26] || (_cache[26] = ($event) => selectedRelatedTargetValue.value = $event),
34433
- type: "text",
34434
- placeholder: "Target value"
34435
- }, null, 512)), [
34436
- [vue.vModelText, selectedRelatedTargetValue.value]
34437
- ])
34438
- ]),
34439
- vue.createElementVNode("td", null, [
34440
- vue.withDirectives(vue.createVNode(vue.unref(Btn), {
34441
- thin: "",
34442
- icon: "add",
34443
- color: "primary",
34444
- onClick: _cache[27] || (_cache[27] = ($event) => addRelatedTransformation(
34445
- selectedRelatedTransformField.value.parentId,
34446
- selectedRelatedTransformField.value.field.id
34447
- ))
34448
- }, null, 512), [
34449
- [_directive_tooltip, "Add"]
34450
- ])
34451
34444
  ])
34452
34445
  ])
34453
34446
  ])
34447
+ ]),
34448
+ vue.createElementVNode("div", null, [
34449
+ vue.createVNode(vue.unref(Btn), {
34450
+ onClick: _cache[28] || (_cache[28] = ($event) => showRelatedTransformDialog.value = false)
34451
+ }, {
34452
+ default: vue.withCtx(() => _cache[50] || (_cache[50] = [
34453
+ vue.createTextVNode(" Close ")
34454
+ ])),
34455
+ _: 1
34456
+ })
34454
34457
  ])
34455
- ]),
34456
- vue.createElementVNode("div", null, [
34457
- vue.createVNode(vue.unref(Btn), {
34458
- onClick: _cache[28] || (_cache[28] = ($event) => showRelatedTransformDialog.value = false)
34459
- }, {
34460
- default: vue.withCtx(() => _cache[51] || (_cache[51] = [
34461
- vue.createTextVNode(" Close ")
34462
- ])),
34463
- _: 1
34464
- })
34465
- ])
34466
- ])) : vue.createCommentVNode("", true)
34467
- ];
34468
- }),
34469
- _: 1
34470
- }, 8, ["visible"])
34471
- ]);
34458
+ ])) : vue.createCommentVNode("", true)
34459
+ ];
34460
+ }),
34461
+ _: 1
34462
+ }, 8, ["visible"])
34463
+ ]),
34464
+ _: 1
34465
+ });
34472
34466
  };
34473
34467
  }
34474
34468
  });