demf-mashups-editor 3.0.1 → 3.0.2
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/assets/{FlexibleRowGridBlock-apvtt-Bj.js → FlexibleRowGridBlock-EvWG9YQy.js} +2 -2
- package/assets/{FlexibleRowGridBlock-apvtt-Bj.js.map → FlexibleRowGridBlock-EvWG9YQy.js.map} +1 -1
- package/assets/{FlexibleValueBlock-BgfEuGBX.js → FlexibleValueBlock-BOn_Vvrx.js} +2 -2
- package/assets/{FlexibleValueBlock-BgfEuGBX.js.map → FlexibleValueBlock-BOn_Vvrx.js.map} +1 -1
- package/assets/{main-IVe2EiG4.js → main-DbyZehDf.js} +3 -3
- package/assets/{main-IVe2EiG4.js.map → main-DbyZehDf.js.map} +1 -1
- package/mf-app.js +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
System.register(["./main-
|
|
1
|
+
System.register(["./main-DbyZehDf.js","single-spa-vue"],(function(J,q){"use strict";var U,_,O,f,E,N,g,c,u,w,R,W,I,S,h,$,x;return{setters:[r=>{U=r._,_=r.r,O=r.c,f=r.o,E=r.F,N=r.a,g=r.b,c=r.w,u=r.d,w=r.e,R=r.n,W=r.f,I=r.i,S=r.g,h=r.h,$=r.j,x=r.k},null],execute:(function(){var r=document.createElement("style");r.textContent=`.not-allowed[data-v-493e51e9]{cursor:default}
|
|
2
2
|
/*$vite$:1*/`,document.head.appendChild(r);const A={props:["dynamicParams","data"],setup(n){const i=I("formData"),B=JSON.parse(JSON.stringify(i.parameters)),a=S(V(B)),F=["=","!=","<",">","<=",">=","includes","not includes","matches","exists"],b=h(()=>n.dynamicParams.showOperatorColumn),y=h(()=>n.dynamicParams.showValueColumn),m=h(()=>n.data.content),k=h(()=>m.value?$(n.data.content):n.dynamicParams.propertyOptions);x(k,e=>{for(let t of i.dynamicParams)if(t.blockId==n.dynamicParams.blockId)return t.propertyOptions=e,t}),x(a,()=>{let e=[];if(a.value.forEach((t,l)=>{t.property&&(!b.value||t.operator)&&(!y.value||t.operator==="exists"||t.value)&&(t.complete=!0,e.push(...o(t,l)),a.value[l+1]||a.value.push({property:null,operator:null,value:"",complete:!1}))}),e.length>0){i.parameters=i.parameters.filter(s=>!s.name.startsWith("__key__")&&!s.name.startsWith("__operator_")&&!s.name.startsWith("__item_"));let t=[...i.parameters,...e],l=new Set;i.parameters=t.filter(s=>{let d=JSON.stringify(s);return l.has(d)?!1:(l.add(d),!0)})}},{deep:!0});function C(e,t){e&&this.removeRow(t)}function P(e){a.value.splice(e,1)}function o(e,t){let l=[];return e.complete&&(l.push({name:`__key__${t}`,property:e.property,bind:!0,custom:!0}),b.value&&e.operator&&l.push({name:`__operator_${t}`,property:e.operator,bind:!0,custom:!0}),y.value&&e.value&&l.push({name:`__item_${t}`,property:e.value,bind:!0,custom:!0})),l}function V(e){if(!Array.isArray(e)){console.error("Error: objects must be an array.");return}if(e.length===0)return[{property:null,operator:null,value:"",complete:!1}];let t={};e.forEach(d=>{let p=d.name.split("_").reverse()[0];t[p]||(t[p]=[]),t[p].push(d)});let l=Object.values(t).map(d=>{let p={property:null,operator:null,value:"",complete:!0};return d.forEach(v=>{v.name.startsWith("__key__")?p.property=v.property:v.name.startsWith("__operator_")?p.operator=v.property:v.name.startsWith("__item_")&&(p.value=v.property)}),p}),s=l[l.length-1];return s.property===null&&s.operator===null&&s.value===""&&(s.complete=!1),l}return{rows:a,operators:F,showOperatorColumn:b,showValueColumn:y,properties:k,removeRow:P,generateObjects:o,handleIconClick:C}}},D={class:"mb-2"};function j(n,i,B,a,F,b){const y=_("v-select"),m=_("v-col"),k=_("v-text-field"),C=_("v-row"),P=_("v-icon");return f(),O("div",D,[(f(!0),O(E,null,N(a.rows,(o,V)=>(f(),g(C,{key:V,dense:!0,"no-gutters":!0,align:"start",justify:"space-between"},{default:c(()=>[u(m,{cols:"11"},{default:c(()=>[u(C,{dense:!0,"no-gutters":!1,class:"mb-2"},{default:c(()=>[u(m,{cols:a.showOperatorColumn?12:"auto",lg:"4"},{default:c(()=>[u(y,{items:a.properties,modelValue:o.property,"onUpdate:modelValue":e=>o.property=e,label:n.$t("labels.property"),color:"primary",variant:"outlined",density:"compact","hide-details":!0},null,8,["items","modelValue","onUpdate:modelValue","label"])]),_:2},1032,["cols"]),a.showOperatorColumn?(f(),g(m,{key:0,cols:"5",lg:"3"},{default:c(()=>[u(y,{items:a.operators,modelValue:o.operator,"onUpdate:modelValue":e=>o.operator=e,label:n.$t("labels.operator"),class:"mb-4",color:"primary",variant:"outlined",density:"compact","hide-details":!0},null,8,["items","modelValue","onUpdate:modelValue","label"])]),_:2},1024)):w("",!0),a.showValueColumn&&o.operator!=="exists"?(f(),g(m,{key:1,cols:a.showOperatorColumn?7:6,lg:"5"},{default:c(()=>[u(k,{modelValue:o.value,"onUpdate:modelValue":e=>o.value=e,label:n.$t("labels.value"),class:"mb-4",color:"primary",variant:"outlined",density:"compact","hide-details":!0},null,8,["modelValue","onUpdate:modelValue","label"])]),_:2},1032,["cols"])):w("",!0)]),_:2},1024)]),_:2},1024),u(m,{cols:" 1",class:"d-flex justify-center align-start"},{default:c(()=>[u(P,{onClick:e=>a.handleIconClick(o.complete,V),color:o.complete?"secondary":"grey",class:R([{"not-allowed":!o.complete},"mt-2"])},{default:c(()=>[...i[0]||(i[0]=[W(" mdi-delete ",-1)])]),_:1},8,["onClick","color","class"])]),_:2},1024)]),_:2},1024))),128))])}const z=J("default",U(A,[["render",j],["__scopeId","data-v-493e51e9"]]))})}}));
|
|
3
|
-
//# sourceMappingURL=FlexibleRowGridBlock-
|
|
3
|
+
//# sourceMappingURL=FlexibleRowGridBlock-EvWG9YQy.js.map
|
package/assets/{FlexibleRowGridBlock-apvtt-Bj.js.map → FlexibleRowGridBlock-EvWG9YQy.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexibleRowGridBlock-apvtt-Bj.js","sources":["../../src/components/blocks/FlexibleRowGridBlock.vue"],"sourcesContent":["<template>\n <div class=\"mb-2\">\n <v-row\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :dense=\"true\"\n :no-gutters=\"true\"\n align=\"start\"\n justify=\"space-between\"\n >\n <v-col cols=\"11\">\n <v-row :dense=\"true\" :no-gutters=\"false\" class=\"mb-2\">\n <v-col :cols=\"showOperatorColumn ? 12 : 'auto'\" lg=\"4\">\n <v-select\n :items=\"properties\"\n v-model=\"row.property\"\n :label=\"$t('labels.property')\"\n color=\"primary\"\n variant=\"outlined\"\n density=\"compact\"\n :hide-details=\"true\"\n ></v-select>\n </v-col>\n <v-col cols=\"5\" lg=\"3\" v-if=\"showOperatorColumn\">\n <v-select\n :items=\"operators\"\n v-model=\"row.operator\"\n :label=\"$t('labels.operator')\"\n class=\"mb-4\"\n color=\"primary\"\n variant=\"outlined\"\n density=\"compact\"\n :hide-details=\"true\"\n ></v-select>\n </v-col>\n <v-col\n :cols=\"showOperatorColumn ? 7 : 6\"\n lg=\"5\"\n v-if=\"showValueColumn && row.operator !== 'exists'\"\n >\n <v-text-field\n v-model=\"row.value\"\n :label=\"$t('labels.value')\"\n class=\"mb-4\"\n color=\"primary\"\n variant=\"outlined\"\n density=\"compact\"\n :hide-details=\"true\"\n ></v-text-field>\n </v-col>\n </v-row>\n </v-col>\n <v-col cols=\" 1\" class=\"d-flex justify-center align-start\">\n <v-icon\n @click=\"handleIconClick(row.complete, index)\"\n :color=\"row.complete ? 'secondary' : 'grey'\"\n :class=\"{ 'not-allowed': !row.complete }\"\n class=\"mt-2\"\n >\n mdi-delete\n </v-icon>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { inject, ref, computed, watch } from \"vue\";\nimport { getUniqueKeys } from \"@/mixins/common-utils.js\";\n\nexport default {\n props: [\"dynamicParams\", \"data\"],\n setup(props) {\n const formData = inject(\"formData\");\n const blockParams = JSON.parse(JSON.stringify(formData.parameters));\n const rows = ref(generateRows(blockParams));\n const operators = [\n \"=\",\n \"!=\",\n \"<\",\n \">\",\n \"<=\",\n \">=\",\n \"includes\",\n \"not includes\",\n \"matches\",\n \"exists\",\n ];\n\n const showOperatorColumn = computed(\n () => props.dynamicParams.showOperatorColumn,\n );\n const showValueColumn = computed(() => props.dynamicParams.showValueColumn);\n const inputContent = computed(() => props.data.content); //'content' is defined as prop inside InputBlock component slot\n const properties = computed(() => {\n return inputContent.value\n ? getUniqueKeys(props.data.content)\n : props.dynamicParams.propertyOptions;\n });\n\n // Watch for changes in properties\n watch(properties, (newProperties) => {\n // Iterate over each object in the dynamicParams of the Operator\n for (let param of formData.dynamicParams) {\n // Check the blockId with the same name of this component\n if (param.blockId == props.dynamicParams.blockId) {\n param.propertyOptions = newProperties;\n // Return the parameter\n return param;\n }\n }\n });\n\n watch(\n rows,\n () => {\n let transformedRows = [];\n rows.value.forEach((row, index) => {\n if (\n row.property &&\n (!showOperatorColumn.value || row.operator) &&\n (!showValueColumn.value || row.operator === \"exists\" || row.value)\n ) {\n row.complete = true;\n transformedRows.push(...generateObjects(row, index));\n if (!rows.value[index + 1]) {\n rows.value.push({\n property: null,\n operator: null,\n value: \"\",\n complete: false,\n });\n }\n }\n });\n if (transformedRows.length > 0) {\n // First, remove existing objects with the same name\n formData.parameters = formData.parameters.filter((item) => {\n return (\n !item.name.startsWith(\"__key__\") &&\n !item.name.startsWith(\"__operator_\") &&\n !item.name.startsWith(\"__item_\")\n );\n });\n // Merge transformedRows with the existing data in formData.parameters\n let combined = [...formData.parameters, ...transformedRows];\n // Create a Set to store the string versions of the objects\n let set = new Set();\n // Filter duplicates\n formData.parameters = combined.filter((item) => {\n // Convert the object to a string\n let key = JSON.stringify(item);\n // Check if the string is already in the Set\n if (!set.has(key)) {\n // If it's not in the Set, add it and keep the object in the array\n set.add(key);\n return true;\n }\n // If the string is already in the Set, remove the object from the array\n return false;\n });\n }\n },\n { deep: true },\n );\n\n function handleIconClick(isComplete, index) {\n if (isComplete) {\n this.removeRow(index);\n }\n }\n\n function removeRow(index) {\n rows.value.splice(index, 1);\n }\n\n /**\n * This method generates an array of objects based on the completed rows in the component.\n * Each object corresponds to the property, operator, and value from that row.\n * The 'property' is always included in the objects as it is always present in the rows.\n * The 'operator' and 'value' are included only if their respective columns are shown and have been filled out by the user.\n * The method filters out any rows that are not marked as complete.\n */\n function generateObjects(row, index) {\n let objects = [];\n if (row.complete) {\n objects.push({\n name: `__key__${index}`,\n property: row.property,\n bind: true,\n custom: true,\n });\n if (showOperatorColumn.value && row.operator) {\n objects.push({\n name: `__operator_${index}`,\n property: row.operator,\n bind: true,\n custom: true,\n });\n }\n if (showValueColumn.value && row.value) {\n objects.push({\n name: `__item_${index}`,\n property: row.value,\n bind: true,\n custom: true,\n });\n }\n }\n return objects;\n }\n\n /**\n * This function takes an array of objects and generates a corresponding array of 'row' objects.\n * Each 'row' object corresponds to a group of objects in the input array that have the same index.\n * The 'property', 'operator', and 'value' are extracted from each group of objects and used to create the 'row' object.\n * All generated 'row' objects are marked as complete.\n */\n function generateRows(objects) {\n // Check if objects is an array\n if (!Array.isArray(objects)) {\n console.error(\"Error: objects must be an array.\");\n return;\n }\n // If objects is empty, return an array with a single row with null values and complete set to false\n if (objects.length === 0) {\n return [{ property: null, operator: null, value: \"\", complete: false }];\n }\n // Group the objects by index\n let groups = {};\n objects.forEach((obj) => {\n let index = obj.name.split(\"_\").reverse()[0];\n if (!groups[index]) {\n groups[index] = [];\n }\n groups[index].push(obj);\n });\n // Generate the 'row' objects from the groups\n let rows = Object.values(groups).map((group) => {\n let row = {\n property: null,\n operator: null,\n value: \"\",\n complete: true, // Set complete to true for converted rows\n };\n group.forEach((obj) => {\n if (obj.name.startsWith(\"__key__\")) {\n row.property = obj.property;\n } else if (obj.name.startsWith(\"__operator_\")) {\n row.operator = obj.property;\n } else if (obj.name.startsWith(\"__item_\")) {\n row.value = obj.property;\n }\n });\n\n return row;\n });\n // Check the last object: if its values are all null, set complete to false\n let lastRow = rows[rows.length - 1];\n if (\n lastRow.property === null &&\n lastRow.operator === null &&\n lastRow.value === \"\"\n ) {\n lastRow.complete = false;\n }\n return rows;\n }\n\n return {\n rows,\n operators,\n showOperatorColumn,\n showValueColumn,\n properties,\n removeRow,\n generateObjects,\n handleIconClick,\n };\n },\n};\n</script>\n\n<style scoped>\n.not-allowed {\n cursor: default;\n}\n</style>\n"],"names":["_sfc_main","props","formData","inject","blockParams","rows","ref","generateRows","operators","showOperatorColumn","computed","showValueColumn","inputContent","properties","getUniqueKeys","watch","newProperties","param","transformedRows","row","index","generateObjects","item","combined","set","key","handleIconClick","isComplete","removeRow","objects","groups","obj","group","lastRow","_hoisted_1","_openBlock","_createElementBlock","_Fragment","_renderList","$setup","_createBlock","_component_v_row","_createVNode","_component_v_col","_component_v_select","$event","_ctx","_component_v_text_field","_component_v_icon","_normalizeClass","_cache"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FlexibleRowGridBlock-EvWG9YQy.js","sources":["../../src/components/blocks/FlexibleRowGridBlock.vue"],"sourcesContent":["<template>\n <div class=\"mb-2\">\n <v-row\n v-for=\"(row, index) in rows\"\n :key=\"index\"\n :dense=\"true\"\n :no-gutters=\"true\"\n align=\"start\"\n justify=\"space-between\"\n >\n <v-col cols=\"11\">\n <v-row :dense=\"true\" :no-gutters=\"false\" class=\"mb-2\">\n <v-col :cols=\"showOperatorColumn ? 12 : 'auto'\" lg=\"4\">\n <v-select\n :items=\"properties\"\n v-model=\"row.property\"\n :label=\"$t('labels.property')\"\n color=\"primary\"\n variant=\"outlined\"\n density=\"compact\"\n :hide-details=\"true\"\n ></v-select>\n </v-col>\n <v-col cols=\"5\" lg=\"3\" v-if=\"showOperatorColumn\">\n <v-select\n :items=\"operators\"\n v-model=\"row.operator\"\n :label=\"$t('labels.operator')\"\n class=\"mb-4\"\n color=\"primary\"\n variant=\"outlined\"\n density=\"compact\"\n :hide-details=\"true\"\n ></v-select>\n </v-col>\n <v-col\n :cols=\"showOperatorColumn ? 7 : 6\"\n lg=\"5\"\n v-if=\"showValueColumn && row.operator !== 'exists'\"\n >\n <v-text-field\n v-model=\"row.value\"\n :label=\"$t('labels.value')\"\n class=\"mb-4\"\n color=\"primary\"\n variant=\"outlined\"\n density=\"compact\"\n :hide-details=\"true\"\n ></v-text-field>\n </v-col>\n </v-row>\n </v-col>\n <v-col cols=\" 1\" class=\"d-flex justify-center align-start\">\n <v-icon\n @click=\"handleIconClick(row.complete, index)\"\n :color=\"row.complete ? 'secondary' : 'grey'\"\n :class=\"{ 'not-allowed': !row.complete }\"\n class=\"mt-2\"\n >\n mdi-delete\n </v-icon>\n </v-col>\n </v-row>\n </div>\n</template>\n\n<script>\nimport { inject, ref, computed, watch } from \"vue\";\nimport { getUniqueKeys } from \"@/mixins/common-utils.js\";\n\nexport default {\n props: [\"dynamicParams\", \"data\"],\n setup(props) {\n const formData = inject(\"formData\");\n const blockParams = JSON.parse(JSON.stringify(formData.parameters));\n const rows = ref(generateRows(blockParams));\n const operators = [\n \"=\",\n \"!=\",\n \"<\",\n \">\",\n \"<=\",\n \">=\",\n \"includes\",\n \"not includes\",\n \"matches\",\n \"exists\",\n ];\n\n const showOperatorColumn = computed(\n () => props.dynamicParams.showOperatorColumn,\n );\n const showValueColumn = computed(() => props.dynamicParams.showValueColumn);\n const inputContent = computed(() => props.data.content); //'content' is defined as prop inside InputBlock component slot\n const properties = computed(() => {\n return inputContent.value\n ? getUniqueKeys(props.data.content)\n : props.dynamicParams.propertyOptions;\n });\n\n // Watch for changes in properties\n watch(properties, (newProperties) => {\n // Iterate over each object in the dynamicParams of the Operator\n for (let param of formData.dynamicParams) {\n // Check the blockId with the same name of this component\n if (param.blockId == props.dynamicParams.blockId) {\n param.propertyOptions = newProperties;\n // Return the parameter\n return param;\n }\n }\n });\n\n watch(\n rows,\n () => {\n let transformedRows = [];\n rows.value.forEach((row, index) => {\n if (\n row.property &&\n (!showOperatorColumn.value || row.operator) &&\n (!showValueColumn.value || row.operator === \"exists\" || row.value)\n ) {\n row.complete = true;\n transformedRows.push(...generateObjects(row, index));\n if (!rows.value[index + 1]) {\n rows.value.push({\n property: null,\n operator: null,\n value: \"\",\n complete: false,\n });\n }\n }\n });\n if (transformedRows.length > 0) {\n // First, remove existing objects with the same name\n formData.parameters = formData.parameters.filter((item) => {\n return (\n !item.name.startsWith(\"__key__\") &&\n !item.name.startsWith(\"__operator_\") &&\n !item.name.startsWith(\"__item_\")\n );\n });\n // Merge transformedRows with the existing data in formData.parameters\n let combined = [...formData.parameters, ...transformedRows];\n // Create a Set to store the string versions of the objects\n let set = new Set();\n // Filter duplicates\n formData.parameters = combined.filter((item) => {\n // Convert the object to a string\n let key = JSON.stringify(item);\n // Check if the string is already in the Set\n if (!set.has(key)) {\n // If it's not in the Set, add it and keep the object in the array\n set.add(key);\n return true;\n }\n // If the string is already in the Set, remove the object from the array\n return false;\n });\n }\n },\n { deep: true },\n );\n\n function handleIconClick(isComplete, index) {\n if (isComplete) {\n this.removeRow(index);\n }\n }\n\n function removeRow(index) {\n rows.value.splice(index, 1);\n }\n\n /**\n * This method generates an array of objects based on the completed rows in the component.\n * Each object corresponds to the property, operator, and value from that row.\n * The 'property' is always included in the objects as it is always present in the rows.\n * The 'operator' and 'value' are included only if their respective columns are shown and have been filled out by the user.\n * The method filters out any rows that are not marked as complete.\n */\n function generateObjects(row, index) {\n let objects = [];\n if (row.complete) {\n objects.push({\n name: `__key__${index}`,\n property: row.property,\n bind: true,\n custom: true,\n });\n if (showOperatorColumn.value && row.operator) {\n objects.push({\n name: `__operator_${index}`,\n property: row.operator,\n bind: true,\n custom: true,\n });\n }\n if (showValueColumn.value && row.value) {\n objects.push({\n name: `__item_${index}`,\n property: row.value,\n bind: true,\n custom: true,\n });\n }\n }\n return objects;\n }\n\n /**\n * This function takes an array of objects and generates a corresponding array of 'row' objects.\n * Each 'row' object corresponds to a group of objects in the input array that have the same index.\n * The 'property', 'operator', and 'value' are extracted from each group of objects and used to create the 'row' object.\n * All generated 'row' objects are marked as complete.\n */\n function generateRows(objects) {\n // Check if objects is an array\n if (!Array.isArray(objects)) {\n console.error(\"Error: objects must be an array.\");\n return;\n }\n // If objects is empty, return an array with a single row with null values and complete set to false\n if (objects.length === 0) {\n return [{ property: null, operator: null, value: \"\", complete: false }];\n }\n // Group the objects by index\n let groups = {};\n objects.forEach((obj) => {\n let index = obj.name.split(\"_\").reverse()[0];\n if (!groups[index]) {\n groups[index] = [];\n }\n groups[index].push(obj);\n });\n // Generate the 'row' objects from the groups\n let rows = Object.values(groups).map((group) => {\n let row = {\n property: null,\n operator: null,\n value: \"\",\n complete: true, // Set complete to true for converted rows\n };\n group.forEach((obj) => {\n if (obj.name.startsWith(\"__key__\")) {\n row.property = obj.property;\n } else if (obj.name.startsWith(\"__operator_\")) {\n row.operator = obj.property;\n } else if (obj.name.startsWith(\"__item_\")) {\n row.value = obj.property;\n }\n });\n\n return row;\n });\n // Check the last object: if its values are all null, set complete to false\n let lastRow = rows[rows.length - 1];\n if (\n lastRow.property === null &&\n lastRow.operator === null &&\n lastRow.value === \"\"\n ) {\n lastRow.complete = false;\n }\n return rows;\n }\n\n return {\n rows,\n operators,\n showOperatorColumn,\n showValueColumn,\n properties,\n removeRow,\n generateObjects,\n handleIconClick,\n };\n },\n};\n</script>\n\n<style scoped>\n.not-allowed {\n cursor: default;\n}\n</style>\n"],"names":["_sfc_main","props","formData","inject","blockParams","rows","ref","generateRows","operators","showOperatorColumn","computed","showValueColumn","inputContent","properties","getUniqueKeys","watch","newProperties","param","transformedRows","row","index","generateObjects","item","combined","set","key","handleIconClick","isComplete","removeRow","objects","groups","obj","group","lastRow","_hoisted_1","_openBlock","_createElementBlock","_Fragment","_renderList","$setup","_createBlock","_component_v_row","_createVNode","_component_v_col","_component_v_select","$event","_ctx","_component_v_text_field","_component_v_icon","_normalizeClass","_cache"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
System.register(["./main-
|
|
2
|
-
//# sourceMappingURL=FlexibleValueBlock-
|
|
1
|
+
System.register(["./main-DbyZehDf.js","single-spa-vue"],(function(U,L){"use strict";var I,i,E,g,x,b,p,f,j,C,F,k,B,T,q,M,R,S,w;return{setters:[t=>{I=t._,i=t.r,E=t.c,g=t.o,x=t.a,b=t.b,p=t.w,f=t.d,j=t.l,C=t.e,F=t.F,k=t.i,B=t.u,T=t.h,q=t.m,M=t.t,R=t.k,S=t.p,w=t.q},null],execute:(function(){const t={props:["data","dynamicParams"],setup(D){const s=k("valid");s.value=!1;const{t:v}=B(),a=k("formData"),d=T(()=>D.dynamicParams.valuesType);Object.keys(a).length<=1&&(a.parameters=[{value:"",touchedValue:!1}]);const O=q({items:a.parameters.length>0?A(a.parameters):[{value:"",touchedValue:!1}]}),{items:o}=M(O);R(o,e=>{e[e.length-1].value&&e.push({value:"",touchedValue:!1}),a.parameters=P(),h(e),y(e)},{deep:!0});const h=e=>{e.length===1&&!e[0].value&&(e[0].touchedValue=!1)},y=e=>{const r=e.filter(l=>l.value),n=e.filter(l=>!l.value);s.value=r.length>0&&n.length<=1},_=()=>o.value.length===1,V=()=>o.value.filter(e=>!e.value).length>1,u=()=>[e=>_()&&!e||!_()&&V()&&!e?v("strings.value-is-required"):!0,e=>!_()&&e=="not valid"||V()&&e=="not valid"?v("strings.value-must-be-type")+" "+d.value:!0],m=(e,r,n)=>{try{S(e)===d.value?(w(e,n,r),s.value=!0):(r[n]=v("strings.not-valid"),s.value=!1)}catch(l){console.error("Error handling drop event: ",l)}},c=e=>{try{o.value.splice(e,1),a.parameters=P(o.value),h(o.value),y(o.value)}catch(r){console.error("Error removing item: ",r)}};function P(){const e=(r,n)=>({name:r,property:n,property2:"undefined",operator:"undefined",sourceexp:!0,bind:!0,custom:!0,value:""});return s.value=!0,o.value.flatMap((r,n)=>{const l=[];return r.value&&l.push(e("__item_"+n,r.value)),l})}function A(e){let r=[],n={value:"",touchedValue:!1};return e.forEach(l=>{l.name.startsWith("__item_")&&(n.value=l.property),n.value&&(r.push({...n}),n={value:"",touchedValue:!1})}),r.push({value:"",touchedValue:!1}),r}return{valuesType:d,onDrop:m,formData:a,items:o,removeItem:c,getValueRules:u,valid:s}}};function $(D,s,v,a,d,O){const o=i("v-text-field"),h=i("v-col"),y=i("v-btn"),_=i("v-row"),V=i("v-sheet");return g(!0),E(F,null,x(a.items,(u,m)=>(g(),b(V,{key:m},{default:p(()=>[f(_,{dense:""},{default:p(()=>[f(h,{cols:"10"},{default:p(()=>[f(o,{modelValue:u.value,"onUpdate:modelValue":c=>u.value=c,label:D.$t("labels.value"),variant:"outlined",density:"compact",rules:a.getValueRules(u),onFocus:c=>u.touchedValue=!0,onDragover:s[0]||(s[0]=j(()=>{},["prevent"])),onDrop:c=>a.onDrop(c,u,"value")},null,8,["modelValue","onUpdate:modelValue","label","rules","onFocus","onDrop"])]),_:2},1024),f(h,{cols:"2","text-center":""},{default:p(()=>[m<a.items.length-1?(g(),b(y,{key:0,class:"mt-n1",variant:"plain",icon:"mdi-delete",color:"secondary",onClick:c=>a.removeItem(m)},null,8,["onClick"])):C("",!0)]),_:2},1024)]),_:2},1024)]),_:2},1024))),128)}const N=U("default",I(t,[["render",$]]))})}}));
|
|
2
|
+
//# sourceMappingURL=FlexibleValueBlock-BOn_Vvrx.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FlexibleValueBlock-BgfEuGBX.js","sources":["../../src/components/blocks/FlexibleValueBlock.vue"],"sourcesContent":["<template>\n <v-sheet v-for=\"(item, index) in items\" :key=\"index\">\n <v-row dense>\n <v-col cols=\"10\">\n <v-text-field\n v-model=\"item.value\"\n :label=\"$t('labels.value')\"\n variant=\"outlined\"\n density=\"compact\"\n :rules=\"getValueRules(item)\"\n @focus=\"item.touchedValue = true\"\n @dragover.prevent\n @drop=\"onDrop($event, item, 'value')\"\n ></v-text-field>\n </v-col>\n <v-col cols=\"2\" text-center>\n <v-btn\n v-if=\"index < items.length - 1\"\n class=\"mt-n1\"\n variant=\"plain\"\n icon=\"mdi-delete\"\n color=\"secondary\"\n @click=\"removeItem(index)\"\n ></v-btn>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n\n<script>\nimport { inject, toRefs, reactive, watch, computed } from \"vue\";\nimport { drop, checkDrop } from \"@/mixins/common-utils.js\";\nimport { useI18n } from \"vue-i18n\";\n\nexport default {\n props: [\"data\", \"dynamicParams\"],\n setup(props) {\n const valid = inject(\"valid\");\n valid.value = false;\n const { t } = useI18n();\n const formData = inject(\"formData\");\n const valuesType = computed(() => props.dynamicParams.valuesType);\n\n // Initialize parameters if they don't exist\n if (Object.keys(formData).length <= 1) {\n formData.parameters = [{ value: \"\", touchedValue: false }];\n }\n\n // Reactive state for the component\n const state = reactive({\n items:\n formData.parameters.length > 0\n ? revertToItems(formData.parameters)\n : [{ value: \"\", touchedValue: false }],\n });\n const { items } = toRefs(state);\n\n // Watch for changes in items and add a new empty row if needed\n watch(\n items,\n (newItems) => {\n const lastItem = newItems[newItems.length - 1];\n if (lastItem.value) {\n newItems.push({\n value: \"\",\n touchedValue: false,\n });\n }\n formData.parameters = breakAndEnrichItem(newItems);\n resetTouchedState(newItems);\n validateItems(newItems);\n },\n { deep: true },\n );\n\n // Reset touched state if there is only one empty row\n const resetTouchedState = (items) => {\n if (items.length === 1 && !items[0].value) {\n items[0].touchedValue = false;\n }\n };\n\n // Validate items based on the new rules\n const validateItems = (items) => {\n const nonEmptyItems = items.filter((item) => item.value);\n const emptyItems = items.filter((item) => !item.value);\n valid.value = nonEmptyItems.length > 0 && emptyItems.length <= 1;\n };\n\n // Check if there is only one item\n const isSingleItem = () => items.value.length === 1;\n\n // Check if there are multiple empty items\n const hasMultipleEmptyItems = () =>\n items.value.filter((item) => !item.value).length > 1;\n\n // Computed properties for validation rules\n const getValueRules = () => [\n (v) => {\n if (isSingleItem() && !v) {\n return t(\"strings.value-is-required\");\n }\n if (!isSingleItem() && hasMultipleEmptyItems() && !v) {\n return t(\"strings.value-is-required\");\n }\n return true;\n },\n (v) => {\n if (!isSingleItem() && v == \"not valid\") {\n return t(\"strings.value-must-be-type\") + \" \" + valuesType.value;\n }\n if (hasMultipleEmptyItems() && v == \"not valid\") {\n return t(\"strings.value-must-be-type\") + \" \" + valuesType.value;\n }\n return true;\n },\n ];\n\n // Handle drop event for drag-and-drop\n const onDrop = (event, item, targetName) => {\n try {\n const isValidDrop = checkDrop(event) === valuesType.value;\n\n if (isValidDrop) {\n drop(event, targetName, item);\n valid.value = true;\n } else {\n item[targetName] = t(\"strings.not-valid\");\n valid.value = false;\n }\n } catch (error) {\n console.error(\"Error handling drop event: \", error);\n }\n };\n\n // Remove a value pair\n const removeItem = (index) => {\n try {\n items.value.splice(index, 1);\n formData.parameters = breakAndEnrichItem(items.value);\n resetTouchedState(items.value);\n validateItems(items.value);\n } catch (error) {\n console.error(\"Error removing item: \", error);\n }\n };\n\n // Split an array of objects with value pairs\n // into an array of object pairs with a single property value\n function breakAndEnrichItem() {\n const createObject = (name, property) => ({\n name,\n property,\n property2: \"undefined\",\n operator: \"undefined\",\n sourceexp: true,\n bind: true,\n custom: true,\n value: \"\", // Inizializza la proprietà value\n });\n valid.value = true;\n return items.value.flatMap((item, index) => {\n const objects = [];\n if (item.value) {\n objects.push(createObject(\"__item_\" + index, item.value));\n }\n return objects;\n });\n }\n\n // Transforms an array of objects with a single property into an array of objects with value pairs\n function revertToItems(parameters) {\n let items = [];\n let currentItem = {\n value: \"\",\n touchedValue: false,\n };\n\n parameters.forEach((param) => {\n if (param.name.startsWith(\"__item_\")) {\n currentItem.value = param.property;\n }\n\n // If value is set, push the current item and reset it\n if (currentItem.value) {\n items.push({ ...currentItem });\n currentItem = {\n value: \"\",\n touchedValue: false,\n };\n }\n });\n\n // Add an empty value pair at the end\n items.push({\n value: \"\",\n touchedValue: false,\n });\n return items;\n }\n\n return {\n valuesType,\n onDrop,\n formData,\n items,\n removeItem,\n getValueRules,\n valid,\n };\n },\n};\n</script>\n"],"names":["_sfc_main","props","valid","inject","t","useI18n","formData","valuesType","computed","state","reactive","revertToItems","items","toRefs","watch","newItems","breakAndEnrichItem","resetTouchedState","validateItems","nonEmptyItems","item","emptyItems","isSingleItem","hasMultipleEmptyItems","getValueRules","v","onDrop","event","targetName","checkDrop","drop","error","removeItem","index","createObject","name","property","objects","parameters","currentItem","param","_openBlock","_createElementBlock","_Fragment","_renderList","$setup","_createBlock","_component_v_sheet","_createVNode","_component_v_row","_component_v_col","_component_v_text_field","$event","_ctx","_component_v_btn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FlexibleValueBlock-BOn_Vvrx.js","sources":["../../src/components/blocks/FlexibleValueBlock.vue"],"sourcesContent":["<template>\n <v-sheet v-for=\"(item, index) in items\" :key=\"index\">\n <v-row dense>\n <v-col cols=\"10\">\n <v-text-field\n v-model=\"item.value\"\n :label=\"$t('labels.value')\"\n variant=\"outlined\"\n density=\"compact\"\n :rules=\"getValueRules(item)\"\n @focus=\"item.touchedValue = true\"\n @dragover.prevent\n @drop=\"onDrop($event, item, 'value')\"\n ></v-text-field>\n </v-col>\n <v-col cols=\"2\" text-center>\n <v-btn\n v-if=\"index < items.length - 1\"\n class=\"mt-n1\"\n variant=\"plain\"\n icon=\"mdi-delete\"\n color=\"secondary\"\n @click=\"removeItem(index)\"\n ></v-btn>\n </v-col>\n </v-row>\n </v-sheet>\n</template>\n\n<script>\nimport { inject, toRefs, reactive, watch, computed } from \"vue\";\nimport { drop, checkDrop } from \"@/mixins/common-utils.js\";\nimport { useI18n } from \"vue-i18n\";\n\nexport default {\n props: [\"data\", \"dynamicParams\"],\n setup(props) {\n const valid = inject(\"valid\");\n valid.value = false;\n const { t } = useI18n();\n const formData = inject(\"formData\");\n const valuesType = computed(() => props.dynamicParams.valuesType);\n\n // Initialize parameters if they don't exist\n if (Object.keys(formData).length <= 1) {\n formData.parameters = [{ value: \"\", touchedValue: false }];\n }\n\n // Reactive state for the component\n const state = reactive({\n items:\n formData.parameters.length > 0\n ? revertToItems(formData.parameters)\n : [{ value: \"\", touchedValue: false }],\n });\n const { items } = toRefs(state);\n\n // Watch for changes in items and add a new empty row if needed\n watch(\n items,\n (newItems) => {\n const lastItem = newItems[newItems.length - 1];\n if (lastItem.value) {\n newItems.push({\n value: \"\",\n touchedValue: false,\n });\n }\n formData.parameters = breakAndEnrichItem(newItems);\n resetTouchedState(newItems);\n validateItems(newItems);\n },\n { deep: true },\n );\n\n // Reset touched state if there is only one empty row\n const resetTouchedState = (items) => {\n if (items.length === 1 && !items[0].value) {\n items[0].touchedValue = false;\n }\n };\n\n // Validate items based on the new rules\n const validateItems = (items) => {\n const nonEmptyItems = items.filter((item) => item.value);\n const emptyItems = items.filter((item) => !item.value);\n valid.value = nonEmptyItems.length > 0 && emptyItems.length <= 1;\n };\n\n // Check if there is only one item\n const isSingleItem = () => items.value.length === 1;\n\n // Check if there are multiple empty items\n const hasMultipleEmptyItems = () =>\n items.value.filter((item) => !item.value).length > 1;\n\n // Computed properties for validation rules\n const getValueRules = () => [\n (v) => {\n if (isSingleItem() && !v) {\n return t(\"strings.value-is-required\");\n }\n if (!isSingleItem() && hasMultipleEmptyItems() && !v) {\n return t(\"strings.value-is-required\");\n }\n return true;\n },\n (v) => {\n if (!isSingleItem() && v == \"not valid\") {\n return t(\"strings.value-must-be-type\") + \" \" + valuesType.value;\n }\n if (hasMultipleEmptyItems() && v == \"not valid\") {\n return t(\"strings.value-must-be-type\") + \" \" + valuesType.value;\n }\n return true;\n },\n ];\n\n // Handle drop event for drag-and-drop\n const onDrop = (event, item, targetName) => {\n try {\n const isValidDrop = checkDrop(event) === valuesType.value;\n\n if (isValidDrop) {\n drop(event, targetName, item);\n valid.value = true;\n } else {\n item[targetName] = t(\"strings.not-valid\");\n valid.value = false;\n }\n } catch (error) {\n console.error(\"Error handling drop event: \", error);\n }\n };\n\n // Remove a value pair\n const removeItem = (index) => {\n try {\n items.value.splice(index, 1);\n formData.parameters = breakAndEnrichItem(items.value);\n resetTouchedState(items.value);\n validateItems(items.value);\n } catch (error) {\n console.error(\"Error removing item: \", error);\n }\n };\n\n // Split an array of objects with value pairs\n // into an array of object pairs with a single property value\n function breakAndEnrichItem() {\n const createObject = (name, property) => ({\n name,\n property,\n property2: \"undefined\",\n operator: \"undefined\",\n sourceexp: true,\n bind: true,\n custom: true,\n value: \"\", // Inizializza la proprietà value\n });\n valid.value = true;\n return items.value.flatMap((item, index) => {\n const objects = [];\n if (item.value) {\n objects.push(createObject(\"__item_\" + index, item.value));\n }\n return objects;\n });\n }\n\n // Transforms an array of objects with a single property into an array of objects with value pairs\n function revertToItems(parameters) {\n let items = [];\n let currentItem = {\n value: \"\",\n touchedValue: false,\n };\n\n parameters.forEach((param) => {\n if (param.name.startsWith(\"__item_\")) {\n currentItem.value = param.property;\n }\n\n // If value is set, push the current item and reset it\n if (currentItem.value) {\n items.push({ ...currentItem });\n currentItem = {\n value: \"\",\n touchedValue: false,\n };\n }\n });\n\n // Add an empty value pair at the end\n items.push({\n value: \"\",\n touchedValue: false,\n });\n return items;\n }\n\n return {\n valuesType,\n onDrop,\n formData,\n items,\n removeItem,\n getValueRules,\n valid,\n };\n },\n};\n</script>\n"],"names":["_sfc_main","props","valid","inject","t","useI18n","formData","valuesType","computed","state","reactive","revertToItems","items","toRefs","watch","newItems","breakAndEnrichItem","resetTouchedState","validateItems","nonEmptyItems","item","emptyItems","isSingleItem","hasMultipleEmptyItems","getValueRules","v","onDrop","event","targetName","checkDrop","drop","error","removeItem","index","createObject","name","property","objects","parameters","currentItem","param","_openBlock","_createElementBlock","_Fragment","_renderList","$setup","_createBlock","_component_v_sheet","_createVNode","_component_v_row","_component_v_col","_component_v_text_field","$event","_ctx","_component_v_btn"],"mappings":"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"}
|