@solidxai/core-ui 0.1.18 → 0.1.19-beta.0
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/common/SolidThemeLink.d.ts.map +1 -1
- package/dist/components/common/SolidThemeLink.js +2 -2
- package/dist/components/common/SolidThemeLink.js.map +1 -1
- package/dist/components/common/SolidThemeLink.tsx +5 -2
- package/dist/components/core/chatter/SolidChatterHeader.d.ts.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.js +2 -1
- package/dist/components/core/chatter/SolidChatterHeader.js.map +1 -1
- package/dist/components/core/chatter/SolidChatterHeader.tsx +6 -4
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts +2 -1
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts.map +1 -1
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.js +3 -2
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.js.map +1 -1
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.tsx +5 -3
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +29 -13
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +34 -10
- package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.d.ts.map +1 -1
- package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js +2 -2
- package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.js.map +1 -1
- package/dist/components/core/dashboard/widgets/DefaultDashboardTableWidget.tsx +6 -6
- package/dist/components/core/form/fields/SolidDecimalField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.js +12 -9
- package/dist/components/core/form/fields/SolidDecimalField.js.map +1 -1
- package/dist/components/core/form/fields/SolidDecimalField.tsx +11 -8
- package/dist/components/core/form/fields/SolidIntegerField.d.ts.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.js +16 -14
- package/dist/components/core/form/fields/SolidIntegerField.js.map +1 -1
- package/dist/components/core/form/fields/SolidIntegerField.tsx +13 -10
- package/dist/components/core/list/SolidDataTable.d.ts.map +1 -1
- package/dist/components/core/list/SolidDataTable.js +2 -0
- package/dist/components/core/list/SolidDataTable.js.map +1 -1
- package/dist/components/core/list/SolidDataTable.tsx +1 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +94 -50
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +26 -31
- package/dist/components/core/list/SolidListViewRowActionMenuItem.d.ts.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionMenuItem.js.map +1 -1
- package/dist/components/core/list/SolidListViewRowActionMenuItem.tsx +2 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js +1 -0
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.js.map +1 -1
- package/dist/components/core/list/columns/SolidMediaMultipleColumn.tsx +1 -0
- package/dist/components/core/module/CreateModule.css +42 -0
- package/dist/components/core/module/CreateModule.js +1 -1
- package/dist/components/core/module/CreateModule.js.map +1 -1
- package/dist/components/core/module/CreateModule.tsx +5 -5
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +3 -2
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +7 -3
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +8 -3
- package/dist/constants/error-messages.d.ts +2 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +3 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/constants/error-messages.ts +4 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.ts +4 -0
- package/dist/resources/solid-custom.css +36 -12
- package/dist/resources/themes/solid-light-modern/theme.css +2 -4
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.css +41 -0
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DatasourceIntrospectionPage.tsx +3 -1
- package/dist/types/dashboard.d.ts +4 -0
- package/dist/types/dashboard.d.ts.map +1 -1
- package/dist/types/dashboard.js.map +1 -1
- package/dist/types/dashboard.ts +5 -0
- package/dist/types/list-row-action.d.ts +18 -0
- package/dist/types/list-row-action.d.ts.map +1 -0
- package/dist/types/list-row-action.js +2 -0
- package/dist/types/list-row-action.js.map +1 -0
- package/dist/types/list-row-action.ts +18 -0
- package/package.json +1 -1
|
@@ -42,6 +42,7 @@ import { normalizeSolidListTreeKanbanActionPath } from "../../../helpers/routePa
|
|
|
42
42
|
import { storeCurrentModelViewContext } from "../../../helpers/modelViewPersistence";
|
|
43
43
|
import { getMediaTypeFromUrl } from "../../../helpers/mediaType";
|
|
44
44
|
import { SolidListViewRowActionsMenu } from "./SolidListViewRowActionsMenu";
|
|
45
|
+
import type { SolidListRowActionEvent } from "../../../types/list-row-action";
|
|
45
46
|
import { SolidHeaderRequestStatus } from "../../common/SolidHeaderRequestStatus";
|
|
46
47
|
import {
|
|
47
48
|
getFilterObjectFromLocalStorage,
|
|
@@ -536,11 +537,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
536
537
|
const [
|
|
537
538
|
triggerRecoverSolidEntities,
|
|
538
539
|
{
|
|
539
|
-
data: recoverByData,
|
|
540
540
|
isLoading: recoverByIsLoading,
|
|
541
541
|
error: recoverError,
|
|
542
542
|
isError: recoverIsError,
|
|
543
|
-
isSuccess: recoverByIsSuccess,
|
|
544
543
|
},
|
|
545
544
|
] = useRecoverSolidEntityMutation();
|
|
546
545
|
|
|
@@ -576,20 +575,13 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
576
575
|
}
|
|
577
576
|
}, [solidEntityListViewData]);
|
|
578
577
|
|
|
579
|
-
const [
|
|
580
|
-
deleteSolidSingleEntiry,
|
|
581
|
-
{ isSuccess: isDeleteSolidSingleEntitySuccess },
|
|
582
|
-
] = useDeleteSolidEntityMutation();
|
|
578
|
+
const [deleteSolidSingleEntiry] = useDeleteSolidEntityMutation();
|
|
583
579
|
|
|
584
580
|
// Delete mutation
|
|
585
581
|
const [
|
|
586
582
|
deleteManySolidEntities,
|
|
587
583
|
{
|
|
588
584
|
isLoading: isSolidEntitiesDeleted,
|
|
589
|
-
isSuccess: isDeleteSolidEntitiesSucess,
|
|
590
|
-
isError: isSolidEntitiesDeleteError,
|
|
591
|
-
error: SolidEntitiesDeleteError,
|
|
592
|
-
data: DeletedSolidEntities,
|
|
593
585
|
},
|
|
594
586
|
] = useDeleteMultipleSolidEntitiesMutation();
|
|
595
587
|
|
|
@@ -649,10 +641,6 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
649
641
|
setQueryDataLoaded(true);
|
|
650
642
|
}
|
|
651
643
|
}, [
|
|
652
|
-
isDeleteSolidEntitiesSucess,
|
|
653
|
-
isDeleteSolidSingleEntitySuccess,
|
|
654
|
-
recoverByIdIsSuccess,
|
|
655
|
-
recoverByIsSuccess,
|
|
656
644
|
solidListViewMetaData,
|
|
657
645
|
solidListViewLayout
|
|
658
646
|
]);
|
|
@@ -1071,17 +1059,23 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1071
1059
|
const [deleteEntity, setDeleteEntity] = useState(false);
|
|
1072
1060
|
|
|
1073
1061
|
// Recover functions
|
|
1074
|
-
const recoverById = (id: any) => {
|
|
1075
|
-
triggerRecoverSolidEntitiesById(id);
|
|
1062
|
+
const recoverById = async (id: any) => {
|
|
1063
|
+
await triggerRecoverSolidEntitiesById(id).unwrap();
|
|
1064
|
+
await setQueryString();
|
|
1076
1065
|
};
|
|
1077
1066
|
|
|
1078
|
-
const recoverAll = () => {
|
|
1067
|
+
const recoverAll = async () => {
|
|
1079
1068
|
let recoverList: any = [];
|
|
1080
1069
|
selectedRecoverRecords.forEach((element: any) => {
|
|
1081
1070
|
recoverList.push(element.id);
|
|
1082
1071
|
});
|
|
1083
|
-
|
|
1084
|
-
|
|
1072
|
+
try {
|
|
1073
|
+
await triggerRecoverSolidEntities(recoverList).unwrap();
|
|
1074
|
+
setRecoverDialogVisible(false);
|
|
1075
|
+
await setQueryString();
|
|
1076
|
+
} catch {
|
|
1077
|
+
setRecoverDialogVisible(false);
|
|
1078
|
+
}
|
|
1085
1079
|
};
|
|
1086
1080
|
|
|
1087
1081
|
useEffect(() => {
|
|
@@ -1118,20 +1112,19 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1118
1112
|
};
|
|
1119
1113
|
|
|
1120
1114
|
// handle bulk deletion
|
|
1121
|
-
const deleteBulk = () => {
|
|
1115
|
+
const deleteBulk = async () => {
|
|
1122
1116
|
let deleteList: any = [];
|
|
1123
1117
|
selectedRecords.forEach((element: any) => {
|
|
1124
1118
|
deleteList.push(element.id);
|
|
1125
1119
|
});
|
|
1126
|
-
|
|
1127
|
-
.unwrap()
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
});
|
|
1120
|
+
try {
|
|
1121
|
+
await deleteManySolidEntities(deleteList).unwrap();
|
|
1122
|
+
dispatch(showToast({ severity: 'success', summary: 'Deleted', detail: ERROR_MESSAGES.RECORD_DELETE, life: 3000 }));
|
|
1123
|
+
setDialogVisible(false);
|
|
1124
|
+
await setQueryString();
|
|
1125
|
+
} catch (error: any) {
|
|
1126
|
+
dispatch(showToast({ severity: 'error', summary: 'Delete Failed', detail: error?.data?.message, life: 4000 }));
|
|
1127
|
+
}
|
|
1135
1128
|
};
|
|
1136
1129
|
|
|
1137
1130
|
// handle closing of the delete dialog...
|
|
@@ -1343,6 +1336,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1343
1336
|
if (response?.data?.statusCode === 200) {
|
|
1344
1337
|
setDeleteEntity(false);
|
|
1345
1338
|
dispatch(showToast({ severity: "success", summary: ERROR_MESSAGES.DELETED, detail: ERROR_MESSAGES.ENTITY_DELETE, life: 3000 }));
|
|
1339
|
+
await setQueryString();
|
|
1346
1340
|
} else {
|
|
1347
1341
|
dispatch(showToast({ severity: "error", summary: ERROR_MESSAGES.DELETE_FAIELD, detail: response?.error?.data?.error }));
|
|
1348
1342
|
}
|
|
@@ -1643,8 +1637,9 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1643
1637
|
if (params.embeded === true) {
|
|
1644
1638
|
params.handleEditClickForEmbeddedView(rowData?.id);
|
|
1645
1639
|
} else {
|
|
1640
|
+
const effectiveViewMode = hasUpdatePermission ? recordClickFormMode : "view";
|
|
1646
1641
|
storeCurrentModelViewContext();
|
|
1647
|
-
router.push(`${editBaseUrl}/${rowData?.id}?viewMode=${
|
|
1642
|
+
router.push(`${editBaseUrl}/${rowData?.id}?viewMode=${effectiveViewMode}&${buildEditNavigationQueryString(rowData)}`);
|
|
1648
1643
|
}
|
|
1649
1644
|
}
|
|
1650
1645
|
}
|
|
@@ -1700,7 +1695,7 @@ export const SolidListView = forwardRef<SolidListViewHandle, SolidListViewParams
|
|
|
1700
1695
|
size="small"
|
|
1701
1696
|
variant="ghost"
|
|
1702
1697
|
onClick={() => {
|
|
1703
|
-
const event = {
|
|
1698
|
+
const event: SolidListRowActionEvent = {
|
|
1704
1699
|
params,
|
|
1705
1700
|
rowData: rowData,
|
|
1706
1701
|
solidListViewMetaData:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidListViewRowActionMenuItem.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowActionMenuItem.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidListViewRowActionMenuItem.d.ts","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowActionMenuItem.tsx"],"names":[],"mappings":"AAMA,eAAO,MAAM,8BAA8B,kGAAmG,GAAG,mDAgDhJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidListViewRowActionMenuItem.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowActionMenuItem.tsx"],"names":[],"mappings":";;;;;;;;;;;;AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"SolidListViewRowActionMenuItem.js","sourceRoot":"","sources":["../../../../src/components/core/list/SolidListViewRowActionMenuItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useSession } from \"../../../hooks/useSession\";\nimport { hasAnyRole } from \"../../../helpers/rolesHelper\";\nimport { resolveButtonPresentation } from \"../../../helpers/buttonPresentation\";\nimport { SolidIcon, parseSolidIconMeta } from \"../../shad-cn-ui/SolidIcon\";\nimport type { SolidListRowActionEvent } from \"../../../types/list-row-action\";\n\nexport const SolidListViewRowActionMenuItem = ({ button, params, rowData, solidListViewMetaData, handleCustomButtonClick, onActionComplete }: any) => {\n\n const { data: session, status } = useSession();\n const user = session?.user;\n\n const hasRole = !button?.attrs?.roles || button?.attrs?.roles.length === 0 ? true : hasAnyRole(user?.roles, button?.attrs?.roles);\n const presentation = resolveButtonPresentation(button?.attrs);\n const iconNode = presentation.showIcon\n ? (() => {\n const m = parseSolidIconMeta(presentation.icon);\n return m\n ? <SolidIcon name={m.name} spin={m.spin} className=\"solid-row-action-button-icon\" />\n : <i className={`${presentation.icon} solid-row-action-button-icon`} />;\n })()\n : null;\n\n if (!hasRole) return null;\n if (!presentation.showIcon && !presentation.showLabel) return null;\n\n return (\n <button\n type=\"button\"\n className={`solid-row-action-button ${presentation.buttonClassName ? presentation.buttonClassName : ''}`}\n title={presentation.tooltip}\n aria-label={presentation.isIconOnly ? (presentation.tooltip ?? button?.attrs?.action ?? \"Action\") : undefined}\n onClick={() => {\n const event: SolidListRowActionEvent = {\n params,\n rowData: rowData,\n solidListViewMetaData: solidListViewMetaData.data,\n };\n\n const modifiedButtonAttrs = { ...button.attrs }; // Create a copy\n\n // Conditionally add popupWidth for specific actions\n if (modifiedButtonAttrs.action === 'GenerateModelCodeRowAction' || modifiedButtonAttrs.action === 'GenerateModuleCodeRowAction') {\n modifiedButtonAttrs.popupWidth = '30vw';\n }\n\n handleCustomButtonClick(modifiedButtonAttrs, event);\n onActionComplete?.();\n }}\n >\n {presentation.iconPos === \"left\" ? iconNode : null}\n {presentation.showLabel ? <span className=\"solid-row-action-button-label\">{presentation.label}</span> : null}\n {presentation.iconPos === \"right\" ? iconNode : null}\n </button>\n );\n};\n"]}
|
|
@@ -2,6 +2,7 @@ import { useSession } from "../../../hooks/useSession";
|
|
|
2
2
|
import { hasAnyRole } from "../../../helpers/rolesHelper";
|
|
3
3
|
import { resolveButtonPresentation } from "../../../helpers/buttonPresentation";
|
|
4
4
|
import { SolidIcon, parseSolidIconMeta } from "../../shad-cn-ui/SolidIcon";
|
|
5
|
+
import type { SolidListRowActionEvent } from "../../../types/list-row-action";
|
|
5
6
|
|
|
6
7
|
export const SolidListViewRowActionMenuItem = ({ button, params, rowData, solidListViewMetaData, handleCustomButtonClick, onActionComplete }: any) => {
|
|
7
8
|
|
|
@@ -29,7 +30,7 @@ export const SolidListViewRowActionMenuItem = ({ button, params, rowData, solidL
|
|
|
29
30
|
title={presentation.tooltip}
|
|
30
31
|
aria-label={presentation.isIconOnly ? (presentation.tooltip ?? button?.attrs?.action ?? "Action") : undefined}
|
|
31
32
|
onClick={() => {
|
|
32
|
-
const event = {
|
|
33
|
+
const event: SolidListRowActionEvent = {
|
|
33
34
|
params,
|
|
34
35
|
rowData: rowData,
|
|
35
36
|
solidListViewMetaData: solidListViewMetaData.data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaMultipleColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaMultipleColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAqF9E,QAAA,MAAM,wBAAwB,uFAAwF,yBAAyB,4CAmC9I,CAAC;AAEF,eAAe,wBAAwB,CAAC;AAGxC,eAAO,MAAM,8BAA8B,iEAAkE,8BAA8B,
|
|
1
|
+
{"version":3,"file":"SolidMediaMultipleColumn.d.ts","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaMultipleColumn.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,8BAA8B,EAAE,MAAM,8BAA8B,CAAC;AAqF9E,QAAA,MAAM,wBAAwB,uFAAwF,yBAAyB,4CAmC9I,CAAC;AAEF,eAAe,wBAAwB,CAAC;AAGxC,eAAO,MAAM,8BAA8B,iEAAkE,8BAA8B,mDAyI1I,CAAC"}
|
|
@@ -90,6 +90,7 @@ export var DefaultMediaMultipleListWidget = function (_a) {
|
|
|
90
90
|
if (isArchivedRecord)
|
|
91
91
|
return;
|
|
92
92
|
if (isLightboxMediaKind(file === null || file === void 0 ? void 0 : file.previewKind)) {
|
|
93
|
+
setShowAllFiles(false);
|
|
93
94
|
setLightboxUrls === null || setLightboxUrls === void 0 ? void 0 : setLightboxUrls([{
|
|
94
95
|
src: file.fileUrl,
|
|
95
96
|
downloadUrl: file.fileUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidMediaMultipleColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaMultipleColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState } from 'react';\nimport { Volume2 } from \"lucide-react\";\nimport { Column } from \"../SolidDataTable\";\nimport { SolidListViewColumnParams } from '../SolidListViewColumn';\nimport { SolidMediaListFieldWidgetProps } from '../../../../types/solid-core';\nimport { getExtensionComponent } from '../../../../helpers/registry';\nimport { FileReaderExt } from '../../../../components/common/FileReaderExt';\nimport { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle, SolidIcon } from \"../../../shad-cn-ui\";\nimport { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';\nimport { getMediaPreviewKind, isLightboxMediaKind, type MediaPreviewKind } from '../../../../helpers/mediaType';\nimport { openMediaInNewTab } from '../../../../helpers/mediaUrl';\nimport { downloadMediaFile } from '../../../../helpers/downloadMediaFile';\nimport styles from \"../../form/fields/solidFields.module.css\";\n\n\n\n// Thumbnail preview component\nconst MediaPreview = ({\n src,\n fileName,\n previewKind,\n onClick\n}: {\n src: string;\n fileName?: string;\n previewKind: MediaPreviewKind;\n onClick: (event: React.MouseEvent) => void\n}) => {\n const [isBroken, setIsBroken] = useState(false);\n\n const handleClick = (event: React.MouseEvent) => {\n onClick(event);\n };\n\n if (!isBroken) {\n if (previewKind === \"image\") {\n return (\n <img\n src={src}\n alt=\"media\"\n className=\"rounded shadow-md\"\n width={40}\n height={40}\n style={{ objectFit: \"cover\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n />\n );\n }\n\n if (previewKind === \"video\") {\n return (\n <video\n src={src}\n width={40}\n height={40}\n className=\"rounded shadow-md\"\n style={{ objectFit: \"cover\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n muted\n />\n );\n }\n\n if (previewKind === \"audio\") {\n return (\n <div\n className=\"flex items-center justify-center rounded bg-gray-100 shadow-md\"\n style={{ width: 40, height: 40 }}\n onClick={handleClick}\n >\n <Volume2 size={18} className=\"text-gray-600\" />\n </div>\n );\n }\n }\n\n return (\n <div\n style={{ width: 40, height: 40, display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n onClick={handleClick}\n >\n <SolidFileTypeIcon fileUrl={src} fileName={fileName} size={24} />\n </div>\n );\n};\n\n\nconst SolidMediaMultipleColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n header={header}\n body={(rowData) => {\n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultMediaMultipleListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidMediaListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls,\n setOpenLightbox\n }\n return (\n <>\n {\n DynamicWidget && <DynamicWidget {...widgetProps} />\n }\n </>\n )\n }}\n sortable={column.attrs.sortable}\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n );\n};\n\nexport default SolidMediaMultipleColumn;\n\n// Default multiple widget\nexport const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLightboxUrls, setOpenLightbox }: SolidMediaListFieldWidgetProps) => {\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n\n if (!rowData?._media?.[fieldMetadata.name]) return null;\n const isArchivedRecord = rowData?.deletedAt !== null && rowData?.deletedAt !== undefined;\n\n const fullrecord = rowData._media[fieldMetadata.name]?.map((file: any) => ({\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl: file?._full_url,\n previewKind: getMediaPreviewKind({\n url: file?._full_url,\n fileName: file?.originalFileName,\n mimeType: file?.mimeType,\n })\n }));\n\n\n const formatFileSize = (size: number) =>\n size >= 1024 * 1024 ? `${(size / (1024 * 1024)).toFixed(1)} MB` : `${(size / 1024).toFixed(1)} KB`;\n\n\n const handleFileView = (file: any) => {\n if (isArchivedRecord) return;\n\n if (isLightboxMediaKind(file?.previewKind)) {\n setLightboxUrls?.([{\n src: file.fileUrl,\n downloadUrl: file.fileUrl,\n type: file.previewKind === \"video\" ? \"video\" : undefined\n }]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(file?.fileUrl);\n };\n\n const renderMediaFileCard = (file: any, className = \"\") => (\n <div className={`${styles.mediaAttachmentCard} ${className}`.trim()}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={file} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(file)}\n title={file.name}\n >\n {file.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (isArchivedRecord) return;\n downloadMediaFile(file?.fileUrl, file?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n\n\n return fullrecord.length > 0 ? (\n <div className='flex items-end gap-2'>\n\n <MediaPreview\n src={fullrecord[0]?.fileUrl}\n fileName={fullrecord[0]?.name}\n previewKind={fullrecord[0]?.previewKind}\n onClick={(event) => {\n event.stopPropagation();\n handleFileView(fullrecord[0]);\n }}\n />\n\n {fullrecord?.length > 1 && <span\n style={{\n color: \"#0895CD\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n marginLeft: \"4px\"\n }}\n onClick={(event) => {\n event.stopPropagation();\n if (isArchivedRecord) return;\n setShowAllFiles(true);\n }}\n >\n +{fullrecord.length - 1}\n </span>\n }\n\n\n\n {/* VIEW ALL DIALOG */}\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fullrecord?.map((file: any, index: number) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className={index === fullrecord.length - 1 ? \"\" : \"mb-3\"}>\n {renderMediaFileCard(file)}\n </div>\n )\n })}\n </SolidDialogBody>\n </SolidDialog>\n </div>\n ) : (\n <div style={{ height: 40, width: 40 }} />\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidMediaMultipleColumn.js","sourceRoot":"","sources":["../../../../../src/components/core/list/columns/SolidMediaMultipleColumn.tsx"],"names":[],"mappings":"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","sourcesContent":["\nimport React, { useState } from 'react';\nimport { Volume2 } from \"lucide-react\";\nimport { Column } from \"../SolidDataTable\";\nimport { SolidListViewColumnParams } from '../SolidListViewColumn';\nimport { SolidMediaListFieldWidgetProps } from '../../../../types/solid-core';\nimport { getExtensionComponent } from '../../../../helpers/registry';\nimport { FileReaderExt } from '../../../../components/common/FileReaderExt';\nimport { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogHeader, SolidDialogTitle, SolidIcon } from \"../../../shad-cn-ui\";\nimport { SolidFileTypeIcon } from '../../../../helpers/fileTypeIcon';\nimport { getMediaPreviewKind, isLightboxMediaKind, type MediaPreviewKind } from '../../../../helpers/mediaType';\nimport { openMediaInNewTab } from '../../../../helpers/mediaUrl';\nimport { downloadMediaFile } from '../../../../helpers/downloadMediaFile';\nimport styles from \"../../form/fields/solidFields.module.css\";\n\n\n\n// Thumbnail preview component\nconst MediaPreview = ({\n src,\n fileName,\n previewKind,\n onClick\n}: {\n src: string;\n fileName?: string;\n previewKind: MediaPreviewKind;\n onClick: (event: React.MouseEvent) => void\n}) => {\n const [isBroken, setIsBroken] = useState(false);\n\n const handleClick = (event: React.MouseEvent) => {\n onClick(event);\n };\n\n if (!isBroken) {\n if (previewKind === \"image\") {\n return (\n <img\n src={src}\n alt=\"media\"\n className=\"rounded shadow-md\"\n width={40}\n height={40}\n style={{ objectFit: \"cover\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n />\n );\n }\n\n if (previewKind === \"video\") {\n return (\n <video\n src={src}\n width={40}\n height={40}\n className=\"rounded shadow-md\"\n style={{ objectFit: \"cover\" }}\n onError={() => setIsBroken(true)}\n onClick={handleClick}\n muted\n />\n );\n }\n\n if (previewKind === \"audio\") {\n return (\n <div\n className=\"flex items-center justify-center rounded bg-gray-100 shadow-md\"\n style={{ width: 40, height: 40 }}\n onClick={handleClick}\n >\n <Volume2 size={18} className=\"text-gray-600\" />\n </div>\n );\n }\n }\n\n return (\n <div\n style={{ width: 40, height: 40, display: \"flex\", alignItems: \"center\", justifyContent: \"center\" }}\n onClick={handleClick}\n >\n <SolidFileTypeIcon fileUrl={src} fileName={fileName} size={24} />\n </div>\n );\n};\n\n\nconst SolidMediaMultipleColumn = ({ solidListViewMetaData, fieldMetadata, column, setLightboxUrls, setOpenLightbox }: SolidListViewColumnParams) => {\n const header = column.attrs.label ?? fieldMetadata.displayName;\n\n return (\n <Column\n key={fieldMetadata.name}\n field={fieldMetadata.name}\n header={header}\n body={(rowData) => {\n let viewWidget = column.attrs.viewWidget;\n if (!viewWidget) {\n viewWidget = 'DefaultMediaMultipleListWidget';\n }\n let DynamicWidget = getExtensionComponent(viewWidget);\n const widgetProps: SolidMediaListFieldWidgetProps = {\n rowData,\n solidListViewMetaData,\n fieldMetadata,\n column,\n setLightboxUrls,\n setOpenLightbox\n }\n return (\n <>\n {\n DynamicWidget && <DynamicWidget {...widgetProps} />\n }\n </>\n )\n }}\n sortable={column.attrs.sortable}\n style={{ minWidth: \"12rem\" }}\n headerClassName=\"table-header-fs\"\n />\n );\n};\n\nexport default SolidMediaMultipleColumn;\n\n// Default multiple widget\nexport const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLightboxUrls, setOpenLightbox }: SolidMediaListFieldWidgetProps) => {\n const [isShowAllFiles, setShowAllFiles] = useState(false);\n\n if (!rowData?._media?.[fieldMetadata.name]) return null;\n const isArchivedRecord = rowData?.deletedAt !== null && rowData?.deletedAt !== undefined;\n\n const fullrecord = rowData._media[fieldMetadata.name]?.map((file: any) => ({\n name: file.originalFileName,\n type: file.mimeType,\n size: file.fileSize,\n id: file.id,\n fileUrl: file?._full_url,\n previewKind: getMediaPreviewKind({\n url: file?._full_url,\n fileName: file?.originalFileName,\n mimeType: file?.mimeType,\n })\n }));\n\n\n const formatFileSize = (size: number) =>\n size >= 1024 * 1024 ? `${(size / (1024 * 1024)).toFixed(1)} MB` : `${(size / 1024).toFixed(1)} KB`;\n\n\n const handleFileView = (file: any) => {\n if (isArchivedRecord) return;\n\n if (isLightboxMediaKind(file?.previewKind)) {\n setShowAllFiles(false);\n setLightboxUrls?.([{\n src: file.fileUrl,\n downloadUrl: file.fileUrl,\n type: file.previewKind === \"video\" ? \"video\" : undefined\n }]);\n setOpenLightbox?.(true);\n return;\n }\n\n openMediaInNewTab(file?.fileUrl);\n };\n\n const renderMediaFileCard = (file: any, className = \"\") => (\n <div className={`${styles.mediaAttachmentCard} ${className}`.trim()}>\n <div className={`${styles.mediaAttachmentRow} flex items-center md:gap-2`}>\n <FileReaderExt fileDetails={file} />\n <div className={`${styles.mediaAttachmentMeta} w-full`}>\n <div className=\"flex items-start justify-between gap-4\">\n <button\n type=\"button\"\n className={styles.mediaAttachmentName}\n onClick={() => handleFileView(file)}\n title={file.name}\n >\n {file.name}\n </button>\n <div className={`${styles.mediaAttachmentActions} flex items-center md:gap-2`}>\n <button\n type=\"button\"\n className=\"solid-file-icon-btn\"\n aria-label=\"Download file\"\n onClick={(event) => {\n event.preventDefault();\n event.stopPropagation();\n if (isArchivedRecord) return;\n downloadMediaFile(file?.fileUrl, file?.name);\n }}\n >\n <SolidIcon name=\"si-download\" aria-hidden />\n </button>\n </div>\n </div>\n <div className={styles.mediaAttachmentSize}>\n {formatFileSize(file.size)}\n </div>\n </div>\n </div>\n </div>\n );\n\n\n return fullrecord.length > 0 ? (\n <div className='flex items-end gap-2'>\n\n <MediaPreview\n src={fullrecord[0]?.fileUrl}\n fileName={fullrecord[0]?.name}\n previewKind={fullrecord[0]?.previewKind}\n onClick={(event) => {\n event.stopPropagation();\n handleFileView(fullrecord[0]);\n }}\n />\n\n {fullrecord?.length > 1 && <span\n style={{\n color: \"#0895CD\",\n fontWeight: \"bold\",\n cursor: \"pointer\",\n marginLeft: \"4px\"\n }}\n onClick={(event) => {\n event.stopPropagation();\n if (isArchivedRecord) return;\n setShowAllFiles(true);\n }}\n >\n +{fullrecord.length - 1}\n </span>\n }\n\n\n\n {/* VIEW ALL DIALOG */}\n <SolidDialog\n open={isShowAllFiles}\n onOpenChange={setShowAllFiles}\n style={{ minWidth: 450 }}\n >\n <SolidDialogHeader>\n <SolidDialogTitle>Items Uploaded</SolidDialogTitle>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogBody>\n {fullrecord?.map((file: any, index: number) => {\n const fileId = `${file.name}-${file.size}`;\n return (\n <div key={fileId} className={index === fullrecord.length - 1 ? \"\" : \"mb-3\"}>\n {renderMediaFileCard(file)}\n </div>\n )\n })}\n </SolidDialogBody>\n </SolidDialog>\n </div>\n ) : (\n <div style={{ height: 40, width: 40 }} />\n );\n};\n"]}
|
|
@@ -156,6 +156,7 @@ export const DefaultMediaMultipleListWidget = ({ rowData, fieldMetadata, setLigh
|
|
|
156
156
|
if (isArchivedRecord) return;
|
|
157
157
|
|
|
158
158
|
if (isLightboxMediaKind(file?.previewKind)) {
|
|
159
|
+
setShowAllFiles(false);
|
|
159
160
|
setLightboxUrls?.([{
|
|
160
161
|
src: file.fileUrl,
|
|
161
162
|
downloadUrl: file.fileUrl,
|
|
@@ -218,3 +218,45 @@
|
|
|
218
218
|
[data-theme="dark"] .solid-module-automap-list {
|
|
219
219
|
color: color-mix(in srgb, var(--foreground) 80%, var(--muted-foreground));
|
|
220
220
|
}
|
|
221
|
+
|
|
222
|
+
@media (max-width: 767px) {
|
|
223
|
+
.solid-module-menu-icon-upload {
|
|
224
|
+
box-sizing: border-box;
|
|
225
|
+
margin-left: 0;
|
|
226
|
+
margin-right: 0;
|
|
227
|
+
max-width: 100%;
|
|
228
|
+
overflow: hidden;
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.solid-module-menu-icon-row {
|
|
232
|
+
min-width: 0;
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
.solid-module-menu-icon-row > :first-child {
|
|
236
|
+
flex: 0 0 auto;
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
.solid-module-menu-icon-meta,
|
|
240
|
+
.solid-module-menu-icon-header {
|
|
241
|
+
min-width: 0;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
.solid-module-menu-icon-header {
|
|
245
|
+
gap: 0.5rem;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
.solid-module-menu-icon-actions {
|
|
249
|
+
flex: 0 0 auto;
|
|
250
|
+
gap: 0.35rem;
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
.solid-module-menu-icon-header .solid-module-mobile-text-wrapper {
|
|
254
|
+
flex: 1 1 auto;
|
|
255
|
+
max-width: none;
|
|
256
|
+
min-width: 0;
|
|
257
|
+
overflow: visible;
|
|
258
|
+
overflow-wrap: anywhere;
|
|
259
|
+
text-overflow: clip;
|
|
260
|
+
white-space: normal;
|
|
261
|
+
}
|
|
262
|
+
}
|
|
@@ -319,7 +319,7 @@ var CreateModule = function (_a) {
|
|
|
319
319
|
if (pathname.includes('new')) {
|
|
320
320
|
formik.setFieldValue("name", toKebabCase);
|
|
321
321
|
}
|
|
322
|
-
}, value: formik.values.displayName, className: styles.fieldInput }), isFormFieldValid(formik, "displayName") && (_jsx("p", { className: styles.fieldError, children: (_c = (_b = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _b === void 0 ? void 0 : _b.displayName) === null || _c === void 0 ? void 0 : _c.toString() }))] }) }), _jsx("div", { className: "field w-full px-2 pt-2 lg:w-1/2", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsxs("label", { htmlFor: "name", className: "".concat(styles.fieldLabel, " form-field-label"), children: ["Name ", _jsx("span", { className: "text-red-500", children: "*" })] }), _jsx(SolidInput, { disabled: true, type: "text", id: "name", name: "name", onChange: formik.handleChange, value: formik.values.name, className: styles.fieldInput }), isFormFieldValid(formik, "name") && (_jsx("p", { className: styles.fieldError, children: (_e = (_d = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _d === void 0 ? void 0 : _d.name) === null || _e === void 0 ? void 0 : _e.toString() }))] }) })] }), _jsxs("div", { className: "mt-4 flex flex-wrap -mx-2 -mt-2", children: [_jsx("div", { className: "field w-full px-2 pt-2 pb-3 lg:w-1/2 lg:pb-0", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsx("label", { htmlFor: "menuSequenceNumber", className: "".concat(styles.fieldLabel, " form-field-label"), children: "Menu Sequence Number" }), _jsx(SolidInput, { id: "menuSequenceNumber", type: "number", onChange: formik.handleChange, min: 0, value: formik.values.menuSequenceNumber, className: styles.fieldInput }), isFormFieldValid(formik, "menuSequenceNumber") && (_jsx("p", { className: styles.fieldError, children: (_g = (_f = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _f === void 0 ? void 0 : _f.menuSequenceNumber) === null || _g === void 0 ? void 0 : _g.toString() }))] }) }), _jsx("div", { className: "field w-full px-2 pt-2 lg:w-1/2", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsxs("label", { htmlFor: "description", className: "".concat(styles.fieldLabel, " form-field-label"), children: ["Description ", _jsx("span", { className: "text-red-500", children: "*" })] }), _jsx(SolidTextarea, { id: "description", name: "description", onChange: formik.handleChange, value: formik.values.description, className: styles.fieldTextarea, rows: 5, cols: 30 }), isFormFieldValid(formik, "description") && (_jsx("p", { className: styles.fieldError, children: (_j = (_h = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _h === void 0 ? void 0 : _h.description) === null || _j === void 0 ? void 0 : _j.toString() }))] }) })] }), _jsx("div", { className: "mt-4 flex flex-wrap -mx-2 -mt-2", children: _jsx("div", { className: "field w-full px-2 pt-2", children: _jsxs("div", { className: "".concat(styles.fieldWrapper, " relative"), children: [_jsxs("label", { htmlFor: "menuIconUrl", className: "".concat(styles.fieldLabel, " form-field-label"), children: ["Menu Icon ", _jsx("small", { className: "text-red-500 helper-text", children: "(only png and jpeg are allowed)" })] }), _jsxs("div", __assign({}, getRootPropsmenuIcon(), { className: "solid-dropzone-wrapper", children: [_jsx("input", __assign({}, getInputPropsmenuIcon())), _jsx(DropzonePlaceholder, {})] })), isFormFieldValid(formik, "menuIconUrl") && (_jsx(SolidMessage, { severity: "error", text: (_l = (_k = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _k === void 0 ? void 0 : _k.menuIconUrl) === null || _l === void 0 ? void 0 : _l.toString(), className: "mt-2" })), fileDetails && (_jsxs("div", { className: "solid-file-upload-wrapper mt-4", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(FileReaderExt, { fileDetails: fileDetails }), _jsxs("div", { className: "flex w-full flex-col gap-1", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { className: "font-bold solid-module-mobile-text-wrapper", children: fileDetails.name }), _jsxs("div", { className: "flex items-center gap-2", children: [typeof menuIconPreview === "string" && (_jsx("button", { type: "button", className: "solid-file-icon-btn", "aria-label": "View uploaded menu icon", title: "View icon", onClick: function () { return setIsMenuIconLightboxOpen(true); }, children: _jsx(SolidIcon, { name: "si-eye", "aria-hidden": true }) })), _jsx("button", { type: "button", className: "solid-file-icon-btn is-danger solid-module-upload-remove", "aria-label": "Remove uploaded menu icon", onClick: handleCancelUpload, children: _jsx(SolidIcon, { name: "si-times", "aria-hidden": true }) })] })] }), uploadCompleted ? (_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [totalSize, " of ", totalSize, _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "4", height: "4", viewBox: "0 0 4 4", fill: "none", children: _jsx("circle", { cx: "2", cy: "2", r: "2", fill: "#C1C1C1" }) }), _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", children: [_jsx("mask", { id: "mask0_2480_8635", style: { maskType: 'alpha' }, maskUnits: "userSpaceOnUse", x: "0", y: "0", width: "20", height: "20", children: _jsx("rect", { width: "20", height: "20", fill: "#D9D9D9" }) }), _jsx("g", { mask: "url(#mask0_2480_8635)", children: _jsx("path", { d: "M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 5.215 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z", fill: "var(--primary-color, var(--primary))" }) })] }), "Completed"] })) : (_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [uploadedSize, " of ", totalSize, _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "4", height: "4", viewBox: "0 0 4 4", fill: "none", children: _jsx("circle", { cx: "2", cy: "2", r: "2", fill: "#C1C1C1" }) }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: _jsx("path", { d: "M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z", fill: "black" }) }), "Uploading $", uploadProgress, "% Completed"] }))] })] }), _jsx(SolidProgressBar, { value: uploadProgress, showValue: false, style: { height: 4 }, className: "mt-2" })] }))] }) }) })] }), _jsx(SolidPanel, { header: "Datasource Configuration", className: "solid-column-panel mt-4", children: _jsxs("div", { className: "mt-3 flex flex-wrap -mx-2 -mt-2", children: [_jsx("div", { className: "field w-full px-2 pt-2", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsx("label", { htmlFor: "defaultDataSource", className: "".concat(styles.fieldLabel, " form-field-label"), children: "Default Data Source" }), _jsx("div", { className: "solid-standard-autocomplete w-full", children: _jsx(SolidAutocomplete, { disabled: !!data, value: defaultDataSourceField.selectedItem, suggestions: defaultDataSourceField.filteredItems, completeMethod: defaultDataSourceField.searchItems, onChange: defaultDataSourceField.handleChange, dropdown: true, portal: true, field: "label", className: "w-full" }) }), isFormFieldValid(formik, "defaultDataSource") && (_jsx("p", { className: styles.fieldError, children: (_o = (_m = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _m === void 0 ? void 0 : _m.defaultDataSource) === null || _o === void 0 ? void 0 : _o.toString() }))] }) }), !isCreateMode ? (_jsx("div", { className: "field w-full px-2 pt-4", children: _jsxs("div", { className: "solid-module-automap-panel", children: [_jsxs("div", { className: "solid-module-automap-copy", children: [_jsx("div", { className: "solid-module-automap-eyebrow", children: "Legacy Table Mapping" }), _jsx("h4", { children: "Auto map datasource tables into this module" }), _jsx("p", { children: "Open the datasource introspection workspace to inspect legacy tables, preview field mappings, review metadata JSON changes, and generate the supporting migration template for SolidX system fields." }), _jsxs("ul", { className: "solid-module-automap-list", children: [_jsx("li", { children: "Review tables available on the selected datasource." }), _jsx("li", { children: "Control which legacy columns are included in each mapping session." }), _jsx("li", { children: "Preview the metadata JSON and migration output before saving." })] })] }), _jsx("div", { className: "solid-module-automap-actions", children: _jsx(SolidButton, { type: "button", size: "sm", onClick: function () { return router.push("/admin/core/solid-core/modules/".concat(data === null || data === void 0 ? void 0 : data.id, "/datasource-introspection")); }, children: "Auto Map Tables" }) })] }) })) : null] }) })] }) }), _jsx(SolidFormFooter, { params: params }), typeof menuIconPreview === "string" && (_jsx(SolidLightbox, { open: isMenuIconLightboxOpen, slides: [{ src: menuIconPreview }], onClose: function () { return setIsMenuIconLightboxOpen(false); } }))] }));
|
|
322
|
+
}, value: formik.values.displayName, className: styles.fieldInput }), isFormFieldValid(formik, "displayName") && (_jsx("p", { className: styles.fieldError, children: (_c = (_b = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _b === void 0 ? void 0 : _b.displayName) === null || _c === void 0 ? void 0 : _c.toString() }))] }) }), _jsx("div", { className: "field w-full px-2 pt-2 lg:w-1/2", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsxs("label", { htmlFor: "name", className: "".concat(styles.fieldLabel, " form-field-label"), children: ["Name ", _jsx("span", { className: "text-red-500", children: "*" })] }), _jsx(SolidInput, { disabled: true, type: "text", id: "name", name: "name", onChange: formik.handleChange, value: formik.values.name, className: styles.fieldInput }), isFormFieldValid(formik, "name") && (_jsx("p", { className: styles.fieldError, children: (_e = (_d = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _d === void 0 ? void 0 : _d.name) === null || _e === void 0 ? void 0 : _e.toString() }))] }) })] }), _jsxs("div", { className: "mt-4 flex flex-wrap -mx-2 -mt-2", children: [_jsx("div", { className: "field w-full px-2 pt-2 pb-3 lg:w-1/2 lg:pb-0", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsx("label", { htmlFor: "menuSequenceNumber", className: "".concat(styles.fieldLabel, " form-field-label"), children: "Menu Sequence Number" }), _jsx(SolidInput, { id: "menuSequenceNumber", type: "number", onChange: formik.handleChange, min: 0, value: formik.values.menuSequenceNumber, className: styles.fieldInput }), isFormFieldValid(formik, "menuSequenceNumber") && (_jsx("p", { className: styles.fieldError, children: (_g = (_f = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _f === void 0 ? void 0 : _f.menuSequenceNumber) === null || _g === void 0 ? void 0 : _g.toString() }))] }) }), _jsx("div", { className: "field w-full px-2 pt-2 lg:w-1/2", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsxs("label", { htmlFor: "description", className: "".concat(styles.fieldLabel, " form-field-label"), children: ["Description ", _jsx("span", { className: "text-red-500", children: "*" })] }), _jsx(SolidTextarea, { id: "description", name: "description", onChange: formik.handleChange, value: formik.values.description, className: styles.fieldTextarea, rows: 5, cols: 30 }), isFormFieldValid(formik, "description") && (_jsx("p", { className: styles.fieldError, children: (_j = (_h = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _h === void 0 ? void 0 : _h.description) === null || _j === void 0 ? void 0 : _j.toString() }))] }) })] }), _jsx("div", { className: "mt-4 flex flex-wrap -mx-2 -mt-2", children: _jsx("div", { className: "field w-full px-2 pt-2", children: _jsxs("div", { className: "".concat(styles.fieldWrapper, " relative"), children: [_jsxs("label", { htmlFor: "menuIconUrl", className: "".concat(styles.fieldLabel, " form-field-label"), children: ["Menu Icon ", _jsx("small", { className: "text-red-500 helper-text", children: "(only png and jpeg are allowed)" })] }), _jsxs("div", __assign({}, getRootPropsmenuIcon(), { className: "solid-dropzone-wrapper", children: [_jsx("input", __assign({}, getInputPropsmenuIcon())), _jsx(DropzonePlaceholder, {})] })), isFormFieldValid(formik, "menuIconUrl") && (_jsx(SolidMessage, { severity: "error", text: (_l = (_k = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _k === void 0 ? void 0 : _k.menuIconUrl) === null || _l === void 0 ? void 0 : _l.toString(), className: "mt-2" })), fileDetails && (_jsxs("div", { className: "solid-file-upload-wrapper solid-module-menu-icon-upload mt-4", children: [_jsxs("div", { className: "solid-module-menu-icon-row flex items-center gap-2", children: [_jsx(FileReaderExt, { fileDetails: fileDetails }), _jsxs("div", { className: "solid-module-menu-icon-meta flex w-full flex-col gap-1", children: [_jsxs("div", { className: "solid-module-menu-icon-header flex items-center justify-between", children: [_jsx("div", { className: "font-bold solid-module-mobile-text-wrapper", children: fileDetails.name }), _jsxs("div", { className: "solid-module-menu-icon-actions flex items-center gap-2", children: [typeof menuIconPreview === "string" && (_jsx("button", { type: "button", className: "solid-file-icon-btn", "aria-label": "View uploaded menu icon", title: "View icon", onClick: function () { return setIsMenuIconLightboxOpen(true); }, children: _jsx(SolidIcon, { name: "si-eye", "aria-hidden": true }) })), _jsx("button", { type: "button", className: "solid-file-icon-btn is-danger solid-module-upload-remove", "aria-label": "Remove uploaded menu icon", onClick: handleCancelUpload, children: _jsx(SolidIcon, { name: "si-times", "aria-hidden": true }) })] })] }), uploadCompleted ? (_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [totalSize, " of ", totalSize, _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "4", height: "4", viewBox: "0 0 4 4", fill: "none", children: _jsx("circle", { cx: "2", cy: "2", r: "2", fill: "#C1C1C1" }) }), _jsxs("svg", { xmlns: "http://www.w3.org/2000/svg", width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", children: [_jsx("mask", { id: "mask0_2480_8635", style: { maskType: 'alpha' }, maskUnits: "userSpaceOnUse", x: "0", y: "0", width: "20", height: "20", children: _jsx("rect", { width: "20", height: "20", fill: "#D9D9D9" }) }), _jsx("g", { mask: "url(#mask0_2480_8635)", children: _jsx("path", { d: "M9.16 12.76L13.39 8.53L12.55 7.69L9.16 11.08L7.45 9.37L6.61 10.21L9.16 12.76ZM10 16C9.17 16 8.39 15.8424 7.66 15.5272C6.93 15.2124 6.295 14.785 5.755 14.245C5.215 13.705 4.7876 13.07 4.4728 12.34C4.1576 11.61 4 10.83 4 10C4 9.17 4.1576 8.39 4.4728 7.66C4.7876 6.93 5.215 5.215 5.755 5.755C6.295 5.215 6.93 4.7874 7.66 4.4722C8.39 4.1574 9.17 4 10 4C10.83 4 11.61 4.1574 12.34 4.4722C13.07 4.7874 13.705 5.215 14.245 5.755C14.785 6.295 15.2124 6.93 15.5272 7.66C15.8424 8.39 16 9.17 16 10C16 10.83 15.8424 11.61 15.5272 12.34C15.2124 13.07 14.785 13.705 14.245 14.245C13.705 14.785 13.07 15.2124 12.34 15.5272C11.61 15.8424 10.83 16 10 16Z", fill: "var(--primary-color, var(--primary))" }) })] }), "Completed"] })) : (_jsxs("div", { className: "flex items-center gap-2 text-sm", children: [uploadedSize, " of ", totalSize, _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "4", height: "4", viewBox: "0 0 4 4", fill: "none", children: _jsx("circle", { cx: "2", cy: "2", r: "2", fill: "#C1C1C1" }) }), _jsx("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", children: _jsx("path", { d: "M7.375 10.5V5.40625L5.75 7.03125L4.875 6.125L8 3L11.125 6.125L10.25 7.03125L8.625 5.40625V10.5H7.375ZM4.25 13C3.90625 13 3.61198 12.8776 3.36719 12.6328C3.1224 12.388 3 12.0938 3 11.75V9.875H4.25V11.75H11.75V9.875H13V11.75C13 12.0938 12.8776 12.388 12.6328 12.6328C12.388 12.8776 12.0938 13 11.75 13H4.25Z", fill: "black" }) }), "Uploading $", uploadProgress, "% Completed"] }))] })] }), _jsx(SolidProgressBar, { value: uploadProgress, showValue: false, style: { height: 4 }, className: "mt-2" })] }))] }) }) })] }), _jsx(SolidPanel, { header: "Datasource Configuration", className: "solid-column-panel mt-4", children: _jsxs("div", { className: "mt-3 flex flex-wrap -mx-2 -mt-2", children: [_jsx("div", { className: "field w-full px-2 pt-2", children: _jsxs("div", { className: styles.fieldWrapper, children: [_jsx("label", { htmlFor: "defaultDataSource", className: "".concat(styles.fieldLabel, " form-field-label"), children: "Default Data Source" }), _jsx("div", { className: "solid-standard-autocomplete w-full", children: _jsx(SolidAutocomplete, { disabled: !!data, value: defaultDataSourceField.selectedItem, suggestions: defaultDataSourceField.filteredItems, completeMethod: defaultDataSourceField.searchItems, onChange: defaultDataSourceField.handleChange, dropdown: true, portal: true, field: "label", className: "w-full" }) }), isFormFieldValid(formik, "defaultDataSource") && (_jsx("p", { className: styles.fieldError, children: (_o = (_m = formik === null || formik === void 0 ? void 0 : formik.errors) === null || _m === void 0 ? void 0 : _m.defaultDataSource) === null || _o === void 0 ? void 0 : _o.toString() }))] }) }), !isCreateMode ? (_jsx("div", { className: "field w-full px-2 pt-4", children: _jsxs("div", { className: "solid-module-automap-panel", children: [_jsxs("div", { className: "solid-module-automap-copy", children: [_jsx("div", { className: "solid-module-automap-eyebrow", children: "Legacy Table Mapping" }), _jsx("h4", { children: "Auto map datasource tables into this module" }), _jsx("p", { children: "Open the datasource introspection workspace to inspect legacy tables, preview field mappings, review metadata JSON changes, and generate the supporting migration template for SolidX system fields." }), _jsxs("ul", { className: "solid-module-automap-list", children: [_jsx("li", { children: "Review tables available on the selected datasource." }), _jsx("li", { children: "Control which legacy columns are included in each mapping session." }), _jsx("li", { children: "Preview the metadata JSON and migration output before saving." })] })] }), _jsx("div", { className: "solid-module-automap-actions", children: _jsx(SolidButton, { type: "button", size: "sm", onClick: function () { return router.push("/admin/core/solid-core/modules/".concat(data === null || data === void 0 ? void 0 : data.id, "/datasource-introspection")); }, children: "Auto Map Tables" }) })] }) })) : null] }) })] }) }), _jsx(SolidFormFooter, { params: params }), typeof menuIconPreview === "string" && (_jsx(SolidLightbox, { open: isMenuIconLightboxOpen, slides: [{ src: menuIconPreview }], onClose: function () { return setIsMenuIconLightboxOpen(false); } }))] }));
|
|
323
323
|
return (_jsx("div", { className: "solid-form-wrapper", children: _jsxs("div", { className: "solid-form-section", style: { borderRight: params.embeded !== true ? '1px solid var(--primary-light-color)' : '' }, children: [isCreateMode && (_jsxs("div", { className: "solid-form-header flex flex-wrap items-center justify-between gap-3", children: [_jsx("div", { className: "flex flex-col gap-1" }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(SolidButton, { variant: "outline", size: "sm", type: "button", onClick: handleCancel, className: "bg-[var(--primary-color-text)]", children: "Cancel" }), shouldShowGeneralSave && formik.dirty && (_jsx(SolidButton, { size: "sm", type: "submit", form: "module-general-info-form", onClick: function () { return showError(); }, children: "Save" }))] })] })), isCreateMode ? (generalInfoContent) : (_jsx("div", { className: "solid-module-form-workspace", children: _jsx(SolidTabGroup, { value: activeWorkspaceTab, onValueChange: setActiveWorkspaceTab, className: "solid-module-form-tabs", listClassName: "solid-module-form-tablist", panelClassName: "solid-module-form-tabpanel", tabs: [
|
|
324
324
|
{
|
|
325
325
|
value: "general",
|