From bb80cdf5a6157ca1f3a276e12e9faae9a4739cb7 Mon Sep 17 00:00:00 2001
From: dh_ackergaul <dh_ackergaul@dh-software.de>
Date: Di, 23 Jun 2026 11:16:18 +0200
Subject: [PATCH] Update emvheya - 23.6.2026, 11:16:10 [JD]

---
 manufacturer/_furnview/furnplan-web/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs |  399 +++++++++++++++++++++++++++-----------------------------
 1 files changed, 192 insertions(+), 207 deletions(-)

diff --git a/manufacturer/_furnview/furnplan-web/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs b/manufacturer/_furnview/furnplan-web/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs
index c01db22..9b3f4ef 100644
--- a/manufacturer/_furnview/furnplan-web/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs
+++ b/manufacturer/_furnview/furnplan-web/node_modules/@dh-software/request-configurator-ui/dist/request-configurator-ui.mjs
@@ -1,73 +1,183 @@
-import { unsafeCSS, LitElement, html } from 'lit';
-import { state, property, customElement } from 'lit/decorators.js';
+import{unsafeCSS as u,LitElement as c,html as a}from"lit";import{state as d,property as h,customElement as g}from"lit/decorators.js";const b=`:host {
+  display: flex;
+  justify-items: center;
+}
 
-const requestConfigurationComponent = ":host {\n  display: flex;\n  justify-items: center;\n}\n\n.header-label {\n  padding: 12px;\n  --label-font-weight:bold;\n}\n\n.configuration-container {\n  justify-items: center;\n  border-radius: 0.9rem;\n  width: fit-content;\n  height: auto;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  border: solid #EEEEEE 2px;\n  background: #f0f0f0;\n  display: grid;\n}\n.configuration-container .reset-conf {\n  width: fit-content;\n  padding: 5px;\n  border: none;\n  border-radius: 8px;\n  font-size: 12px;\n  background-color: red;\n  cursor: pointer;\n  color: white;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  margin: 7px;\n}\n\n.field-input {\n  width: 240px;\n}\n\n.row-option-container {\n  display: flex;\n  justify-content: center;\n  padding: 2px 0;\n  column-gap: 10px;\n}\n\n.buttons-container {\n  display: flex;\n  gap: 10px;\n}\n\n.add-item-button {\n  width: 55px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n.delete-item-button {\n  width: 55px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  background-color: red;\n  color: white;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n}\n\n.add-group-button {\n  width: 55px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  background-color: #c5c5c5;\n}\n\n.delete-group-button {\n  width: 100px;\n  padding: 2px;\n  border: none;\n  border-radius: 8px;\n  font-size: 14px;\n  cursor: pointer;\n  transition: all 0.2s ease;\n  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);\n  background-color: #f7931e;\n  color: white;\n}\n\n.add-group-button {\n  background-color: #c5c5c5;\n  color: white;\n}\n.add-group-button:hover {\n  background-color: #aaaaaa;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  transform: translateY(-1px);\n}\n\n.delete-item-button:hover {\n  background-color: #c70404;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  transform: translateY(-1px);\n}\n\n.delete-group-button:hover {\n  background-color: #f7931e;\n  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);\n  transform: translateY(-1px);\n}\n\n.row {\n  padding: 5px;\n  margin: 9px;\n  display: flex;\n  gap: 10px;\n  background: #e6e6e6;\n  border: none;\n  border-radius: 7px;\n  justify-content: center;\n}\n\n.row-item {\n  display: grid;\n  gap: 10px;\n}\n\n.buttons-container {\n  display: flex;\n  justify-content: center;\n}\n\ndialog {\n  border: none;\n  border-radius: 10px;\n  padding: 20px;\n  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n  width: 320px;\n}\n\nform {\n  display: flex;\n  flex-direction: column;\n  gap: 12px;\n}\n\n.dialog-buttons {\n  display: flex;\n  justify-content: flex-end;\n  gap: 8px;\n  margin-top: 12px;\n}\n\n.configuraion-container {\n  margin: 10px;\n}\n\n.configuration-group {\n  border: none;\n  padding: 5px;\n  background: #fffdfd;\n  border-radius: 4px;\n  margin: 5px;\n}";
+.header-label {
+  padding: 12px;
+  --label-font-weight:bold;
+}
 
-var __defProp = Object.defineProperty;
-var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
-var __decorateClass = (decorators, target, key, kind) => {
-  var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
-  for (var i = decorators.length - 1, decorator; i >= 0; i--)
-    if (decorator = decorators[i])
-      result = (kind ? decorator(target, key, result) : decorator(result)) || result;
-  if (kind && result) __defProp(target, key, result);
-  return result;
-};
-let RequestConfigurationComponent = class extends LitElement {
-  constructor() {
-    super(...arguments);
-    this.showDialog = false;
-    this.currentRowIndex = null;
-    this.currentFieldInsertIndex = null;
-    this.showInputTagField = true;
-    this.propertyData = {
-      entries: []
-    };
-    this.defaultEntries = {
-      entries: [
-        [
-          { name: "name", i18n: "20322", placeholder: "Vorname*", required: true, autocomplete: "given-name" },
-          { name: "surname", i18n: "20323", placeholder: "Nachname*", required: true, autocomplete: "family-name" }
-        ],
-        [
-          { name: "phone", i18n: "20381", placeholder: "Telefon*", required: true, autocomplete: "tel" },
-          {
-            name: "email",
-            i18n: "fv.email.homeviewer.send_request_customer.email",
-            placeholder: "E-Mail*",
-            required: true,
-            autocomplete: "email"
-          }
-        ],
-        [
-          { name: "customerNo", i18n: "1610", placeholder: "Kundennummer", autocomplete: "section-customerNo" },
-          { name: "adress", i18n: "20228", placeholder: "Adresse", autocomplete: "street-address" }
-        ],
-        [
-          { name: "companyName", i18n: "25024", placeholder: "Firmenname", autocomplete: "organization" },
-          { name: "postcode", i18n: "25026", placeholder: "Postleitzahl", autocomplete: "postal-code" }
-        ],
-        [
-          {
-            inputTag: "fv-text-box",
-            name: "message",
-            i18n: "60099",
-            placeholder: "Ihre Nachricht",
-            autocomplete: "off"
-          }
-        ]
-      ]
-    };
-  }
-  renderField(field, rowIndex, fieldIndex) {
-    return html`
+.configuration-container {
+  justify-items: center;
+  border-radius: 0.9rem;
+  width: fit-content;
+  height: auto;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+  border: solid #EEEEEE 2px;
+  background: #f0f0f0;
+  display: grid;
+}
+.configuration-container .reset-conf {
+  width: fit-content;
+  padding: 5px;
+  border: none;
+  border-radius: 8px;
+  font-size: 12px;
+  background-color: red;
+  cursor: pointer;
+  color: white;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+  margin: 7px;
+}
+
+.field-input {
+  width: 240px;
+}
+
+.row-option-container {
+  display: flex;
+  justify-content: center;
+  padding: 2px 0;
+  column-gap: 10px;
+}
+
+.buttons-container {
+  display: flex;
+  gap: 10px;
+}
+
+.add-item-button {
+  width: 55px;
+  padding: 2px;
+  border: none;
+  border-radius: 8px;
+  font-size: 14px;
+  cursor: pointer;
+  transition: all 0.2s ease;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+}
+
+.delete-item-button {
+  width: 55px;
+  padding: 2px;
+  border: none;
+  border-radius: 8px;
+  font-size: 14px;
+  cursor: pointer;
+  background-color: red;
+  color: white;
+  transition: all 0.2s ease;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+}
+
+.add-group-button {
+  width: 55px;
+  padding: 2px;
+  border: none;
+  border-radius: 8px;
+  font-size: 14px;
+  cursor: pointer;
+  transition: all 0.2s ease;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+  background-color: #c5c5c5;
+}
+
+.delete-group-button {
+  width: 100px;
+  padding: 2px;
+  border: none;
+  border-radius: 8px;
+  font-size: 14px;
+  cursor: pointer;
+  transition: all 0.2s ease;
+  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
+  background-color: #f7931e;
+  color: white;
+}
+
+.add-group-button {
+  background-color: #c5c5c5;
+  color: white;
+}
+.add-group-button:hover {
+  background-color: #aaaaaa;
+  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+  transform: translateY(-1px);
+}
+
+.delete-item-button:hover {
+  background-color: #c70404;
+  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+  transform: translateY(-1px);
+}
+
+.delete-group-button:hover {
+  background-color: #f7931e;
+  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
+  transform: translateY(-1px);
+}
+
+.row {
+  padding: 5px;
+  margin: 9px;
+  display: flex;
+  gap: 10px;
+  background: #e6e6e6;
+  border: none;
+  border-radius: 7px;
+  justify-content: center;
+}
+
+.row-item {
+  display: grid;
+  gap: 10px;
+}
+
+.buttons-container {
+  display: flex;
+  justify-content: center;
+}
+
+dialog {
+  border: none;
+  border-radius: 10px;
+  padding: 20px;
+  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
+  width: 320px;
+}
+
+form {
+  display: flex;
+  flex-direction: column;
+  gap: 12px;
+}
+
+.dialog-buttons {
+  display: flex;
+  justify-content: flex-end;
+  gap: 8px;
+  margin-top: 12px;
+}
+
+.configuraion-container {
+  margin: 10px;
+}
+
+.configuration-group {
+  border: none;
+  padding: 5px;
+  background: #fffdfd;
+  border-radius: 4px;
+  margin: 5px;
+}`;var x=Object.defineProperty,m=Object.getOwnPropertyDescriptor,l=(e,t,n,o)=>{for(var r=o>1?void 0:o?m(t,n):t,s=e.length-1,p;s>=0;s--)(p=e[s])&&(r=(o?p(t,n,r):p(r))||r);return o&&r&&x(t,n,r),r};let i=class extends c{constructor(){super(...arguments),this.showDialog=!1,this.currentRowIndex=null,this.currentFieldInsertIndex=null,this.showInputTagField=!0,this.propertyData={entries:[]},this.defaultEntries={entries:[[{name:"name",i18n:"20322",placeholder:"Vorname*",required:!0,autocomplete:"given-name"},{name:"surname",i18n:"20323",placeholder:"Nachname*",required:!0,autocomplete:"family-name"}],[{name:"phone",i18n:"20381",placeholder:"Telefon*",required:!0,autocomplete:"tel"},{name:"email",i18n:"fv.email.homeviewer.send_request_customer.email",placeholder:"E-Mail*",required:!0,autocomplete:"email"}],[{name:"customerNo",i18n:"1610",placeholder:"Kundennummer",autocomplete:"section-customerNo"},{name:"adress",i18n:"20228",placeholder:"Adresse",autocomplete:"street-address"}],[{name:"companyName",i18n:"25024",placeholder:"Firmenname",autocomplete:"organization"},{name:"postcode",i18n:"25026",placeholder:"Postleitzahl",autocomplete:"postal-code"}],[{name:"city",i18n:"aiImageGen.city",autocomplete:"address-level2",placeholder:"Stadt"}],[{inputTag:"fv-text-box",name:"message",i18n:"60099",placeholder:"Ihre Nachricht",autocomplete:"off"}]]}}renderField(e,t,n){return a`
             <div class="row-item">
-                <div>${field.placeholder}</div>
+                <div>${e.placeholder}</div>
                 <div style="display: flex; align-items: center; gap: 8px;">
-                    ${this.decideInputType(field.inputTag)}
+                    ${this.decideInputType(e.inputTag)}
                     <button
                             class="add-item-button"
-                            @click=${() => this.openDialog(rowIndex, fieldIndex + 1, false)}
+                            @click=${()=>this.openDialog(t,n+1,!1)}
                     >
                         Add
                     </button>
@@ -75,149 +185,48 @@
                 <div class="buttons-container">
                     <button
                             class="delete-item-button"
-                            @click=${() => this.deleteRowItem(rowIndex, fieldIndex)}
+                            @click=${()=>this.deleteRowItem(t,n)}
                     >
                         Delete
                     </button>
                     <label style="display: flex; align-items: center; gap: 4px; font-size: 13px;">
                         <input
                                 type="checkbox"
-                                .checked=${field.required || false}
-                                @change=${(e) => this.toggleRequired(e, rowIndex, fieldIndex)}
+                                .checked=${e.required||!1}
+                                @change=${o=>this.toggleRequired(o,t,n)}
                         />
                         Required
                     </label>
                 </div>
             </div>
-        `;
-  }
-  set PropertyData(data) {
-    this.propertyData = data;
-    this.requestUpdate();
-  }
-  setDefaultPropData() {
-    this.propertyData = structuredClone(this.defaultEntries);
-    this.requestUpdate();
-  }
-  decideInputType(inputTag) {
-    if (inputTag === "fv-text-box") {
-      return html`<input style="width:300px; height:100px;"></input>`;
-    } else {
-      return html`
-                <dh-input></dh-input>`;
-    }
-  }
-  addNewGroup(atIndex) {
-    this.propertyData.entries.splice(atIndex, 0, []);
-    this.currentRowIndex = atIndex;
-    this.showInputTagField = true;
-    this.requestUpdate();
-    this.openDialog(this.currentRowIndex);
-  }
-  deleteGroup(atIndex) {
-    this.propertyData.entries.splice(atIndex, 1);
-    this.requestUpdate();
-  }
-  toggleRequired(e, rowIndex, fieldIndex) {
-    const target = e.target;
-    const checked = target.checked;
-    this.propertyData.entries[rowIndex][fieldIndex].required = checked;
-    this.requestUpdate();
-  }
-  renderGroups() {
-    if (this.propertyData.entries.length === 0) {
-      return html`
+        `}set PropertyData(e){this.propertyData=e,this.requestUpdate()}setDefaultPropData(){this.propertyData=structuredClone(this.defaultEntries),console.log(this.propertyData),this.requestUpdate()}decideInputType(e){return e==="fv-text-box"?a`<input style="width:300px; height:100px;"></input>`:a`
+                <dh-input></dh-input>`}addNewGroup(e){this.propertyData.entries.splice(e,0,[]),this.currentRowIndex=e,this.showInputTagField=!0,this.requestUpdate(),this.openDialog(this.currentRowIndex)}deleteGroup(e){this.propertyData.entries.splice(e,1),this.requestUpdate()}toggleRequired(e,t,n){const o=e.target.checked;this.propertyData.entries[t][n].required=o,this.requestUpdate()}renderGroups(){return this.propertyData.entries.length===0?a`
                 <div style="display:flex; justify-items:center;">
-                    <button class="add-group-button" @click=${() => this.addNewGroup(0)}> +</button>
+                    <button class="add-group-button" @click=${()=>this.addNewGroup(0)}> +</button>
                 </div>
-            `;
-    } else {
-      return html`${this.propertyData.entries.map((row, rowIndex) => this.renderRow(row, rowIndex))}`;
-    }
-  }
-  renderRow(row, rowIndex) {
-    if (row.length === 0) {
-      return html`
+            `:a`${this.propertyData.entries.map((e,t)=>this.renderRow(e,t))}`}renderRow(e,t){return e.length===0?a`
                 <div class="configuration-group">
                     <div class="row">
-                        <button class="add-item-button" @click=${() => this.openDialog(rowIndex, 0, false)}>Add</button>
+                        <button class="add-item-button" @click=${()=>this.openDialog(t,0,!1)}>Add</button>
                     </div>
                     <div class="row-option-container">
-                        <button class="add-group-button" @click=${() => this.addNewGroup(rowIndex + 1)}> +</button>
-                        <button class="delete-group-button" @click=${() => this.deleteGroup(rowIndex)}>Delete group
+                        <button class="add-group-button" @click=${()=>this.addNewGroup(t+1)}> +</button>
+                        <button class="delete-group-button" @click=${()=>this.deleteGroup(t)}>Delete group
                         </button>
                     </div>
                 </div>
-            `;
-    } else {
-      return html`
+            `:a`
                 <div class="configuration-group">
                     <div class="row">
-                        ${row.map((field, fieldIndex) => this.renderField(field, rowIndex, fieldIndex))}
+                        ${e.map((n,o)=>this.renderField(n,t,o))}
                     </div>
                     <div class="row-option-container">
-                        <button class="add-group-button" @click=${() => this.addNewGroup(rowIndex + 1)}> +</button>
-                        <button class="delete-group-button" @click=${() => this.deleteGroup(rowIndex)}>Delete group
+                        <button class="add-group-button" @click=${()=>this.addNewGroup(t+1)}> +</button>
+                        <button class="delete-group-button" @click=${()=>this.deleteGroup(t)}>Delete group
                         </button>
                     </div>
                 </div>
-            `;
-    }
-  }
-  openDialog(rowIndex, insertIndex = null, showInputTag = true) {
-    this.currentRowIndex = rowIndex;
-    this.currentFieldInsertIndex = insertIndex;
-    this.showDialog = true;
-    this.showInputTagField = showInputTag;
-    const dialog = this.renderRoot.querySelector("dialog");
-    dialog.showModal();
-  }
-  closeDialog() {
-    const dialog = this.renderRoot.querySelector("dialog");
-    dialog.close();
-    this.showDialog = false;
-  }
-  handleSubmit(e) {
-    e.preventDefault();
-    const form = e.target;
-    const raw = Object.fromEntries(new FormData(form).entries());
-    const baseData = {
-      name: String(raw.name || ""),
-      placeholder: raw.placeholder ? String(raw.placeholder) : void 0,
-      i18n: raw.i18n ? String(raw.i18n) : void 0,
-      required: raw.required === "true"
-    };
-    let data;
-    if (!raw.inputTag) {
-      data = baseData;
-    } else if (raw.inputTag === "input") {
-      data = baseData;
-    } else {
-      data = {
-        ...baseData,
-        ...this.showInputTagField ? { inputTag: String(raw.inputTag) } : {}
-      };
-    }
-    if (raw.autocomplete && String(raw.autocomplete).length > 0) {
-      data = {
-        ...baseData,
-        ...{ autocomplete: String(raw.autocomplete) }
-      };
-    }
-    if (this.currentRowIndex != null) {
-      const insertIndex = this.currentFieldInsertIndex ?? this.propertyData.entries[this.currentRowIndex].length;
-      this.propertyData.entries[this.currentRowIndex].splice(insertIndex, 0, data);
-      this.requestUpdate();
-    }
-    form.reset();
-    this.closeDialog();
-  }
-  deleteRowItem(rowIndex, fieldIndex) {
-    this.propertyData.entries[rowIndex].splice(fieldIndex, 1);
-    this.requestUpdate();
-  }
-  render() {
-    return html`
+            `}openDialog(e,t=null,n=!0){this.currentRowIndex=e,this.currentFieldInsertIndex=t,this.showDialog=!0,this.showInputTagField=n,this.renderRoot.querySelector("dialog").showModal()}closeDialog(){this.renderRoot.querySelector("dialog").close(),this.showDialog=!1}handleSubmit(e){e.preventDefault();const t=e.target,n=Object.fromEntries(new FormData(t).entries()),o={name:String(n.name||""),placeholder:n.placeholder?String(n.placeholder):void 0,i18n:n.i18n?String(n.i18n):void 0,required:n.required==="true"};let r;if(n.inputTag?n.inputTag==="input"?r=o:r={...o,...this.showInputTagField?{inputTag:String(n.inputTag)}:{}}:r=o,n.autocomplete&&String(n.autocomplete).length>0&&(r={...o,autocomplete:String(n.autocomplete)}),this.currentRowIndex!=null){const s=this.currentFieldInsertIndex??this.propertyData.entries[this.currentRowIndex].length;this.propertyData.entries[this.currentRowIndex].splice(s,0,r),this.requestUpdate()}t.reset(),this.closeDialog()}deleteRowItem(e,t){this.propertyData.entries[e].splice(t,1),this.requestUpdate()}render(){return a`
             <div class="configuration-container">
                 <fv-label class="header-label">Request-Configurator-Json</fv-label>
                 ${this.renderGroups()}
@@ -269,14 +278,14 @@
 
                     </label>
 
-                    ${this.showInputTagField ? html`
+                    ${this.showInputTagField?a`
                         <label>
                             InputTag:
                             <select name="inputTag" required>
                                 <option value="input" selected>Input</option>
                                 <option value="fv-text-box">fv-text-box</option>
                             </select>
-                        </label>` : null}
+                        </label>`:null}
 
                     <div class="dialog-buttons">
                         <button type="button" class="cancel-btn" @click=${this.closeDialog}>Cancel</button>
@@ -284,28 +293,4 @@
                     </div>
                 </form>
             </dialog>
-        `;
-  }
-};
-RequestConfigurationComponent.styles = unsafeCSS(requestConfigurationComponent);
-__decorateClass([
-  state()
-], RequestConfigurationComponent.prototype, "showDialog", 2);
-__decorateClass([
-  state()
-], RequestConfigurationComponent.prototype, "currentRowIndex", 2);
-__decorateClass([
-  state()
-], RequestConfigurationComponent.prototype, "currentFieldInsertIndex", 2);
-__decorateClass([
-  state()
-], RequestConfigurationComponent.prototype, "showInputTagField", 2);
-__decorateClass([
-  property({ type: Array })
-], RequestConfigurationComponent.prototype, "propertyData", 2);
-RequestConfigurationComponent = __decorateClass([
-  customElement("request-configuration-component")
-], RequestConfigurationComponent);
-
-export { RequestConfigurationComponent };
-//# sourceMappingURL=request-configurator-ui.mjs.map
+        `}};i.styles=u(b),l([d()],i.prototype,"showDialog",2),l([d()],i.prototype,"currentRowIndex",2),l([d()],i.prototype,"currentFieldInsertIndex",2),l([d()],i.prototype,"showInputTagField",2),l([h({type:Array})],i.prototype,"propertyData",2),i=l([g("request-configuration-component")],i);export{i as RequestConfigurationComponent};

--
Gitblit v1.9.3