@clyrex-digital/clyrex-controls-dev 0.8.1-dev.20260725061513 → 0.8.1-dev.20260729064437

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.
@@ -21,12 +21,12 @@ import {
21
21
  Select_default,
22
22
  Switcher_default,
23
23
  TimeInput_default
24
- } from "./chunk-6GS7N4EV.mjs";
24
+ } from "./chunk-6JFCMNX2.mjs";
25
25
  import {
26
26
  Hyperlink,
27
27
  Icon_default,
28
28
  InputControlType_default
29
- } from "./chunk-GFVCUX6O.mjs";
29
+ } from "./chunk-YDPISYMP.mjs";
30
30
  import {
31
31
  Button_default,
32
32
  ClientButton_default
@@ -3,12 +3,12 @@
3
3
  "use client";
4
4
  import {
5
5
  OdataBuilder
6
- } from "./chunk-6MHIZOLR.mjs";
6
+ } from "./chunk-KL2YKXXS.mjs";
7
7
  import {
8
8
  Constants,
9
9
  Hyperlink,
10
10
  Icon_default
11
- } from "./chunk-GFVCUX6O.mjs";
11
+ } from "./chunk-YDPISYMP.mjs";
12
12
  import "./chunk-IMNQO57B.mjs";
13
13
 
14
14
  // src/components/Pagination.tsx
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  Icon_default
5
- } from "./chunk-GFVCUX6O.mjs";
5
+ } from "./chunk-YDPISYMP.mjs";
6
6
 
7
7
  // src/components/controls/edit/MultilineTextInput.tsx
8
8
  import React from "react";
@@ -662,50 +662,73 @@ var ColorInput = (props) => {
662
662
  var ColorInput_default = ColorInput;
663
663
 
664
664
  // src/components/controls/edit/SelectWithSearchInput.tsx
665
- import { useEffect as useEffect3, useRef, useState as useState2 } from "react";
665
+ import React12, { useEffect as useEffect3, useRef, useState as useState2 } from "react";
666
666
  import { jsx as jsx12, jsxs as jsxs12 } from "react/jsx-runtime";
667
667
  var SelectWithSearchInput = (props) => {
668
668
  const [isOpen, setIsOpen] = useState2(false);
669
669
  const [searchTerm, setSearchTerm] = useState2("");
670
670
  const [highlightedIndex, setHighlightedIndex] = useState2(-1);
671
- const [selectedItem, setSelectedItem] = useState2(null);
671
+ const [selectedItem, setSelectedItem] = useState2(
672
+ null
673
+ );
672
674
  const [list, setList] = useState2([]);
673
- useEffect3(() => {
674
- async function fetchData() {
675
- if (props.dataset) {
676
- setList(props.dataset);
677
- } else if (props.dataSource && props.serviceClient) {
678
- let dataSource = props.dataSource;
679
- if (props.dataSourceDependsOn && props.dependentValue) {
680
- dataSource = dataSource.replace(
681
- `{${props.dataSourceDependsOn}}`,
682
- props.dependentValue
683
- );
684
- }
685
- const response = await props.serviceClient.get(dataSource);
686
- if (response?.result) setList(response.result);
675
+ const loadData = React12.useCallback(async () => {
676
+ if (props.dataset) {
677
+ setList(props.dataset);
678
+ return;
679
+ }
680
+ if (props.dataSource && props.serviceClient) {
681
+ let url = props.dataSource;
682
+ if (props.dataSourceDependsOn && props.dependentValue) {
683
+ url = url.replace(
684
+ `{${props.dataSourceDependsOn}}`,
685
+ props.dependentValue
686
+ );
687
+ }
688
+ const response = await props.serviceClient.get(url);
689
+ if (response?.result) {
690
+ setList(response.result);
687
691
  }
688
692
  }
689
- fetchData();
690
693
  }, [
691
- props.dataSource,
692
- props.dependentValue,
693
694
  props.dataset,
694
- props.dataSourceDependsOn
695
+ props.dataSource,
696
+ props.serviceClient,
697
+ props.dataSourceDependsOn,
698
+ props.dependentValue
695
699
  ]);
696
- const filteredItems = list?.filter(
697
- (item) => item[props?.dataTextFieldName]?.toLowerCase().includes(searchTerm.toLowerCase())
698
- );
700
+ useEffect3(() => {
701
+ loadData();
702
+ }, [loadData]);
703
+ useEffect3(() => {
704
+ if (props.value && list.length && props.dataKeyFieldName && props.dataTextFieldName) {
705
+ const selected = list.find(
706
+ (x) => x[props.dataKeyFieldName] == props.value
707
+ );
708
+ if (selected) {
709
+ setSearchTerm(selected[props.dataTextFieldName]);
710
+ setSelectedItem(selected);
711
+ }
712
+ }
713
+ }, [props.value, list]);
714
+ const filteredItems = list.filter((item) => {
715
+ const text = item[props.dataTextFieldName] ?? "";
716
+ return text.toString().toLowerCase().includes(searchTerm.toLowerCase());
717
+ });
699
718
  const handleSelect = (event, item) => {
700
719
  event.preventDefault();
701
720
  setSearchTerm(item[props.dataTextFieldName]);
702
721
  setSelectedItem(item);
703
722
  setIsOpen(false);
704
723
  setHighlightedIndex(-1);
724
+ const selectedValue = item[props.dataKeyFieldName];
725
+ if (props.onChange) {
726
+ props.onChange(selectedValue);
727
+ }
705
728
  if (props.callback) {
706
729
  props.callback({
707
730
  name: props.name,
708
- value: item[props.dataKeyFieldName],
731
+ value: selectedValue,
709
732
  index: props.index,
710
733
  groupKey: props.groupKey
711
734
  });
@@ -738,7 +761,6 @@ var SelectWithSearchInput = (props) => {
738
761
  /* @__PURE__ */ jsxs12("label", { children: [
739
762
  props.attributes?.label,
740
763
  " ",
741
- " ",
742
764
  props?.attributes?.required && /* @__PURE__ */ jsx12("span", { className: "bg-error-weak", children: "*" })
743
765
  ] }),
744
766
  /* @__PURE__ */ jsxs12("div", { className: "relative", children: [
@@ -754,7 +776,9 @@ var SelectWithSearchInput = (props) => {
754
776
  },
755
777
  onFocus: () => setIsOpen(true),
756
778
  onKeyDown: handleKeyDown,
757
- placeholder: "Select or search for a name",
779
+ placeholder: props.attributes?.placeholder ?? "Search...",
780
+ readOnly: props.attributes?.readOnly,
781
+ disabled: props.disable || props.attributes?.disable,
758
782
  className: "peer py-1.5 select block w-full text-black rounded border-gray-300 shadow-sm\n focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50\n disabled:bg-slate-50 disabled:text-slate-500 disabled:border-slate-200 disabled:shadow-none\n "
759
783
  }
760
784
  ),
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  Constants
5
- } from "./chunk-GFVCUX6O.mjs";
5
+ } from "./chunk-YDPISYMP.mjs";
6
6
 
7
7
  // src/clients/OdataBuilder.tsx
8
8
  var OdataBuilder = class {
@@ -31,7 +31,8 @@ var InputControlType = {
31
31
  dateInput: "dateInput",
32
32
  radioInput: "radioInput",
33
33
  switcher: "switcher",
34
- videoInput: "videoInput"
34
+ videoInput: "videoInput",
35
+ referenceInput: "referenceInput"
35
36
  };
36
37
  var InputControlType_default = InputControlType;
37
38
 
package/dist/index.d.mts CHANGED
@@ -68,6 +68,7 @@ declare const InputControlType: {
68
68
  radioInput: string;
69
69
  switcher: string;
70
70
  videoInput: string;
71
+ referenceInput: string;
71
72
  };
72
73
 
73
74
  interface InputCallbackValues<T> {
@@ -144,6 +145,8 @@ interface InputControlProps {
144
145
  isTenantColor?: boolean;
145
146
  onChange?: (value: string | number | boolean | null) => void;
146
147
  onBlur?: () => void;
148
+ referenceWorkflowId?: number;
149
+ loadSelectedItem?: (id: string | number) => Promise<any>;
147
150
  attributes?: {
148
151
  pattern?: string;
149
152
  maxLength?: number;
package/dist/index.d.ts CHANGED
@@ -68,6 +68,7 @@ declare const InputControlType: {
68
68
  radioInput: string;
69
69
  switcher: string;
70
70
  videoInput: string;
71
+ referenceInput: string;
71
72
  };
72
73
 
73
74
  interface InputCallbackValues<T> {
@@ -144,6 +145,8 @@ interface InputControlProps {
144
145
  isTenantColor?: boolean;
145
146
  onChange?: (value: string | number | boolean | null) => void;
146
147
  onBlur?: () => void;
148
+ referenceWorkflowId?: number;
149
+ loadSelectedItem?: (id: string | number) => Promise<any>;
147
150
  attributes?: {
148
151
  pattern?: string;
149
152
  maxLength?: number;
package/dist/index.js CHANGED
@@ -1018,7 +1018,8 @@ var init_InputControlType = __esm({
1018
1018
  dateInput: "dateInput",
1019
1019
  radioInput: "radioInput",
1020
1020
  switcher: "switcher",
1021
- videoInput: "videoInput"
1021
+ videoInput: "videoInput",
1022
+ referenceInput: "referenceInput"
1022
1023
  };
1023
1024
  InputControlType_default = InputControlType;
1024
1025
  }
@@ -1578,50 +1579,73 @@ var init_SelectWithSearchInput = __esm({
1578
1579
  "src/components/controls/edit/SelectWithSearchInput.tsx"() {
1579
1580
  "use strict";
1580
1581
  "use client";
1581
- import_react27 = require("react");
1582
+ import_react27 = __toESM(require("react"));
1582
1583
  import_jsx_runtime30 = require("react/jsx-runtime");
1583
1584
  SelectWithSearchInput = (props) => {
1584
1585
  const [isOpen, setIsOpen] = (0, import_react27.useState)(false);
1585
1586
  const [searchTerm, setSearchTerm] = (0, import_react27.useState)("");
1586
1587
  const [highlightedIndex, setHighlightedIndex] = (0, import_react27.useState)(-1);
1587
- const [selectedItem, setSelectedItem] = (0, import_react27.useState)(null);
1588
+ const [selectedItem, setSelectedItem] = (0, import_react27.useState)(
1589
+ null
1590
+ );
1588
1591
  const [list, setList] = (0, import_react27.useState)([]);
1589
- (0, import_react27.useEffect)(() => {
1590
- async function fetchData() {
1591
- if (props.dataset) {
1592
- setList(props.dataset);
1593
- } else if (props.dataSource && props.serviceClient) {
1594
- let dataSource = props.dataSource;
1595
- if (props.dataSourceDependsOn && props.dependentValue) {
1596
- dataSource = dataSource.replace(
1597
- `{${props.dataSourceDependsOn}}`,
1598
- props.dependentValue
1599
- );
1600
- }
1601
- const response = await props.serviceClient.get(dataSource);
1602
- if (response?.result) setList(response.result);
1592
+ const loadData = import_react27.default.useCallback(async () => {
1593
+ if (props.dataset) {
1594
+ setList(props.dataset);
1595
+ return;
1596
+ }
1597
+ if (props.dataSource && props.serviceClient) {
1598
+ let url = props.dataSource;
1599
+ if (props.dataSourceDependsOn && props.dependentValue) {
1600
+ url = url.replace(
1601
+ `{${props.dataSourceDependsOn}}`,
1602
+ props.dependentValue
1603
+ );
1604
+ }
1605
+ const response = await props.serviceClient.get(url);
1606
+ if (response?.result) {
1607
+ setList(response.result);
1603
1608
  }
1604
1609
  }
1605
- fetchData();
1606
1610
  }, [
1607
- props.dataSource,
1608
- props.dependentValue,
1609
1611
  props.dataset,
1610
- props.dataSourceDependsOn
1612
+ props.dataSource,
1613
+ props.serviceClient,
1614
+ props.dataSourceDependsOn,
1615
+ props.dependentValue
1611
1616
  ]);
1612
- const filteredItems = list?.filter(
1613
- (item) => item[props?.dataTextFieldName]?.toLowerCase().includes(searchTerm.toLowerCase())
1614
- );
1617
+ (0, import_react27.useEffect)(() => {
1618
+ loadData();
1619
+ }, [loadData]);
1620
+ (0, import_react27.useEffect)(() => {
1621
+ if (props.value && list.length && props.dataKeyFieldName && props.dataTextFieldName) {
1622
+ const selected = list.find(
1623
+ (x) => x[props.dataKeyFieldName] == props.value
1624
+ );
1625
+ if (selected) {
1626
+ setSearchTerm(selected[props.dataTextFieldName]);
1627
+ setSelectedItem(selected);
1628
+ }
1629
+ }
1630
+ }, [props.value, list]);
1631
+ const filteredItems = list.filter((item) => {
1632
+ const text = item[props.dataTextFieldName] ?? "";
1633
+ return text.toString().toLowerCase().includes(searchTerm.toLowerCase());
1634
+ });
1615
1635
  const handleSelect = (event, item) => {
1616
1636
  event.preventDefault();
1617
1637
  setSearchTerm(item[props.dataTextFieldName]);
1618
1638
  setSelectedItem(item);
1619
1639
  setIsOpen(false);
1620
1640
  setHighlightedIndex(-1);
1641
+ const selectedValue = item[props.dataKeyFieldName];
1642
+ if (props.onChange) {
1643
+ props.onChange(selectedValue);
1644
+ }
1621
1645
  if (props.callback) {
1622
1646
  props.callback({
1623
1647
  name: props.name,
1624
- value: item[props.dataKeyFieldName],
1648
+ value: selectedValue,
1625
1649
  index: props.index,
1626
1650
  groupKey: props.groupKey
1627
1651
  });
@@ -1654,7 +1678,6 @@ var init_SelectWithSearchInput = __esm({
1654
1678
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("label", { children: [
1655
1679
  props.attributes?.label,
1656
1680
  " ",
1657
- " ",
1658
1681
  props?.attributes?.required && /* @__PURE__ */ (0, import_jsx_runtime30.jsx)("span", { className: "bg-error-weak", children: "*" })
1659
1682
  ] }),
1660
1683
  /* @__PURE__ */ (0, import_jsx_runtime30.jsxs)("div", { className: "relative", children: [
@@ -1670,7 +1693,9 @@ var init_SelectWithSearchInput = __esm({
1670
1693
  },
1671
1694
  onFocus: () => setIsOpen(true),
1672
1695
  onKeyDown: handleKeyDown,
1673
- placeholder: "Select or search for a name",
1696
+ placeholder: props.attributes?.placeholder ?? "Search...",
1697
+ readOnly: props.attributes?.readOnly,
1698
+ disabled: props.disable || props.attributes?.disable,
1674
1699
  className: "peer py-1.5 select block w-full text-black rounded border-gray-300 shadow-sm\n focus:border-indigo-300 focus:ring focus:ring-indigo-200 focus:ring-opacity-50\n disabled:bg-slate-50 disabled:text-slate-500 disabled:border-slate-200 disabled:shadow-none\n "
1675
1700
  }
1676
1701
  ),
@@ -4925,7 +4950,7 @@ var MultilineTextBulletsView_default = MultilineTextBullets;
4925
4950
  var import_react12 = __toESM(require("react"));
4926
4951
  var import_jsx_runtime13 = require("react/jsx-runtime");
4927
4952
  var MultilineText = (props) => {
4928
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react12.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "whitespace-pre-line", children: props.value }) });
4953
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_react12.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "break-all whitespace-pre-line", children: props.value }) });
4929
4954
  };
4930
4955
  var MultilineTextView_default = MultilineText;
4931
4956
 
package/dist/index.mjs CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  import {
4
4
  OdataBuilder
5
- } from "./chunk-6MHIZOLR.mjs";
5
+ } from "./chunk-KL2YKXXS.mjs";
6
6
  import {
7
7
  AssetUtility_default,
8
8
  BooleanSelect_default,
@@ -23,13 +23,13 @@ import {
23
23
  Select_default,
24
24
  Switcher_default,
25
25
  TimeInput_default
26
- } from "./chunk-6GS7N4EV.mjs";
26
+ } from "./chunk-6JFCMNX2.mjs";
27
27
  import {
28
28
  Constants,
29
29
  Hyperlink,
30
30
  Icon_default,
31
31
  InputControlType_default
32
- } from "./chunk-GFVCUX6O.mjs";
32
+ } from "./chunk-YDPISYMP.mjs";
33
33
  import {
34
34
  ServiceClient_default
35
35
  } from "./chunk-WEV5U33G.mjs";
@@ -320,7 +320,7 @@ var MultilineTextBulletsView_default = MultilineTextBullets;
320
320
  import React10 from "react";
321
321
  import { jsx as jsx11 } from "react/jsx-runtime";
322
322
  var MultilineText = (props) => {
323
- return /* @__PURE__ */ jsx11(React10.Fragment, { children: /* @__PURE__ */ jsx11("span", { className: "whitespace-pre-line", children: props.value }) });
323
+ return /* @__PURE__ */ jsx11(React10.Fragment, { children: /* @__PURE__ */ jsx11("span", { className: "break-all whitespace-pre-line", children: props.value }) });
324
324
  };
325
325
  var MultilineTextView_default = MultilineText;
326
326
 
@@ -413,7 +413,7 @@ var ViewControl_default = ViewControl;
413
413
 
414
414
  // src/components/controls/edit/InputControl.tsx
415
415
  import dynamic4 from "next/dynamic";
416
- var InputControl = dynamic4(() => import("./InputControlClient-IKTP3566.mjs"), {
416
+ var InputControl = dynamic4(() => import("./InputControlClient-VFHLKYVF.mjs"), {
417
417
  ssr: false
418
418
  });
419
419
  var InputControl_default = InputControl;
@@ -2246,7 +2246,7 @@ var DocumentNode_default = DocumentNode;
2246
2246
 
2247
2247
  // src/components/pageRenderingEngine/nodes/DivContainer.tsx
2248
2248
  import { jsx as jsx34, jsxs as jsxs13 } from "react/jsx-runtime";
2249
- var Pagination = dynamic10(() => import("./Pagination-Y7PNQUJ2.mjs"), { ssr: true });
2249
+ var Pagination = dynamic10(() => import("./Pagination-YKNCYVXV.mjs"), { ssr: true });
2250
2250
  var Slider = dynamic10(() => import("./Slider-554BKC7N.mjs"), {
2251
2251
  ssr: false
2252
2252
  });
package/dist/server.js CHANGED
@@ -3207,7 +3207,7 @@ var MultilineTextBulletsView_default = MultilineTextBullets;
3207
3207
  var import_react17 = __toESM(require("react"));
3208
3208
  var import_jsx_runtime24 = require("react/jsx-runtime");
3209
3209
  var MultilineText = (props) => {
3210
- return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react17.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "whitespace-pre-line", children: props.value }) });
3210
+ return /* @__PURE__ */ (0, import_jsx_runtime24.jsx)(import_react17.default.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime24.jsx)("span", { className: "break-all whitespace-pre-line", children: props.value }) });
3211
3211
  };
3212
3212
  var MultilineTextView_default = MultilineText;
3213
3213
 
package/dist/server.mjs CHANGED
@@ -673,7 +673,7 @@ var MultilineTextBulletsView_default = MultilineTextBullets;
673
673
  import React11 from "react";
674
674
  import { jsx as jsx17 } from "react/jsx-runtime";
675
675
  var MultilineText = (props) => {
676
- return /* @__PURE__ */ jsx17(React11.Fragment, { children: /* @__PURE__ */ jsx17("span", { className: "whitespace-pre-line", children: props.value }) });
676
+ return /* @__PURE__ */ jsx17(React11.Fragment, { children: /* @__PURE__ */ jsx17("span", { className: "break-all whitespace-pre-line", children: props.value }) });
677
677
  };
678
678
  var MultilineTextView_default = MultilineText;
679
679
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clyrex-digital/clyrex-controls-dev",
3
- "version": "0.8.1-dev.20260725061513",
3
+ "version": "0.8.1-dev.20260729064437",
4
4
  "description": "Reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",