@solidstarters/solid-core-ui 1.1.38 → 1.1.40
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/core/kanban/KanbanBoard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanBoard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.js +4 -3
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +1 -1
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +48 -25
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts +4 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +6 -5
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.d.ts +2 -0
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +174 -125
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts +11 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js +144 -0
- package/dist/components/core/kanban/SolidKanbanViewFields.js.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js +87 -0
- package/dist/components/core/kanban/SolidManyToOneFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js +74 -0
- package/dist/components/core/kanban/SolidSelectionDynamicFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts +2 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js +21 -0
- package/dist/components/core/kanban/SolidSelectionStaticFilterElement.js.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts +12 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.d.ts.map +1 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js +82 -0
- package/dist/components/core/kanban/SolidVarInputsFilterElement.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidBigintKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidBooleanKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js +22 -0
- package/dist/components/core/kanban/kanban-fields/SolidComputedKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDateKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidDecimalKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidFloatKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidIdKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidIntKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidLongTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js +32 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js +24 -0
- package/dist/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js +12 -0
- package/dist/components/core/kanban/kanban-fields/SolidRelationKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidRichTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js +16 -0
- package/dist/components/core/kanban/kanban-fields/SolidShortTextKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidTimeKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/SolidUuidKanbanField.js.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts +4 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.d.ts.map +1 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js +8 -0
- package/dist/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.js.map +1 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +28 -27
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListViewColumn.js +1 -1
- package/dist/components/core/list/SolidListViewColumn.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.d.ts +2 -0
- package/dist/components/core/list/SolidListViewConfigure.d.ts.map +1 -0
- package/dist/components/core/list/SolidListViewConfigure.js +115 -0
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -0
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidShortTextColumn.js +48 -4
- package/dist/components/core/list/columns/SolidShortTextColumn.js.map +1 -1
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.d.ts +2 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js +10 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.js.map +1 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldTextRenderModeWidget copy.d.ts +2 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldTextRenderModeWidget copy.d.ts.map +1 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldTextRenderModeWidget copy.js +7 -0
- package/dist/components/core/list/widgets/SolidShortTextFieldTextRenderModeWidget copy.js.map +1 -0
- package/dist/components/core/model/FieldMetaDataForm.js +1 -6
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/helpers/registry.d.ts.map +1 -1
- package/dist/helpers/registry.js +4 -0
- package/dist/helpers/registry.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/resources/globals.css +20 -1
- package/dist/resources/themes/solid-dark-purple/theme.css +1 -0
- package/dist/resources/themes/solid-light-purple/theme.css +5 -4
- package/package.json +2 -1
- package/src/components/core/kanban/KanbanBoard.tsx +9 -4
- package/src/components/core/kanban/KanbanCard.tsx +58 -31
- package/src/components/core/kanban/KanbanColumn.tsx +65 -59
- package/src/components/core/kanban/SolidKanbanView.tsx +195 -96
- package/src/components/core/kanban/SolidKanbanViewFields.tsx +163 -0
- package/src/components/core/kanban/SolidManyToOneFilterElement.tsx +59 -0
- package/src/components/core/kanban/SolidSelectionDynamicFilterElement.tsx +50 -0
- package/src/components/core/kanban/SolidSelectionStaticFilterElement.tsx +32 -0
- package/src/components/core/kanban/SolidVarInputsFilterElement.tsx +184 -0
- package/src/components/core/kanban/kanban-fields/SolidBigintKanbanField.tsx +9 -0
- package/src/components/core/kanban/kanban-fields/SolidBooleanKanbanField.tsx +13 -0
- package/src/components/core/kanban/kanban-fields/SolidComputedKanbanField.tsx +23 -0
- package/src/components/core/kanban/kanban-fields/SolidDateKanbanField.tsx +14 -0
- package/src/components/core/kanban/kanban-fields/SolidDatetimeKanbanField.tsx +13 -0
- package/src/components/core/kanban/kanban-fields/SolidDecimalKanbanField.tsx +9 -0
- package/src/components/core/kanban/kanban-fields/SolidExternalIdKanbanField.tsx +12 -0
- package/src/components/core/kanban/kanban-fields/SolidFloatKanbanField.tsx +9 -0
- package/src/components/core/kanban/kanban-fields/SolidIdKanbanField.tsx +14 -0
- package/src/components/core/kanban/kanban-fields/SolidIntKanbanField.tsx +13 -0
- package/src/components/core/kanban/kanban-fields/SolidLongTextKanbanField.tsx +9 -0
- package/src/components/core/kanban/kanban-fields/SolidMediaMultipleKanbanField.tsx +68 -0
- package/src/components/core/kanban/kanban-fields/SolidMediaSingleKanbanField.tsx +60 -0
- package/src/components/core/kanban/kanban-fields/SolidRelationKanbanField.tsx +13 -0
- package/src/components/core/kanban/kanban-fields/SolidRichTextKanbanField.tsx +9 -0
- package/src/components/core/kanban/kanban-fields/SolidSelectionDynamicKanbanField.tsx +13 -0
- package/src/components/core/kanban/kanban-fields/SolidSelectionStaticKanbanField.tsx +14 -0
- package/src/components/core/kanban/kanban-fields/SolidShortTextKanbanField.tsx +29 -0
- package/src/components/core/kanban/kanban-fields/SolidTimeKanbanField.tsx +12 -0
- package/src/components/core/kanban/kanban-fields/SolidUuidKanbanField.tsx +13 -0
- package/src/components/core/kanban/kanban-fields/relations/SolidRelationManyToOneKanbanField.tsx +16 -0
- package/src/components/core/list/SolidListView.tsx +24 -20
- package/src/components/core/list/SolidListViewColumn.tsx +1 -1
- package/src/components/core/{common/SolidConfigureLayoutElement.tsx → list/SolidListViewConfigure.tsx} +118 -70
- package/src/components/core/list/columns/SolidShortTextColumn.tsx +45 -10
- package/src/components/core/list/widgets/SolidShortTextFieldImageRenderModeWidget.tsx +19 -0
- package/src/components/core/list/widgets/SolidShortTextFieldTextRenderModeWidget copy.tsx +11 -0
- package/src/components/core/model/FieldMetaDataForm.tsx +6 -6
- package/src/helpers/registry.ts +4 -0
- package/src/index.ts +1 -1
- package/src/resources/globals.css +20 -1
- package/src/resources/themes/solid-dark-purple/theme.css +1 -0
- package/src/resources/themes/solid-light-purple/theme.css +5 -4
- package/src/types/solid-core.d.ts +4 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
|
|
1
3
|
"use client";
|
|
2
4
|
import { createPermission, deletePermission, updatePermission } from "@/helpers/permissions";
|
|
3
5
|
import { createSolidEntityApi } from "@/redux/api/solidEntityApi";
|
|
@@ -13,6 +15,19 @@ import { useEffect, useRef, useState } from "react";
|
|
|
13
15
|
import { SolidCreateButton } from "../common/SolidCreateButton";
|
|
14
16
|
import { SolidGlobalSearchElement } from "../common/SolidGlobalSearchElement";
|
|
15
17
|
import KanbanBoard from "./KanbanBoard";
|
|
18
|
+
import CompactImage from '../../../resources/images/layout/images/compact.png';
|
|
19
|
+
import CozyImage from '../../../resources/images/layout/images/cozy.png';
|
|
20
|
+
import ComfortableImage from '../../../resources/images/layout/images/comfortable.png';
|
|
21
|
+
import ListImage from '../../../resources/images/layout/images/cozy.png';
|
|
22
|
+
import KanbanImage from '../../../resources/images/layout/images/kanban.png';
|
|
23
|
+
import { capitalize } from "lodash";
|
|
24
|
+
import Lightbox from "yet-another-react-lightbox";
|
|
25
|
+
import Counter from "yet-another-react-lightbox/plugins/counter";
|
|
26
|
+
import Download from "yet-another-react-lightbox/plugins/download";
|
|
27
|
+
import "yet-another-react-lightbox/styles.css";
|
|
28
|
+
import "yet-another-react-lightbox/plugins/counter.css";
|
|
29
|
+
|
|
30
|
+
|
|
16
31
|
|
|
17
32
|
type SolidKanbanViewParams = {
|
|
18
33
|
moduleName: string;
|
|
@@ -27,12 +42,26 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
27
42
|
// TODO: The initial filter state will be created based on the fields which are present on this kanban view.
|
|
28
43
|
const [filters, setFilters] = useState<any>();
|
|
29
44
|
const [toPopulate, setToPopulate] = useState<string[]>([]);
|
|
45
|
+
const [toPopulateMedia, setToPopulateMedia] = useState<string[]>([]);
|
|
30
46
|
const [actionsAllowed, setActionsAllowed] = useState<string[]>([]);
|
|
31
47
|
const [showGlobalSearchElement, setShowGlobalSearchElement] = useState<boolean>(false);
|
|
32
|
-
|
|
48
|
+
const [showArchived, setShowArchived] = useState(false);
|
|
49
|
+
const sizeOptions = [
|
|
50
|
+
{ label: 'Compact', value: 'small', image: CompactImage },
|
|
51
|
+
{ label: 'Cozy', value: 'normal', image: CozyImage },
|
|
52
|
+
{ label: 'Comfortable', value: 'large', image: ComfortableImage }
|
|
53
|
+
]
|
|
54
|
+
const [size, setSize] = useState<string | any>(sizeOptions[1].value);
|
|
55
|
+
const [viewModes, setViewModes] = useState<any>([]);
|
|
56
|
+
const [groupByFieldName, setGroupByFieldName] = useState<string>("");
|
|
57
|
+
const [groupedView, setGroupedView] = useState(true);
|
|
33
58
|
const [triggerCheckIfPermissionExists] = useLazyCheckIfPermissionExistsQuery();
|
|
34
|
-
|
|
59
|
+
const [openLightbox, setOpenLightbox] = useState(false);
|
|
60
|
+
const [lightboxUrls, setLightboxUrls] = useState({});
|
|
61
|
+
|
|
35
62
|
|
|
63
|
+
|
|
64
|
+
useEffect(() => {
|
|
36
65
|
const fetchPermissions = async () => {
|
|
37
66
|
if (params.modelName) {
|
|
38
67
|
const permissionNames = [
|
|
@@ -93,6 +122,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
93
122
|
|
|
94
123
|
const initialFilters: any = {};
|
|
95
124
|
const toPopulate: string[] = [];
|
|
125
|
+
const toPopulateMedia: string[] = [];
|
|
96
126
|
function extractFields(node: any, result: any = []) {
|
|
97
127
|
if (node.type === "field") {
|
|
98
128
|
result.push(node);
|
|
@@ -135,28 +165,41 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
135
165
|
if (fieldMetadata.type === 'relation' && fieldMetadata.relationType === 'many-to-one') {
|
|
136
166
|
toPopulate.push(fieldMetadata.name);
|
|
137
167
|
}
|
|
168
|
+
if (fieldMetadata.type === 'mediaSingle' || fieldMetadata.relationType === 'mediaMultiple') {
|
|
169
|
+
toPopulateMedia.push(fieldMetadata.name);
|
|
170
|
+
}
|
|
138
171
|
}
|
|
139
172
|
// setFilters(initialFilters);
|
|
140
|
-
|
|
141
|
-
setToPopulate(toPopulate);
|
|
173
|
+
const rows = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane : 25;
|
|
174
|
+
// setToPopulate(toPopulate);
|
|
175
|
+
// setToPopulateMedia(toPopulateMedia);
|
|
176
|
+
return { rows, toPopulate, toPopulateMedia }
|
|
142
177
|
}
|
|
143
178
|
|
|
179
|
+
|
|
180
|
+
// Initial Filter data
|
|
144
181
|
useEffect(() => {
|
|
145
182
|
|
|
146
183
|
if (solidKanbanViewMetaData) {
|
|
147
184
|
setKanbanViewMetaData(solidKanbanViewMetaData);
|
|
148
|
-
initialFilterMethod()
|
|
185
|
+
const { rows, toPopulate, toPopulateMedia } = initialFilterMethod()
|
|
186
|
+
setRows(rows);
|
|
187
|
+
setToPopulate(toPopulate);
|
|
188
|
+
setToPopulateMedia(toPopulateMedia);
|
|
189
|
+
const viewModes = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.allowedViews && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.allowedViews.length > 0 && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.allowedViews.map((view: any) => { return { label: capitalize(view), value: view } });
|
|
190
|
+
setViewModes(viewModes);
|
|
191
|
+
if (solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.grouped !== false) {
|
|
192
|
+
setGroupByFieldName(solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.groupBy)
|
|
193
|
+
} else {
|
|
194
|
+
setGroupByFieldName("deletedTracker");
|
|
195
|
+
setGroupedView(false);
|
|
196
|
+
}
|
|
149
197
|
}
|
|
150
198
|
}, [solidKanbanViewMetaData]);
|
|
151
199
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
200
|
// All kanban view state.
|
|
156
201
|
const [kanbanViewData, setKanbanViewData] = useState<any>([]);
|
|
157
202
|
const [kanbanLoadMoreData, setKanbanLoadMoreData] = useState<any>({});
|
|
158
|
-
const [filterValues, setFilterValues] = useState([{ field: '', operator: '', value: '' }]);
|
|
159
|
-
const [first, setFirst] = useState(0);
|
|
160
203
|
const [rows, setRows] = useState(25);
|
|
161
204
|
const [selectedRecords, setSelectedRecords] = useState<any[]>([]);
|
|
162
205
|
const [loading, setLoading] = useState<boolean>(true);
|
|
@@ -170,6 +213,18 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
170
213
|
// const [triggerGetSolidEntitiesForKanban, { data: solidEntityKanbanViewData, isLoading, error }] = useLazyGetSolidKanbanEntitiesQuery();
|
|
171
214
|
const [triggerGetSolidEntities, { data: solidEntityKanbanViewData, isLoading, error }] = useLazyGetSolidEntitiesQuery();
|
|
172
215
|
|
|
216
|
+
// Delete mutation
|
|
217
|
+
const [
|
|
218
|
+
deleteManySolidEntities,
|
|
219
|
+
{
|
|
220
|
+
isLoading: isSolidEntitiesDeleted,
|
|
221
|
+
isSuccess: isDeleteSolidEntitiesSucess,
|
|
222
|
+
isError: isSolidEntitiesDeleteError,
|
|
223
|
+
error: SolidEntitiesDeleteError,
|
|
224
|
+
data: DeletedSolidEntities,
|
|
225
|
+
},
|
|
226
|
+
] = useDeleteMultipleSolidEntitiesMutation();
|
|
227
|
+
|
|
173
228
|
|
|
174
229
|
// After data is fetched populate the kanban view state so as to be able to render the data.
|
|
175
230
|
useEffect(() => {
|
|
@@ -190,18 +245,6 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
190
245
|
}
|
|
191
246
|
}, [solidEntityKanbanViewData]);
|
|
192
247
|
|
|
193
|
-
// Delete mutation
|
|
194
|
-
const [
|
|
195
|
-
deleteManySolidEntities,
|
|
196
|
-
{
|
|
197
|
-
isLoading: isSolidEntitiesDeleted,
|
|
198
|
-
isSuccess: isDeleteSolidEntitiesSucess,
|
|
199
|
-
isError: isSolidEntitiesDeleteError,
|
|
200
|
-
error: SolidEntitiesDeleteError,
|
|
201
|
-
data: DeletedSolidEntities,
|
|
202
|
-
},
|
|
203
|
-
] = useDeleteMultipleSolidEntitiesMutation();
|
|
204
|
-
|
|
205
248
|
|
|
206
249
|
|
|
207
250
|
|
|
@@ -212,8 +255,8 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
212
255
|
if (solidKanbanViewMetaData) {
|
|
213
256
|
const createActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.type === "custom" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.createAction?.customComponent : "form/new";
|
|
214
257
|
const editActionUrl = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction && solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.type === "custom" ? solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.editAction?.customComponent : "form";
|
|
215
|
-
if (solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.
|
|
216
|
-
setColumnsCount(solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.
|
|
258
|
+
if (solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.swimlanesCount) {
|
|
259
|
+
setColumnsCount(solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount)
|
|
217
260
|
}
|
|
218
261
|
if (createActionUrl) {
|
|
219
262
|
setCreateButtonUrl(createActionUrl)
|
|
@@ -221,23 +264,24 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
221
264
|
if (editActionUrl) {
|
|
222
265
|
setEditButtonUrl(editActionUrl)
|
|
223
266
|
}
|
|
224
|
-
}
|
|
225
|
-
if (solidKanbanViewMetaData) {
|
|
226
|
-
const groupByFieldName = solidKanbanViewMetaData?.data?.solidView?.layout?.attrs?.groupBy;
|
|
227
|
-
const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.pageSize || 5;
|
|
228
267
|
|
|
229
|
-
|
|
268
|
+
|
|
269
|
+
const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;
|
|
270
|
+
if (groupByFieldName &&( toPopulate || toPopulateMedia)) {
|
|
271
|
+
|
|
230
272
|
const queryData = {
|
|
231
273
|
offset: 0,
|
|
232
274
|
limit: columnsToLoadCount,
|
|
233
275
|
fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],
|
|
234
276
|
groupBy: groupByFieldName,
|
|
235
|
-
|
|
277
|
+
populateMedia: toPopulateMedia,
|
|
236
278
|
populateGroup: true,
|
|
237
279
|
groupFilter: {
|
|
238
|
-
limit: kanbanViewMetaData?.data?.solidView?.layout?.attrs?.
|
|
280
|
+
limit: kanbanViewMetaData?.data?.solidView?.layout?.attrs?.recordsInSwimlane || 10,
|
|
239
281
|
offset: 0,
|
|
240
|
-
filters: filters
|
|
282
|
+
filters: filters,
|
|
283
|
+
populate: toPopulate,
|
|
284
|
+
populateMedia: toPopulateMedia
|
|
241
285
|
}
|
|
242
286
|
// sort: [`id:desc`],
|
|
243
287
|
};
|
|
@@ -250,54 +294,56 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
250
294
|
setSelectedRecords([]);
|
|
251
295
|
}
|
|
252
296
|
}
|
|
253
|
-
|
|
254
|
-
}, [isDeleteSolidEntitiesSucess, toPopulate, solidKanbanViewMetaData]);
|
|
297
|
+
}, [isDeleteSolidEntitiesSucess, toPopulate, groupByFieldName,solidKanbanViewMetaData]);
|
|
255
298
|
|
|
256
299
|
|
|
257
300
|
|
|
258
301
|
|
|
259
302
|
// clear Filter
|
|
260
303
|
|
|
261
|
-
const clearFilter = async () => {
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
304
|
+
// const clearFilter = async () => {
|
|
305
|
+
// if (solidKanbanViewMetaData) {
|
|
306
|
+
// // initialFilterMethod()
|
|
307
|
+
// }
|
|
308
|
+
// setFilters(null);
|
|
309
|
+
// if (solidKanbanViewMetaData) {
|
|
310
|
+
//
|
|
311
|
+
// const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;
|
|
312
|
+
|
|
313
|
+
// if (toPopulate || toPopulateMedia) {
|
|
314
|
+
|
|
315
|
+
// const queryData = {
|
|
316
|
+
// offset: 0,
|
|
317
|
+
// limit: columnsToLoadCount,
|
|
318
|
+
// fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],
|
|
319
|
+
// groupBy: groupByFieldName,
|
|
320
|
+
// populate: toPopulate,
|
|
321
|
+
// populateMedia: toPopulateMedia,
|
|
322
|
+
// populateGroup: true,
|
|
323
|
+
// groupFilter: {
|
|
324
|
+
// limit: rows,
|
|
325
|
+
// offset: 0,
|
|
326
|
+
|
|
327
|
+
// }
|
|
328
|
+
// // sort: [`id:desc`],
|
|
329
|
+
// };
|
|
330
|
+
// // fields=status&groupBy=status&fields=count(status)&populateGroup=true
|
|
331
|
+
// const queryString = qs.stringify(queryData, {
|
|
332
|
+
// encodeValuesOnly: true
|
|
333
|
+
// });
|
|
334
|
+
|
|
335
|
+
// const data: any = await triggerGetSolidEntities(queryString);
|
|
336
|
+
// if (data && data?.data?.groupRecords.length > 0) {
|
|
337
|
+
// const updatedData = [...data.data.groupRecords];
|
|
338
|
+
// setKanbanViewData(updatedData);
|
|
339
|
+
// }
|
|
340
|
+
// setSelectedRecords([]);
|
|
341
|
+
// }
|
|
342
|
+
// }
|
|
343
|
+
|
|
344
|
+
// // @ts-ignore
|
|
345
|
+
// solidGlobalSearchElementRef.current.clearFilter()
|
|
346
|
+
// };
|
|
301
347
|
|
|
302
348
|
|
|
303
349
|
|
|
@@ -317,6 +363,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
317
363
|
selectedRecords.forEach((element: any) => {
|
|
318
364
|
deleteList.push(element.id);
|
|
319
365
|
});
|
|
366
|
+
console.log(deleteList);
|
|
320
367
|
deleteManySolidEntities(deleteList);
|
|
321
368
|
setDialogVisible(false);
|
|
322
369
|
};
|
|
@@ -327,11 +374,11 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
327
374
|
setSelectedRecords([]);
|
|
328
375
|
}
|
|
329
376
|
|
|
330
|
-
const handleLoadMore = async (
|
|
331
|
-
const { offset, limit, records } = kanbanLoadMoreData[
|
|
377
|
+
const handleLoadMore = async (groupByField: string) => {
|
|
378
|
+
const { offset, limit, records } = kanbanLoadMoreData[groupByField];
|
|
332
379
|
const newLoadMoreData = kanbanLoadMoreData;
|
|
333
|
-
kanbanLoadMoreData[
|
|
334
|
-
|
|
380
|
+
kanbanLoadMoreData[groupByField].offset = offset + limit;
|
|
381
|
+
|
|
335
382
|
try {
|
|
336
383
|
// const queryData = {
|
|
337
384
|
// offset: 0,
|
|
@@ -346,9 +393,12 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
346
393
|
const queryData = {
|
|
347
394
|
offset: offset + limit,
|
|
348
395
|
limit: limit,
|
|
396
|
+
populate:toPopulate,
|
|
397
|
+
populateMedia: toPopulateMedia,
|
|
398
|
+
populateGroup: true,
|
|
349
399
|
filters: {
|
|
350
400
|
[groupByFieldName]: {
|
|
351
|
-
$in: [
|
|
401
|
+
$in: [groupByField],
|
|
352
402
|
},
|
|
353
403
|
...filters
|
|
354
404
|
}
|
|
@@ -365,12 +415,12 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
365
415
|
const mergeData = (
|
|
366
416
|
kanbanViewData: any[],
|
|
367
417
|
newRecords: any[],
|
|
368
|
-
|
|
418
|
+
groupByField: string
|
|
369
419
|
) => {
|
|
370
|
-
// Find the group matching the specified
|
|
420
|
+
// Find the group matching the specified groupByField
|
|
371
421
|
const originalData = structuredClone(kanbanViewData);
|
|
372
422
|
const targetGroup = originalData.find(
|
|
373
|
-
(group: any) => group.groupName ===
|
|
423
|
+
(group: any) => group.groupName === groupByField
|
|
374
424
|
);
|
|
375
425
|
if (targetGroup) {
|
|
376
426
|
const { groupData } = targetGroup;
|
|
@@ -394,7 +444,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
394
444
|
};
|
|
395
445
|
|
|
396
446
|
|
|
397
|
-
const updatedData = mergeData(kanbanViewData, newRecords,
|
|
447
|
+
const updatedData = mergeData(kanbanViewData, newRecords, groupByField);
|
|
398
448
|
setKanbanViewData(updatedData);
|
|
399
449
|
const loadmoredata = Object.entries(updatedData).reduce((acc: any, [key, value]: any) => {
|
|
400
450
|
acc[value.groupName] = {
|
|
@@ -426,6 +476,29 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
426
476
|
|
|
427
477
|
if (sourceGroupIndex === -1 || destinationGroupIndex === -1) return;
|
|
428
478
|
|
|
479
|
+
// If dragging within the same group
|
|
480
|
+
if (sourceGroupName === destinationGroupName) {
|
|
481
|
+
setKanbanViewData((prevData: typeof kanbanViewData) =>
|
|
482
|
+
prevData.map((group: any) => {
|
|
483
|
+
if (group.groupName === sourceGroupName) {
|
|
484
|
+
const updatedRecords = [...group.groupData.records];
|
|
485
|
+
const [movedItem] = updatedRecords.splice(source.index, 1); // Remove the item
|
|
486
|
+
updatedRecords.splice(destination.index, 0, movedItem); // Insert at the new position
|
|
487
|
+
|
|
488
|
+
return {
|
|
489
|
+
...group,
|
|
490
|
+
groupData: {
|
|
491
|
+
...group.groupData,
|
|
492
|
+
records: updatedRecords,
|
|
493
|
+
},
|
|
494
|
+
};
|
|
495
|
+
}
|
|
496
|
+
return group;
|
|
497
|
+
})
|
|
498
|
+
);
|
|
499
|
+
return;
|
|
500
|
+
}
|
|
501
|
+
|
|
429
502
|
// Deep clone the source and destination groups
|
|
430
503
|
const sourceGroup = JSON.parse(JSON.stringify(kanbanViewData[sourceGroupIndex]));
|
|
431
504
|
const destinationGroup = JSON.parse(JSON.stringify(kanbanViewData[destinationGroupIndex]));
|
|
@@ -462,22 +535,25 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
462
535
|
};
|
|
463
536
|
|
|
464
537
|
|
|
538
|
+
|
|
465
539
|
const handleSwimLinPagination = async () => {
|
|
466
540
|
|
|
467
541
|
if (solidKanbanViewMetaData) {
|
|
468
|
-
|
|
469
|
-
const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.
|
|
542
|
+
|
|
543
|
+
const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;
|
|
470
544
|
const queryData = {
|
|
471
545
|
offset: swimLaneCurrentPageNumber * columnsToLoadCount,
|
|
472
546
|
limit: columnsToLoadCount,
|
|
473
547
|
fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],
|
|
474
548
|
groupBy: groupByFieldName,
|
|
475
|
-
populate: toPopulate,
|
|
476
549
|
populateGroup: true,
|
|
477
550
|
groupFilter: {
|
|
478
551
|
limit: rows,
|
|
479
552
|
offset: 0,
|
|
480
|
-
filters: filters
|
|
553
|
+
filters: filters,
|
|
554
|
+
populate: toPopulate,
|
|
555
|
+
populateMedia: toPopulateMedia
|
|
556
|
+
|
|
481
557
|
}
|
|
482
558
|
// sort: [`id:desc`],
|
|
483
559
|
};
|
|
@@ -497,8 +573,8 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
497
573
|
|
|
498
574
|
const handleApplyCustomFilter = async (filters: any) => {
|
|
499
575
|
|
|
500
|
-
|
|
501
|
-
const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.
|
|
576
|
+
|
|
577
|
+
const columnsToLoadCount = solidKanbanViewMetaData?.data.solidView?.layout?.attrs?.swimlanesCount || 5;
|
|
502
578
|
setFilters(filters)
|
|
503
579
|
|
|
504
580
|
if (toPopulate) {
|
|
@@ -507,12 +583,14 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
507
583
|
limit: columnsToLoadCount,
|
|
508
584
|
fields: [`${groupByFieldName}`, `count(${groupByFieldName})`],
|
|
509
585
|
groupBy: groupByFieldName,
|
|
510
|
-
populate: toPopulate,
|
|
511
586
|
populateGroup: true,
|
|
512
587
|
groupFilter: {
|
|
513
588
|
limit: rows,
|
|
514
589
|
offset: 0,
|
|
515
|
-
filters: filters
|
|
590
|
+
filters: filters,
|
|
591
|
+
populate: toPopulate,
|
|
592
|
+
populateMedia: toPopulateMedia
|
|
593
|
+
|
|
516
594
|
}
|
|
517
595
|
// sort: [`id:desc`],
|
|
518
596
|
};
|
|
@@ -553,7 +631,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
553
631
|
|
|
554
632
|
|
|
555
633
|
return (
|
|
556
|
-
|
|
634
|
+
<>
|
|
557
635
|
<div className="flex gap-3 mb-4 align-items-center justify-content-between kanban-view">
|
|
558
636
|
<div className="flex gap-3 mb-4 align-items-center" >
|
|
559
637
|
|
|
@@ -569,7 +647,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
569
647
|
className="small-button"
|
|
570
648
|
severity="danger"
|
|
571
649
|
/>}
|
|
572
|
-
{isFilterApplied &&
|
|
650
|
+
{/* {isFilterApplied &&
|
|
573
651
|
<Button
|
|
574
652
|
type="button"
|
|
575
653
|
icon="pi pi-filter-slash"
|
|
@@ -579,7 +657,7 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
579
657
|
onClick={clearFilter}
|
|
580
658
|
className="small-button"
|
|
581
659
|
/>
|
|
582
|
-
}
|
|
660
|
+
} */}
|
|
583
661
|
|
|
584
662
|
{solidKanbanViewMetaData?.data?.solidView?.layout?.attrs.enableGlobalSearch === true &&
|
|
585
663
|
// <SolidGlobalSearchElement viewData={solidKanbanViewMetaData} handleApplyCustomFilter={handleApplyCustomFilter} ></SolidGlobalSearchElement>
|
|
@@ -588,12 +666,25 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
588
666
|
}
|
|
589
667
|
</div>
|
|
590
668
|
|
|
669
|
+
{/* <SolidListViewConfigure
|
|
670
|
+
setShowArchived={setShowArchived}
|
|
671
|
+
showArchived={showArchived}
|
|
672
|
+
viewData={solidKanbanViewMetaData}
|
|
673
|
+
sizeOptions={sizeOptions}
|
|
674
|
+
setSize={setSize}
|
|
675
|
+
size={size}
|
|
676
|
+
viewModes={viewModes}
|
|
677
|
+
params={params}
|
|
678
|
+
actionsAllowed={actionsAllowed}
|
|
679
|
+
selectedRecords={selectedRecords}
|
|
680
|
+
setDialogVisible={setDialogVisible}
|
|
681
|
+
></SolidListViewConfigure> */}
|
|
591
682
|
{/* <SolidConfigureLayoutElement></SolidConfigureLayoutElement> */}
|
|
592
683
|
|
|
593
684
|
</div>
|
|
594
685
|
<style>{`.p-datatable .p-datatable-loading-overlay {background-color: rgba(0, 0, 0, 0.0);}`}</style>
|
|
595
686
|
{solidKanbanViewMetaData && kanbanViewData &&
|
|
596
|
-
<KanbanBoard kanbanViewData={kanbanViewData}
|
|
687
|
+
<KanbanBoard groupedView={groupedView} kanbanViewData={kanbanViewData} solidKanbanViewMetaData={solidKanbanViewMetaData?.data} setKanbanViewData={setKanbanViewData} handleLoadMore={handleLoadMore} onDragEnd={onDragEnd} handleSwimLinPagination={handleSwimLinPagination} setLightboxUrls={setLightboxUrls} setOpenLightbox={setOpenLightbox} ></KanbanBoard>
|
|
597
688
|
}
|
|
598
689
|
|
|
599
690
|
<Dialog
|
|
@@ -610,7 +701,15 @@ export const SolidKanbanView = (params: SolidKanbanViewParams) => {
|
|
|
610
701
|
>
|
|
611
702
|
<p>Are you sure you want to delete the selected records?</p>
|
|
612
703
|
</Dialog>
|
|
613
|
-
|
|
704
|
+
{openLightbox &&
|
|
705
|
+
<Lightbox
|
|
706
|
+
open={openLightbox}
|
|
707
|
+
plugins={[Counter, Download]}
|
|
708
|
+
close={() => setOpenLightbox(false)}
|
|
709
|
+
slides={lightboxUrls}
|
|
710
|
+
/>
|
|
711
|
+
}
|
|
712
|
+
</>
|
|
614
713
|
);
|
|
615
714
|
};
|
|
616
715
|
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import SolidBigintKanbanField from "./kanban-fields/SolidBigintKanbanField";
|
|
3
|
+
import SolidBooleanKanbanField from "./kanban-fields/SolidBooleanKanbanField";
|
|
4
|
+
import SolidComputedKanbanField from "./kanban-fields/SolidComputedKanbanField";
|
|
5
|
+
import SolidDateKanbanField from "./kanban-fields/SolidDateKanbanField";
|
|
6
|
+
import SolidDatetimeKanbanField from "./kanban-fields/SolidDatetimeKanbanField";
|
|
7
|
+
import SolidDecimalKanbanField from "./kanban-fields/SolidDecimalKanbanField";
|
|
8
|
+
import SolidExternalIdKanbanField from "./kanban-fields/SolidExternalIdKanbanField";
|
|
9
|
+
import SolidFloatKanbanField from "./kanban-fields/SolidFloatKanbanField";
|
|
10
|
+
import SolidIntKanbanField from "./kanban-fields/SolidIntKanbanField";
|
|
11
|
+
import SolidLongTextKanbanField from "./kanban-fields/SolidLongTextKanbanField";
|
|
12
|
+
import SolidMediaMultipleKanbanField from "./kanban-fields/SolidMediaMultipleKanbanField";
|
|
13
|
+
import SolidMediaSingleKanbanField from "./kanban-fields/SolidMediaSingleKanbanField";
|
|
14
|
+
import SolidRelationKanbanField from "./kanban-fields/SolidRelationKanbanField";
|
|
15
|
+
import SolidRichTextKanbanField from "./kanban-fields/SolidRichTextKanbanField";
|
|
16
|
+
import SolidSelectionDynamicKanbanField from "./kanban-fields/SolidSelectionDynamicKanbanField";
|
|
17
|
+
import SolidSelectionStaticKanbanField from "./kanban-fields/SolidSelectionStaticKanbanField";
|
|
18
|
+
import SolidShortTextKanbanField from "./kanban-fields/SolidShortTextKanbanField";
|
|
19
|
+
import SolidTimeKanbanField from "./kanban-fields/SolidTimeKanbanField";
|
|
20
|
+
import SolidUuidKanbanField from "./kanban-fields/SolidUuidKanbanField";
|
|
21
|
+
|
|
22
|
+
export type SolidKanbanViewFieldsParams = {
|
|
23
|
+
solidKanbanViewMetaData: any;
|
|
24
|
+
fieldMetadata: any,
|
|
25
|
+
fieldLayout: any,
|
|
26
|
+
data: any,
|
|
27
|
+
setLightboxUrls?: any,
|
|
28
|
+
setOpenLightbox?:any
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const getNumberOfInputs = (matchMode: any): number | null => {
|
|
32
|
+
if (matchMode.label && matchMode.label === 'Not In') {
|
|
33
|
+
matchMode = 'notIn';
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
switch (matchMode) {
|
|
37
|
+
case 'between':
|
|
38
|
+
return 2;
|
|
39
|
+
case 'in':
|
|
40
|
+
case 'notIn':
|
|
41
|
+
return null;
|
|
42
|
+
case 'startsWith':
|
|
43
|
+
case 'contains':
|
|
44
|
+
case 'notContains':
|
|
45
|
+
case 'endsWith':
|
|
46
|
+
case 'equals':
|
|
47
|
+
case 'notEquals':
|
|
48
|
+
case 'lt':
|
|
49
|
+
case 'lte':
|
|
50
|
+
case 'gt':
|
|
51
|
+
case 'gte':
|
|
52
|
+
return 1;
|
|
53
|
+
default:
|
|
54
|
+
return 1; // Default to single input if no specific match is found
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// // @ts-ignore
|
|
59
|
+
// const components = require.context('./kanban-fields', false, /Solid.*Column\.tsx$/);
|
|
60
|
+
|
|
61
|
+
// // Define a function to dynamically load components based on type
|
|
62
|
+
// const loadComponentByType = async (type: string) => {
|
|
63
|
+
// try {
|
|
64
|
+
// const componentName = `./kanban-fields/Solid${type.charAt(0).toUpperCase() + type.slice(1)}Column.tsx`;
|
|
65
|
+
|
|
66
|
+
// // Dynamically import the component based on type
|
|
67
|
+
// const componentModule = await import(componentName);
|
|
68
|
+
|
|
69
|
+
// return componentModule.default;
|
|
70
|
+
// } catch (error) {
|
|
71
|
+
// console.error(`Failed to load component for type: ${type}`, error);
|
|
72
|
+
// return null;
|
|
73
|
+
// }
|
|
74
|
+
// };
|
|
75
|
+
|
|
76
|
+
export const SolidKanbanViewFields = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data, setLightboxUrls, setOpenLightbox }: SolidKanbanViewFieldsParams) => {
|
|
77
|
+
|
|
78
|
+
// And finally we can implement additional switching logic based on certain special fields.
|
|
79
|
+
if (fieldMetadata.name === 'id') {
|
|
80
|
+
return SolidIntKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (fieldMetadata.type === 'int') {
|
|
84
|
+
return SolidIntKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
85
|
+
}
|
|
86
|
+
if (fieldMetadata.type === 'bigint') {
|
|
87
|
+
return SolidBigintKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
88
|
+
}
|
|
89
|
+
if (fieldMetadata.type === 'float') {
|
|
90
|
+
return SolidFloatKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
91
|
+
}
|
|
92
|
+
if (fieldMetadata.type === 'decimal') {
|
|
93
|
+
return SolidDecimalKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
94
|
+
}
|
|
95
|
+
if (fieldMetadata.type === 'shortText') {
|
|
96
|
+
return SolidShortTextKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data,setLightboxUrls, setOpenLightbox });
|
|
97
|
+
}
|
|
98
|
+
if (fieldMetadata.type === 'longText') {
|
|
99
|
+
return SolidLongTextKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
100
|
+
}
|
|
101
|
+
if (fieldMetadata.type === 'richText') {
|
|
102
|
+
return SolidRichTextKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
103
|
+
}
|
|
104
|
+
if (fieldMetadata.type === 'boolean') {
|
|
105
|
+
return SolidBooleanKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
106
|
+
}
|
|
107
|
+
if (fieldMetadata.type === 'date') {
|
|
108
|
+
return SolidDateKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
109
|
+
}
|
|
110
|
+
if (fieldMetadata.type === 'datetime') {
|
|
111
|
+
return SolidDatetimeKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
112
|
+
}
|
|
113
|
+
if (fieldMetadata.type === 'time') {
|
|
114
|
+
return SolidTimeKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
115
|
+
}
|
|
116
|
+
if (fieldMetadata.type === 'relation') {
|
|
117
|
+
return SolidRelationKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
118
|
+
}
|
|
119
|
+
if (fieldMetadata.type === 'mediaSingle') {
|
|
120
|
+
return SolidMediaSingleKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data ,setLightboxUrls, setOpenLightbox});
|
|
121
|
+
}
|
|
122
|
+
if (fieldMetadata.type === 'mediaMultiple') {
|
|
123
|
+
return SolidMediaMultipleKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data,setLightboxUrls, setOpenLightbox });
|
|
124
|
+
}
|
|
125
|
+
if (fieldMetadata.type === 'selectionStatic') {
|
|
126
|
+
return SolidSelectionStaticKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
127
|
+
}
|
|
128
|
+
if (fieldMetadata.type === 'selectionDynamic') {
|
|
129
|
+
return SolidSelectionDynamicKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
130
|
+
}
|
|
131
|
+
if (fieldMetadata.type === 'computed') {
|
|
132
|
+
return SolidComputedKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
133
|
+
}
|
|
134
|
+
if (fieldMetadata.type === 'externalId') {
|
|
135
|
+
return SolidExternalIdKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
136
|
+
}
|
|
137
|
+
if (fieldMetadata.type === 'uuid') {
|
|
138
|
+
return SolidUuidKanbanField({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
139
|
+
}
|
|
140
|
+
// // Load everything else based on type and dynamically.
|
|
141
|
+
// else {
|
|
142
|
+
// const ComponentFound = await loadComponentByType(fieldMetadata.type);
|
|
143
|
+
// const ComponentNotFound = ({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data }: SolidKanbanViewFieldsParams) => (
|
|
144
|
+
// <Column
|
|
145
|
+
// key={fieldMetadata.name}
|
|
146
|
+
// field={fieldMetadata.name}
|
|
147
|
+
// header={fieldMetadata.displayName}
|
|
148
|
+
// className="text-sm"
|
|
149
|
+
// sortable={false}
|
|
150
|
+
// filter={false}
|
|
151
|
+
// showFilterOperator={false}
|
|
152
|
+
// body={() => (<span>Type not supported</span>)}
|
|
153
|
+
// style={{ minWidth: "12rem" }}
|
|
154
|
+
// headerClassName="table-header-fs"
|
|
155
|
+
// ></Column>
|
|
156
|
+
// );
|
|
157
|
+
|
|
158
|
+
// return ComponentFound ? ComponentFound({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data }) : ComponentNotFound({ solidKanbanViewMetaData, fieldMetadata, fieldLayout,data });
|
|
159
|
+
// }
|
|
160
|
+
|
|
161
|
+
// TODO: we can implement additional switching logic based on the widget type being used to render the list view data.
|
|
162
|
+
|
|
163
|
+
};
|