@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260722070133 → 0.8.1-dev.20260722072521

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.
@@ -26,7 +26,7 @@ import {
26
26
  import {
27
27
  Button_default,
28
28
  ClientButton_default
29
- } from "./chunk-23WJE3YB.mjs";
29
+ } from "./chunk-JKP4XOZB.mjs";
30
30
  import "./chunk-IMNQO57B.mjs";
31
31
 
32
32
  // src/components/controls/edit/InputControlClient.tsx
@@ -644,32 +644,32 @@ var SwitchInput_default = SwitchInput;
644
644
 
645
645
  // src/components/controls/edit/InputControlClient.tsx
646
646
  import { jsx as jsx5 } from "react/jsx-runtime";
647
- var ControlComponents = {
648
- [InputControlType_default.lineTextInput]: LineTextInput_default,
649
- [InputControlType_default.emailInput]: EmailInput_default,
650
- [InputControlType_default.multilineTextInput]: MultilineTextInput_default,
651
- [InputControlType_default.moneyInput]: MoneyInput_default,
652
- [InputControlType_default.select]: Select_default,
653
- [InputControlType_default.percentageInput]: PercentageInput_default,
654
- [InputControlType_default.phoneInput]: PhoneInput_default,
655
- [InputControlType_default.numberInput]: NumberInput_default,
656
- [InputControlType_default.checkboxInput]: CheckboxInput_default,
657
- [InputControlType_default.otpInput]: OtpInput_default,
658
- [InputControlType_default.datetimeInput]: DateTimeInput_default,
659
- [InputControlType_default.colorInput]: ColorInput_default,
660
- [InputControlType_default.selectWithSearchInput]: SelectWithSearchInput_default,
661
- [InputControlType_default.selectWithSearchPanel]: SelectWithSearchPanel_default,
662
- [InputControlType_default.booleanSelect]: BooleanSelect_default,
663
- [InputControlType_default.timeInput]: TimeInput_default,
664
- [InputControlType_default.asset]: AssetUpload_default,
665
- [InputControlType_default.switchInput]: SwitchInput_default
666
- };
667
- var InputControl = React5.memo(React5.forwardRef(
647
+ var InputControl = React5.forwardRef(
668
648
  (props, ref) => {
649
+ const ControlComponents = {
650
+ [InputControlType_default.lineTextInput]: LineTextInput_default,
651
+ [InputControlType_default.emailInput]: EmailInput_default,
652
+ [InputControlType_default.multilineTextInput]: MultilineTextInput_default,
653
+ [InputControlType_default.moneyInput]: MoneyInput_default,
654
+ [InputControlType_default.select]: Select_default,
655
+ [InputControlType_default.percentageInput]: PercentageInput_default,
656
+ [InputControlType_default.phoneInput]: PhoneInput_default,
657
+ [InputControlType_default.numberInput]: NumberInput_default,
658
+ [InputControlType_default.checkboxInput]: CheckboxInput_default,
659
+ [InputControlType_default.otpInput]: OtpInput_default,
660
+ [InputControlType_default.datetimeInput]: DateTimeInput_default,
661
+ [InputControlType_default.colorInput]: ColorInput_default,
662
+ [InputControlType_default.selectWithSearchInput]: SelectWithSearchInput_default,
663
+ [InputControlType_default.selectWithSearchPanel]: SelectWithSearchPanel_default,
664
+ [InputControlType_default.booleanSelect]: BooleanSelect_default,
665
+ [InputControlType_default.timeInput]: TimeInput_default,
666
+ [InputControlType_default.asset]: AssetUpload_default,
667
+ [InputControlType_default.switchInput]: SwitchInput_default
668
+ };
669
669
  const SelectedControlComponent = ControlComponents[props.controlType];
670
670
  return /* @__PURE__ */ jsx5(React5.Fragment, { children: SelectedControlComponent ? /* @__PURE__ */ jsx5(SelectedControlComponent, { ...props }) : "Control not found" });
671
671
  }
672
- ));
672
+ );
673
673
  InputControl.displayName = "InputControl";
674
674
  var InputControlClient_default = InputControl;
675
675
  export {
@@ -24,7 +24,7 @@ import {
24
24
  import {
25
25
  Button_default,
26
26
  ClientButton_default
27
- } from "./chunk-RHVNJMS4.mjs";
27
+ } from "./chunk-YL6E76X2.mjs";
28
28
  import "./chunk-56HSDML5.mjs";
29
29
 
30
30
  // src/components/controls/edit/InputControlClient.tsx
@@ -642,32 +642,32 @@ var SwitchInput_default = SwitchInput;
642
642
 
643
643
  // src/components/controls/edit/InputControlClient.tsx
644
644
  import { jsx as jsx5 } from "react/jsx-runtime";
645
- var ControlComponents = {
646
- [InputControlType_default.lineTextInput]: LineTextInput_default,
647
- [InputControlType_default.emailInput]: EmailInput_default,
648
- [InputControlType_default.multilineTextInput]: MultilineTextInput_default,
649
- [InputControlType_default.moneyInput]: MoneyInput_default,
650
- [InputControlType_default.select]: Select_default,
651
- [InputControlType_default.percentageInput]: PercentageInput_default,
652
- [InputControlType_default.phoneInput]: PhoneInput_default,
653
- [InputControlType_default.numberInput]: NumberInput_default,
654
- [InputControlType_default.checkboxInput]: CheckboxInput_default,
655
- [InputControlType_default.otpInput]: OtpInput_default,
656
- [InputControlType_default.datetimeInput]: DateTimeInput_default,
657
- [InputControlType_default.colorInput]: ColorInput_default,
658
- [InputControlType_default.selectWithSearchInput]: SelectWithSearchInput_default,
659
- [InputControlType_default.selectWithSearchPanel]: SelectWithSearchPanel_default,
660
- [InputControlType_default.booleanSelect]: BooleanSelect_default,
661
- [InputControlType_default.timeInput]: TimeInput_default,
662
- [InputControlType_default.asset]: AssetUpload_default,
663
- [InputControlType_default.switchInput]: SwitchInput_default
664
- };
665
- var InputControl = React5.memo(React5.forwardRef(
645
+ var InputControl = React5.forwardRef(
666
646
  (props, ref) => {
647
+ const ControlComponents = {
648
+ [InputControlType_default.lineTextInput]: LineTextInput_default,
649
+ [InputControlType_default.emailInput]: EmailInput_default,
650
+ [InputControlType_default.multilineTextInput]: MultilineTextInput_default,
651
+ [InputControlType_default.moneyInput]: MoneyInput_default,
652
+ [InputControlType_default.select]: Select_default,
653
+ [InputControlType_default.percentageInput]: PercentageInput_default,
654
+ [InputControlType_default.phoneInput]: PhoneInput_default,
655
+ [InputControlType_default.numberInput]: NumberInput_default,
656
+ [InputControlType_default.checkboxInput]: CheckboxInput_default,
657
+ [InputControlType_default.otpInput]: OtpInput_default,
658
+ [InputControlType_default.datetimeInput]: DateTimeInput_default,
659
+ [InputControlType_default.colorInput]: ColorInput_default,
660
+ [InputControlType_default.selectWithSearchInput]: SelectWithSearchInput_default,
661
+ [InputControlType_default.selectWithSearchPanel]: SelectWithSearchPanel_default,
662
+ [InputControlType_default.booleanSelect]: BooleanSelect_default,
663
+ [InputControlType_default.timeInput]: TimeInput_default,
664
+ [InputControlType_default.asset]: AssetUpload_default,
665
+ [InputControlType_default.switchInput]: SwitchInput_default
666
+ };
667
667
  const SelectedControlComponent = ControlComponents[props.controlType];
668
668
  return /* @__PURE__ */ jsx5(React5.Fragment, { children: SelectedControlComponent ? /* @__PURE__ */ jsx5(SelectedControlComponent, { ...props }) : "Control not found" });
669
669
  }
670
- ));
670
+ );
671
671
  InputControl.displayName = "InputControl";
672
672
  var InputControlClient_default = InputControl;
673
673
  export {
@@ -7,17 +7,15 @@ import {
7
7
  import {
8
8
  Button_default,
9
9
  ToastService_default
10
- } from "./chunk-23WJE3YB.mjs";
10
+ } from "./chunk-JKP4XOZB.mjs";
11
11
  import "./chunk-IMNQO57B.mjs";
12
12
 
13
13
  // src/components/pageRenderingEngine/nodes/LinkNodeButton.tsx
14
14
  import { useCallback, useState } from "react";
15
- import { jsx, jsxs } from "react/jsx-runtime";
15
+ import { jsx } from "react/jsx-runtime";
16
16
  var LinkNodeButton = (props) => {
17
17
  const { node, dataitem, children, linkText, linkType, linkUrl } = props;
18
18
  const [isLoading, setIsLoading] = useState(false);
19
- const [successMessage, setSuccessMessage] = useState(null);
20
- console.log("LinkNodeButton props:", props);
21
19
  const extractFieldNames = useCallback((template) => {
22
20
  if (!template) return [];
23
21
  const regex = /\{(\{\})?([a-zA-Z_$][a-zA-Z0-9_$]*)(?:\}\})?\}/g;
@@ -25,38 +23,35 @@ var LinkNodeButton = (props) => {
25
23
  const fieldNames = matches.map((match) => match[2] || match[1]).filter((name, index, self) => self.indexOf(name) === index);
26
24
  return fieldNames;
27
25
  }, []);
28
- const replaceTemplateVariables = useCallback(
29
- (template, responseData) => {
30
- if (!template) return template;
31
- let result = template;
32
- const fieldNames = extractFieldNames(template);
33
- if (responseData) {
34
- fieldNames.forEach((fieldName) => {
35
- const value = getNestedValue(responseData, fieldName);
36
- if (value !== void 0) {
37
- const regex1 = new RegExp(`\\{${fieldName}\\}`, "g");
38
- const regex2 = new RegExp(`\\{\\{${fieldName}\\}\\}`, "g");
39
- result = result.replace(regex1, String(value));
40
- result = result.replace(regex2, String(value));
41
- }
42
- });
43
- }
44
- if (props.routeParameters) {
45
- Object.entries(props.routeParameters).forEach(([key, value]) => {
46
- const regex = new RegExp(`\\{\\{${key}\\}\\}`, "g");
47
- result = result.replace(regex, String(value));
48
- });
49
- }
50
- if (dataitem) {
51
- Object.entries(dataitem).forEach(([key, value]) => {
52
- const regex = new RegExp(`\\{\\{${key}\\}\\}`, "g");
53
- result = result.replace(regex, String(value));
54
- });
55
- }
56
- return result;
57
- },
58
- [props.routeParameters, dataitem, extractFieldNames]
59
- );
26
+ const replaceTemplateVariables = useCallback((template, responseData) => {
27
+ if (!template) return template;
28
+ let result = template;
29
+ const fieldNames = extractFieldNames(template);
30
+ if (responseData) {
31
+ fieldNames.forEach((fieldName) => {
32
+ const value = getNestedValue(responseData, fieldName);
33
+ if (value !== void 0) {
34
+ const regex1 = new RegExp(`\\{${fieldName}\\}`, "g");
35
+ const regex2 = new RegExp(`\\{\\{${fieldName}\\}\\}`, "g");
36
+ result = result.replace(regex1, String(value));
37
+ result = result.replace(regex2, String(value));
38
+ }
39
+ });
40
+ }
41
+ if (props.routeParameters) {
42
+ Object.entries(props.routeParameters).forEach(([key, value]) => {
43
+ const regex = new RegExp(`\\{\\{${key}\\}\\}`, "g");
44
+ result = result.replace(regex, String(value));
45
+ });
46
+ }
47
+ if (dataitem) {
48
+ Object.entries(dataitem).forEach(([key, value]) => {
49
+ const regex = new RegExp(`\\{\\{${key}\\}\\}`, "g");
50
+ result = result.replace(regex, String(value));
51
+ });
52
+ }
53
+ return result;
54
+ }, [props.routeParameters, dataitem, extractFieldNames]);
60
55
  const getNestedValue = useCallback((obj, path) => {
61
56
  if (!obj || !path) return void 0;
62
57
  if (obj[path] !== void 0) {
@@ -74,10 +69,7 @@ var LinkNodeButton = (props) => {
74
69
  }, []);
75
70
  const onClick = useCallback(async () => {
76
71
  if (!node.postUrl) {
77
- return {
78
- isSuccessful: false,
79
- message: "No POST URL configured for this button"
80
- };
72
+ return { isSuccessful: false, message: "No POST URL configured for this button" };
81
73
  }
82
74
  setIsLoading(true);
83
75
  try {
@@ -103,7 +95,6 @@ var LinkNodeButton = (props) => {
103
95
  }
104
96
  if (response?.message) {
105
97
  ToastService_default.showSuccess(response.message);
106
- setSuccessMessage(response.message);
107
98
  }
108
99
  if (response && node.redirectUrl) {
109
100
  const fieldNames = extractFieldNames(node.redirectUrl);
@@ -126,9 +117,7 @@ var LinkNodeButton = (props) => {
126
117
  }
127
118
  });
128
119
  console.log("Field value map:", fieldValueMap);
129
- const missingFields = fieldNames.filter(
130
- (fieldName) => !fieldValueMap[fieldName]
131
- );
120
+ const missingFields = fieldNames.filter((fieldName) => !fieldValueMap[fieldName]);
132
121
  if (missingFields.length > 0) {
133
122
  console.warn(`Missing field values for: ${missingFields.join(", ")}`);
134
123
  }
@@ -139,10 +128,7 @@ var LinkNodeButton = (props) => {
139
128
  resolvedRedirectUrl = resolvedRedirectUrl.replace(regex1, value);
140
129
  resolvedRedirectUrl = resolvedRedirectUrl.replace(regex2, value);
141
130
  });
142
- resolvedRedirectUrl = replaceTemplateVariables(
143
- resolvedRedirectUrl,
144
- response
145
- );
131
+ resolvedRedirectUrl = replaceTemplateVariables(resolvedRedirectUrl, response);
146
132
  console.log("Final redirect URL:", resolvedRedirectUrl);
147
133
  if (resolvedRedirectUrl && !resolvedRedirectUrl.includes("{")) {
148
134
  window.location.href = resolvedRedirectUrl;
@@ -153,27 +139,14 @@ var LinkNodeButton = (props) => {
153
139
  return { isSuccessful: false, message: errorMessage };
154
140
  }
155
141
  setIsLoading(false);
156
- return {
157
- isSuccessful: true,
158
- message: response?.message,
159
- result: response
160
- };
142
+ return { isSuccessful: true, message: response?.message, result: response };
161
143
  } catch (err) {
162
144
  console.error("Button API call failed:", err);
163
145
  const errorMessage = err.message || "An unexpected error occurred";
164
146
  setIsLoading(false);
165
147
  return { isSuccessful: false, message: errorMessage };
166
148
  }
167
- }, [
168
- node.postUrl,
169
- node.payload,
170
- node.redirectUrl,
171
- replaceTemplateVariables,
172
- extractFieldNames,
173
- getNestedValue,
174
- props.apiBaseUrl,
175
- props.session
176
- ]);
149
+ }, [node.postUrl, node.payload, node.redirectUrl, replaceTemplateVariables, extractFieldNames, getNestedValue, props.apiBaseUrl, props.session]);
177
150
  const renderButtonContent = () => {
178
151
  if (children) {
179
152
  return children;
@@ -183,41 +156,14 @@ var LinkNodeButton = (props) => {
183
156
  }
184
157
  return node.title || "Button";
185
158
  };
186
- const fontSize = node.children?.[0]?.style?.match(/font-size:\s*([^;]+)/)?.[1];
187
159
  return /* @__PURE__ */ jsx("div", { className: "link-button-wrapper", children: /* @__PURE__ */ jsx(
188
160
  Button_default,
189
161
  {
190
162
  ButtonType: linkType,
191
163
  onClick,
192
- disabled: isLoading || !!successMessage,
164
+ disabled: isLoading,
193
165
  className: "w-full",
194
- children: successMessage ? /* @__PURE__ */ jsxs(
195
- "span",
196
- {
197
- style: fontSize ? { fontSize } : void 0,
198
- className: "inline-flex items-center gap-2",
199
- children: [
200
- /* @__PURE__ */ jsx(
201
- "svg",
202
- {
203
- xmlns: "http://www.w3.org/2000/svg",
204
- viewBox: "0 0 20 20",
205
- fill: "currentColor",
206
- className: "w-5 h-5",
207
- children: /* @__PURE__ */ jsx(
208
- "path",
209
- {
210
- fillRule: "evenodd",
211
- d: "M16.704 5.29a1 1 0 010 1.42l-7.25 7.25a1 1 0 01-1.415 0L3.29 9.21a1 1 0 111.415-1.414l4.042 4.042 6.543-6.543a1 1 0 011.414 0z",
212
- clipRule: "evenodd"
213
- }
214
- )
215
- }
216
- ),
217
- /* @__PURE__ */ jsx("span", { children: successMessage })
218
- ]
219
- }
220
- ) : renderButtonContent()
166
+ children: renderButtonContent()
221
167
  }
222
168
  ) });
223
169
  };