@solidxai/core-ui 0.1.14-beta.4 → 0.1.14-beta.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/auth/AuthLayout.js +1 -1
- package/dist/components/auth/AuthLayout.js.map +1 -1
- package/dist/components/auth/AuthLayout.tsx +2 -2
- package/dist/components/common/SettingsComponent.module.css +4 -1
- package/dist/components/common/SolidFieldTooltip.d.ts.map +1 -1
- package/dist/components/common/SolidFieldTooltip.js +1 -1
- package/dist/components/common/SolidFieldTooltip.js.map +1 -1
- package/dist/components/common/SolidFieldTooltip.tsx +1 -0
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +7 -6
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +7 -1
- package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
- package/dist/components/common/SolidThemeProvider.js +127 -11
- package/dist/components/common/SolidThemeProvider.js.map +1 -1
- package/dist/components/common/SolidThemeProvider.tsx +104 -22
- package/dist/components/core/card/CardGrid.d.ts +1 -1
- package/dist/components/core/card/CardGrid.d.ts.map +1 -1
- package/dist/components/core/card/CardGrid.js +2 -2
- package/dist/components/core/card/CardGrid.js.map +1 -1
- package/dist/components/core/card/CardGrid.tsx +4 -0
- package/dist/components/core/card/CardItem.d.ts +2 -0
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +4 -3
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +15 -0
- package/dist/components/core/card/SolidCardView.d.ts +28 -1
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +99 -44
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +124 -7
- package/dist/components/core/card/SolidCardViewConfigure.d.ts +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.js +15 -6
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +34 -0
- package/dist/components/core/card/cardViewRegistry.d.ts +7 -0
- package/dist/components/core/card/cardViewRegistry.d.ts.map +1 -0
- package/dist/components/core/card/cardViewRegistry.js +17 -0
- package/dist/components/core/card/cardViewRegistry.js.map +1 -0
- package/dist/components/core/card/cardViewRegistry.ts +23 -0
- package/dist/components/core/common/PDFViewer.d.ts +9 -5
- package/dist/components/core/common/PDFViewer.d.ts.map +1 -1
- package/dist/components/core/common/PDFViewer.js +10 -102
- package/dist/components/core/common/PDFViewer.js.map +1 -1
- package/dist/components/core/common/PDFViewer.tsx +29 -88
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts +12 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.d.ts.map +1 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.js +50 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.js.map +1 -0
- package/dist/components/core/common/SolidCollectionRowActionMenuItems.tsx +91 -0
- package/dist/components/core/common/SolidCreateButton.d.ts.map +1 -1
- package/dist/components/core/common/SolidCreateButton.js +2 -2
- package/dist/components/core/common/SolidCreateButton.js.map +1 -1
- package/dist/components/core/common/SolidCreateButton.tsx +22 -2
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +137 -134
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +127 -119
- package/dist/components/core/form/SolidFormActionHeader.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.js +21 -21
- package/dist/components/core/form/SolidFormActionHeader.js.map +1 -1
- package/dist/components/core/form/SolidFormActionHeader.tsx +62 -53
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +5 -2
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +7 -2
- 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 +2 -2
- package/dist/components/core/kanban/KanbanBoard.js.map +1 -1
- package/dist/components/core/kanban/KanbanBoard.tsx +3 -1
- package/dist/components/core/kanban/KanbanCard.d.ts +2 -0
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +4 -2
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +14 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts +3 -1
- package/dist/components/core/kanban/KanbanColumn.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.js +2 -2
- package/dist/components/core/kanban/KanbanColumn.js.map +1 -1
- package/dist/components/core/kanban/KanbanColumn.tsx +4 -2
- package/dist/components/core/kanban/SolidKanbanView.d.ts +25 -1
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +89 -50
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +82 -9
- package/dist/components/core/kanban/kanbanViewRegistry.d.ts +7 -0
- package/dist/components/core/kanban/kanbanViewRegistry.d.ts.map +1 -0
- package/dist/components/core/kanban/kanbanViewRegistry.js +17 -0
- package/dist/components/core/kanban/kanbanViewRegistry.js.map +1 -0
- package/dist/components/core/kanban/kanbanViewRegistry.ts +23 -0
- package/dist/components/core/list/PLAN.md +1 -1
- package/dist/components/core/list/SolidListView.d.ts +11 -0
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +11 -6
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +88 -45
- package/dist/components/core/list/SolidListViewConfigure.js +1 -1
- package/dist/components/core/list/SolidListViewConfigure.js.map +1 -1
- package/dist/components/core/list/SolidListViewConfigure.tsx +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.d.ts.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js +2 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.js.map +1 -1
- package/dist/components/core/list/columns/relations/SolidRelationManyToOneColumn.tsx +2 -1
- package/dist/components/core/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +2 -1
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +2 -0
- package/dist/components/core/model/FieldMetaData.d.ts +1 -1
- package/dist/components/core/model/FieldMetaData.d.ts.map +1 -1
- package/dist/components/core/model/FieldMetaData.js +8 -8
- package/dist/components/core/model/FieldMetaData.js.map +1 -1
- package/dist/components/core/model/FieldMetaData.tsx +2 -2
- package/dist/components/core/model/FieldMetaDataForm.css +119 -0
- package/dist/components/core/model/FieldMetaDataForm.js +1 -1
- package/dist/components/core/model/FieldMetaDataForm.js.map +1 -1
- package/dist/components/core/model/FieldMetaDataForm.tsx +1 -1
- package/dist/components/core/module/ModuleMetadataExplorer.css +64 -0
- package/dist/components/core/module/ModulePackageDialog.css +117 -12
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +6 -3
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +35 -13
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +15 -10
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +15 -8
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +1 -18
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +3 -21
- package/dist/helpers/resolveActiveUserId.d.ts +13 -0
- package/dist/helpers/resolveActiveUserId.d.ts.map +1 -0
- package/dist/helpers/resolveActiveUserId.js +86 -0
- package/dist/helpers/resolveActiveUserId.js.map +1 -0
- package/dist/helpers/resolveActiveUserId.ts +90 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/index.ts +5 -0
- package/dist/resources/globals.css +15 -0
- package/dist/resources/solid-custom.css +18 -1
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/resources/themes/solid-dark-enterprise/theme-variables.css +28 -0
- package/dist/resources/themes/solid-dark-enterprise/theme.css +926 -0
- package/dist/resources/themes/solid-dark-modern/theme-variables.css +27 -0
- package/dist/resources/themes/solid-dark-modern/theme.css +600 -0
- package/dist/resources/themes/solid-light-enterprise/theme-variables.css +28 -0
- package/dist/resources/themes/solid-light-enterprise/theme.css +930 -0
- package/dist/resources/themes/solid-light-modern/theme-variables.css +31 -0
- package/dist/resources/themes/solid-light-modern/theme.css +1041 -0
- package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.js +15 -2
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +17 -2
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.js +31 -3
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.tsx +39 -11
- package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +15 -2
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +17 -2
- package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +5 -13
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +5 -15
- package/dist/theme/theme-registry.d.ts +6 -0
- package/dist/theme/theme-registry.d.ts.map +1 -0
- package/dist/theme/theme-registry.js +65 -0
- package/dist/theme/theme-registry.js.map +1 -0
- package/dist/theme/theme-registry.ts +78 -0
- package/dist/types/solid-core.d.ts +8 -0
- package/package.json +1 -1
|
@@ -3,7 +3,9 @@ import { createSolidEntityApi } from "../../../redux/api/solidEntityApi";
|
|
|
3
3
|
import { useGetSolidViewLayoutQuery } from "../../../redux/api/solidViewApi";
|
|
4
4
|
import { useLazyCheckIfPermissionExistsQuery } from "../../../redux/api/userApi";
|
|
5
5
|
import qs from "qs";
|
|
6
|
-
import { useEffect, useRef, useState } from "react";
|
|
6
|
+
import { forwardRef, useEffect, useImperativeHandle, useRef, useState } from "react";
|
|
7
|
+
import { useSession } from "../../../hooks/useSession";
|
|
8
|
+
import { resolveActiveUserId, resolveSavedFilterVariables } from "../../../helpers/resolveActiveUserId";
|
|
7
9
|
import { SolidLightbox } from "../../shad-cn-ui/SolidLightbox";
|
|
8
10
|
import type { SolidLightboxSlide } from "../../shad-cn-ui/SolidLightbox";
|
|
9
11
|
import { getMediaTypeFromUrl } from "../../../helpers/mediaType";
|
|
@@ -35,11 +37,42 @@ import {
|
|
|
35
37
|
SolidSelect,
|
|
36
38
|
} from "../../shad-cn-ui";
|
|
37
39
|
import { showToast } from "../../../redux/features/toastSlice";
|
|
40
|
+
import { isButtonVisibleInCurrentEnv } from "../../../helpers/buttonEnvironment";
|
|
41
|
+
import { useHandleListCustomButtonClick } from "../../common/useHandleListCustomButtonClick";
|
|
42
|
+
import { SolidListViewHeaderButton } from "../list/SolidListViewHeaderButton";
|
|
38
43
|
|
|
39
44
|
type SolidCardViewParams = {
|
|
40
45
|
moduleName: string;
|
|
41
46
|
modelName: string;
|
|
42
47
|
embeded: boolean;
|
|
48
|
+
customFilter?: any;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
type SolidCardFilterInput = {
|
|
52
|
+
custom_filter_predicate?: any;
|
|
53
|
+
search_predicate?: any;
|
|
54
|
+
saved_filter_predicate?: any;
|
|
55
|
+
predefined_search_predicate?: any;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export type SolidCardViewHandle = {
|
|
59
|
+
refresh: () => void;
|
|
60
|
+
clearFilters: () => void;
|
|
61
|
+
applyFilter: (filter: SolidCardFilterInput) => void;
|
|
62
|
+
getSavedFilters: () => any[];
|
|
63
|
+
applySavedFilter: (name: string, variables?: Record<string, any>) => boolean;
|
|
64
|
+
setPagination: (nextFirst: number, nextRows: number) => void;
|
|
65
|
+
setShowArchived: (value: boolean) => void;
|
|
66
|
+
getState: () => {
|
|
67
|
+
first: number;
|
|
68
|
+
rows: number;
|
|
69
|
+
showArchived: boolean;
|
|
70
|
+
filters: any;
|
|
71
|
+
filterPredicates: any;
|
|
72
|
+
cards: any[];
|
|
73
|
+
totalRecords: number;
|
|
74
|
+
loading: boolean;
|
|
75
|
+
};
|
|
43
76
|
};
|
|
44
77
|
|
|
45
78
|
const DEFAULT_RECORD_SORT = ["id:desc"];
|
|
@@ -104,7 +137,9 @@ const deriveCardViewConfig = (solidCardViewMetaData: any) => {
|
|
|
104
137
|
};
|
|
105
138
|
};
|
|
106
139
|
|
|
107
|
-
export const SolidCardView = (params
|
|
140
|
+
export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams>((params, ref) => {
|
|
141
|
+
const session = useSession();
|
|
142
|
+
const user = session?.data?.user;
|
|
108
143
|
const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);
|
|
109
144
|
const dispatch = useDispatch();
|
|
110
145
|
const pathname = usePathname();
|
|
@@ -138,6 +173,7 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
138
173
|
const [showArchived, setShowArchived] = useState(false);
|
|
139
174
|
const [selectedCardForDelete, setSelectedCardForDelete] = useState<any>(null);
|
|
140
175
|
const [isDeleteDialogVisible, setDeleteDialogVisible] = useState(false);
|
|
176
|
+
const handleCustomButtonClick = useHandleListCustomButtonClick();
|
|
141
177
|
|
|
142
178
|
const lightboxSlides: SolidLightboxSlide[] = Array.isArray(lightboxUrls)
|
|
143
179
|
? lightboxUrls
|
|
@@ -183,6 +219,8 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
183
219
|
);
|
|
184
220
|
|
|
185
221
|
const {data: solidCardViewMetaDataResponse,isLoading: solidCardViewMetaDataIsLoading,} = useGetSolidViewLayoutQuery(cardViewMetaDataQs);
|
|
222
|
+
const visibleHeaderButtons = (solidCardViewMetaDataResponse?.data?.solidView?.layout?.attrs?.headerButtons ?? [])
|
|
223
|
+
.filter((button: any) => isButtonVisibleInCurrentEnv(button?.attrs));
|
|
186
224
|
|
|
187
225
|
const editBaseUrl = normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || "form");
|
|
188
226
|
const recordClickAction = resolveRecordClickAction(solidSettingsMap, {
|
|
@@ -250,7 +288,11 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
250
288
|
restoredFilter.$and.push(persistedFilterObject.search_predicate);
|
|
251
289
|
}
|
|
252
290
|
if (persistedFilterObject?.saved_filter_predicate) {
|
|
253
|
-
restoredFilter.$and.push(
|
|
291
|
+
restoredFilter.$and.push(resolveSavedFilterVariables(
|
|
292
|
+
persistedFilterObject.saved_filter_predicate,
|
|
293
|
+
user?.id,
|
|
294
|
+
persistedFilterObject.saved_filter_variables || {}
|
|
295
|
+
).value);
|
|
254
296
|
}
|
|
255
297
|
if (persistedFilterObject?.predefined_search_predicate) {
|
|
256
298
|
restoredFilter.$and.push(persistedFilterObject.predefined_search_predicate);
|
|
@@ -359,7 +401,8 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
359
401
|
updatedFilter.$and.push(filterPredicates.search_predicate);
|
|
360
402
|
}
|
|
361
403
|
if (filterPredicates.saved_filter_predicate) {
|
|
362
|
-
updatedFilter.$and.push(filterPredicates.
|
|
404
|
+
updatedFilter.$and.push(filterPredicates.resolved_saved_filter_predicate ||
|
|
405
|
+
resolveActiveUserId(filterPredicates.saved_filter_predicate, user?.id));
|
|
363
406
|
}
|
|
364
407
|
if (filterPredicates.predefined_search_predicate) {
|
|
365
408
|
updatedFilter.$and.push(filterPredicates.predefined_search_predicate);
|
|
@@ -376,7 +419,9 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
376
419
|
custom_filter_predicate: filterPredicates.custom_filter_predicate || {},
|
|
377
420
|
search_predicate: filterPredicates.search_predicate || {},
|
|
378
421
|
saved_filter_predicate: filterPredicates.saved_filter_predicate || {},
|
|
422
|
+
saved_filter_variables: filterPredicates.saved_filter_variables || {},
|
|
379
423
|
predefined_search_predicate: filterPredicates.predefined_search_predicate || {},
|
|
424
|
+
predefined_search_chip: filterPredicates.predefined_search_chip || null,
|
|
380
425
|
});
|
|
381
426
|
};
|
|
382
427
|
|
|
@@ -389,6 +434,46 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
389
434
|
await loadCards(filters);
|
|
390
435
|
};
|
|
391
436
|
|
|
437
|
+
const cloneCards = () => {
|
|
438
|
+
if (typeof structuredClone === "function") return structuredClone(cards);
|
|
439
|
+
return JSON.parse(JSON.stringify(cards));
|
|
440
|
+
};
|
|
441
|
+
|
|
442
|
+
useImperativeHandle(ref, () => ({
|
|
443
|
+
refresh: () => {
|
|
444
|
+
void loadCards(filters);
|
|
445
|
+
},
|
|
446
|
+
clearFilters: () => {
|
|
447
|
+
setFirst(0);
|
|
448
|
+
setFilters(params.customFilter || { $and: [] });
|
|
449
|
+
setFilterPredicates(null);
|
|
450
|
+
solidGlobalSearchElementRef.current?.clearFilter?.();
|
|
451
|
+
},
|
|
452
|
+
applyFilter: (filter) => {
|
|
453
|
+
void handleApplyCustomFilter(filter);
|
|
454
|
+
},
|
|
455
|
+
getSavedFilters: () => solidGlobalSearchElementRef.current?.getSavedFilters?.() ?? [],
|
|
456
|
+
applySavedFilter: (name, variables) =>
|
|
457
|
+
solidGlobalSearchElementRef.current?.applySavedFilterByName?.(name, variables) ?? false,
|
|
458
|
+
setPagination: (nextFirst, nextRows) => {
|
|
459
|
+
setFirst(nextFirst);
|
|
460
|
+
setRows(nextRows);
|
|
461
|
+
},
|
|
462
|
+
setShowArchived: (value) => {
|
|
463
|
+
setShowArchived(value);
|
|
464
|
+
},
|
|
465
|
+
getState: () => ({
|
|
466
|
+
first,
|
|
467
|
+
rows,
|
|
468
|
+
showArchived,
|
|
469
|
+
filters,
|
|
470
|
+
filterPredicates,
|
|
471
|
+
cards: cloneCards(),
|
|
472
|
+
totalRecords,
|
|
473
|
+
loading,
|
|
474
|
+
}),
|
|
475
|
+
}), [first, rows, showArchived, filters, filterPredicates, cards, totalRecords, loading]);
|
|
476
|
+
|
|
392
477
|
const handleRecoverRecord = async (record: any) => {
|
|
393
478
|
if (!record?.id) return;
|
|
394
479
|
|
|
@@ -493,7 +578,18 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
493
578
|
</div>
|
|
494
579
|
)} */}
|
|
495
580
|
{/* <p className="m-0 view-title solid-text-wrapper">{cardViewTitle}</p> */}
|
|
496
|
-
<div className=
|
|
581
|
+
<div className="max-[576px]:hidden sm:hidden lg:flex w-full mt-3 lg:mt-0 lg:min-w-0">
|
|
582
|
+
<SolidGlobalSearchElement
|
|
583
|
+
viewType="card"
|
|
584
|
+
showSaveFilterPopup={showSaveFilterPopup}
|
|
585
|
+
setShowSaveFilterPopup={setShowSaveFilterPopup}
|
|
586
|
+
ref={solidGlobalSearchElementRef}
|
|
587
|
+
viewData={solidCardViewMetaDataResponse}
|
|
588
|
+
handleApplyCustomFilter={handleApplyCustomFilter}
|
|
589
|
+
filterPredicates={filterPredicates}
|
|
590
|
+
/>
|
|
591
|
+
</div>
|
|
592
|
+
<div className={`${showGlobalSearchElement ? "lg:flex" : "hidden"} lg:hidden mt-3 lg:mt-0 w-full lg:min-w-0`}>
|
|
497
593
|
<SolidGlobalSearchElement
|
|
498
594
|
viewType="card"
|
|
499
595
|
showSaveFilterPopup={showSaveFilterPopup}
|
|
@@ -508,7 +604,7 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
508
604
|
|
|
509
605
|
<div className="flex items-center solid-header-buttons-wrapper solid-list-toolbar-actions lg:ml-auto">
|
|
510
606
|
<SolidHeaderRequestStatus label={headerRequestStatusLabel} />
|
|
511
|
-
<div className="
|
|
607
|
+
<div className="solid-list-search-toggle">
|
|
512
608
|
<SolidButton
|
|
513
609
|
type="button"
|
|
514
610
|
variant="outline"
|
|
@@ -520,6 +616,22 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
520
616
|
/>
|
|
521
617
|
</div>
|
|
522
618
|
|
|
619
|
+
<div className="solid-header-buttons-wrapper hidden items-center lg:flex">
|
|
620
|
+
{visibleHeaderButtons
|
|
621
|
+
.filter((button: any) => button?.attrs?.actionInContextMenu !== true)
|
|
622
|
+
.map((button: any, index: number) => (
|
|
623
|
+
<SolidListViewHeaderButton
|
|
624
|
+
key={button?.attrs?.action ?? index}
|
|
625
|
+
button={button}
|
|
626
|
+
params={params}
|
|
627
|
+
solidListViewMetaData={solidCardViewMetaDataResponse}
|
|
628
|
+
handleCustomButtonClick={handleCustomButtonClick}
|
|
629
|
+
selectedRecords={[]}
|
|
630
|
+
filters={filters}
|
|
631
|
+
/>
|
|
632
|
+
))}
|
|
633
|
+
</div>
|
|
634
|
+
|
|
523
635
|
{actionsAllowed.includes(`${permissionExpression(params.modelName, "create")}`) &&
|
|
524
636
|
solidCardViewMetaDataResponse?.data?.solidView?.layout?.attrs?.create !== false && (
|
|
525
637
|
<SolidCreateButton
|
|
@@ -550,6 +662,9 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
550
662
|
setShowSaveFilterPopup={setShowSaveFilterPopup}
|
|
551
663
|
filters={filters}
|
|
552
664
|
handleRefreshView={handleFetchUpdatedRecords}
|
|
665
|
+
params={params}
|
|
666
|
+
headerButtons={visibleHeaderButtons}
|
|
667
|
+
handleCustomButtonClick={handleCustomButtonClick}
|
|
553
668
|
/>
|
|
554
669
|
</div>
|
|
555
670
|
</div>
|
|
@@ -584,6 +699,8 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
584
699
|
setLightboxUrls={setLightboxUrls}
|
|
585
700
|
setOpenLightbox={setOpenLightbox}
|
|
586
701
|
showArchived={showArchived}
|
|
702
|
+
params={params}
|
|
703
|
+
handleCustomButtonClick={handleCustomButtonClick}
|
|
587
704
|
/>
|
|
588
705
|
)}
|
|
589
706
|
</div>
|
|
@@ -673,4 +790,4 @@ export const SolidCardView = (params: SolidCardViewParams) => {
|
|
|
673
790
|
</SolidDialog>
|
|
674
791
|
</div>
|
|
675
792
|
);
|
|
676
|
-
};
|
|
793
|
+
});
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SolidCardViewConfigure: ({ solidCardViewMetaData, modelName, actionsAllowed, viewModes, setShowArchived, showArchived, setLayoutDialogVisible, setShowSaveFilterPopup, filters, handleRefreshView, }: any) => import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export declare const SolidCardViewConfigure: ({ solidCardViewMetaData, modelName, actionsAllowed, viewModes, setShowArchived, showArchived, setLayoutDialogVisible, setShowSaveFilterPopup, filters, handleRefreshView, params, headerButtons, handleCustomButtonClick, }: any) => import("react/jsx-runtime").JSX.Element;
|
|
2
2
|
//# sourceMappingURL=SolidCardViewConfigure.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidCardViewConfigure.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/SolidCardViewConfigure.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SolidCardViewConfigure.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/SolidCardViewConfigure.tsx"],"names":[],"mappings":"AAwDA,eAAO,MAAM,sBAAsB,gOAchC,GAAG,4CAuPL,CAAC"}
|
|
@@ -19,6 +19,7 @@ import { useEffect, useState } from "react";
|
|
|
19
19
|
import { SolidExport } from "../../../components/common/SolidExport";
|
|
20
20
|
import { SolidGenericImport } from "../common/SolidGenericImport/SolidGenericImport";
|
|
21
21
|
import { SolidDialog, SolidDialogBody, SolidDialogClose, SolidDialogDescription, SolidDialogHeader, SolidDialogSeparator, SolidDialogTitle, SolidDropdownMenu, SolidDropdownMenuCheckboxItem, SolidDropdownMenuContent, SolidDropdownMenuItem, SolidDropdownMenuLabel, SolidDropdownMenuRadioGroup, SolidDropdownMenuRadioItem, SolidDropdownMenuSeparator, SolidDropdownMenuSub, SolidDropdownMenuSubContent, SolidDropdownMenuSubTrigger, SolidDropdownMenuTrigger, SolidIcon, } from "../../shad-cn-ui";
|
|
22
|
+
import { SolidListViewHeaderContextMenuButton } from "../list/SolidListViewHeaderContextMenuButton";
|
|
22
23
|
var normalizeViewModes = function (viewModes) {
|
|
23
24
|
if (viewModes === void 0) { viewModes = []; }
|
|
24
25
|
return viewModes
|
|
@@ -40,14 +41,14 @@ var normalizeViewModes = function (viewModes) {
|
|
|
40
41
|
};
|
|
41
42
|
export var SolidCardViewConfigure = function (_a) {
|
|
42
43
|
var _b, _c, _d;
|
|
43
|
-
var solidCardViewMetaData = _a.solidCardViewMetaData, modelName = _a.modelName, actionsAllowed = _a.actionsAllowed, viewModes = _a.viewModes, setShowArchived = _a.setShowArchived, showArchived = _a.showArchived, setLayoutDialogVisible = _a.setLayoutDialogVisible, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filters = _a.filters, handleRefreshView = _a.handleRefreshView;
|
|
44
|
+
var solidCardViewMetaData = _a.solidCardViewMetaData, modelName = _a.modelName, actionsAllowed = _a.actionsAllowed, viewModes = _a.viewModes, setShowArchived = _a.setShowArchived, showArchived = _a.showArchived, setLayoutDialogVisible = _a.setLayoutDialogVisible, setShowSaveFilterPopup = _a.setShowSaveFilterPopup, filters = _a.filters, handleRefreshView = _a.handleRefreshView, params = _a.params, _e = _a.headerButtons, headerButtons = _e === void 0 ? [] : _e, handleCustomButtonClick = _a.handleCustomButtonClick;
|
|
44
45
|
var pathname = usePathname();
|
|
45
46
|
var router = useRouter();
|
|
46
47
|
var searchParams = useSearchParams();
|
|
47
|
-
var
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
48
|
+
var _f = useState(""), view = _f[0], setView = _f[1];
|
|
49
|
+
var _g = useState(false), isCogMenuOpen = _g[0], setIsCogMenuOpen = _g[1];
|
|
50
|
+
var _h = useState(false), openImportDialog = _h[0], setOpenImportDialog = _h[1];
|
|
51
|
+
var _j = useState(false), exportView = _j[0], setExportView = _j[1];
|
|
51
52
|
var visibleViewModes = normalizeViewModes(Array.isArray(viewModes) ? viewModes : []);
|
|
52
53
|
var showSwitchType = visibleViewModes.length > 1;
|
|
53
54
|
useEffect(function () {
|
|
@@ -103,13 +104,21 @@ export var SolidCardViewConfigure = function (_a) {
|
|
|
103
104
|
var canCustomizeLayout = actionsAllowed.includes("".concat(permissionExpression("userViewMetadata", "create")));
|
|
104
105
|
var canSaveCustomFilter = actionsAllowed.includes("".concat(permissionExpression("savedFilters", "create")));
|
|
105
106
|
var canShowArchivedRecords = Boolean((_d = (_c = (_b = solidCardViewMetaData === null || solidCardViewMetaData === void 0 ? void 0 : solidCardViewMetaData.data) === null || _b === void 0 ? void 0 : _b.solidView) === null || _c === void 0 ? void 0 : _c.model) === null || _d === void 0 ? void 0 : _d.enableSoftDelete);
|
|
107
|
+
var contextMenuHeaderButtons = headerButtons.filter(function (button) { var _a; return ((_a = button === null || button === void 0 ? void 0 : button.attrs) === null || _a === void 0 ? void 0 : _a.actionInContextMenu) === true; });
|
|
108
|
+
var mobileOnlyHeaderButtons = headerButtons.filter(function (button) { var _a; return ((_a = button === null || button === void 0 ? void 0 : button.attrs) === null || _a === void 0 ? void 0 : _a.actionInContextMenu) !== true; });
|
|
106
109
|
return (_jsxs("div", { className: "position-relative", children: [_jsxs(SolidDropdownMenu, { open: isCogMenuOpen, onOpenChange: setIsCogMenuOpen, children: [_jsx(SolidDropdownMenuTrigger, { asChild: true, children: _jsx("button", { type: "button", className: "solid-icon-button solid-header-cog-trigger", "aria-label": "Open card options", children: _jsx(SolidIcon, { name: "si-cog", "aria-hidden": true }) }) }), _jsxs(SolidDropdownMenuContent, { className: "listview-cogwheel-panel", children: [canImport && (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () {
|
|
107
110
|
setOpenImportDialog(true);
|
|
108
111
|
setIsCogMenuOpen(false);
|
|
109
112
|
}, children: [_jsx(SolidIcon, { name: "si-download", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Import" })] })), canExport && (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () {
|
|
110
113
|
setExportView(true);
|
|
111
114
|
setIsCogMenuOpen(false);
|
|
112
|
-
}, children: [_jsx(SolidIcon, { name: "si-upload", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Export" })] })),
|
|
115
|
+
}, children: [_jsx(SolidIcon, { name: "si-upload", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Export" })] })), contextMenuHeaderButtons.map(function (button, index) {
|
|
116
|
+
var _a, _b;
|
|
117
|
+
return (_jsx(SolidListViewHeaderContextMenuButton, { button: button, params: params, solidListViewMetaData: solidCardViewMetaData, handleCustomButtonClick: handleCustomButtonClick, selectedRecords: [], filters: filters, onActionComplete: function () { return setIsCogMenuOpen(false); } }, (_b = (_a = button === null || button === void 0 ? void 0 : button.attrs) === null || _a === void 0 ? void 0 : _a.action) !== null && _b !== void 0 ? _b : index));
|
|
118
|
+
}), _jsx("div", { className: "lg:hidden flex flex-col gap-1", children: mobileOnlyHeaderButtons.map(function (button, index) {
|
|
119
|
+
var _a, _b;
|
|
120
|
+
return (_jsx(SolidListViewHeaderContextMenuButton, { button: button, params: params, solidListViewMetaData: solidCardViewMetaData, handleCustomButtonClick: handleCustomButtonClick, selectedRecords: [], filters: filters, onActionComplete: function () { return setIsCogMenuOpen(false); } }, "mobile-".concat((_b = (_a = button === null || button === void 0 ? void 0 : button.attrs) === null || _a === void 0 ? void 0 : _a.action) !== null && _b !== void 0 ? _b : index)));
|
|
121
|
+
}) }), canShowArchivedRecords && (_jsx(SolidDropdownMenuCheckboxItem, { className: showArchived ? "solid-archive-toggle-item-active" : undefined, checked: showArchived, icon: _jsx(SolidIcon, { name: "si-archive", className: "solid-header-action-button-icon solid-archive-toggle-icon", "aria-hidden": true }), onCheckedChange: function () { return setShowArchived(!showArchived); }, children: "Show Archived Rows" })), (canCustomizeLayout || canSaveCustomFilter || canShowArchivedRecords) && _jsx(SolidDropdownMenuSeparator, {}), canCustomizeLayout && (_jsxs(SolidDropdownMenuSub, { children: [_jsxs(SolidDropdownMenuSubTrigger, { className: "solid-header-dropdown-item", children: [_jsx(SolidIcon, { name: "si-sliders-h", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Layout" })] }), _jsxs(SolidDropdownMenuSubContent, { className: "customize-layout-panel", children: [showSwitchType && (_jsxs(_Fragment, { children: [_jsx(SolidDropdownMenuLabel, { children: "Switch Type" }), _jsx(SolidDropdownMenuRadioGroup, { value: view, onValueChange: handleViewChange, children: visibleViewModes.map(function (option) { return (_jsx(SolidDropdownMenuRadioItem, { value: option.type, children: option.label }, option.type)); }) }), _jsx(SolidDropdownMenuSeparator, {})] })), _jsxs(SolidDropdownMenuItem, { onSelect: function () {
|
|
113
122
|
setLayoutDialogVisible(true);
|
|
114
123
|
setIsCogMenuOpen(false);
|
|
115
124
|
}, children: [_jsx(SolidIcon, { name: "si-code", className: "solid-header-action-button-icon", "aria-hidden": true }), _jsx("span", { className: "solid-header-action-button-label", children: "Layout Editor" })] })] })] })), canSaveCustomFilter && (_jsxs(SolidDropdownMenuItem, { className: "solid-header-dropdown-item", onSelect: function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SolidCardViewConfigure.js","sourceRoot":"","sources":["../../../../src/components/core/card/SolidCardViewConfigure.tsx"],"names":[],"mappings":"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","sourcesContent":["import { canExportRecords, canImportRecords, permissionExpression } from \"../../../helpers/permissions\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport { useEffect, useState } from \"react\";\nimport { SolidExport } from \"../../../components/common/SolidExport\";\nimport { SolidGenericImport } from \"../common/SolidGenericImport/SolidGenericImport\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidDropdownMenu,\n SolidDropdownMenuCheckboxItem,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuLabel,\n SolidDropdownMenuRadioGroup,\n SolidDropdownMenuRadioItem,\n SolidDropdownMenuSeparator,\n SolidDropdownMenuSub,\n SolidDropdownMenuSubContent,\n SolidDropdownMenuSubTrigger,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\n\nconst normalizeViewModes = (viewModes: any[] = []) => {\n return viewModes\n .map((option: any) => {\n if (!option) return null;\n\n if (typeof option === \"string\") {\n return {\n type: option,\n label: option.charAt(0).toUpperCase() + option.slice(1),\n };\n }\n\n const type = option.type || option.value;\n if (!type) return null;\n\n return {\n ...option,\n type,\n label: option.label || (type.charAt(0).toUpperCase() + type.slice(1)),\n };\n })\n .filter(Boolean);\n};\n\nexport const SolidCardViewConfigure = ({\n solidCardViewMetaData,\n modelName,\n actionsAllowed,\n viewModes,\n setShowArchived,\n showArchived,\n setLayoutDialogVisible,\n setShowSaveFilterPopup,\n filters,\n handleRefreshView,\n}: any) => {\n const pathname = usePathname();\n const router = useRouter();\n const searchParams = useSearchParams();\n const [view, setView] = useState<string>(\"\");\n const [isCogMenuOpen, setIsCogMenuOpen] = useState(false);\n const [openImportDialog, setOpenImportDialog] = useState(false);\n const [exportView, setExportView] = useState(false);\n\n const visibleViewModes = normalizeViewModes(Array.isArray(viewModes) ? viewModes : []);\n const showSwitchType = visibleViewModes.length > 1;\n\n useEffect(() => {\n if (typeof pathname === \"string\") {\n const pathSegments = pathname.split(\"/\").filter(Boolean);\n if (pathSegments.length > 0) {\n setView(pathSegments[pathSegments.length - 1]);\n }\n }\n }, [pathname]);\n\n const handleViewChange = (newViewType: string) => {\n if (view === newViewType) return;\n\n const nextView = visibleViewModes.find((option: any) => option.type === newViewType);\n const pathSegments = pathname.split(\"/\").filter(Boolean);\n pathSegments[pathSegments.length - 1] = newViewType;\n const nextSearchParams = new URLSearchParams(searchParams.toString());\n const currentQuery = {\n menuItemId: searchParams.get(\"menuItemId\"),\n menuItemName: searchParams.get(\"menuItemName\"),\n actionId: searchParams.get(\"actionId\"),\n actionName: searchParams.get(\"actionName\"),\n };\n\n const queryFields = {\n menuItemId: nextView?.menuItemId ?? currentQuery.menuItemId,\n menuItemName: nextView?.menuItemName ?? currentQuery.menuItemName,\n actionId: nextView?.actionId ?? currentQuery.actionId,\n actionName: nextView?.actionName ?? currentQuery.actionName,\n };\n\n Object.entries(queryFields).forEach(([key, value]) => {\n if (value) {\n nextSearchParams.set(key, value);\n } else {\n nextSearchParams.delete(key);\n }\n });\n\n const newPath = \"/\" + pathSegments.join(\"/\");\n const nextQueryString = nextSearchParams.toString();\n const nextUrl = nextQueryString ? `${newPath}?${nextQueryString}` : newPath;\n storeCurrentModelViewContext(nextUrl);\n router.push(nextUrl);\n };\n\n const clearLocalstorageCache = () => {\n const currentPageUrl = window.location.pathname;\n localStorage.removeItem(currentPageUrl);\n window.location.reload();\n };\n\n const canImport = canImportRecords(actionsAllowed, modelName);\n\n const canExport = canExportRecords(actionsAllowed, modelName);\n\n const canCustomizeLayout = actionsAllowed.includes(`${permissionExpression(\"userViewMetadata\", \"create\")}`);\n const canSaveCustomFilter = actionsAllowed.includes(`${permissionExpression(\"savedFilters\", \"create\")}`);\n const canShowArchivedRecords = Boolean(solidCardViewMetaData?.data?.solidView?.model?.enableSoftDelete);\n\n return (\n <div className=\"position-relative\">\n <SolidDropdownMenu open={isCogMenuOpen} onOpenChange={setIsCogMenuOpen}>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-icon-button solid-header-cog-trigger\"\n aria-label=\"Open card options\"\n >\n <SolidIcon name=\"si-cog\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"listview-cogwheel-panel\">\n {canImport && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setOpenImportDialog(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-download\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Import</span>\n </SolidDropdownMenuItem>\n )}\n\n {canExport && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setExportView(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-upload\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Export</span>\n </SolidDropdownMenuItem>\n )}\n\n {canShowArchivedRecords && (\n <SolidDropdownMenuCheckboxItem\n className={showArchived ? \"solid-archive-toggle-item-active\" : undefined}\n checked={showArchived}\n icon={<SolidIcon name=\"si-archive\" className=\"solid-header-action-button-icon solid-archive-toggle-icon\" aria-hidden />}\n onCheckedChange={() => setShowArchived(!showArchived)}\n >\n Show Archived Rows\n </SolidDropdownMenuCheckboxItem>\n )}\n\n {(canCustomizeLayout || canSaveCustomFilter || canShowArchivedRecords) && <SolidDropdownMenuSeparator />}\n\n {canCustomizeLayout && (\n <SolidDropdownMenuSub>\n <SolidDropdownMenuSubTrigger className=\"solid-header-dropdown-item\">\n <SolidIcon name=\"si-sliders-h\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Layout</span>\n </SolidDropdownMenuSubTrigger>\n <SolidDropdownMenuSubContent className=\"customize-layout-panel\">\n {showSwitchType && (\n <>\n <SolidDropdownMenuLabel>Switch Type</SolidDropdownMenuLabel>\n <SolidDropdownMenuRadioGroup value={view} onValueChange={handleViewChange}>\n {visibleViewModes.map((option: any) => (\n <SolidDropdownMenuRadioItem key={option.type} value={option.type}>\n {option.label}\n </SolidDropdownMenuRadioItem>\n ))}\n </SolidDropdownMenuRadioGroup>\n <SolidDropdownMenuSeparator />\n </>\n )}\n <SolidDropdownMenuItem\n onSelect={() => {\n setLayoutDialogVisible(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-code\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Layout Editor</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuSubContent>\n </SolidDropdownMenuSub>\n )}\n\n {canSaveCustomFilter && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setShowSaveFilterPopup(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-save\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Save Custom Filter</span>\n </SolidDropdownMenuItem>\n )}\n\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n clearLocalstorageCache();\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-trash\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Clear cache</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n\n <SolidDialog\n open={exportView}\n onOpenChange={setExportView}\n className=\"solid-kanban-export-dialog\"\n style={{ width: \"min(960px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader className=\"solid-export-dialog-header\">\n <div>\n <SolidDialogTitle>Export</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Choose the file format, refine the field set, and save reusable export templates.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-export-dialog-body\">\n <SolidExport\n listViewMetaData={solidCardViewMetaData}\n filters={filters}\n onExportComplete={() => setExportView(false)}\n />\n </SolidDialogBody>\n </SolidDialog>\n\n {openImportDialog && (\n <SolidGenericImport\n openImportDialog={openImportDialog}\n setOpenImportDialog={setOpenImportDialog}\n listViewMetaData={solidCardViewMetaData}\n handleFetchUpdatedRecords={handleRefreshView}\n />\n )}\n </div>\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"SolidCardViewConfigure.js","sourceRoot":"","sources":["../../../../src/components/core/card/SolidCardViewConfigure.tsx"],"names":[],"mappings":"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","sourcesContent":["import { canExportRecords, canImportRecords, permissionExpression } from \"../../../helpers/permissions\";\nimport { usePathname } from \"../../../hooks/usePathname\";\nimport { useRouter } from \"../../../hooks/useRouter\";\nimport { useSearchParams } from \"../../../hooks/useSearchParams\";\nimport { storeCurrentModelViewContext } from \"../../../helpers/modelViewPersistence\";\nimport { useEffect, useState } from \"react\";\nimport { SolidExport } from \"../../../components/common/SolidExport\";\nimport { SolidGenericImport } from \"../common/SolidGenericImport/SolidGenericImport\";\nimport {\n SolidDialog,\n SolidDialogBody,\n SolidDialogClose,\n SolidDialogDescription,\n SolidDialogHeader,\n SolidDialogSeparator,\n SolidDialogTitle,\n SolidDropdownMenu,\n SolidDropdownMenuCheckboxItem,\n SolidDropdownMenuContent,\n SolidDropdownMenuItem,\n SolidDropdownMenuLabel,\n SolidDropdownMenuRadioGroup,\n SolidDropdownMenuRadioItem,\n SolidDropdownMenuSeparator,\n SolidDropdownMenuSub,\n SolidDropdownMenuSubContent,\n SolidDropdownMenuSubTrigger,\n SolidDropdownMenuTrigger,\n SolidIcon,\n} from \"../../shad-cn-ui\";\nimport { SolidListViewHeaderContextMenuButton } from \"../list/SolidListViewHeaderContextMenuButton\";\n\nconst normalizeViewModes = (viewModes: any[] = []) => {\n return viewModes\n .map((option: any) => {\n if (!option) return null;\n\n if (typeof option === \"string\") {\n return {\n type: option,\n label: option.charAt(0).toUpperCase() + option.slice(1),\n };\n }\n\n const type = option.type || option.value;\n if (!type) return null;\n\n return {\n ...option,\n type,\n label: option.label || (type.charAt(0).toUpperCase() + type.slice(1)),\n };\n })\n .filter(Boolean);\n};\n\nexport const SolidCardViewConfigure = ({\n solidCardViewMetaData,\n modelName,\n actionsAllowed,\n viewModes,\n setShowArchived,\n showArchived,\n setLayoutDialogVisible,\n setShowSaveFilterPopup,\n filters,\n handleRefreshView,\n params,\n headerButtons = [],\n handleCustomButtonClick,\n}: any) => {\n const pathname = usePathname();\n const router = useRouter();\n const searchParams = useSearchParams();\n const [view, setView] = useState<string>(\"\");\n const [isCogMenuOpen, setIsCogMenuOpen] = useState(false);\n const [openImportDialog, setOpenImportDialog] = useState(false);\n const [exportView, setExportView] = useState(false);\n\n const visibleViewModes = normalizeViewModes(Array.isArray(viewModes) ? viewModes : []);\n const showSwitchType = visibleViewModes.length > 1;\n\n useEffect(() => {\n if (typeof pathname === \"string\") {\n const pathSegments = pathname.split(\"/\").filter(Boolean);\n if (pathSegments.length > 0) {\n setView(pathSegments[pathSegments.length - 1]);\n }\n }\n }, [pathname]);\n\n const handleViewChange = (newViewType: string) => {\n if (view === newViewType) return;\n\n const nextView = visibleViewModes.find((option: any) => option.type === newViewType);\n const pathSegments = pathname.split(\"/\").filter(Boolean);\n pathSegments[pathSegments.length - 1] = newViewType;\n const nextSearchParams = new URLSearchParams(searchParams.toString());\n const currentQuery = {\n menuItemId: searchParams.get(\"menuItemId\"),\n menuItemName: searchParams.get(\"menuItemName\"),\n actionId: searchParams.get(\"actionId\"),\n actionName: searchParams.get(\"actionName\"),\n };\n\n const queryFields = {\n menuItemId: nextView?.menuItemId ?? currentQuery.menuItemId,\n menuItemName: nextView?.menuItemName ?? currentQuery.menuItemName,\n actionId: nextView?.actionId ?? currentQuery.actionId,\n actionName: nextView?.actionName ?? currentQuery.actionName,\n };\n\n Object.entries(queryFields).forEach(([key, value]) => {\n if (value) {\n nextSearchParams.set(key, value);\n } else {\n nextSearchParams.delete(key);\n }\n });\n\n const newPath = \"/\" + pathSegments.join(\"/\");\n const nextQueryString = nextSearchParams.toString();\n const nextUrl = nextQueryString ? `${newPath}?${nextQueryString}` : newPath;\n storeCurrentModelViewContext(nextUrl);\n router.push(nextUrl);\n };\n\n const clearLocalstorageCache = () => {\n const currentPageUrl = window.location.pathname;\n localStorage.removeItem(currentPageUrl);\n window.location.reload();\n };\n\n const canImport = canImportRecords(actionsAllowed, modelName);\n\n const canExport = canExportRecords(actionsAllowed, modelName);\n\n const canCustomizeLayout = actionsAllowed.includes(`${permissionExpression(\"userViewMetadata\", \"create\")}`);\n const canSaveCustomFilter = actionsAllowed.includes(`${permissionExpression(\"savedFilters\", \"create\")}`);\n const canShowArchivedRecords = Boolean(solidCardViewMetaData?.data?.solidView?.model?.enableSoftDelete);\n const contextMenuHeaderButtons = headerButtons.filter((button: any) => button?.attrs?.actionInContextMenu === true);\n const mobileOnlyHeaderButtons = headerButtons.filter((button: any) => button?.attrs?.actionInContextMenu !== true);\n\n return (\n <div className=\"position-relative\">\n <SolidDropdownMenu open={isCogMenuOpen} onOpenChange={setIsCogMenuOpen}>\n <SolidDropdownMenuTrigger asChild>\n <button\n type=\"button\"\n className=\"solid-icon-button solid-header-cog-trigger\"\n aria-label=\"Open card options\"\n >\n <SolidIcon name=\"si-cog\" aria-hidden />\n </button>\n </SolidDropdownMenuTrigger>\n <SolidDropdownMenuContent className=\"listview-cogwheel-panel\">\n {canImport && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setOpenImportDialog(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-download\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Import</span>\n </SolidDropdownMenuItem>\n )}\n\n {canExport && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setExportView(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-upload\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Export</span>\n </SolidDropdownMenuItem>\n )}\n\n {contextMenuHeaderButtons.map((button: any, index: number) => (\n <SolidListViewHeaderContextMenuButton\n key={button?.attrs?.action ?? index}\n button={button}\n params={params}\n solidListViewMetaData={solidCardViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n selectedRecords={[]}\n filters={filters}\n onActionComplete={() => setIsCogMenuOpen(false)}\n />\n ))}\n\n <div className=\"lg:hidden flex flex-col gap-1\">\n {mobileOnlyHeaderButtons.map((button: any, index: number) => (\n <SolidListViewHeaderContextMenuButton\n key={`mobile-${button?.attrs?.action ?? index}`}\n button={button}\n params={params}\n solidListViewMetaData={solidCardViewMetaData}\n handleCustomButtonClick={handleCustomButtonClick}\n selectedRecords={[]}\n filters={filters}\n onActionComplete={() => setIsCogMenuOpen(false)}\n />\n ))}\n </div>\n\n {canShowArchivedRecords && (\n <SolidDropdownMenuCheckboxItem\n className={showArchived ? \"solid-archive-toggle-item-active\" : undefined}\n checked={showArchived}\n icon={<SolidIcon name=\"si-archive\" className=\"solid-header-action-button-icon solid-archive-toggle-icon\" aria-hidden />}\n onCheckedChange={() => setShowArchived(!showArchived)}\n >\n Show Archived Rows\n </SolidDropdownMenuCheckboxItem>\n )}\n\n {(canCustomizeLayout || canSaveCustomFilter || canShowArchivedRecords) && <SolidDropdownMenuSeparator />}\n\n {canCustomizeLayout && (\n <SolidDropdownMenuSub>\n <SolidDropdownMenuSubTrigger className=\"solid-header-dropdown-item\">\n <SolidIcon name=\"si-sliders-h\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Layout</span>\n </SolidDropdownMenuSubTrigger>\n <SolidDropdownMenuSubContent className=\"customize-layout-panel\">\n {showSwitchType && (\n <>\n <SolidDropdownMenuLabel>Switch Type</SolidDropdownMenuLabel>\n <SolidDropdownMenuRadioGroup value={view} onValueChange={handleViewChange}>\n {visibleViewModes.map((option: any) => (\n <SolidDropdownMenuRadioItem key={option.type} value={option.type}>\n {option.label}\n </SolidDropdownMenuRadioItem>\n ))}\n </SolidDropdownMenuRadioGroup>\n <SolidDropdownMenuSeparator />\n </>\n )}\n <SolidDropdownMenuItem\n onSelect={() => {\n setLayoutDialogVisible(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-code\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Layout Editor</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuSubContent>\n </SolidDropdownMenuSub>\n )}\n\n {canSaveCustomFilter && (\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n setShowSaveFilterPopup(true);\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-save\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Save Custom Filter</span>\n </SolidDropdownMenuItem>\n )}\n\n <SolidDropdownMenuItem\n className=\"solid-header-dropdown-item\"\n onSelect={() => {\n clearLocalstorageCache();\n setIsCogMenuOpen(false);\n }}\n >\n <SolidIcon name=\"si-trash\" className=\"solid-header-action-button-icon\" aria-hidden />\n <span className=\"solid-header-action-button-label\">Clear cache</span>\n </SolidDropdownMenuItem>\n </SolidDropdownMenuContent>\n </SolidDropdownMenu>\n\n <SolidDialog\n open={exportView}\n onOpenChange={setExportView}\n className=\"solid-kanban-export-dialog\"\n style={{ width: \"min(960px, calc(100vw - 32px))\" }}\n >\n <SolidDialogHeader className=\"solid-export-dialog-header\">\n <div>\n <SolidDialogTitle>Export</SolidDialogTitle>\n <SolidDialogDescription className=\"solid-filter-dialog-subtitle m-0\">\n Choose the file format, refine the field set, and save reusable export templates.\n </SolidDialogDescription>\n </div>\n <SolidDialogClose />\n </SolidDialogHeader>\n <SolidDialogSeparator />\n <SolidDialogBody className=\"solid-kanban-export-dialog-body\">\n <SolidExport\n listViewMetaData={solidCardViewMetaData}\n filters={filters}\n onExportComplete={() => setExportView(false)}\n />\n </SolidDialogBody>\n </SolidDialog>\n\n {openImportDialog && (\n <SolidGenericImport\n openImportDialog={openImportDialog}\n setOpenImportDialog={setOpenImportDialog}\n listViewMetaData={solidCardViewMetaData}\n handleFetchUpdatedRecords={handleRefreshView}\n />\n )}\n </div>\n );\n};\n"]}
|
|
@@ -28,6 +28,7 @@ import {
|
|
|
28
28
|
SolidDropdownMenuTrigger,
|
|
29
29
|
SolidIcon,
|
|
30
30
|
} from "../../shad-cn-ui";
|
|
31
|
+
import { SolidListViewHeaderContextMenuButton } from "../list/SolidListViewHeaderContextMenuButton";
|
|
31
32
|
|
|
32
33
|
const normalizeViewModes = (viewModes: any[] = []) => {
|
|
33
34
|
return viewModes
|
|
@@ -64,6 +65,9 @@ export const SolidCardViewConfigure = ({
|
|
|
64
65
|
setShowSaveFilterPopup,
|
|
65
66
|
filters,
|
|
66
67
|
handleRefreshView,
|
|
68
|
+
params,
|
|
69
|
+
headerButtons = [],
|
|
70
|
+
handleCustomButtonClick,
|
|
67
71
|
}: any) => {
|
|
68
72
|
const pathname = usePathname();
|
|
69
73
|
const router = useRouter();
|
|
@@ -134,6 +138,8 @@ export const SolidCardViewConfigure = ({
|
|
|
134
138
|
const canCustomizeLayout = actionsAllowed.includes(`${permissionExpression("userViewMetadata", "create")}`);
|
|
135
139
|
const canSaveCustomFilter = actionsAllowed.includes(`${permissionExpression("savedFilters", "create")}`);
|
|
136
140
|
const canShowArchivedRecords = Boolean(solidCardViewMetaData?.data?.solidView?.model?.enableSoftDelete);
|
|
141
|
+
const contextMenuHeaderButtons = headerButtons.filter((button: any) => button?.attrs?.actionInContextMenu === true);
|
|
142
|
+
const mobileOnlyHeaderButtons = headerButtons.filter((button: any) => button?.attrs?.actionInContextMenu !== true);
|
|
137
143
|
|
|
138
144
|
return (
|
|
139
145
|
<div className="position-relative">
|
|
@@ -174,6 +180,34 @@ export const SolidCardViewConfigure = ({
|
|
|
174
180
|
</SolidDropdownMenuItem>
|
|
175
181
|
)}
|
|
176
182
|
|
|
183
|
+
{contextMenuHeaderButtons.map((button: any, index: number) => (
|
|
184
|
+
<SolidListViewHeaderContextMenuButton
|
|
185
|
+
key={button?.attrs?.action ?? index}
|
|
186
|
+
button={button}
|
|
187
|
+
params={params}
|
|
188
|
+
solidListViewMetaData={solidCardViewMetaData}
|
|
189
|
+
handleCustomButtonClick={handleCustomButtonClick}
|
|
190
|
+
selectedRecords={[]}
|
|
191
|
+
filters={filters}
|
|
192
|
+
onActionComplete={() => setIsCogMenuOpen(false)}
|
|
193
|
+
/>
|
|
194
|
+
))}
|
|
195
|
+
|
|
196
|
+
<div className="lg:hidden flex flex-col gap-1">
|
|
197
|
+
{mobileOnlyHeaderButtons.map((button: any, index: number) => (
|
|
198
|
+
<SolidListViewHeaderContextMenuButton
|
|
199
|
+
key={`mobile-${button?.attrs?.action ?? index}`}
|
|
200
|
+
button={button}
|
|
201
|
+
params={params}
|
|
202
|
+
solidListViewMetaData={solidCardViewMetaData}
|
|
203
|
+
handleCustomButtonClick={handleCustomButtonClick}
|
|
204
|
+
selectedRecords={[]}
|
|
205
|
+
filters={filters}
|
|
206
|
+
onActionComplete={() => setIsCogMenuOpen(false)}
|
|
207
|
+
/>
|
|
208
|
+
))}
|
|
209
|
+
</div>
|
|
210
|
+
|
|
177
211
|
{canShowArchivedRecords && (
|
|
178
212
|
<SolidDropdownMenuCheckboxItem
|
|
179
213
|
className={showArchived ? "solid-archive-toggle-item-active" : undefined}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { SolidCardViewHandle } from "./SolidCardView";
|
|
2
|
+
export declare const registerCardView: (cardId: string, handle: SolidCardViewHandle) => void;
|
|
3
|
+
export declare const unregisterCardView: (cardId: string) => void;
|
|
4
|
+
export declare const getCardView: (cardId: string) => SolidCardViewHandle | undefined;
|
|
5
|
+
export declare const hasCardView: (cardId: string) => boolean;
|
|
6
|
+
export declare const getRegisteredCardViewIds: () => string[];
|
|
7
|
+
//# sourceMappingURL=cardViewRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardViewRegistry.d.ts","sourceRoot":"","sources":["../../../../src/components/core/card/cardViewRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAI3D,eAAO,MAAM,gBAAgB,WAAY,MAAM,UAAU,mBAAmB,KAAG,IAE9E,CAAC;AAEF,eAAO,MAAM,kBAAkB,WAAY,MAAM,KAAG,IAEnD,CAAC;AAEF,eAAO,MAAM,WAAW,WAAY,MAAM,KAAG,mBAAmB,GAAG,SAElE,CAAC;AAEF,eAAO,MAAM,WAAW,WAAY,MAAM,KAAG,OAE5C,CAAC;AAEF,eAAO,MAAM,wBAAwB,QAAO,MAAM,EAEjD,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
var cardViewRegistry = new Map();
|
|
2
|
+
export var registerCardView = function (cardId, handle) {
|
|
3
|
+
cardViewRegistry.set(cardId, handle);
|
|
4
|
+
};
|
|
5
|
+
export var unregisterCardView = function (cardId) {
|
|
6
|
+
cardViewRegistry.delete(cardId);
|
|
7
|
+
};
|
|
8
|
+
export var getCardView = function (cardId) {
|
|
9
|
+
return cardViewRegistry.get(cardId);
|
|
10
|
+
};
|
|
11
|
+
export var hasCardView = function (cardId) {
|
|
12
|
+
return cardViewRegistry.has(cardId);
|
|
13
|
+
};
|
|
14
|
+
export var getRegisteredCardViewIds = function () {
|
|
15
|
+
return Array.from(cardViewRegistry.keys());
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=cardViewRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardViewRegistry.js","sourceRoot":"","sources":["../../../../src/components/core/card/cardViewRegistry.ts"],"names":[],"mappings":"AAEA,IAAM,gBAAgB,GAAG,IAAI,GAAG,EAA+B,CAAC;AAEhE,MAAM,CAAC,IAAM,gBAAgB,GAAG,UAAC,MAAc,EAAE,MAA2B;IAC1E,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,kBAAkB,GAAG,UAAC,MAAc;IAC/C,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,MAAc;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,WAAW,GAAG,UAAC,MAAc;IACxC,OAAO,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,wBAAwB,GAAG;IACtC,OAAO,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC","sourcesContent":["import type { SolidCardViewHandle } from \"./SolidCardView\";\n\nconst cardViewRegistry = new Map<string, SolidCardViewHandle>();\n\nexport const registerCardView = (cardId: string, handle: SolidCardViewHandle): void => {\n cardViewRegistry.set(cardId, handle);\n};\n\nexport const unregisterCardView = (cardId: string): void => {\n cardViewRegistry.delete(cardId);\n};\n\nexport const getCardView = (cardId: string): SolidCardViewHandle | undefined => {\n return cardViewRegistry.get(cardId);\n};\n\nexport const hasCardView = (cardId: string): boolean => {\n return cardViewRegistry.has(cardId);\n};\n\nexport const getRegisteredCardViewIds = (): string[] => {\n return Array.from(cardViewRegistry.keys());\n};\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { SolidCardViewHandle } from "./SolidCardView";
|
|
2
|
+
|
|
3
|
+
const cardViewRegistry = new Map<string, SolidCardViewHandle>();
|
|
4
|
+
|
|
5
|
+
export const registerCardView = (cardId: string, handle: SolidCardViewHandle): void => {
|
|
6
|
+
cardViewRegistry.set(cardId, handle);
|
|
7
|
+
};
|
|
8
|
+
|
|
9
|
+
export const unregisterCardView = (cardId: string): void => {
|
|
10
|
+
cardViewRegistry.delete(cardId);
|
|
11
|
+
};
|
|
12
|
+
|
|
13
|
+
export const getCardView = (cardId: string): SolidCardViewHandle | undefined => {
|
|
14
|
+
return cardViewRegistry.get(cardId);
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
export const hasCardView = (cardId: string): boolean => {
|
|
18
|
+
return cardViewRegistry.has(cardId);
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
export const getRegisteredCardViewIds = (): string[] => {
|
|
22
|
+
return Array.from(cardViewRegistry.keys());
|
|
23
|
+
};
|
|
@@ -6,11 +6,15 @@ export interface PDFViewerProps {
|
|
|
6
6
|
/**
|
|
7
7
|
* Renders a PDF using the browser's built-in PDF viewer.
|
|
8
8
|
*
|
|
9
|
-
* The signed URL is
|
|
10
|
-
*
|
|
11
|
-
* the storage
|
|
12
|
-
*
|
|
13
|
-
*
|
|
9
|
+
* The signed URL is handed straight to the iframe instead of being fetched into a
|
|
10
|
+
* blob first. `fetch` is subject to CORS, so a blob-based viewer only works where
|
|
11
|
+
* the storage bucket explicitly allows the app's origin — which differs per
|
|
12
|
+
* environment and silently breaks on any bucket that hasn't been configured.
|
|
13
|
+
* Iframes are not subject to CORS, so this renders identically everywhere.
|
|
14
|
+
*
|
|
15
|
+
* Zoom, rotation, page navigation, text search/selection, print and download all
|
|
16
|
+
* come from the browser's native viewer, so there is no pdf.js worker to
|
|
17
|
+
* configure or version-match.
|
|
14
18
|
*/
|
|
15
19
|
export default function PDFViewer({ url, height }: PDFViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
16
20
|
//# sourceMappingURL=PDFViewer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PDFViewer.d.ts","sourceRoot":"","sources":["../../../../src/components/core/common/PDFViewer.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PDFViewer.d.ts","sourceRoot":"","sources":["../../../../src/components/core/common/PDFViewer.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,GAAG,EAAE,MAAe,EAAE,EAAE,cAAc,2CAkCzE"}
|