@solidxai/core-ui 0.1.7-beta.4 → 0.1.7-beta.5
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/components/auth/AuthLayout.d.ts.map +1 -1
- package/dist/components/auth/AuthLayout.js +1 -1
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +5 -3
- package/dist/components/auth/SolidLogin.js +3 -3
- package/dist/components/auth/SolidLogin.js.map +1 -1
- package/dist/components/auth/SolidLogin.tsx +2 -2
- package/dist/components/common/DropzonePlaceholder.d.ts.map +1 -1
- package/dist/components/common/DropzonePlaceholder.js +1 -1
- package/dist/components/common/DropzonePlaceholder.js.map +1 -1
- package/dist/components/common/DropzonePlaceholder.tsx +8 -6
- package/dist/components/core/chatter/SolidChatter.d.ts +2 -1
- package/dist/components/core/chatter/SolidChatter.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatter.js +2 -4
- package/dist/components/core/chatter/SolidChatter.js.map +1 -1
- package/dist/components/core/chatter/SolidChatter.tsx +3 -4
- package/dist/components/core/chatter/SolidChatterHeader.d.ts +1 -0
- package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.js +2 -2
- package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.tsx +4 -3
- package/dist/components/core/chatter/chatter.module.css +42 -32
- package/dist/components/core/common/SolidGenericImport/SolidGenericImport.js +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidGenericImport.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidGenericImport.tsx +2 -2
- package/dist/components/core/common/SolidGenericImport/SolidImport.module.css +153 -30
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.d.ts.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js +7 -7
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.js.map +1 -1
- package/dist/components/core/common/SolidGenericImport/SolidImportInstructions.tsx +9 -10
- package/dist/components/core/extension/solid-core/media/card/MediaCardWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/media/card/MediaCardWidget.js +1 -1
- package/dist/components/core/extension/solid-core/media/card/MediaCardWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/media/card/MediaCardWidget.tsx +6 -4
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanCardWidget.d.ts.map +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanCardWidget.js +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanCardWidget.js.map +1 -1
- package/dist/components/core/extension/solid-core/mqMessage/kanban/MqMessageKanbanCardWidget.tsx +3 -1
- package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.js +13 -13
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +21 -24
- package/dist/components/core/form/SolidFormFooter.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormFooter.js +1 -1
- package/dist/components/core/form/SolidFormFooter.js.map +1 -1
- package/dist/components/core/form/SolidFormFooter.tsx +0 -1
- package/dist/components/core/form/SolidFormUserViewLayout.js +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.js.map +1 -1
- package/dist/components/core/form/SolidFormUserViewLayout.tsx +1 -1
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +22 -33
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +38 -59
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.js +12 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.js.map +1 -1
- package/dist/components/core/form/SolidFormViewNormalHeaderButton.tsx +1 -0
- package/dist/components/core/form/fields/SolidLongTextField.js +4 -4
- package/dist/components/core/form/fields/SolidLongTextField.js.map +1 -1
- package/dist/components/core/form/fields/SolidLongTextField.tsx +4 -4
- package/dist/components/core/form/fields/SolidMediaMultipleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.js +14 -14
- package/dist/components/core/form/fields/SolidMediaMultipleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaMultipleField.tsx +35 -21
- package/dist/components/core/form/fields/SolidMediaSingleField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.js +2 -2
- package/dist/components/core/form/fields/SolidMediaSingleField.js.map +1 -1
- package/dist/components/core/form/fields/SolidMediaSingleField.tsx +48 -34
- package/dist/components/core/form/fields/SolidPasswordField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.js +2 -2
- package/dist/components/core/form/fields/SolidPasswordField.js.map +1 -1
- package/dist/components/core/form/fields/SolidPasswordField.tsx +46 -42
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js +23 -27
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToManyField.tsx +64 -66
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js +2 -6
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationManyToOneField.tsx +4 -7
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.d.ts.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js +12 -15
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.js.map +1 -1
- package/dist/components/core/form/fields/relations/SolidRelationOneToManyField.tsx +30 -16
- package/dist/components/core/form/fields/solidFields.module.css +86 -15
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js +92 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidChatterMessageCoModelEntityIdFormViewWidget.tsx +68 -0
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js +18 -28
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidIconEditWidget.tsx +52 -48
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts +3 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.d.ts.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js +111 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.js.map +1 -0
- package/dist/components/core/form/fields/widgets/SolidLovTypeChangeFormEditWidget.tsx +122 -0
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.d.ts.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.js.map +1 -1
- package/dist/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx +5 -4
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +11 -5
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +8 -0
- package/dist/components/core/kanban/KanbanCard.d.ts +1 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +4 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +5 -4
- package/dist/components/core/kanban/KanbanColumn.d.ts +2 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +3 -3
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +4 -3
- package/dist/components/core/list/SolidDataTable.d.ts +1 -0
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +19 -2
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +30 -2
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +1 -1
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +1 -0
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js +87 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidChatterMessageCoModelEntityIdListViewWidget.tsx +70 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js +33 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidMqMessageStageListViewWidget.tsx +50 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts +3 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js +158 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.js.map +1 -0
- package/dist/components/core/list/widgets/SolidSummarizeListHeaderActionMqMessages.tsx +185 -0
- package/dist/components/core/locales/SolidChatterLocaleTabView.d.ts.map +1 -1
- package/dist/components/core/locales/SolidChatterLocaleTabView.js +7 -4
- package/dist/components/core/locales/SolidChatterLocaleTabView.js.map +1 -1
- package/dist/components/core/locales/SolidChatterLocaleTabView.tsx +28 -11
- package/dist/components/core/locales/SolidLocale.js +4 -4
- package/dist/components/core/locales/SolidLocale.js.map +1 -1
- package/dist/components/core/locales/SolidLocale.tsx +18 -18
- package/dist/components/core/locales/solid-locale.css +105 -7
- package/dist/components/core/model/CreateModel.js +2 -2
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +2 -2
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +3 -3
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +45 -22
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts +7 -0
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.d.ts.map +1 -0
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js +138 -0
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.js.map +1 -0
- package/dist/components/core/users/ApiKeysTab/ApiKeysTab.tsx +246 -0
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts +8 -0
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.d.ts.map +1 -0
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js +156 -0
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.js.map +1 -0
- package/dist/components/core/users/ApiKeysTab/GenerateApiKeyModal.tsx +184 -0
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.d.ts +9 -0
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.d.ts.map +1 -0
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js +37 -0
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.js.map +1 -0
- package/dist/components/core/users/ApiKeysTab/RevealApiKeyModal.tsx +111 -0
- package/dist/components/core/users/ApiKeysTab/index.d.ts +4 -0
- package/dist/components/core/users/ApiKeysTab/index.d.ts.map +1 -0
- package/dist/components/core/users/ApiKeysTab/index.js +4 -0
- package/dist/components/core/users/ApiKeysTab/index.js.map +1 -0
- package/dist/components/core/users/ApiKeysTab/index.ts +3 -0
- package/dist/components/layout/AppSidebar.d.ts.map +1 -1
- package/dist/components/layout/AppSidebar.js +75 -7
- package/dist/components/layout/AppSidebar.js.map +1 -1
- package/dist/components/layout/AppSidebar.tsx +84 -7
- package/dist/components/shad-cn-ui/SolidCodeEditor.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.js +13 -7
- package/dist/components/shad-cn-ui/SolidCodeEditor.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidCodeEditor.tsx +22 -12
- package/dist/components/shad-cn-ui/SolidDialog.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidDialog.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.js +2 -2
- package/dist/components/shad-cn-ui/SolidDialog.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidDialog.tsx +6 -3
- package/dist/components/shad-cn-ui/SolidSelect.d.ts +2 -1
- package/dist/components/shad-cn-ui/SolidSelect.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.js +2 -2
- package/dist/components/shad-cn-ui/SolidSelect.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidSelect.tsx +3 -0
- package/dist/components/shad-cn-ui/SolidTextarea.d.ts +1 -1
- package/dist/components/shad-cn-ui/SolidTextarea.d.ts.map +1 -1
- package/dist/components/shad-cn-ui/SolidTextarea.js +3 -2
- package/dist/components/shad-cn-ui/SolidTextarea.js.map +1 -1
- package/dist/components/shad-cn-ui/SolidTextarea.tsx +17 -2
- package/dist/helpers/# no such endpoints exist, need to calle +3 -0
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +10 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/helpers/registry.ts +16 -0
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/index.ts +71 -2
- package/dist/redux/api/apiKeyApi.d.ts +40 -0
- package/dist/redux/api/apiKeyApi.d.ts.map +1 -0
- package/dist/redux/api/apiKeyApi.js +36 -0
- package/dist/redux/api/apiKeyApi.js.map +1 -0
- package/dist/redux/api/apiKeyApi.ts +60 -0
- package/dist/resources/globals.css +628 -67
- package/dist/resources/shadcn-base.css +333 -7
- package/dist/resources/solid-responsive.css +6 -6
- package/dist/resources/themes/solid-dark-purple/theme.css +1 -1
- package/package.json +1 -1
|
@@ -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/form/fields/widgets/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
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidS3FileViewerWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAW5E,OAAO,0BAA0B,CAAC;AAIlC;;GAEG;AACH,eAAO,MAAM,uBAAuB,6BAA8B,yBAAyB,
|
|
1
|
+
{"version":3,"file":"SolidS3FileViewerWidget.d.ts","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAW5E,OAAO,0BAA0B,CAAC;AAIlC;;GAEG;AACH,eAAO,MAAM,uBAAuB,6BAA8B,yBAAyB,4CA0N1F,CAAC"}
|
|
@@ -181,7 +181,7 @@ export var SolidS3FileViewerWidget = function (_a) {
|
|
|
181
181
|
// viewerRef.current.show();
|
|
182
182
|
// }
|
|
183
183
|
// }, [shouldShowViewer]);
|
|
184
|
-
return (_jsxs("div", { className: "mt-2 flex flex-col gap-2", children: [_jsx("p", { className: "m-0 form-field-label font-medium", children: fieldLabel }), value ? (_jsxs("div", { className: "flex gap-3 items-center", children: [(isImage || isPDF) && (_jsx(SolidButton, { icon: "si si-eye", type: "button", style: { minWidth: 66 }, loading: isLoading, tooltip: value, disabled: isLoading,
|
|
184
|
+
return (_jsxs("div", { className: "mt-2 flex flex-col gap-2", children: [_jsx("p", { className: "m-0 form-field-label font-medium", children: fieldLabel }), value ? (_jsxs("div", { className: "flex gap-3 items-center", children: [(isImage || isPDF) && (_jsx(SolidButton, { icon: "si si-eye", type: "button", style: { minWidth: 66 }, loading: isLoading, tooltip: value, disabled: isLoading, size: "sm", iconPos: "left", onClick: handleView, children: "View ".concat(fileType) })), downloadAllowed && (_jsx(SolidButton, { size: "sm", type: "button", icon: "si si-download", tooltip: "Download ".concat(value === null || value === void 0 ? void 0 : value.split("/").pop()), loading: isLoading, onClick: handleDownload, disabled: isLoading, className: 'solid-icon-button' }))] })) : (_jsx("p", { className: "text-sm text-muted-foreground", children: "No file uploaded" })), isImage && previewUrl && (
|
|
185
185
|
// <img
|
|
186
186
|
// ref={imageRef}
|
|
187
187
|
// src={previewUrl}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidS3FileViewerWidget.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { useRef, useState } from \"react\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogHeader,\n SolidDialogTitle,\n} from \"../../../../shad-cn-ui/SolidDialog\";\nimport { useResolveS3UrlMutation } from \"../../../../../redux/api/fieldApi\";\nimport Viewer from \"viewerjs\";\nimport \"viewerjs/dist/viewer.css\";\nimport { SolidImageViewer } from \"../../../../../components/core/common/SolidImageViewer\";\nimport { fetchS3Url, type FetchS3UrlOptions } from \"../../../../..//helpers/fetchS3Url\";\n\n/**\n * SolidS3FileViewerWidget (PrimeReact version)\n */\nexport const SolidS3FileViewerWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const value = formik.values[fieldLayoutInfo.attrs.name];\n const fileType = fieldLayoutInfo.attrs.fileType?.toLowerCase();\n const downloadAllowed = fieldLayoutInfo.attrs.downloadAllowed !== false;\n const bucketName = fieldLayoutInfo.attrs.bucketName;\n const mediaStorageProviderUserKey = fieldLayoutInfo.attrs.mediaStorageProviderUserKey;\n const isPrivate = fieldLayoutInfo.attrs.isPrivate ? fieldLayoutInfo.attrs.isPrivate : \"false\";\n\n const imageRef = useRef<HTMLImageElement | null>(null);\n const viewerRef = useRef<Viewer | null>(null);\n\n const [previewUrl, setPreviewUrl] = useState<string>(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [shouldShowViewer, setShouldShowViewer] = useState(false);\n\n const [resolveS3Url] = useResolveS3UrlMutation();\n\n const resolveFileUrl = async () => {\n setIsLoading(true);\n\n const options: FetchS3UrlOptions = {\n s3Key: value,\n fileType: fileType,\n bucketName: bucketName,\n mediaStorageProviderUserKey: mediaStorageProviderUserKey,\n isPrivate: isPrivate\n };\n\n const url = await fetchS3Url(resolveS3Url, options);\n setIsLoading(false);\n return url;\n };\n\n const handleDownload = async () => {\n if (isLoading) return;\n const url = await resolveFileUrl();\n if (!url) return;\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = value?.split(\"/\").pop() || \"file\";\n a.target = \"_blank\";\n a.rel = \"noopener noreferrer\";\n a.click();\n };\n\n const handleView = async () => {\n console.log(\"isLoading in view\", isLoading);\n if (isLoading) return;\n\n const url = await resolveFileUrl();\n console.log(\"url after fetch success\", url);\n if (!url) return;\n\n setPreviewUrl(url);\n\n if (isImage) {\n // Trigger viewer to show after state update\n setShouldShowViewer(true);\n } else {\n setOpen(true);\n }\n };\n\n const isImage = [\"jpeg\", \"jpg\", \"png\", \"gif\", \"webp\"].includes(fileType);\n const isPDF = fileType === \"pdf\";\n const isDownloadOnly = [\"xlsx\", \"xls\", \"csv\", \"doc\", \"docx\"].includes(fileType);\n\n // 🔹 Initialize Viewer.js once image exists\n // useEffect(() => {\n // if (imageRef.current && previewUrl && isImage) {\n // // Destroy existing viewer if any\n // if (viewerRef.current) {\n // viewerRef.current.destroy();\n // }\n\n // // Create new viewer instance\n // viewerRef.current = new Viewer(imageRef.current, {\n // toolbar: {\n // zoomIn: 1,\n // zoomOut: 1,\n // rotateLeft: 1,\n // rotateRight: 1,\n // reset: 1,\n // },\n // navbar: false,\n // title: false,\n // transition: true,\n // movable: true,\n // scalable: true,\n // rotatable: true,\n // zoomable: true,\n // zIndex: 9999,\n // // Add hidden event to reset state\n // hidden: () => {\n // setShouldShowViewer(false);\n // }\n // });\n\n // console.log(\"Viewer initialized\");\n // }\n\n // return () => {\n // if (viewerRef.current) {\n // viewerRef.current.destroy();\n // viewerRef.current = null;\n // }\n // };\n // }, [previewUrl, isImage]);\n\n // 🔹 Show viewer when shouldShowViewer becomes true\n // useEffect(() => {\n // if (shouldShowViewer && viewerRef.current) {\n // console.log(\"Showing viewer\");\n // viewerRef.current.show();\n // }\n // }, [shouldShowViewer]);\n\n return (\n <div className=\"mt-2 flex flex-col gap-2\">\n <p className=\"m-0 form-field-label font-medium\">{fieldLabel}</p>\n\n {value ? (\n <div className=\"flex gap-3 items-center\">\n {(isImage || isPDF) && (\n <SolidButton\n icon=\"si si-eye\"\n type=\"button\"\n style={{ minWidth: 66 }}\n loading={isLoading}\n tooltip={value}\n disabled={isLoading}\n label={`View ${fileType}`}\n size=\"small\"\n iconPos=\"left\"\n onClick={handleView}\n />\n )}\n {downloadAllowed && (\n <SolidButton\n size=\"small\"\n type=\"button\"\n icon=\"si si-download\"\n tooltip={`Download ${value?.split(\"/\").pop()}`}\n loading={isLoading}\n onClick={handleDownload}\n disabled={isLoading}\n className='solid-icon-button' />\n )}\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\">No file uploaded</p>\n )}\n\n {/* Hidden image for Viewer.js - keep visibility hidden instead of display none */}\n {isImage && previewUrl && (\n // <img\n // ref={imageRef}\n // src={previewUrl}\n // alt={value}\n // style={{\n // position: \"absolute\",\n // visibility: \"hidden\",\n // width: \"1px\",\n // height: \"1px\"\n // }}\n // />\n <SolidImageViewer\n images={[previewUrl]}\n open={shouldShowViewer}\n onClose={() => setShouldShowViewer(false)}\n viewerOptions={{\n toolbar: {\n zoomIn: 1,\n zoomOut: 1,\n rotateLeft: 1,\n rotateRight: 1,\n reset: 1,\n },\n }}\n />\n\n )}\n\n <SolidDialog\n open={open}\n onOpenChange={setOpen}\n className=\"solid-confirm-dialog\"\n style={{ width: \"80vw\", maxHeight: \"90vh\" }}\n >\n <SolidDialogHeader className=\"p-1 form-wrapper-title\">\n <SolidDialogTitle>{value}</SolidDialogTitle>\n <SolidDialogClose aria-label=\"Close preview\" />\n </SolidDialogHeader>\n <SolidDialogBody className=\"p-0\">\n {previewUrl && isPDF && (\n <div\n style={{\n width: \"100%\",\n height: \"75vh\",\n overflow: \"hidden\",\n borderRadius: 6,\n }}\n >\n <iframe\n src={previewUrl}\n style={{ width: \"100%\", height: \"100%\", border: \"none\" }}\n />\n </div>\n )}\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidS3FileViewerWidget.js","sourceRoot":"","sources":["../../../../../../src/components/core/form/fields/widgets/SolidS3FileViewerWidget.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport { useRef, useState } from \"react\";\nimport { SolidFormFieldWidgetProps } from \"../../../../../types/solid-core\";\nimport { SolidButton } from \"../../../../shad-cn-ui/SolidButton\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogHeader,\n SolidDialogTitle,\n} from \"../../../../shad-cn-ui/SolidDialog\";\nimport { useResolveS3UrlMutation } from \"../../../../../redux/api/fieldApi\";\nimport Viewer from \"viewerjs\";\nimport \"viewerjs/dist/viewer.css\";\nimport { SolidImageViewer } from \"../../../../../components/core/common/SolidImageViewer\";\nimport { fetchS3Url, type FetchS3UrlOptions } from \"../../../../..//helpers/fetchS3Url\";\n\n/**\n * SolidS3FileViewerWidget (PrimeReact version)\n */\nexport const SolidS3FileViewerWidget = ({ formik, fieldContext }: SolidFormFieldWidgetProps) => {\n const fieldMetadata = fieldContext.fieldMetadata;\n const fieldLayoutInfo = fieldContext.field;\n const fieldLabel = fieldLayoutInfo.attrs.label ?? fieldMetadata.displayName;\n const value = formik.values[fieldLayoutInfo.attrs.name];\n const fileType = fieldLayoutInfo.attrs.fileType?.toLowerCase();\n const downloadAllowed = fieldLayoutInfo.attrs.downloadAllowed !== false;\n const bucketName = fieldLayoutInfo.attrs.bucketName;\n const mediaStorageProviderUserKey = fieldLayoutInfo.attrs.mediaStorageProviderUserKey;\n const isPrivate = fieldLayoutInfo.attrs.isPrivate ? fieldLayoutInfo.attrs.isPrivate : \"false\";\n\n const imageRef = useRef<HTMLImageElement | null>(null);\n const viewerRef = useRef<Viewer | null>(null);\n\n const [previewUrl, setPreviewUrl] = useState<string>(\"\");\n const [isLoading, setIsLoading] = useState(false);\n const [open, setOpen] = useState(false);\n const [shouldShowViewer, setShouldShowViewer] = useState(false);\n\n const [resolveS3Url] = useResolveS3UrlMutation();\n\n const resolveFileUrl = async () => {\n setIsLoading(true);\n\n const options: FetchS3UrlOptions = {\n s3Key: value,\n fileType: fileType,\n bucketName: bucketName,\n mediaStorageProviderUserKey: mediaStorageProviderUserKey,\n isPrivate: isPrivate\n };\n\n const url = await fetchS3Url(resolveS3Url, options);\n setIsLoading(false);\n return url;\n };\n\n const handleDownload = async () => {\n if (isLoading) return;\n const url = await resolveFileUrl();\n if (!url) return;\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = value?.split(\"/\").pop() || \"file\";\n a.target = \"_blank\";\n a.rel = \"noopener noreferrer\";\n a.click();\n };\n\n const handleView = async () => {\n console.log(\"isLoading in view\", isLoading);\n if (isLoading) return;\n\n const url = await resolveFileUrl();\n console.log(\"url after fetch success\", url);\n if (!url) return;\n\n setPreviewUrl(url);\n\n if (isImage) {\n // Trigger viewer to show after state update\n setShouldShowViewer(true);\n } else {\n setOpen(true);\n }\n };\n\n const isImage = [\"jpeg\", \"jpg\", \"png\", \"gif\", \"webp\"].includes(fileType);\n const isPDF = fileType === \"pdf\";\n const isDownloadOnly = [\"xlsx\", \"xls\", \"csv\", \"doc\", \"docx\"].includes(fileType);\n\n // 🔹 Initialize Viewer.js once image exists\n // useEffect(() => {\n // if (imageRef.current && previewUrl && isImage) {\n // // Destroy existing viewer if any\n // if (viewerRef.current) {\n // viewerRef.current.destroy();\n // }\n\n // // Create new viewer instance\n // viewerRef.current = new Viewer(imageRef.current, {\n // toolbar: {\n // zoomIn: 1,\n // zoomOut: 1,\n // rotateLeft: 1,\n // rotateRight: 1,\n // reset: 1,\n // },\n // navbar: false,\n // title: false,\n // transition: true,\n // movable: true,\n // scalable: true,\n // rotatable: true,\n // zoomable: true,\n // zIndex: 9999,\n // // Add hidden event to reset state\n // hidden: () => {\n // setShouldShowViewer(false);\n // }\n // });\n\n // console.log(\"Viewer initialized\");\n // }\n\n // return () => {\n // if (viewerRef.current) {\n // viewerRef.current.destroy();\n // viewerRef.current = null;\n // }\n // };\n // }, [previewUrl, isImage]);\n\n // 🔹 Show viewer when shouldShowViewer becomes true\n // useEffect(() => {\n // if (shouldShowViewer && viewerRef.current) {\n // console.log(\"Showing viewer\");\n // viewerRef.current.show();\n // }\n // }, [shouldShowViewer]);\n\n return (\n <div className=\"mt-2 flex flex-col gap-2\">\n <p className=\"m-0 form-field-label font-medium\">{fieldLabel}</p>\n\n {value ? (\n <div className=\"flex gap-3 items-center\">\n {(isImage || isPDF) && (\n <SolidButton\n icon=\"si si-eye\"\n type=\"button\"\n style={{ minWidth: 66 }}\n loading={isLoading}\n tooltip={value}\n disabled={isLoading}\n size=\"sm\"\n iconPos=\"left\"\n onClick={handleView}\n >\n {`View ${fileType}`}\n </SolidButton>\n )}\n {downloadAllowed && (\n <SolidButton\n size=\"sm\"\n type=\"button\"\n icon=\"si si-download\"\n tooltip={`Download ${value?.split(\"/\").pop()}`}\n loading={isLoading}\n onClick={handleDownload}\n disabled={isLoading}\n className='solid-icon-button' />\n )}\n </div>\n ) : (\n <p className=\"text-sm text-muted-foreground\">No file uploaded</p>\n )}\n\n {/* Hidden image for Viewer.js - keep visibility hidden instead of display none */}\n {isImage && previewUrl && (\n // <img\n // ref={imageRef}\n // src={previewUrl}\n // alt={value}\n // style={{\n // position: \"absolute\",\n // visibility: \"hidden\",\n // width: \"1px\",\n // height: \"1px\"\n // }}\n // />\n <SolidImageViewer\n images={[previewUrl]}\n open={shouldShowViewer}\n onClose={() => setShouldShowViewer(false)}\n viewerOptions={{\n toolbar: {\n zoomIn: 1,\n zoomOut: 1,\n rotateLeft: 1,\n rotateRight: 1,\n reset: 1,\n },\n }}\n />\n\n )}\n\n <SolidDialog\n open={open}\n onOpenChange={setOpen}\n className=\"solid-confirm-dialog\"\n style={{ width: \"80vw\", maxHeight: \"90vh\" }}\n >\n <SolidDialogHeader className=\"p-1 form-wrapper-title\">\n <SolidDialogTitle>{value}</SolidDialogTitle>\n <SolidDialogClose aria-label=\"Close preview\" />\n </SolidDialogHeader>\n <SolidDialogBody className=\"p-0\">\n {previewUrl && isPDF && (\n <div\n style={{\n width: \"100%\",\n height: \"75vh\",\n overflow: \"hidden\",\n borderRadius: 6,\n }}\n >\n <iframe\n src={previewUrl}\n style={{ width: \"100%\", height: \"100%\", border: \"none\" }}\n />\n </div>\n )}\n </SolidDialogBody>\n </SolidDialog>\n </div>\n );\n};\n"]}
|
|
@@ -153,15 +153,16 @@ export const SolidS3FileViewerWidget = ({ formik, fieldContext }: SolidFormField
|
|
|
153
153
|
loading={isLoading}
|
|
154
154
|
tooltip={value}
|
|
155
155
|
disabled={isLoading}
|
|
156
|
-
|
|
157
|
-
size="small"
|
|
156
|
+
size="sm"
|
|
158
157
|
iconPos="left"
|
|
159
158
|
onClick={handleView}
|
|
160
|
-
|
|
159
|
+
>
|
|
160
|
+
{`View ${fileType}`}
|
|
161
|
+
</SolidButton>
|
|
161
162
|
)}
|
|
162
163
|
{downloadAllowed && (
|
|
163
164
|
<SolidButton
|
|
164
|
-
size="
|
|
165
|
+
size="sm"
|
|
165
166
|
type="button"
|
|
166
167
|
icon="si si-download"
|
|
167
168
|
tooltip={`Download ${value?.split("/").pop()}`}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanBoard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanBoard.tsx"],"names":[],"mappings":"AA+BA,eAAO,MAAM,WAAW,8MAA+M,GAAG,
|
|
1
|
+
{"version":3,"file":"KanbanBoard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanBoard.tsx"],"names":[],"mappings":"AA+BA,eAAO,MAAM,WAAW,8MAA+M,GAAG,4CAwIzO,CAAA;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -32,13 +32,19 @@ var findKanbanCardNode = function (nodes) {
|
|
|
32
32
|
return null;
|
|
33
33
|
};
|
|
34
34
|
export var KanbanBoard = function (_a) {
|
|
35
|
-
var _b, _c, _d;
|
|
35
|
+
var _b, _c, _d, _e, _f;
|
|
36
36
|
var groupByFieldName = _a.groupByFieldName, kanbanViewData = _a.kanbanViewData, maxSwimLanesCount = _a.maxSwimLanesCount, solidKanbanViewMetaData = _a.solidKanbanViewMetaData, setKanbanViewData = _a.setKanbanViewData, handleLoadMore = _a.handleLoadMore, onDragEnd = _a.onDragEnd, handleSwimLanePagination = _a.handleSwimLanePagination, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox, editButtonUrl = _a.editButtonUrl;
|
|
37
|
-
var
|
|
37
|
+
var _g = useState(true), loading = _g[0], setLoading = _g[1];
|
|
38
38
|
// State to manage the folded status of each column
|
|
39
|
-
var
|
|
39
|
+
var _h = useState({}), foldedStates = _h[0], setFoldedStates = _h[1];
|
|
40
40
|
var cardNode = findKanbanCardNode(((_c = (_b = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.solidView) === null || _b === void 0 ? void 0 : _b.layout) === null || _c === void 0 ? void 0 : _c.children) || []);
|
|
41
|
-
var
|
|
41
|
+
var layoutAttrs = ((_e = (_d = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.solidView) === null || _d === void 0 ? void 0 : _d.layout) === null || _e === void 0 ? void 0 : _e.attrs) || {};
|
|
42
|
+
var isKanbanDragEnabled = layoutAttrs.draggable !== false &&
|
|
43
|
+
layoutAttrs.dragAndDrop !== false &&
|
|
44
|
+
layoutAttrs.enableDrag !== false &&
|
|
45
|
+
layoutAttrs.disableDrag !== true &&
|
|
46
|
+
layoutAttrs.disableDragging !== true;
|
|
47
|
+
var cardWidget = ((_f = cardNode === null || cardNode === void 0 ? void 0 : cardNode.attrs) === null || _f === void 0 ? void 0 : _f.cardWidget) || (cardNode === null || cardNode === void 0 ? void 0 : cardNode.cardWidget);
|
|
42
48
|
var DynamicCardWidget = cardWidget ? getExtensionComponent(cardWidget) : null;
|
|
43
49
|
var kanbanCardConfigurationIssue = !cardWidget
|
|
44
50
|
? { type: "missing_widget_reference" }
|
|
@@ -82,7 +88,7 @@ export var KanbanBoard = function (_a) {
|
|
|
82
88
|
currentPage: data.groupData.meta.currentPage,
|
|
83
89
|
folded: foldedStates[data.groupName] || false,
|
|
84
90
|
};
|
|
85
|
-
return (_jsx(KanbanColumn, { groupByField: data.groupName, group: group, solidKanbanViewMetaData: solidKanbanViewMetaData, groupData: data.groupData.records, toggleFold: toggleFold, handleLoadMore: handleLoadMore, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox, editButtonUrl: editButtonUrl, cardNode: cardNode, DynamicCardWidget: DynamicCardWidget }, data.groupName));
|
|
91
|
+
return (_jsx(KanbanColumn, { groupByField: data.groupName, group: group, isKanbanDragEnabled: isKanbanDragEnabled, solidKanbanViewMetaData: solidKanbanViewMetaData, groupData: data.groupData.records, toggleFold: toggleFold, handleLoadMore: handleLoadMore, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox, editButtonUrl: editButtonUrl, cardNode: cardNode, DynamicCardWidget: DynamicCardWidget }, data.groupName));
|
|
86
92
|
}), kanbanViewData.length < maxSwimLanesCount &&
|
|
87
93
|
_jsx("div", { children: _jsxs("a", { size: "small", className: "kaban-swimlane-load-more", style: { textWrap: 'nowrap' }, text: true, onClick: handleSwimLanePagination, children: ["Load More...(", maxSwimLanesCount - kanbanViewData.length, ")"] }) })] }) })) }));
|
|
88
94
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanBoard.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanBoard.tsx"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { useState } from \"react\";\nimport { DragDropContext } from \"@hello-pangea/dnd\";\nimport KanbanColumn from \"./KanbanColumn\";\nimport { getExtensionComponent } from \"../../../helpers/registry\";\n\n// Define types for groupData and Grouped Data\ninterface Post {\n id: string;\n title: string;\n status: string;\n}\n\ninterface GroupData {\n count: number;\n records: Post[];\n}\n\nconst findKanbanCardNode = (nodes: any[] = []): any => {\n for (const node of nodes) {\n if (!node) continue;\n if (node.type === \"card\") return node;\n if (Array.isArray(node?.children) && node.children.length > 0) {\n const nestedCard = findKanbanCardNode(node.children);\n if (nestedCard) return nestedCard;\n }\n }\n\n return null;\n};\n\nexport const KanbanBoard = ({ groupByFieldName, kanbanViewData, maxSwimLanesCount, solidKanbanViewMetaData, setKanbanViewData, handleLoadMore, onDragEnd, handleSwimLanePagination, setLightboxUrls, setOpenLightbox, editButtonUrl }: any) => {\n const [loading, setLoading] = useState<boolean>(true);\n // State to manage the folded status of each column\n const [foldedStates, setFoldedStates] = useState<Record<string, boolean>>({});\n const cardNode = findKanbanCardNode(solidKanbanViewMetaData?.solidView?.layout?.children || []);\n const cardWidget = cardNode?.attrs?.cardWidget || cardNode?.cardWidget;\n const DynamicCardWidget = cardWidget ? getExtensionComponent(cardWidget) : null;\n const kanbanCardConfigurationIssue = !cardWidget\n ? { type: \"missing_widget_reference\" }\n : !DynamicCardWidget\n ? { type: \"missing_widget\", cardWidget }\n : null;\n\n // Toggle fold (not yet implemented)\n const toggleFold = (status: string): void => {\n setFoldedStates((prevFoldedStates) => ({\n ...prevFoldedStates,\n [status]: !prevFoldedStates[status],\n }));\n };\n\n // Render the Kanban board\n return (\n //@ts-ignore\n <div className=\"solid-kanban-board-wrapper\">\n {kanbanCardConfigurationIssue ? (\n <div className=\"solid-kanban-config-placeholder-container\">\n <div className=\"solid-kanban-config-placeholder-panel\">\n <div className=\"solid-kanban-config-placeholder-badge\">KANBAN CONFIGURATION</div>\n <div className=\"solid-kanban-config-placeholder-title\">\n {kanbanCardConfigurationIssue.type === \"missing_widget\"\n ? \"Kanban card widget could not be resolved\"\n : \"Kanban card widget is not configured\"}\n </div>\n <div className=\"solid-kanban-config-placeholder-description\">\n {kanbanCardConfigurationIssue.type === \"missing_widget\" ? (\n <>\n This kanban view references <code>{kanbanCardConfigurationIssue.cardWidget}</code>, but no matching card widget is registered.\n </>\n ) : (\n <>\n This kanban view does not define a <code>cardWidget</code> on the card node.\n </>\n )}\n </div>\n <div className=\"solid-kanban-config-placeholder-hint\">\n {kanbanCardConfigurationIssue.type === \"missing_widget\"\n ? \"Register the widget in the extension registry or update the kanban metadata to point at a valid component.\"\n : \"Configure attrs.cardWidget on the kanban card metadata so the board can render each record.\"}\n </div>\n </div>\n </div>\n ) : (\n <DragDropContext onDragEnd={onDragEnd}>\n <div className=\"flex gap-3 px-3 md:px-4 py-2 md:py-3 solid-kanban-board-scroll-context\">\n {/* {Object.entries(kanbanViewData).map(([groupVal, data]) => {\n const group = {\n label: groupVal,\n count: data.count,\n folded: foldedStates[groupVal] || false,\n };\n\n return (\n <KanbanColumn\n key={groupVal}\n groupByField={groupVal}\n group={group}\n groupData={data.records}\n toggleFold={toggleFold}\n handleLoadMore={handleLoadMore}\n />\n );\n })} */}\n {kanbanViewData.map((data: any) => {\n // Find the displayName for the groupName from solidKanbanViewMetaData.solidFieldsMetadata\n let label = data.groupName;\n const fieldMeta = solidKanbanViewMetaData?.solidFieldsMetadata?.[groupByFieldName];\n if (\n fieldMeta &&\n fieldMeta.type === \"selectionStatic\" &&\n Array.isArray(fieldMeta.selectionStaticValues)\n ) {\n const match = fieldMeta.selectionStaticValues.find(\n (v: string) => {\n const [value, displayName] = v.split(\":\");\n return value === data.groupName;\n }\n );\n if (match) {\n label = match.split(\":\")[1];\n }\n }\n\n const group = {\n label,\n count: data.groupData.meta.totalRecords,\n limit: data.groupData.meta.perPage,\n currentPage: data.groupData.meta.currentPage,\n folded: foldedStates[data.groupName] || false,\n };\n\n return (\n <KanbanColumn\n key={data.groupName}\n groupByField={data.groupName}\n group={group}\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n groupData={data.groupData.records}\n toggleFold={toggleFold}\n handleLoadMore={handleLoadMore}\n setLightboxUrls={setLightboxUrls}\n setOpenLightbox={setOpenLightbox}\n editButtonUrl={editButtonUrl}\n cardNode={cardNode}\n DynamicCardWidget={DynamicCardWidget}\n />\n );\n })}\n {kanbanViewData.length < maxSwimLanesCount &&\n <div>\n <a size=\"small\" className=\"kaban-swimlane-load-more\" style={{ textWrap: 'nowrap' }} text onClick={handleSwimLanePagination}>Load More...({maxSwimLanesCount - kanbanViewData.length})</a>\n </div>\n }\n </div>\n </DragDropContext>\n )}\n </div>\n );\n}\n\nexport default KanbanBoard;\n"]}
|
|
1
|
+
{"version":3,"file":"KanbanBoard.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanBoard.tsx"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport { useState } from \"react\";\nimport { DragDropContext } from \"@hello-pangea/dnd\";\nimport KanbanColumn from \"./KanbanColumn\";\nimport { getExtensionComponent } from \"../../../helpers/registry\";\n\n// Define types for groupData and Grouped Data\ninterface Post {\n id: string;\n title: string;\n status: string;\n}\n\ninterface GroupData {\n count: number;\n records: Post[];\n}\n\nconst findKanbanCardNode = (nodes: any[] = []): any => {\n for (const node of nodes) {\n if (!node) continue;\n if (node.type === \"card\") return node;\n if (Array.isArray(node?.children) && node.children.length > 0) {\n const nestedCard = findKanbanCardNode(node.children);\n if (nestedCard) return nestedCard;\n }\n }\n\n return null;\n};\n\nexport const KanbanBoard = ({ groupByFieldName, kanbanViewData, maxSwimLanesCount, solidKanbanViewMetaData, setKanbanViewData, handleLoadMore, onDragEnd, handleSwimLanePagination, setLightboxUrls, setOpenLightbox, editButtonUrl }: any) => {\n const [loading, setLoading] = useState<boolean>(true);\n // State to manage the folded status of each column\n const [foldedStates, setFoldedStates] = useState<Record<string, boolean>>({});\n const cardNode = findKanbanCardNode(solidKanbanViewMetaData?.solidView?.layout?.children || []);\n const layoutAttrs = solidKanbanViewMetaData?.solidView?.layout?.attrs || {};\n const isKanbanDragEnabled =\n layoutAttrs.draggable !== false &&\n layoutAttrs.dragAndDrop !== false &&\n layoutAttrs.enableDrag !== false &&\n layoutAttrs.disableDrag !== true &&\n layoutAttrs.disableDragging !== true;\n const cardWidget = cardNode?.attrs?.cardWidget || cardNode?.cardWidget;\n const DynamicCardWidget = cardWidget ? getExtensionComponent(cardWidget) : null;\n const kanbanCardConfigurationIssue = !cardWidget\n ? { type: \"missing_widget_reference\" }\n : !DynamicCardWidget\n ? { type: \"missing_widget\", cardWidget }\n : null;\n\n // Toggle fold (not yet implemented)\n const toggleFold = (status: string): void => {\n setFoldedStates((prevFoldedStates) => ({\n ...prevFoldedStates,\n [status]: !prevFoldedStates[status],\n }));\n };\n\n // Render the Kanban board\n return (\n //@ts-ignore\n <div className=\"solid-kanban-board-wrapper\">\n {kanbanCardConfigurationIssue ? (\n <div className=\"solid-kanban-config-placeholder-container\">\n <div className=\"solid-kanban-config-placeholder-panel\">\n <div className=\"solid-kanban-config-placeholder-badge\">KANBAN CONFIGURATION</div>\n <div className=\"solid-kanban-config-placeholder-title\">\n {kanbanCardConfigurationIssue.type === \"missing_widget\"\n ? \"Kanban card widget could not be resolved\"\n : \"Kanban card widget is not configured\"}\n </div>\n <div className=\"solid-kanban-config-placeholder-description\">\n {kanbanCardConfigurationIssue.type === \"missing_widget\" ? (\n <>\n This kanban view references <code>{kanbanCardConfigurationIssue.cardWidget}</code>, but no matching card widget is registered.\n </>\n ) : (\n <>\n This kanban view does not define a <code>cardWidget</code> on the card node.\n </>\n )}\n </div>\n <div className=\"solid-kanban-config-placeholder-hint\">\n {kanbanCardConfigurationIssue.type === \"missing_widget\"\n ? \"Register the widget in the extension registry or update the kanban metadata to point at a valid component.\"\n : \"Configure attrs.cardWidget on the kanban card metadata so the board can render each record.\"}\n </div>\n </div>\n </div>\n ) : (\n <DragDropContext onDragEnd={onDragEnd}>\n <div className=\"flex gap-3 px-3 md:px-4 py-2 md:py-3 solid-kanban-board-scroll-context\">\n {/* {Object.entries(kanbanViewData).map(([groupVal, data]) => {\n const group = {\n label: groupVal,\n count: data.count,\n folded: foldedStates[groupVal] || false,\n };\n\n return (\n <KanbanColumn\n key={groupVal}\n groupByField={groupVal}\n group={group}\n groupData={data.records}\n toggleFold={toggleFold}\n handleLoadMore={handleLoadMore}\n />\n );\n })} */}\n {kanbanViewData.map((data: any) => {\n // Find the displayName for the groupName from solidKanbanViewMetaData.solidFieldsMetadata\n let label = data.groupName;\n const fieldMeta = solidKanbanViewMetaData?.solidFieldsMetadata?.[groupByFieldName];\n if (\n fieldMeta &&\n fieldMeta.type === \"selectionStatic\" &&\n Array.isArray(fieldMeta.selectionStaticValues)\n ) {\n const match = fieldMeta.selectionStaticValues.find(\n (v: string) => {\n const [value, displayName] = v.split(\":\");\n return value === data.groupName;\n }\n );\n if (match) {\n label = match.split(\":\")[1];\n }\n }\n\n const group = {\n label,\n count: data.groupData.meta.totalRecords,\n limit: data.groupData.meta.perPage,\n currentPage: data.groupData.meta.currentPage,\n folded: foldedStates[data.groupName] || false,\n };\n\n return (\n <KanbanColumn\n key={data.groupName}\n groupByField={data.groupName}\n group={group}\n isKanbanDragEnabled={isKanbanDragEnabled}\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n groupData={data.groupData.records}\n toggleFold={toggleFold}\n handleLoadMore={handleLoadMore}\n setLightboxUrls={setLightboxUrls}\n setOpenLightbox={setOpenLightbox}\n editButtonUrl={editButtonUrl}\n cardNode={cardNode}\n DynamicCardWidget={DynamicCardWidget}\n />\n );\n })}\n {kanbanViewData.length < maxSwimLanesCount &&\n <div>\n <a size=\"small\" className=\"kaban-swimlane-load-more\" style={{ textWrap: 'nowrap' }} text onClick={handleSwimLanePagination}>Load More...({maxSwimLanesCount - kanbanViewData.length})</a>\n </div>\n }\n </div>\n </DragDropContext>\n )}\n </div>\n );\n}\n\nexport default KanbanBoard;\n"]}
|
|
@@ -34,6 +34,13 @@ export const KanbanBoard = ({ groupByFieldName, kanbanViewData, maxSwimLanesCoun
|
|
|
34
34
|
// State to manage the folded status of each column
|
|
35
35
|
const [foldedStates, setFoldedStates] = useState<Record<string, boolean>>({});
|
|
36
36
|
const cardNode = findKanbanCardNode(solidKanbanViewMetaData?.solidView?.layout?.children || []);
|
|
37
|
+
const layoutAttrs = solidKanbanViewMetaData?.solidView?.layout?.attrs || {};
|
|
38
|
+
const isKanbanDragEnabled =
|
|
39
|
+
layoutAttrs.draggable !== false &&
|
|
40
|
+
layoutAttrs.dragAndDrop !== false &&
|
|
41
|
+
layoutAttrs.enableDrag !== false &&
|
|
42
|
+
layoutAttrs.disableDrag !== true &&
|
|
43
|
+
layoutAttrs.disableDragging !== true;
|
|
37
44
|
const cardWidget = cardNode?.attrs?.cardWidget || cardNode?.cardWidget;
|
|
38
45
|
const DynamicCardWidget = cardWidget ? getExtensionComponent(cardWidget) : null;
|
|
39
46
|
const kanbanCardConfigurationIssue = !cardWidget
|
|
@@ -135,6 +142,7 @@ export const KanbanBoard = ({ groupByFieldName, kanbanViewData, maxSwimLanesCoun
|
|
|
135
142
|
key={data.groupName}
|
|
136
143
|
groupByField={data.groupName}
|
|
137
144
|
group={group}
|
|
145
|
+
isKanbanDragEnabled={isKanbanDragEnabled}
|
|
138
146
|
solidKanbanViewMetaData={solidKanbanViewMetaData}
|
|
139
147
|
groupData={data.groupData.records}
|
|
140
148
|
toggleFold={toggleFold}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,uBAAuB,EAAE,GAAG,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuFzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"KanbanCard.d.ts","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAY1B,UAAU,IAAI;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,IAAI,CAAC;IACX,uBAAuB,EAAE,GAAG,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,eAAe,CAAC,EAAE,GAAG,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,GAAG,CAAC;IACf,iBAAiB,CAAC,EAAE,GAAG,CAAC;CACzB;AAED,QAAA,MAAM,UAAU,EAAE,KAAK,CAAC,EAAE,CAAC,eAAe,CAuFzC,CAAC;AAEF,eAAe,UAAU,CAAC"}
|
|
@@ -14,7 +14,7 @@ import { useRouter } from "../../../hooks/useRouter";
|
|
|
14
14
|
import { Draggable } from "@hello-pangea/dnd";
|
|
15
15
|
import { SolidDropdownMenu, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuTrigger, SolidIcon, } from "../../shad-cn-ui";
|
|
16
16
|
var KanbanCard = function (_a) {
|
|
17
|
-
var data = _a.data, solidKanbanViewMetaData = _a.solidKanbanViewMetaData, index = _a.index, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox, editButtonUrl = _a.editButtonUrl, groupByFieldName = _a.groupByFieldName, group = _a.group, cardNode = _a.cardNode, DynamicCardWidget = _a.DynamicCardWidget;
|
|
17
|
+
var data = _a.data, solidKanbanViewMetaData = _a.solidKanbanViewMetaData, index = _a.index, _b = _a.isDragDisabled, isDragDisabled = _b === void 0 ? false : _b, setLightboxUrls = _a.setLightboxUrls, setOpenLightbox = _a.setOpenLightbox, editButtonUrl = _a.editButtonUrl, groupByFieldName = _a.groupByFieldName, group = _a.group, cardNode = _a.cardNode, DynamicCardWidget = _a.DynamicCardWidget;
|
|
18
18
|
var router = useRouter();
|
|
19
19
|
var openRecord = function () {
|
|
20
20
|
if (typeof window !== "undefined") {
|
|
@@ -28,12 +28,12 @@ var KanbanCard = function (_a) {
|
|
|
28
28
|
var renderKanbanAction = function (data) {
|
|
29
29
|
return (_jsx("div", { className: "solid-kanban-action", onClick: function (e) { return e.stopPropagation(); }, children: _jsxs(SolidDropdownMenu, { children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "solid-header-cog-trigger solid-kanban-action-trigger", "aria-label": "Open card actions", children: _jsx(SolidIcon, { name: "si-ellipsis-v", "aria-hidden": true }) }) }), _jsx(SolidDropdownMenuContent, { className: "solid-custom-overlay", align: "end", children: _jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () { return router.push("".concat(editButtonUrl, "/").concat(data === null || data === void 0 ? void 0 : data.id)); }, children: [_jsx(SolidIcon, { name: "si-pencil", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Edit" })] }) })] }) }));
|
|
30
30
|
};
|
|
31
|
-
return (_jsx(Draggable, { draggableId: String(data.id), index: index, children: function (provided, snapshot) {
|
|
31
|
+
return (_jsx(Draggable, { draggableId: String(data.id), index: index, isDragDisabled: isDragDisabled, children: function (provided, snapshot) {
|
|
32
32
|
var _a, _b;
|
|
33
|
-
return (_jsx("div", __assign({ className: "", ref: provided.innerRef }, provided.draggableProps, provided.dragHandleProps, { style: __assign({ marginTop: "1rem" }, provided.draggableProps.style), className: "kanban-card-container", children: _jsxs("div", { style: {
|
|
33
|
+
return (_jsx("div", __assign({ className: "", ref: provided.innerRef }, provided.draggableProps, (!isDragDisabled ? provided.dragHandleProps : {}), { style: __assign({ marginTop: "1rem" }, provided.draggableProps.style), className: "kanban-card-container", children: _jsxs("div", { style: {
|
|
34
34
|
opacity: snapshot.isDragging ? 0.9 : 1,
|
|
35
35
|
transform: snapshot.isDragging ? "rotate(-2deg)" : "",
|
|
36
|
-
cursor:
|
|
36
|
+
cursor: isDragDisabled ? "pointer" : "grab"
|
|
37
37
|
}, elevation: snapshot.isDragging ? 3 : 1, className: "solid-kanban-card", onClick: openRecord, children: [renderKanbanAction(data), DynamicCardWidget ? (_jsx(DynamicCardWidget, { rowData: data, solidKanbanViewMetaData: solidKanbanViewMetaData, solidView: solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.solidView, solidFieldsMetadata: solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.solidFieldsMetadata, card: cardNode, layoutAttrs: ((_b = (_a = solidKanbanViewMetaData === null || solidKanbanViewMetaData === void 0 ? void 0 : solidKanbanViewMetaData.solidView) === null || _a === void 0 ? void 0 : _a.layout) === null || _b === void 0 ? void 0 : _b.attrs) || {}, groupedView: true, groupByFieldName: groupByFieldName, group: group, editButtonUrl: editButtonUrl, setLightboxUrls: setLightboxUrls, setOpenLightbox: setOpenLightbox, openRecord: openRecord, openEdit: openEdit })) : null] }) })));
|
|
38
38
|
} }));
|
|
39
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"KanbanCard.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,SAAS,EAAqB,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,wBAAwB,EACxB,SAAS,GACV,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"KanbanCard.js","sourceRoot":"","sources":["../../../../src/components/core/kanban/KanbanCard.tsx"],"names":[],"mappings":"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","sourcesContent":["// @ts-nocheck\nimport React from \"react\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { Draggable, DraggableProvided } from \"@hello-pangea/dnd\";\nimport {\n SolidDropdownMenu,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\n\n// Define the types for the data and props\ninterface Data {\n id: string;\n title: string;\n content: string;\n}\n\ninterface KanbanCardProps {\n data: Data;\n solidKanbanViewMetaData: any;\n index: number;\n isDragDisabled?: boolean;\n setLightboxUrls?: any;\n setOpenLightbox?: any;\n editButtonUrl?: string;\n groupByFieldName?: string;\n group?: any;\n cardNode?: any;\n DynamicCardWidget?: any;\n}\n\nconst KanbanCard: React.FC<KanbanCardProps> = ({ data, solidKanbanViewMetaData, index, isDragDisabled = false, setLightboxUrls, setOpenLightbox, editButtonUrl, groupByFieldName, group, cardNode, DynamicCardWidget }) => {\n const router = useRouter()\n const openRecord = () => {\n if (typeof window !== \"undefined\") {\n sessionStorage.setItem(\"fromView\", \"kanban\");\n }\n router.push(`${editButtonUrl}/${data?.id}`);\n };\n\n const openEdit = () => {\n router.push(`${editButtonUrl}/${data?.id}`);\n };\n\n const renderKanbanAction = (data) => {\n return (\n <div className=\"solid-kanban-action\" onClick={(e) => e.stopPropagation()}>\n <SolidDropdownMenu>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-header-cog-trigger solid-kanban-action-trigger\"\n aria-label=\"Open card actions\"\n >\n <SolidIcon name=\"si-ellipsis-v\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"solid-custom-overlay\" align=\"end\">\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => router.push(`${editButtonUrl}/${data?.id}`)}\n >\n <SolidIcon name=\"si-pencil\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Edit</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n </div>\n )\n }\n\n return (\n <Draggable draggableId={String(data.id)} index={index} isDragDisabled={isDragDisabled}>\n {(provided: DraggableProvided, snapshot) => (\n <div\n className=\"\"\n ref={provided.innerRef}\n {...provided.draggableProps}\n {...(!isDragDisabled ? provided.dragHandleProps : {})}\n style={{ marginTop: \"1rem\", ...provided.draggableProps.style }}\n className=\"kanban-card-container\"\n >\n {/* <p className=\"kanban-card-heading\">{data.title}</p> */}\n {/* <p className=\"kanban-card-content\">{data.content}</p> */}\n <div\n style={{\n opacity: snapshot.isDragging ? 0.9 : 1,\n transform: snapshot.isDragging ? \"rotate(-2deg)\" : \"\",\n cursor: isDragDisabled ? \"pointer\" : \"grab\"\n }}\n elevation={snapshot.isDragging ? 3 : 1}\n className=\"solid-kanban-card\"\n onClick={openRecord}\n >\n {renderKanbanAction(data)}\n {DynamicCardWidget ? (\n <DynamicCardWidget\n rowData={data}\n solidKanbanViewMetaData={solidKanbanViewMetaData}\n solidView={solidKanbanViewMetaData?.solidView}\n solidFieldsMetadata={solidKanbanViewMetaData?.solidFieldsMetadata}\n card={cardNode}\n layoutAttrs={solidKanbanViewMetaData?.solidView?.layout?.attrs || {}}\n groupedView={true}\n groupByFieldName={groupByFieldName}\n group={group}\n editButtonUrl={editButtonUrl}\n setLightboxUrls={setLightboxUrls}\n setOpenLightbox={setOpenLightbox}\n openRecord={openRecord}\n openEdit={openEdit}\n />\n ) : null}\n </div>\n </div>\n )}\n </Draggable>\n );\n};\n\nexport default KanbanCard;\n"]}
|