@acoustte-digital-services/digitalstore-controls-dev 0.8.1-dev.20260428094243 → 0.8.1-dev.20260428111737

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.js CHANGED
@@ -1296,13 +1296,23 @@ var timeZoneAbbreviations = {
1296
1296
  // src/components/controls/view/DateView.tsx
1297
1297
  var import_jsx_runtime2 = require("react/jsx-runtime");
1298
1298
  var DateView = (props) => {
1299
- const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
1299
+ const [userTimeZone, setUserTimeZone] = (0, import_react2.useState)(null);
1300
+ (0, import_react2.useEffect)(() => {
1301
+ setUserTimeZone(Intl.DateTimeFormat().resolvedOptions().timeZone);
1302
+ }, []);
1303
+ if (!userTimeZone) return null;
1300
1304
  const getTimeZoneAbbreviation = (timeZone) => {
1301
1305
  return timeZoneAbbreviations[timeZone] || timeZone;
1302
1306
  };
1307
+ const toUtcDate = (dateString) => {
1308
+ const s = dateString.trim();
1309
+ const iso = s.replace(" ", "T");
1310
+ const utc = iso.endsWith("Z") || iso.includes("+") ? iso : iso + "Z";
1311
+ return new Date(utc);
1312
+ };
1303
1313
  const getRelativeTime = (dateString) => {
1304
1314
  const now = /* @__PURE__ */ new Date();
1305
- const date = /* @__PURE__ */ new Date(dateString + "Z");
1315
+ const date = toUtcDate(dateString);
1306
1316
  const diffMs = now.getTime() - date.getTime();
1307
1317
  const diffSec = Math.floor(diffMs / 1e3);
1308
1318
  const diffMin = Math.floor(diffSec / 60);
@@ -1319,9 +1329,8 @@ var DateView = (props) => {
1319
1329
  timeZone: userTimeZone
1320
1330
  }).format(date);
1321
1331
  };
1322
- console.log("DateView props:", props);
1323
1332
  const parseAndFormatDate = (dateString, format) => {
1324
- const parsedDate = /* @__PURE__ */ new Date(dateString + "Z");
1333
+ const parsedDate = toUtcDate(dateString);
1325
1334
  if (format === "relative") {
1326
1335
  return getRelativeTime(dateString);
1327
1336
  }
package/dist/index.mjs CHANGED
@@ -43,7 +43,7 @@ var NumberView = (props) => {
43
43
  var NumberView_default = NumberView;
44
44
 
45
45
  // src/components/controls/view/DateView.tsx
46
- import React2 from "react";
46
+ import React2, { useState, useEffect } from "react";
47
47
 
48
48
  // src/components/controls/view/TimeZoneAbbrevations.tsx
49
49
  var timeZoneAbbreviations = {
@@ -164,13 +164,23 @@ var timeZoneAbbreviations = {
164
164
  // src/components/controls/view/DateView.tsx
165
165
  import { jsx as jsx2, jsxs } from "react/jsx-runtime";
166
166
  var DateView = (props) => {
167
- const userTimeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;
167
+ const [userTimeZone, setUserTimeZone] = useState(null);
168
+ useEffect(() => {
169
+ setUserTimeZone(Intl.DateTimeFormat().resolvedOptions().timeZone);
170
+ }, []);
171
+ if (!userTimeZone) return null;
168
172
  const getTimeZoneAbbreviation = (timeZone) => {
169
173
  return timeZoneAbbreviations[timeZone] || timeZone;
170
174
  };
175
+ const toUtcDate = (dateString) => {
176
+ const s = dateString.trim();
177
+ const iso = s.replace(" ", "T");
178
+ const utc = iso.endsWith("Z") || iso.includes("+") ? iso : iso + "Z";
179
+ return new Date(utc);
180
+ };
171
181
  const getRelativeTime = (dateString) => {
172
182
  const now = /* @__PURE__ */ new Date();
173
- const date = /* @__PURE__ */ new Date(dateString + "Z");
183
+ const date = toUtcDate(dateString);
174
184
  const diffMs = now.getTime() - date.getTime();
175
185
  const diffSec = Math.floor(diffMs / 1e3);
176
186
  const diffMin = Math.floor(diffSec / 60);
@@ -187,9 +197,8 @@ var DateView = (props) => {
187
197
  timeZone: userTimeZone
188
198
  }).format(date);
189
199
  };
190
- console.log("DateView props:", props);
191
200
  const parseAndFormatDate = (dateString, format) => {
192
- const parsedDate = /* @__PURE__ */ new Date(dateString + "Z");
201
+ const parsedDate = toUtcDate(dateString);
193
202
  if (format === "relative") {
194
203
  return getRelativeTime(dateString);
195
204
  }
@@ -607,10 +616,10 @@ var InputControlType = {
607
616
  var InputControlType_default = InputControlType;
608
617
 
609
618
  // src/components/controls/edit/Select.tsx
610
- import { useState, useEffect } from "react";
619
+ import { useState as useState2, useEffect as useEffect2 } from "react";
611
620
  import { jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
612
621
  var Select = (props) => {
613
- const [list, setList] = useState([]);
622
+ const [list, setList] = useState2([]);
614
623
  const getSafeValue = (val) => {
615
624
  if (val === null || val === void 0) return "";
616
625
  if (typeof val === "boolean") return val ? "1" : "0";
@@ -639,7 +648,7 @@ var Select = (props) => {
639
648
  groupKey: props.groupKey
640
649
  });
641
650
  };
642
- useEffect(() => {
651
+ useEffect2(() => {
643
652
  async function fetchData() {
644
653
  if (props.dataset) {
645
654
  setList(props.dataset);
@@ -1020,11 +1029,11 @@ var DateTimeInput = (props) => {
1020
1029
  var DateTimeInput_default = DateTimeInput;
1021
1030
 
1022
1031
  // src/components/controls/edit/ColorInput.tsx
1023
- import React21, { useEffect as useEffect2 } from "react";
1032
+ import React21, { useEffect as useEffect3 } from "react";
1024
1033
  import { jsx as jsx21, jsxs as jsxs16 } from "react/jsx-runtime";
1025
1034
  var ColorInput = (props) => {
1026
1035
  const [color, setColor] = React21.useState("#3b82f6");
1027
- useEffect2(() => {
1036
+ useEffect3(() => {
1028
1037
  if (props.value !== void 0 && props.value !== null) {
1029
1038
  if (typeof props.value === "string") {
1030
1039
  setColor(props.value);
@@ -1066,15 +1075,15 @@ var ColorInput = (props) => {
1066
1075
  var ColorInput_default = ColorInput;
1067
1076
 
1068
1077
  // src/components/controls/edit/SelectWithSearchInput.tsx
1069
- import { useEffect as useEffect3, useRef, useState as useState2 } from "react";
1078
+ import { useEffect as useEffect4, useRef, useState as useState3 } from "react";
1070
1079
  import { jsx as jsx22, jsxs as jsxs17 } from "react/jsx-runtime";
1071
1080
  var SelectWithSearchInput = (props) => {
1072
- const [isOpen, setIsOpen] = useState2(false);
1073
- const [searchTerm, setSearchTerm] = useState2("");
1074
- const [highlightedIndex, setHighlightedIndex] = useState2(-1);
1075
- const [selectedItem, setSelectedItem] = useState2(null);
1076
- const [list, setList] = useState2([]);
1077
- useEffect3(() => {
1081
+ const [isOpen, setIsOpen] = useState3(false);
1082
+ const [searchTerm, setSearchTerm] = useState3("");
1083
+ const [highlightedIndex, setHighlightedIndex] = useState3(-1);
1084
+ const [selectedItem, setSelectedItem] = useState3(null);
1085
+ const [list, setList] = useState3([]);
1086
+ useEffect4(() => {
1078
1087
  async function fetchData() {
1079
1088
  if (props.dataset) {
1080
1089
  setList(props.dataset);
@@ -1129,7 +1138,7 @@ var SelectWithSearchInput = (props) => {
1129
1138
  }
1130
1139
  };
1131
1140
  const dropdownRef = useRef(null);
1132
- useEffect3(() => {
1141
+ useEffect4(() => {
1133
1142
  if (highlightedIndex >= 0 && dropdownRef.current) {
1134
1143
  const highlightedItem = dropdownRef.current.children[highlightedIndex];
1135
1144
  highlightedItem?.scrollIntoView({
@@ -1215,26 +1224,26 @@ var SelectWithSearchInput_default = SelectWithSearchInput;
1215
1224
 
1216
1225
  // src/components/controls/edit/SelectWithSearchPanel.tsx
1217
1226
  import React23, {
1218
- useEffect as useEffect4,
1227
+ useEffect as useEffect5,
1219
1228
  useRef as useRef2,
1220
- useState as useState3,
1229
+ useState as useState4,
1221
1230
  useCallback
1222
1231
  } from "react";
1223
1232
  import { jsx as jsx23, jsxs as jsxs18 } from "react/jsx-runtime";
1224
1233
  var SelectWithSearchPanel = (props) => {
1225
- const [isOpen, setIsOpen] = useState3(false);
1226
- const [searchTerm, setSearchTerm] = useState3("");
1227
- const [highlightedIndex, setHighlightedIndex] = useState3(0);
1228
- const [list, setList] = useState3([]);
1234
+ const [isOpen, setIsOpen] = useState4(false);
1235
+ const [searchTerm, setSearchTerm] = useState4("");
1236
+ const [highlightedIndex, setHighlightedIndex] = useState4(0);
1237
+ const [list, setList] = useState4([]);
1229
1238
  const listRef = useRef2(null);
1230
- const [isError, setIsError] = useState3(false);
1239
+ const [isError, setIsError] = useState4(false);
1231
1240
  const containerRef = useRef2(null);
1232
- const [isCreateOpen, setIsCreateOpen] = useState3(false);
1233
- const [formData, setFormData] = useState3({});
1241
+ const [isCreateOpen, setIsCreateOpen] = useState4(false);
1242
+ const [formData, setFormData] = useState4({});
1234
1243
  const getNestedValue3 = (obj, path) => {
1235
1244
  return path.split(".").reduce((acc, key) => acc?.[key], obj);
1236
1245
  };
1237
- useEffect4(() => {
1246
+ useEffect5(() => {
1238
1247
  const handleClickOutside = (event) => {
1239
1248
  if (containerRef.current && !containerRef.current.contains(event.target)) {
1240
1249
  setIsOpen(false);
@@ -1245,7 +1254,7 @@ var SelectWithSearchPanel = (props) => {
1245
1254
  document.removeEventListener("mousedown", handleClickOutside);
1246
1255
  };
1247
1256
  }, []);
1248
- useEffect4(() => {
1257
+ useEffect5(() => {
1249
1258
  async function fetchData() {
1250
1259
  if (props.dataset) {
1251
1260
  setList(props.dataset);
@@ -1287,7 +1296,7 @@ var SelectWithSearchPanel = (props) => {
1287
1296
  audioCtx.close();
1288
1297
  }, 250);
1289
1298
  };
1290
- useEffect4(() => {
1299
+ useEffect5(() => {
1291
1300
  const filteredItems2 = list?.filter(
1292
1301
  (item) => item[props?.dataTextFieldName]?.toLowerCase().includes(searchTerm?.toLowerCase())
1293
1302
  );
@@ -1467,12 +1476,12 @@ var SelectWithSearchPanel_default = SelectWithSearchPanel;
1467
1476
 
1468
1477
  // src/components/controls/edit/BooleanSelect.tsx
1469
1478
  import React24, {
1470
- useState as useState4,
1471
- useEffect as useEffect5
1479
+ useState as useState5,
1480
+ useEffect as useEffect6
1472
1481
  } from "react";
1473
1482
  import { jsx as jsx24, jsxs as jsxs19 } from "react/jsx-runtime";
1474
1483
  var BooleanSelect = (props) => {
1475
- const [list, setList] = useState4();
1484
+ const [list, setList] = useState5();
1476
1485
  const textChangeHandler = (event) => {
1477
1486
  const text = event.target.value;
1478
1487
  const boolValue = text?.toLowerCase() === "true" || text === "1";
@@ -1485,7 +1494,7 @@ var BooleanSelect = (props) => {
1485
1494
  });
1486
1495
  }
1487
1496
  };
1488
- useEffect5(() => {
1497
+ useEffect6(() => {
1489
1498
  async function fetchData() {
1490
1499
  console.log("in select");
1491
1500
  if (props.dataset) {
@@ -1645,7 +1654,7 @@ var TimeInput = (props) => {
1645
1654
  var TimeInput_default = TimeInput;
1646
1655
 
1647
1656
  // src/components/controls/edit/AssetUpload.tsx
1648
- import React27, { useEffect as useEffect6 } from "react";
1657
+ import React27, { useEffect as useEffect7 } from "react";
1649
1658
 
1650
1659
  // src/components/utilities/AssetUtility.tsx
1651
1660
  var AssetUtility = class {
@@ -1763,7 +1772,7 @@ var AssetUpload = (props) => {
1763
1772
  return "image";
1764
1773
  };
1765
1774
  const [assetType, setAssetType] = React27.useState(getInitialTab);
1766
- useEffect6(() => {
1775
+ useEffect7(() => {
1767
1776
  setAssetType(getInitialTab());
1768
1777
  }, [props.value]);
1769
1778
  const assetUploadCallback = (newAsset) => {
@@ -2868,7 +2877,7 @@ var WidgetNode = (props) => {
2868
2877
  var WidgetNode_default = WidgetNode;
2869
2878
 
2870
2879
  // src/components/pageRenderingEngine/nodes/FormContainerNode.tsx
2871
- import React38, { useRef as useRef3, useReducer, useCallback as useCallback2, useEffect as useEffect7 } from "react";
2880
+ import React38, { useRef as useRef3, useReducer, useCallback as useCallback2, useEffect as useEffect8 } from "react";
2872
2881
 
2873
2882
  // src/components/pageRenderingEngine/nodes/InputControlNode.tsx
2874
2883
  import { jsx as jsx51 } from "react/jsx-runtime";
@@ -2961,7 +2970,7 @@ var FormContainerNode = (props) => {
2961
2970
  const handleInputChange = useCallback2((updatedValues) => {
2962
2971
  dispatch({ type: FORM_INPUT_UPDATE, name: updatedValues.name, value: updatedValues.value });
2963
2972
  }, [dispatch]);
2964
- useEffect7(() => {
2973
+ useEffect8(() => {
2965
2974
  const fetchInitialData = async () => {
2966
2975
  const client = new ServiceClient_default(props.apiBaseUrl, props.session);
2967
2976
  const response = await client.getSingle(props.node.dataFetchApi, props.routeParameters);
@@ -3018,7 +3027,7 @@ var EmbedNode = (props) => {
3018
3027
  var EmbedNode_default = EmbedNode;
3019
3028
 
3020
3029
  // src/components/Slider.tsx
3021
- import React39, { useState as useState5, useEffect as useEffect8, Children, cloneElement } from "react";
3030
+ import React39, { useState as useState6, useEffect as useEffect9, Children, cloneElement } from "react";
3022
3031
  import { Fragment as Fragment7, jsx as jsx54, jsxs as jsxs29 } from "react/jsx-runtime";
3023
3032
  var Slider = ({
3024
3033
  children,
@@ -3037,13 +3046,13 @@ var Slider = ({
3037
3046
  pillStyle = "cumulative",
3038
3047
  progressPosition = "bottom"
3039
3048
  }) => {
3040
- const [currentSlide, setCurrentSlide] = useState5(0);
3041
- const [transition, setTransition] = useState5(true);
3042
- const [slidesToShowState, setSlidesToShowState] = useState5(
3049
+ const [currentSlide, setCurrentSlide] = useState6(0);
3050
+ const [transition, setTransition] = useState6(true);
3051
+ const [slidesToShowState, setSlidesToShowState] = useState6(
3043
3052
  typeof slidesToShow === "number" ? slidesToShow : slidesToShow.large
3044
3053
  );
3045
- const [isPlaying, setIsPlaying] = useState5(autoplay);
3046
- useEffect8(() => {
3054
+ const [isPlaying, setIsPlaying] = useState6(autoplay);
3055
+ useEffect9(() => {
3047
3056
  if (typeof slidesToShow === "number") return;
3048
3057
  const handleResize = () => {
3049
3058
  if (window.innerWidth >= 1024) {
@@ -3058,7 +3067,7 @@ var Slider = ({
3058
3067
  window.addEventListener("resize", handleResize);
3059
3068
  return () => window.removeEventListener("resize", handleResize);
3060
3069
  }, [slidesToShow]);
3061
- useEffect8(() => {
3070
+ useEffect9(() => {
3062
3071
  if (!autoplay) return;
3063
3072
  const timer = setInterval(() => {
3064
3073
  if (isPlaying) {
@@ -3234,13 +3243,13 @@ var ProgressPill = ({
3234
3243
  currentSlide,
3235
3244
  totalSlides
3236
3245
  }) => {
3237
- const [progress, setProgress] = useState5(0);
3238
- useEffect8(() => {
3246
+ const [progress, setProgress] = useState6(0);
3247
+ useEffect9(() => {
3239
3248
  if (active) {
3240
3249
  setProgress(0);
3241
3250
  }
3242
3251
  }, [active, index]);
3243
- useEffect8(() => {
3252
+ useEffect9(() => {
3244
3253
  if (!active || !isPlaying) {
3245
3254
  if (!active) {
3246
3255
  setProgress(0);
@@ -4404,12 +4413,12 @@ var PageBodyRenderer = (props) => {
4404
4413
  var PageBodyRenderer_default = PageBodyRenderer;
4405
4414
 
4406
4415
  // src/components/Toast.tsx
4407
- import { useState as useState7 } from "react";
4416
+ import { useState as useState8 } from "react";
4408
4417
  import { Fragment as Fragment9, jsx as jsx60, jsxs as jsxs34 } from "react/jsx-runtime";
4409
4418
  var Toast = () => {
4410
- const [showToast, setShowToast] = useState7(false);
4411
- const [message, setMessage] = useState7("");
4412
- const [messageType, setMessageType] = useState7("error");
4419
+ const [showToast, setShowToast] = useState8(false);
4420
+ const [message, setMessage] = useState8("");
4421
+ const [messageType, setMessageType] = useState8("error");
4413
4422
  ToastService_default.showError = function(message2) {
4414
4423
  setShowToast(true);
4415
4424
  setMessage(message2);
@@ -4514,7 +4523,7 @@ var NavigationTabsV2 = ({ tabs, params = {} }) => {
4514
4523
  var NavigationTabsV2_default = NavigationTabsV2;
4515
4524
 
4516
4525
  // src/components/dataForm/DataList.tsx
4517
- import React46, { useEffect as useEffect9, useState as useState8, useCallback as useCallback3, useReducer as useReducer2 } from "react";
4526
+ import React46, { useEffect as useEffect10, useState as useState9, useCallback as useCallback3, useReducer as useReducer2 } from "react";
4518
4527
  import { useRouter } from "next/navigation";
4519
4528
 
4520
4529
  // src/components/dataForm/NoContentView.tsx
@@ -4577,8 +4586,8 @@ var DataList = (props) => {
4577
4586
  let activePageNumber = 0;
4578
4587
  let pages = 0;
4579
4588
  console.log(props.addLinkText);
4580
- const [isDataFound, setIsDataFound] = useState8(null);
4581
- useEffect9(() => {
4589
+ const [isDataFound, setIsDataFound] = useState9(null);
4590
+ useEffect10(() => {
4582
4591
  if (props?.dataset) {
4583
4592
  if (props?.dataset.result && props.dataset.result.length > 0) {
4584
4593
  setIsDataFound(true);
@@ -5021,7 +5030,7 @@ var DataList = (props) => {
5021
5030
  var DataList_default = DataList;
5022
5031
 
5023
5032
  // src/components/dataForm/DataListRenderer.tsx
5024
- import React47, { useState as useState9, useEffect as useEffect10 } from "react";
5033
+ import React47, { useState as useState10, useEffect as useEffect11 } from "react";
5025
5034
  import { usePathname as usePathname2 } from "next/navigation";
5026
5035
  import { jsx as jsx65, jsxs as jsxs37 } from "react/jsx-runtime";
5027
5036
  var viewControlMap = {
@@ -5077,14 +5086,14 @@ var DataListRenderer = ({
5077
5086
  widgetProps
5078
5087
  }) => {
5079
5088
  const serviceClient = new ServiceClient_default(apiBaseUrl, session);
5080
- const [columns, setColumns] = useState9([]);
5081
- const [dataset, setDataset] = useState9();
5082
- const [filter, setFilters] = useState9([]);
5083
- const [addLinkHref, setAddLinkHref] = useState9("");
5084
- const [addLinkText, setAddLinkText] = useState9("");
5085
- const [serviceRoute, setServiceRoute] = useState9("");
5089
+ const [columns, setColumns] = useState10([]);
5090
+ const [dataset, setDataset] = useState10();
5091
+ const [filter, setFilters] = useState10([]);
5092
+ const [addLinkHref, setAddLinkHref] = useState10("");
5093
+ const [addLinkText, setAddLinkText] = useState10("");
5094
+ const [serviceRoute, setServiceRoute] = useState10("");
5086
5095
  const pathname = usePathname2();
5087
- useEffect10(() => {
5096
+ useEffect11(() => {
5088
5097
  if (!formDefinition) return;
5089
5098
  setColumns(mapApiToColumns(formDefinition));
5090
5099
  setFilters(mapApiToFilters(formDefinition));
@@ -5097,7 +5106,7 @@ var DataListRenderer = ({
5097
5106
  setAddLinkHref(resolvedAddLinkHref);
5098
5107
  setAddLinkText(formDefinition?.siteFormDataList?.addLinkText ?? "");
5099
5108
  }, [formDefinition, params]);
5100
- useEffect10(() => {
5109
+ useEffect11(() => {
5101
5110
  const fetchData = async () => {
5102
5111
  if (!serviceRoute) return;
5103
5112
  const resolvedRoute = resolveRoutePlaceholders2(serviceRoute, params);
@@ -5109,7 +5118,7 @@ var DataListRenderer = ({
5109
5118
  };
5110
5119
  fetchData();
5111
5120
  }, [serviceRoute, query, params]);
5112
- const [tabItem, setTabItem] = useState9();
5121
+ const [tabItem, setTabItem] = useState10();
5113
5122
  const activeTab = tabItem?.find((tab) => tab.isActive);
5114
5123
  const activeHref = activeTab ? resolveRoutePlaceholders2(activeTab.landingPageUrl, params) : pathname;
5115
5124
  return /* @__PURE__ */ jsxs37(React47.Fragment, { children: [
@@ -5133,7 +5142,7 @@ var DataListRenderer = ({
5133
5142
  var DataListRenderer_default = DataListRenderer;
5134
5143
 
5135
5144
  // src/components/dataForm/DataForm.tsx
5136
- import React49, { useCallback as useCallback5, useEffect as useEffect11, useReducer as useReducer3, useRef as useRef4 } from "react";
5145
+ import React49, { useCallback as useCallback5, useEffect as useEffect12, useReducer as useReducer3, useRef as useRef4 } from "react";
5137
5146
 
5138
5147
  // src/components/dataForm/DataFormChildSection.tsx
5139
5148
  import React48, { useCallback as useCallback4 } from "react";
@@ -5415,7 +5424,7 @@ var DataForm = (props) => {
5415
5424
  console.error("Error fetching data:", error);
5416
5425
  }
5417
5426
  }, [formState.lastPropertyChanged, formState.inputValues]);
5418
- useEffect11(() => {
5427
+ useEffect12(() => {
5419
5428
  fetchData();
5420
5429
  }, [formState.inputValues, formState.lastPropertyChanged]);
5421
5430
  function replacePlaceholders(template, context, params) {
@@ -5510,7 +5519,7 @@ var DataForm = (props) => {
5510
5519
  return { isSuccessful: true };
5511
5520
  }
5512
5521
  }, [formState, props]);
5513
- useEffect11(() => {
5522
+ useEffect12(() => {
5514
5523
  if (props.dataItem) {
5515
5524
  dispatch({
5516
5525
  type: FORM_INITIAL_UPDATE,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acoustte-digital-services/digitalstore-controls-dev",
3
- "version": "0.8.1-dev.20260428094243",
3
+ "version": "0.8.1-dev.20260428111737",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",