@solidxai/core-ui 0.1.7-beta.8 → 0.1.7

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.
Files changed (131) hide show
  1. package/README.md +215 -0
  2. package/dist/components/auth/SolidLogin.js +1 -1
  3. package/dist/components/auth/SolidLogin.js.map +1 -1
  4. package/dist/components/auth/SolidLogin.tsx +2 -2
  5. package/dist/components/common/GeneralSettings.d.ts.map +1 -1
  6. package/dist/components/common/GeneralSettings.js +79 -45
  7. package/dist/components/common/GeneralSettings.js.map +1 -1
  8. package/dist/components/common/GeneralSettings.tsx +94 -45
  9. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts +33 -7
  10. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.d.ts.map +1 -1
  11. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js +132 -40
  12. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.js.map +1 -1
  13. package/dist/components/common/SolidSettings/LlmSettings/AiModelConfigTab.tsx +373 -55
  14. package/dist/components/core/chatter/SolidChatter.d.ts +2 -1
  15. package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
  16. package/dist/components/core/chatter/SolidChatter.js +2 -2
  17. package/dist/components/core/chatter/SolidChatter.js.map +1 -1
  18. package/dist/components/core/chatter/SolidChatter.tsx +2 -1
  19. package/dist/components/core/chatter/SolidChatterHeader.d.ts +1 -0
  20. package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
  21. package/dist/components/core/chatter/SolidChatterHeader.js +3 -3
  22. package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
  23. package/dist/components/core/chatter/SolidChatterHeader.tsx +4 -3
  24. package/dist/components/core/chatter/SolidMessageComposer.d.ts +2 -1
  25. package/dist/components/core/chatter/SolidMessageComposer.d.ts.map +1 -1
  26. package/dist/components/core/chatter/SolidMessageComposer.js +3 -1
  27. package/dist/components/core/chatter/SolidMessageComposer.js.map +1 -1
  28. package/dist/components/core/chatter/SolidMessageComposer.tsx +3 -1
  29. package/dist/components/core/common/SolidViewLayoutManager.d.ts +17 -0
  30. package/dist/components/core/common/SolidViewLayoutManager.d.ts.map +1 -1
  31. package/dist/components/core/common/SolidViewLayoutManager.js +58 -1
  32. package/dist/components/core/common/SolidViewLayoutManager.js.map +1 -1
  33. package/dist/components/core/common/SolidViewLayoutManager.ts +43 -2
  34. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
  35. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
  36. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
  37. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
  38. package/dist/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
  39. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
  40. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
  41. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
  42. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
  43. package/dist/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
  44. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
  45. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
  46. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js +111 -0
  47. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.js.map +1 -0
  48. package/dist/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx +122 -0
  49. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.d.ts +3 -0
  50. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.d.ts.map +1 -0
  51. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.js +10 -0
  52. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.js.map +1 -0
  53. package/dist/components/core/extension/solid-core/mqMessage/form/SolidMqMessageStageFormViewWIdget.tsx +21 -0
  54. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.d.ts +8 -0
  55. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.d.ts.map +1 -0
  56. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.js +62 -0
  57. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.js.map +1 -0
  58. package/dist/components/core/extension/solid-core/mqMessage/form/mqMessageOnFormLoadHandler.tsx +27 -0
  59. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.d.ts +3 -0
  60. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
  61. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.js +8 -0
  62. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.js.map +1 -0
  63. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessageStageListViewWidget.tsx +15 -0
  64. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.d.ts +3 -0
  65. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.d.ts.map +1 -0
  66. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js +158 -0
  67. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.js.map +1 -0
  68. package/dist/components/core/extension/solid-core/mqMessage/list/SolidMqMessagesSummarizeListHeaderAction.tsx +185 -0
  69. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.d.ts +17 -0
  70. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.d.ts.map +1 -0
  71. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js +52 -0
  72. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.js.map +1 -0
  73. package/dist/components/core/extension/solid-core/mqMessage/ui/MqMessageStageBadge.tsx +83 -0
  74. package/dist/components/core/locales/SolidChatterLocaleTabView.d.ts.map +1 -1
  75. package/dist/components/core/locales/SolidChatterLocaleTabView.js +7 -5
  76. package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
  77. package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +3 -0
  78. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.css +38 -0
  79. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts +1 -0
  80. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -1
  81. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +4 -3
  82. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -1
  83. package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +13 -3
  84. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +2 -1
  85. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -1
  86. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +6 -5
  87. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -1
  88. package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +6 -7
  89. package/dist/components/core/users/CreateUser.d.ts.map +1 -1
  90. package/dist/components/core/users/CreateUser.js +89 -35
  91. package/dist/components/core/users/CreateUser.js.map +1 -1
  92. package/dist/components/core/users/CreateUser.tsx +291 -165
  93. package/dist/components/layout/SolidAiStudioLayout.d.ts.map +1 -1
  94. package/dist/components/layout/SolidAiStudioLayout.js +123 -8
  95. package/dist/components/layout/SolidAiStudioLayout.js.map +1 -1
  96. package/dist/components/layout/SolidAiStudioLayout.tsx +70 -6
  97. package/dist/components/shad-cn-ui/SolidTabs.d.ts +2 -1
  98. package/dist/components/shad-cn-ui/SolidTabs.d.ts.map +1 -1
  99. package/dist/components/shad-cn-ui/SolidTabs.js +5 -5
  100. package/dist/components/shad-cn-ui/SolidTabs.js.map +1 -1
  101. package/dist/components/shad-cn-ui/SolidTabs.tsx +6 -0
  102. package/dist/helpers/registry.d.ts.map +1 -1
  103. package/dist/helpers/registry.js +10 -6
  104. package/dist/helpers/registry.js.map +1 -1
  105. package/dist/helpers/registry.ts +11 -7
  106. package/dist/index.d.ts +3 -0
  107. package/dist/index.d.ts.map +1 -1
  108. package/dist/index.js +3 -0
  109. package/dist/index.js.map +1 -1
  110. package/dist/index.ts +11 -0
  111. package/dist/redux/api/apiKeyApi.d.ts +8 -1
  112. package/dist/redux/api/apiKeyApi.d.ts.map +1 -1
  113. package/dist/redux/api/apiKeyApi.js +12 -1
  114. package/dist/redux/api/apiKeyApi.js.map +1 -1
  115. package/dist/redux/api/apiKeyApi.ts +9 -0
  116. package/dist/redux/store/defaultStoreConfig.d.ts +16 -1
  117. package/dist/redux/store/defaultStoreConfig.d.ts.map +1 -1
  118. package/dist/redux/store/defaultStoreConfig.js +3 -1
  119. package/dist/redux/store/defaultStoreConfig.js.map +1 -1
  120. package/dist/redux/store/defaultStoreConfig.ts +3 -1
  121. package/dist/routes/guards/GuestGuard.d.ts +2 -0
  122. package/dist/routes/guards/GuestGuard.d.ts.map +1 -0
  123. package/dist/routes/guards/GuestGuard.js +18 -0
  124. package/dist/routes/guards/GuestGuard.js.map +1 -0
  125. package/dist/routes/guards/GuestGuard.tsx +20 -0
  126. package/dist/routes/solidRoutes.d.ts.map +1 -1
  127. package/dist/routes/solidRoutes.js +2 -1
  128. package/dist/routes/solidRoutes.js.map +1 -1
  129. package/dist/routes/solidRoutes.tsx +2 -1
  130. package/dist/types/solid-core.d.ts +1 -0
  131. package/package.json +1 -1
@@ -0,0 +1,92 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
+ import { useEffect, useState } from "react";
39
+ import { ExternalLink } from "lucide-react";
40
+ import { solidGet } from "../../../../../../http/solidHttp";
41
+ import { snakeCase } from "lodash";
42
+ export var SolidChatterMessageCoModelEntityIdFormViewWidget = function (_a) {
43
+ var _b, _c, _d, _e, _f, _g;
44
+ var formik = _a.formik, fieldContext = _a.fieldContext;
45
+ var fieldMetadata = fieldContext.fieldMetadata;
46
+ var fieldLayoutInfo = fieldContext.field;
47
+ var fieldLabel = (_b = fieldLayoutInfo.attrs.label) !== null && _b !== void 0 ? _b : fieldMetadata.displayName;
48
+ var fieldName = (_c = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _c === void 0 ? void 0 : _c.name;
49
+ var _h = useState('#'), redirectUrl = _h[0], setRedirectUrl = _h[1];
50
+ var value = (_d = formik.values) === null || _d === void 0 ? void 0 : _d[fieldName];
51
+ var coModelName = (_e = fieldContext === null || fieldContext === void 0 ? void 0 : fieldContext.data) === null || _e === void 0 ? void 0 : _e.coModelName;
52
+ var modelDisplayName = (_f = fieldContext === null || fieldContext === void 0 ? void 0 : fieldContext.data) === null || _f === void 0 ? void 0 : _f.modelDisplayName;
53
+ var modelUserKey = (_g = fieldContext === null || fieldContext === void 0 ? void 0 : fieldContext.data) === null || _g === void 0 ? void 0 : _g.modelUserKey;
54
+ useEffect(function () {
55
+ if (coModelName) {
56
+ var fetchModel = function () { return __awaiter(void 0, void 0, void 0, function () {
57
+ var qs, res, model, module_1, moduleName, modelSingularName, modelSlug, redirectUrl_1;
58
+ var _a, _b, _c, _d, _e;
59
+ return __generator(this, function (_f) {
60
+ switch (_f.label) {
61
+ case 0:
62
+ qs = "offset=0&limit=25&filters[$and][0][$or][0][singularName][$eq]=".concat(coModelName, "&populate[0]=module&locale=en&sort[0]=id%3Adesc");
63
+ return [4 /*yield*/, solidGet("/model-metadata?".concat(qs))];
64
+ case 1:
65
+ res = _f.sent();
66
+ if (((_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length) > 0) {
67
+ model = (_e = (_d = res === null || res === void 0 ? void 0 : res.data) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.records[0];
68
+ module_1 = model === null || model === void 0 ? void 0 : model.module;
69
+ moduleName = module_1 === null || module_1 === void 0 ? void 0 : module_1.name;
70
+ modelSingularName = model === null || model === void 0 ? void 0 : model.singularName;
71
+ modelSlug = snakeCase(model === null || model === void 0 ? void 0 : model.singularName).replace(/_/g, '-');
72
+ redirectUrl_1 = "/admin/core/".concat(moduleName, "/").concat(modelSlug, "/form/").concat(value);
73
+ setRedirectUrl(redirectUrl_1);
74
+ }
75
+ return [2 /*return*/];
76
+ }
77
+ });
78
+ }); };
79
+ fetchModel();
80
+ }
81
+ }, [coModelName]);
82
+ return (_jsxs("div", { children: [_jsx("label", { className: "form-field-label", children: fieldLabel }), _jsx("div", { className: "mt-2", children: value ? (_jsxs("a", { href: redirectUrl, target: "_blank", rel: "noopener noreferrer", style: {
83
+ display: 'inline-flex',
84
+ alignItems: 'center',
85
+ gap: '6px',
86
+ textDecoration: 'none',
87
+ fontSize: '12px',
88
+ color: '#2563eb',
89
+ fontWeight: 500
90
+ }, children: [_jsxs("span", { children: [value, " (", modelUserKey || modelDisplayName || coModelName, ")"] }), _jsx(ExternalLink, { size: 16 })] })) : (_jsx("span", { className: "text-muted", children: "\u2014" })) })] }));
91
+ };
92
+ //# sourceMappingURL=SolidChatterMessageCoModelEntityIdFormViewWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidChatterMessageCoModelEntityIdFormViewWidget.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/chatterMessage/form/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useEffect, useState } from \"react\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../../types/solid-core\";\nimport { ExternalLink } from \"lucide-react\";\nimport { solidGet } from \"../../../../../../http/solidHttp\";\nimport { snakeCase } from \"lodash\";\n\nexport const SolidChatterMessageCoModelEntityIdFormViewWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldName = fieldLayoutInfo?.attrs?.name;\n\n const [redirectUrl, setRedirectUrl] = useState<string>('#');\n const value = formik.values?.[fieldName];\n\n const coModelName = fieldContext?.data?.coModelName;\n const modelDisplayName = fieldContext?.data?.modelDisplayName;\n const modelUserKey = fieldContext?.data?.modelUserKey;\n\n useEffect(() => {\n if (coModelName) {\n const fetchModel = async () => {\n const qs = `offset=0&limit=25&filters[$and][0][$or][0][singularName][$eq]=${coModelName}&populate[0]=module&locale=en&sort[0]=id%3Adesc`;\n const res = await solidGet(`/model-metadata?${qs}`);\n if (res?.data?.data?.records?.length > 0) {\n const model = res?.data?.data?.records[0];\n const module = model?.module;\n const moduleName = module?.name;\n const modelSingularName = model?.singularName;\n const modelSlug = snakeCase(model?.singularName).replace(/_/g, '-');\n const redirectUrl = `/admin/core/${moduleName}/${modelSlug}/form/${value}`;\n setRedirectUrl(redirectUrl);\n }\n }\n fetchModel();\n }\n }, [coModelName]);\n\n return (\n <div>\n <label className=\"form-field-label\">{fieldLabel}</label>\n <div className=\"mt-2\">\n {value ? (\n <a\n href={redirectUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n textDecoration: 'none',\n fontSize: '12px',\n color: '#2563eb',\n fontWeight: 500\n }}\n >\n <span>{value} ({modelUserKey || modelDisplayName || coModelName})</span>\n <ExternalLink size={16} />\n </a>\n ) : (\n <span className=\"text-muted\">—</span>\n )}\n </div>\n </div>\n );\n};"]}
@@ -0,0 +1,68 @@
1
+ import { useEffect, useState } from "react";
2
+ import { SolidFormFieldWidgetProps } from "../../../../../../types/solid-core";
3
+ import { ExternalLink } from "lucide-react";
4
+ import { solidGet } from "../../../../../../http/solidHttp";
5
+ import { snakeCase } from "lodash";
6
+
7
+ export const SolidChatterMessageCoModelEntityIdFormViewWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {
8
+ const fieldMetadata = fieldContext.fieldMetadata;
9
+ const fieldLayoutInfo = fieldContext.field;
10
+
11
+ const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
12
+ const fieldName = fieldLayoutInfo?.attrs?.name;
13
+
14
+ const [redirectUrl, setRedirectUrl] = useState<string>('#');
15
+ const value = formik.values?.[fieldName];
16
+
17
+ const coModelName = fieldContext?.data?.coModelName;
18
+ const modelDisplayName = fieldContext?.data?.modelDisplayName;
19
+ const modelUserKey = fieldContext?.data?.modelUserKey;
20
+
21
+ useEffect(() => {
22
+ if (coModelName) {
23
+ const fetchModel = async () => {
24
+ const qs = `offset=0&limit=25&filters[$and][0][$or][0][singularName][$eq]=${coModelName}&populate[0]=module&locale=en&sort[0]=id%3Adesc`;
25
+ const res = await solidGet(`/model-metadata?${qs}`);
26
+ if (res?.data?.data?.records?.length > 0) {
27
+ const model = res?.data?.data?.records[0];
28
+ const module = model?.module;
29
+ const moduleName = module?.name;
30
+ const modelSingularName = model?.singularName;
31
+ const modelSlug = snakeCase(model?.singularName).replace(/_/g, '-');
32
+ const redirectUrl = `/admin/core/${moduleName}/${modelSlug}/form/${value}`;
33
+ setRedirectUrl(redirectUrl);
34
+ }
35
+ }
36
+ fetchModel();
37
+ }
38
+ }, [coModelName]);
39
+
40
+ return (
41
+ <div>
42
+ <label className="form-field-label">{fieldLabel}</label>
43
+ <div className="mt-2">
44
+ {value ? (
45
+ <a
46
+ href={redirectUrl}
47
+ target="_blank"
48
+ rel="noopener noreferrer"
49
+ style={{
50
+ display: 'inline-flex',
51
+ alignItems: 'center',
52
+ gap: '6px',
53
+ textDecoration: 'none',
54
+ fontSize: '12px',
55
+ color: '#2563eb',
56
+ fontWeight: 500
57
+ }}
58
+ >
59
+ <span>{value} ({modelUserKey || modelDisplayName || coModelName})</span>
60
+ <ExternalLink size={16} />
61
+ </a>
62
+ ) : (
63
+ <span className="text-muted">—</span>
64
+ )}
65
+ </div>
66
+ </div>
67
+ );
68
+ };
@@ -0,0 +1,3 @@
1
+ import { SolidListFieldWidgetProps } from "../../../../../../types/solid-core";
2
+ export declare const SolidChatterMessageCoModelEntityIdListViewWidget: ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidChatterMessageCoModelEntityIdListViewWidget.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAM/E,eAAO,MAAM,gDAAgD,8DAA+D,yBAAyB,4CA2DpJ,CAAC"}
@@ -0,0 +1,87 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
38
+ import { ExternalLink } from "lucide-react";
39
+ import { useEffect, useState } from "react";
40
+ import { solidGet } from "../../../../../../http/solidHttp";
41
+ import { snakeCase } from "lodash";
42
+ export var SolidChatterMessageCoModelEntityIdListViewWidget = function (_a) {
43
+ var rowData = _a.rowData, solidListViewMetaData = _a.solidListViewMetaData, fieldMetadata = _a.fieldMetadata, column = _a.column;
44
+ var value = fieldMetadata && fieldMetadata.name && rowData[fieldMetadata.name] ? rowData[fieldMetadata.name] : "";
45
+ var _b = useState('#'), redirectUrl = _b[0], setRedirectUrl = _b[1];
46
+ var coModelName = rowData === null || rowData === void 0 ? void 0 : rowData.coModelName;
47
+ var modelDisplayName = rowData === null || rowData === void 0 ? void 0 : rowData.modelDisplayName;
48
+ var modelUserKey = rowData === null || rowData === void 0 ? void 0 : rowData.modelUserKey;
49
+ useEffect(function () {
50
+ if (coModelName) {
51
+ var fetchModel = function () { return __awaiter(void 0, void 0, void 0, function () {
52
+ var qs, res, model, module_1, moduleName, modelSingularName, modelSlug, redirectUrl_1;
53
+ var _a, _b, _c, _d, _e;
54
+ return __generator(this, function (_f) {
55
+ switch (_f.label) {
56
+ case 0:
57
+ qs = "offset=0&limit=25&filters[$and][0][$or][0][singularName][$eq]=".concat(coModelName, "&populate[0]=module&locale=en&sort[0]=id%3Adesc");
58
+ return [4 /*yield*/, solidGet("/model-metadata?".concat(qs))];
59
+ case 1:
60
+ res = _f.sent();
61
+ if (((_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.records) === null || _c === void 0 ? void 0 : _c.length) > 0) {
62
+ model = (_e = (_d = res === null || res === void 0 ? void 0 : res.data) === null || _d === void 0 ? void 0 : _d.data) === null || _e === void 0 ? void 0 : _e.records[0];
63
+ module_1 = model === null || model === void 0 ? void 0 : model.module;
64
+ moduleName = module_1 === null || module_1 === void 0 ? void 0 : module_1.name;
65
+ modelSingularName = model === null || model === void 0 ? void 0 : model.singularName;
66
+ modelSlug = snakeCase(model === null || model === void 0 ? void 0 : model.singularName).replace(/_/g, '-');
67
+ redirectUrl_1 = "/admin/core/".concat(moduleName, "/").concat(modelSlug, "/form/").concat(value);
68
+ setRedirectUrl(redirectUrl_1);
69
+ }
70
+ return [2 /*return*/];
71
+ }
72
+ });
73
+ }); };
74
+ fetchModel();
75
+ }
76
+ }, [coModelName, value]);
77
+ return (_jsx("div", { style: { textAlign: "left" }, children: _jsx("div", { className: "mt-2", children: value ? (_jsxs("a", { href: redirectUrl, target: "_blank", rel: "noopener noreferrer", style: {
78
+ display: 'inline-flex',
79
+ alignItems: 'center',
80
+ gap: '6px',
81
+ textDecoration: 'none',
82
+ fontSize: '12px',
83
+ color: '#2563eb',
84
+ fontWeight: 500
85
+ }, children: [_jsxs("span", { children: [value, " (", modelUserKey || modelDisplayName || coModelName, ")"] }), _jsx(ExternalLink, { size: 16 })] })) : (_jsx("span", { className: "text-muted", children: "\u2014" })) }) }));
86
+ };
87
+ //# sourceMappingURL=SolidChatterMessageCoModelEntityIdListViewWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidChatterMessageCoModelEntityIdListViewWidget.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/chatterMessage/list/SolidChatterMessageCoModelEntityIdListViewWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["\n\nimport { ExternalLink } from \"lucide-react\";\nimport { SolidListFieldWidgetProps } from \"../../../../../../types/solid-core\";\nimport { useEffect, useState } from \"react\";\nimport { solidGet } from \"../../../../../../http/solidHttp\";\nimport { snakeCase } from \"lodash\";\n\n\nexport const SolidChatterMessageCoModelEntityIdListViewWidget = ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => {\n\n const value = fieldMetadata && fieldMetadata.name && rowData[fieldMetadata.name] ? rowData[fieldMetadata.name] : \"\"\n\n const [redirectUrl, setRedirectUrl] = useState('#');\n\n\n const coModelName = rowData?.coModelName;\n const modelDisplayName = rowData?.modelDisplayName;\n const modelUserKey = rowData?.modelUserKey;\n\n useEffect(() => {\n if (coModelName) {\n const fetchModel = async () => {\n const qs = `offset=0&limit=25&filters[$and][0][$or][0][singularName][$eq]=${coModelName}&populate[0]=module&locale=en&sort[0]=id%3Adesc`;\n const res = await solidGet(`/model-metadata?${qs}`);\n if (res?.data?.data?.records?.length > 0) {\n const model = res?.data?.data?.records[0];\n const module = model?.module;\n const moduleName = module?.name;\n const modelSingularName = model?.singularName;\n const modelSlug = snakeCase(model?.singularName).replace(/_/g, '-');\n const redirectUrl = `/admin/core/${moduleName}/${modelSlug}/form/${value}`;\n setRedirectUrl(redirectUrl);\n }\n }\n fetchModel();\n }\n }, [coModelName, value]);\n\n return (\n <div style={{ textAlign: \"left\" }}>\n\n <div className=\"mt-2\">\n {value ? (\n <a\n href={redirectUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: '6px',\n textDecoration: 'none',\n fontSize: '12px',\n color: '#2563eb',\n fontWeight: 500\n }}\n >\n <span>{value} ({modelUserKey || modelDisplayName || coModelName})</span>\n\n <ExternalLink size={16} />\n </a>\n ) : (\n <span className=\"text-muted\">—</span>\n )}\n </div>\n </div>\n );\n};\n\n"]}
@@ -0,0 +1,70 @@
1
+
2
+
3
+ import { ExternalLink } from "lucide-react";
4
+ import { SolidListFieldWidgetProps } from "../../../../../../types/solid-core";
5
+ import { useEffect, useState } from "react";
6
+ import { solidGet } from "../../../../../../http/solidHttp";
7
+ import { snakeCase } from "lodash";
8
+
9
+
10
+ export const SolidChatterMessageCoModelEntityIdListViewWidget = ({ rowData, solidListViewMetaData, fieldMetadata, column }: SolidListFieldWidgetProps) => {
11
+
12
+ const value = fieldMetadata && fieldMetadata.name && rowData[fieldMetadata.name] ? rowData[fieldMetadata.name] : ""
13
+
14
+ const [redirectUrl, setRedirectUrl] = useState('#');
15
+
16
+
17
+ const coModelName = rowData?.coModelName;
18
+ const modelDisplayName = rowData?.modelDisplayName;
19
+ const modelUserKey = rowData?.modelUserKey;
20
+
21
+ useEffect(() => {
22
+ if (coModelName) {
23
+ const fetchModel = async () => {
24
+ const qs = `offset=0&limit=25&filters[$and][0][$or][0][singularName][$eq]=${coModelName}&populate[0]=module&locale=en&sort[0]=id%3Adesc`;
25
+ const res = await solidGet(`/model-metadata?${qs}`);
26
+ if (res?.data?.data?.records?.length > 0) {
27
+ const model = res?.data?.data?.records[0];
28
+ const module = model?.module;
29
+ const moduleName = module?.name;
30
+ const modelSingularName = model?.singularName;
31
+ const modelSlug = snakeCase(model?.singularName).replace(/_/g, '-');
32
+ const redirectUrl = `/admin/core/${moduleName}/${modelSlug}/form/${value}`;
33
+ setRedirectUrl(redirectUrl);
34
+ }
35
+ }
36
+ fetchModel();
37
+ }
38
+ }, [coModelName, value]);
39
+
40
+ return (
41
+ <div style={{ textAlign: "left" }}>
42
+
43
+ <div className="mt-2">
44
+ {value ? (
45
+ <a
46
+ href={redirectUrl}
47
+ target="_blank"
48
+ rel="noopener noreferrer"
49
+ style={{
50
+ display: 'inline-flex',
51
+ alignItems: 'center',
52
+ gap: '6px',
53
+ textDecoration: 'none',
54
+ fontSize: '12px',
55
+ color: '#2563eb',
56
+ fontWeight: 500
57
+ }}
58
+ >
59
+ <span>{value} ({modelUserKey || modelDisplayName || coModelName})</span>
60
+
61
+ <ExternalLink size={16} />
62
+ </a>
63
+ ) : (
64
+ <span className="text-muted">—</span>
65
+ )}
66
+ </div>
67
+ </div>
68
+ );
69
+ };
70
+
@@ -0,0 +1,3 @@
1
+ import { SolidFormFieldWidgetProps } from "../../../../../../types/solid-core";
2
+ export declare const SolidLovTypeChangeFormEditWidget: ({ formik, fieldContext }: SolidFormFieldWidgetProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SolidLovTypeChangeFormEditWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidLovTypeChangeFormEditWidget.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,oCAAoC,CAAC;AAM/E,eAAO,MAAM,gCAAgC,6BAG1C,yBAAyB,4CA+G3B,CAAC"}
@@ -0,0 +1,111 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ var __generator = (this && this.__generator) || function (thisArg, body) {
11
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
+ function verb(n) { return function (v) { return step([n, v]); }; }
14
+ function step(op) {
15
+ if (f) throw new TypeError("Generator is already executing.");
16
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
17
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
+ if (y = 0, t) op = [op[0] & 2, t.value];
19
+ switch (op[0]) {
20
+ case 0: case 1: t = op; break;
21
+ case 4: _.label++; return { value: op[1], done: false };
22
+ case 5: _.label++; y = op[1]; op = [0]; continue;
23
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
+ default:
25
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
+ if (t[2]) _.ops.pop();
30
+ _.trys.pop(); continue;
31
+ }
32
+ op = body.call(thisArg, _);
33
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
+ }
36
+ };
37
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
38
+ import { useState } from "react";
39
+ import { solidGet } from "../../../../../../http/solidHttp";
40
+ import { SolidAutocomplete } from "../../../../../../components/shad-cn-ui/SolidAutocomplete";
41
+ import { SolidInput } from "../../../../../../components/shad-cn-ui/SolidInput";
42
+ import { SolidIcon } from "../../../../../../components/shad-cn-ui/SolidIcon";
43
+ export var SolidLovTypeChangeFormEditWidget = function (_a) {
44
+ var _b, _c, _d;
45
+ var formik = _a.formik, fieldContext = _a.fieldContext;
46
+ var fieldMetadata = fieldContext.fieldMetadata;
47
+ var fieldLayoutInfo = fieldContext.field;
48
+ var fieldLabel = (_b = fieldLayoutInfo.attrs.label) !== null && _b !== void 0 ? _b : fieldMetadata.displayName;
49
+ var fieldName = (_c = fieldLayoutInfo === null || fieldLayoutInfo === void 0 ? void 0 : fieldLayoutInfo.attrs) === null || _c === void 0 ? void 0 : _c.name;
50
+ var value = (_d = formik.values) === null || _d === void 0 ? void 0 : _d[fieldName];
51
+ // 🔹 UI State
52
+ var _e = useState([]), filteredOptions = _e[0], setFilteredOptions = _e[1];
53
+ var _f = useState(false), isCreating = _f[0], setIsCreating = _f[1];
54
+ var _g = useState(value || ""), inputValue = _g[0], setInputValue = _g[1];
55
+ // 🔹 Handle Autocommplete AJAX Fetching
56
+ var completeMethod = function (event) { return __awaiter(void 0, void 0, void 0, function () {
57
+ var query, filterPart, res, extracted, err_1;
58
+ var _a, _b, _c;
59
+ return __generator(this, function (_d) {
60
+ switch (_d.label) {
61
+ case 0:
62
+ _d.trys.push([0, 2, , 3]);
63
+ query = event.query;
64
+ filterPart = query
65
+ ? "&filters[$and][0][$or][0][".concat(fieldName, "][$containsi]=%").concat(query, "%")
66
+ : "";
67
+ return [4 /*yield*/, solidGet("/api/list-of-values?&offset=0&limit=50&groupBy[0]=".concat(fieldName, "&aggregates[0]=id:count").concat(filterPart))];
68
+ case 1:
69
+ res = _d.sent();
70
+ extracted = ((_c = (_b = (_a = res === null || res === void 0 ? void 0 : res.data) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.groupMeta) === null || _c === void 0 ? void 0 : _c.filter(function (item) { return item.groupValue != null; }).map(function (item) { return ({
71
+ label: item.groupValue,
72
+ value: item.groupValue
73
+ }); })) || [];
74
+ setFilteredOptions(extracted);
75
+ return [3 /*break*/, 3];
76
+ case 2:
77
+ err_1 = _d.sent();
78
+ console.error("Failed to fetch autocomplete suggestions", err_1);
79
+ setFilteredOptions([]);
80
+ return [3 /*break*/, 3];
81
+ case 3: return [2 /*return*/];
82
+ }
83
+ });
84
+ }); };
85
+ // 🔹 Handle Change from Autocomplete
86
+ var handleAutocompleteChange = function (e) {
87
+ var _a;
88
+ var selectedValue = typeof e.value === "object" ? (_a = e.value) === null || _a === void 0 ? void 0 : _a.value : e.value;
89
+ formik.setFieldValue(fieldName, selectedValue);
90
+ };
91
+ // 🔹 Handle Input Submit (blur or enter)
92
+ var handleCreate = function () {
93
+ if (!inputValue.trim())
94
+ return;
95
+ formik.setFieldValue(fieldName, inputValue);
96
+ setIsCreating(false);
97
+ };
98
+ return (_jsxs("div", { className: "solid-lov-type-change-widget w-full", children: [_jsxs("div", { className: "flex align-items-center justify-between mb-2", children: [_jsx("label", { className: "text-xs font-semibold text-muted-foreground uppercase tracking-wider", children: fieldLabel }), _jsxs("button", { type: "button", onClick: function () {
99
+ setIsCreating(!isCreating);
100
+ if (!isCreating)
101
+ setInputValue("");
102
+ }, style: { color: "blue", background: "transparent", border: 0 }, children: [_jsx(SolidIcon, { name: isCreating ? "si-times" : "si-plus", size: 12 }), _jsx("span", { children: isCreating ? "choose existing" : "add custom" })] })] }), _jsx("div", { className: "relative", children: !isCreating ? (_jsx(SolidAutocomplete, { value: value, suggestions: filteredOptions, completeMethod: completeMethod, onChange: handleAutocompleteChange, dropdown: true, placeholder: "Select ".concat(fieldLabel), className: "w-full" })) : (_jsx("div", { className: "flex gap-2", children: _jsx(SolidInput, { type: "text", value: inputValue, autoFocus: true, placeholder: "Enter new type", className: "flex-1 h-9", onChange: function (e) { return setInputValue(e.target.value); }, onBlur: handleCreate, onKeyDown: function (e) {
103
+ if (e.key === "Enter") {
104
+ handleCreate();
105
+ }
106
+ if (e.key === "Escape") {
107
+ setIsCreating(false);
108
+ }
109
+ } }) })) })] }));
110
+ };
111
+ //# sourceMappingURL=SolidLovTypeChangeFormEditWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SolidLovTypeChangeFormEditWidget.js","sourceRoot":"","sources":["../../../../../../../src/components/core/extension/solid-core/listOfValues/form/SolidLovTypeChangeFormEditWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState } from \"react\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../../types/solid-core\";\nimport { solidGet } from \"../../../../../../http/solidHttp\";\nimport { SolidAutocomplete } from \"../../../../../../components/shad-cn-ui/SolidAutocomplete\";\nimport { SolidInput } from \"../../../../../../components/shad-cn-ui/SolidInput\";\nimport { SolidIcon } from \"../../../../../../components/shad-cn-ui/SolidIcon\";\n\nexport const SolidLovTypeChangeFormEditWidget = ({\n formik,\n fieldContext\n}: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n\n const fieldLabel =\n fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const fieldName = fieldLayoutInfo?.attrs?.name;\n\n const value = formik.values?.[fieldName];\n\n // 🔹 UI State\n const [filteredOptions, setFilteredOptions] = useState<any[]>([]);\n const [isCreating, setIsCreating] = useState(false);\n const [inputValue, setInputValue] = useState(value || \"\");\n\n // 🔹 Handle Autocommplete AJAX Fetching\n const completeMethod = async (event: { query: string }) => {\n try {\n const query = event.query;\n // Build the URL following the user's provided filter pattern\n\n const filterPart = query\n ? `&filters[$and][0][$or][0][${fieldName}][$containsi]=%${query}%`\n : \"\";\n\n const res = await solidGet(\n `/api/list-of-values?&offset=0&limit=50&groupBy[0]=${fieldName}&aggregates[0]=id:count${filterPart}`\n );\n\n const extracted =\n res?.data?.data?.groupMeta\n ?.filter((item: any) => item.groupValue != null)\n .map((item: any) => ({\n label: item.groupValue,\n value: item.groupValue\n })) || [];\n\n setFilteredOptions(extracted);\n } catch (err) {\n console.error(\"Failed to fetch autocomplete suggestions\", err);\n setFilteredOptions([]);\n }\n };\n\n // 🔹 Handle Change from Autocomplete\n const handleAutocompleteChange = (e: { value: any }) => {\n const selectedValue = typeof e.value === \"object\" ? e.value?.value : e.value;\n formik.setFieldValue(fieldName, selectedValue);\n };\n\n // 🔹 Handle Input Submit (blur or enter)\n const handleCreate = () => {\n if (!inputValue.trim()) return;\n formik.setFieldValue(fieldName, inputValue);\n setIsCreating(false);\n };\n\n return (\n <div className=\"solid-lov-type-change-widget w-full\">\n <div className=\"flex align-items-center justify-between mb-2\">\n <label className=\"text-xs font-semibold text-muted-foreground uppercase tracking-wider\">\n {fieldLabel}\n </label>\n <button\n type=\"button\"\n onClick={() => {\n setIsCreating(!isCreating);\n if (!isCreating) setInputValue(\"\");\n }}\n style={{ color: \"blue\", background: \"transparent\", border: 0 }}\n >\n <SolidIcon name={isCreating ? \"si-times\" : \"si-plus\"} size={12} />\n <span>{isCreating ? \"choose existing\" : \"add custom\"}</span>\n </button>\n </div>\n\n <div className=\"relative\">\n {!isCreating ? (\n <SolidAutocomplete\n value={value}\n suggestions={filteredOptions}\n completeMethod={completeMethod}\n onChange={handleAutocompleteChange}\n dropdown\n placeholder={`Select ${fieldLabel}`}\n className=\"w-full\"\n />\n ) : (\n <div className=\"flex gap-2\">\n <SolidInput\n type=\"text\"\n value={inputValue}\n autoFocus\n placeholder=\"Enter new type\"\n className=\"flex-1 h-9\"\n onChange={(e) => setInputValue(e.target.value)}\n onBlur={handleCreate}\n onKeyDown={(e) => {\n if (e.key === \"Enter\") {\n handleCreate();\n }\n if (e.key === \"Escape\") {\n setIsCreating(false);\n }\n }}\n />\n </div>\n )}\n </div>\n </div>\n );\n};"]}
@@ -0,0 +1,122 @@
1
+ import { useState } from "react";
2
+ import { SolidFormFieldWidgetProps } from "../../../../../../types/solid-core";
3
+ import { solidGet } from "../../../../../../http/solidHttp";
4
+ import { SolidAutocomplete } from "../../../../../../components/shad-cn-ui/SolidAutocomplete";
5
+ import { SolidInput } from "../../../../../../components/shad-cn-ui/SolidInput";
6
+ import { SolidIcon } from "../../../../../../components/shad-cn-ui/SolidIcon";
7
+
8
+ export const SolidLovTypeChangeFormEditWidget = ({
9
+ formik,
10
+ fieldContext
11
+ }: SolidFormFieldWidgetProps) => {
12
+ const fieldMetadata = fieldContext.fieldMetadata;
13
+ const fieldLayoutInfo = fieldContext.field;
14
+
15
+ const fieldLabel =
16
+ fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;
17
+ const fieldName = fieldLayoutInfo?.attrs?.name;
18
+
19
+ const value = formik.values?.[fieldName];
20
+
21
+ // 🔹 UI State
22
+ const [filteredOptions, setFilteredOptions] = useState<any[]>([]);
23
+ const [isCreating, setIsCreating] = useState(false);
24
+ const [inputValue, setInputValue] = useState(value || "");
25
+
26
+ // 🔹 Handle Autocommplete AJAX Fetching
27
+ const completeMethod = async (event: { query: string }) => {
28
+ try {
29
+ const query = event.query;
30
+ // Build the URL following the user's provided filter pattern
31
+
32
+ const filterPart = query
33
+ ? `&filters[$and][0][$or][0][${fieldName}][$containsi]=%${query}%`
34
+ : "";
35
+
36
+ const res = await solidGet(
37
+ `/api/list-of-values?&offset=0&limit=50&groupBy[0]=${fieldName}&aggregates[0]=id:count${filterPart}`
38
+ );
39
+
40
+ const extracted =
41
+ res?.data?.data?.groupMeta
42
+ ?.filter((item: any) => item.groupValue != null)
43
+ .map((item: any) => ({
44
+ label: item.groupValue,
45
+ value: item.groupValue
46
+ })) || [];
47
+
48
+ setFilteredOptions(extracted);
49
+ } catch (err) {
50
+ console.error("Failed to fetch autocomplete suggestions", err);
51
+ setFilteredOptions([]);
52
+ }
53
+ };
54
+
55
+ // 🔹 Handle Change from Autocomplete
56
+ const handleAutocompleteChange = (e: { value: any }) => {
57
+ const selectedValue = typeof e.value === "object" ? e.value?.value : e.value;
58
+ formik.setFieldValue(fieldName, selectedValue);
59
+ };
60
+
61
+ // 🔹 Handle Input Submit (blur or enter)
62
+ const handleCreate = () => {
63
+ if (!inputValue.trim()) return;
64
+ formik.setFieldValue(fieldName, inputValue);
65
+ setIsCreating(false);
66
+ };
67
+
68
+ return (
69
+ <div className="solid-lov-type-change-widget w-full">
70
+ <div className="flex align-items-center justify-between mb-2">
71
+ <label className="text-xs font-semibold text-muted-foreground uppercase tracking-wider">
72
+ {fieldLabel}
73
+ </label>
74
+ <button
75
+ type="button"
76
+ onClick={() => {
77
+ setIsCreating(!isCreating);
78
+ if (!isCreating) setInputValue("");
79
+ }}
80
+ style={{ color: "blue", background: "transparent", border: 0 }}
81
+ >
82
+ <SolidIcon name={isCreating ? "si-times" : "si-plus"} size={12} />
83
+ <span>{isCreating ? "choose existing" : "add custom"}</span>
84
+ </button>
85
+ </div>
86
+
87
+ <div className="relative">
88
+ {!isCreating ? (
89
+ <SolidAutocomplete
90
+ value={value}
91
+ suggestions={filteredOptions}
92
+ completeMethod={completeMethod}
93
+ onChange={handleAutocompleteChange}
94
+ dropdown
95
+ placeholder={`Select ${fieldLabel}`}
96
+ className="w-full"
97
+ />
98
+ ) : (
99
+ <div className="flex gap-2">
100
+ <SolidInput
101
+ type="text"
102
+ value={inputValue}
103
+ autoFocus
104
+ placeholder="Enter new type"
105
+ className="flex-1 h-9"
106
+ onChange={(e) => setInputValue(e.target.value)}
107
+ onBlur={handleCreate}
108
+ onKeyDown={(e) => {
109
+ if (e.key === "Enter") {
110
+ handleCreate();
111
+ }
112
+ if (e.key === "Escape") {
113
+ setIsCreating(false);
114
+ }
115
+ }}
116
+ />
117
+ </div>
118
+ )}
119
+ </div>
120
+ </div>
121
+ );
122
+ };
@@ -0,0 +1,3 @@
1
+ import { SolidFormWidgetProps } from "../../../../../../types/solid-core";
2
+ export declare const SolidMqMessageStageFormViewWIdget: ({ field, formData, viewMetadata, fieldsMetadata, formViewData }: SolidFormWidgetProps) => import("react/jsx-runtime").JSX.Element;
3
+ //# sourceMappingURL=SolidMqMessageStageFormViewWIdget.d.ts.map