@solidxai/core-ui 0.1.14-beta.9 → 0.1.14
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 +1 -4
- package/dist/components/common/SolidFormStepper.d.ts.map +1 -1
- package/dist/components/common/SolidFormStepper.js +6 -7
- package/dist/components/common/SolidFormStepper.js.map +1 -1
- package/dist/components/common/SolidFormStepper.tsx +1 -7
- package/dist/components/common/SolidThemeProvider.d.ts.map +1 -1
- package/dist/components/common/SolidThemeProvider.js +11 -127
- package/dist/components/common/SolidThemeProvider.js.map +1 -1
- package/dist/components/common/SolidThemeProvider.tsx +22 -104
- 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 +0 -4
- package/dist/components/core/card/CardItem.d.ts +0 -2
- package/dist/components/core/card/CardItem.d.ts.map +1 -1
- package/dist/components/core/card/CardItem.js +3 -4
- package/dist/components/core/card/CardItem.js.map +1 -1
- package/dist/components/core/card/CardItem.tsx +0 -15
- package/dist/components/core/card/SolidCardView.d.ts +1 -28
- package/dist/components/core/card/SolidCardView.d.ts.map +1 -1
- package/dist/components/core/card/SolidCardView.js +44 -99
- package/dist/components/core/card/SolidCardView.js.map +1 -1
- package/dist/components/core/card/SolidCardView.tsx +7 -124
- 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 +6 -15
- package/dist/components/core/card/SolidCardViewConfigure.js.map +1 -1
- package/dist/components/core/card/SolidCardViewConfigure.tsx +0 -34
- package/dist/components/core/common/PDFViewer.d.ts +5 -9
- package/dist/components/core/common/PDFViewer.d.ts.map +1 -1
- package/dist/components/core/common/PDFViewer.js +102 -10
- package/dist/components/core/common/PDFViewer.js.map +1 -1
- package/dist/components/core/common/PDFViewer.tsx +88 -29
- 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 +2 -22
- package/dist/components/core/common/SolidGlobalSearchElement.d.ts.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.js +134 -137
- package/dist/components/core/common/SolidGlobalSearchElement.js.map +1 -1
- package/dist/components/core/common/SolidGlobalSearchElement.tsx +119 -127
- 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 +53 -62
- package/dist/components/core/form/SolidFormView.d.ts.map +1 -1
- package/dist/components/core/form/SolidFormView.js +2 -5
- package/dist/components/core/form/SolidFormView.js.map +1 -1
- package/dist/components/core/form/SolidFormView.tsx +2 -7
- 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 +1 -3
- package/dist/components/core/kanban/KanbanCard.d.ts +0 -2
- package/dist/components/core/kanban/KanbanCard.d.ts.map +1 -1
- package/dist/components/core/kanban/KanbanCard.js +2 -4
- package/dist/components/core/kanban/KanbanCard.js.map +1 -1
- package/dist/components/core/kanban/KanbanCard.tsx +1 -14
- package/dist/components/core/kanban/KanbanColumn.d.ts +1 -3
- 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 +2 -4
- package/dist/components/core/kanban/SolidKanbanView.d.ts +1 -25
- package/dist/components/core/kanban/SolidKanbanView.d.ts.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.js +50 -89
- package/dist/components/core/kanban/SolidKanbanView.js.map +1 -1
- package/dist/components/core/kanban/SolidKanbanView.tsx +9 -82
- package/dist/components/core/list/PLAN.md +1 -1
- package/dist/components/core/list/SolidListView.d.ts +0 -11
- package/dist/components/core/list/SolidListView.d.ts.map +1 -1
- package/dist/components/core/list/SolidListView.js +3 -8
- package/dist/components/core/list/SolidListView.js.map +1 -1
- package/dist/components/core/list/SolidListView.tsx +43 -82
- 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/model/CreateModel.d.ts.map +1 -1
- package/dist/components/core/model/CreateModel.js +1 -2
- package/dist/components/core/model/CreateModel.js.map +1 -1
- package/dist/components/core/model/CreateModel.tsx +0 -2
- 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 +0 -119
- 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 +0 -64
- package/dist/components/core/module/ModulePackageDialog.css +12 -117
- package/dist/components/core/tree/SolidTreeView.d.ts.map +1 -1
- package/dist/components/core/tree/SolidTreeView.js +3 -6
- package/dist/components/core/tree/SolidTreeView.js.map +1 -1
- package/dist/components/core/tree/SolidTreeView.tsx +13 -35
- package/dist/components/layout/AdminHeaderActions.d.ts.map +1 -1
- package/dist/components/layout/AdminHeaderActions.js +10 -15
- package/dist/components/layout/AdminHeaderActions.js.map +1 -1
- package/dist/components/layout/AdminHeaderActions.tsx +8 -15
- package/dist/components/layout/AdminTopHeader.d.ts.map +1 -1
- package/dist/components/layout/AdminTopHeader.js +18 -1
- package/dist/components/layout/AdminTopHeader.js.map +1 -1
- package/dist/components/layout/AdminTopHeader.tsx +21 -3
- package/dist/index.d.ts +0 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +1 -1
- package/dist/index.ts +0 -5
- package/dist/resources/globals.css +0 -15
- package/dist/resources/solid-custom.css +0 -11
- package/dist/resources/solid-tailwind-generated.css +1 -1
- package/dist/resources/themes/solid-light-modern/theme.css +3 -4
- package/dist/routes/pages/admin/core/CardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.js +2 -15
- package/dist/routes/pages/admin/core/CardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/CardPage.tsx +2 -17
- package/dist/routes/pages/admin/core/DashboardPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.js +3 -31
- package/dist/routes/pages/admin/core/DashboardPage.js.map +1 -1
- package/dist/routes/pages/admin/core/DashboardPage.tsx +11 -39
- package/dist/routes/pages/admin/core/KanbanPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.js +2 -15
- package/dist/routes/pages/admin/core/KanbanPage.js.map +1 -1
- package/dist/routes/pages/admin/core/KanbanPage.tsx +2 -17
- package/dist/routes/pages/admin/core/ListPage.d.ts.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.js +13 -5
- package/dist/routes/pages/admin/core/ListPage.js.map +1 -1
- package/dist/routes/pages/admin/core/ListPage.tsx +15 -5
- package/dist/types/solid-core.d.ts +0 -8
- package/package.json +1 -1
|
@@ -3,9 +3,7 @@ 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 {
|
|
7
|
-
import { useSession } from "../../../hooks/useSession";
|
|
8
|
-
import { resolveActiveUserId, resolveSavedFilterVariables } from "../../../helpers/resolveActiveUserId";
|
|
6
|
+
import { useEffect, useRef, useState } from "react";
|
|
9
7
|
import { SolidLightbox } from "../../shad-cn-ui/SolidLightbox";
|
|
10
8
|
import type { SolidLightboxSlide } from "../../shad-cn-ui/SolidLightbox";
|
|
11
9
|
import { getMediaTypeFromUrl } from "../../../helpers/mediaType";
|
|
@@ -37,42 +35,11 @@ import {
|
|
|
37
35
|
SolidSelect,
|
|
38
36
|
} from "../../shad-cn-ui";
|
|
39
37
|
import { showToast } from "../../../redux/features/toastSlice";
|
|
40
|
-
import { isButtonVisibleInCurrentEnv } from "../../../helpers/buttonEnvironment";
|
|
41
|
-
import { useHandleListCustomButtonClick } from "../../common/useHandleListCustomButtonClick";
|
|
42
|
-
import { SolidListViewHeaderButton } from "../list/SolidListViewHeaderButton";
|
|
43
38
|
|
|
44
39
|
type SolidCardViewParams = {
|
|
45
40
|
moduleName: string;
|
|
46
41
|
modelName: string;
|
|
47
42
|
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
|
-
};
|
|
76
43
|
};
|
|
77
44
|
|
|
78
45
|
const DEFAULT_RECORD_SORT = ["id:desc"];
|
|
@@ -137,9 +104,7 @@ const deriveCardViewConfig = (solidCardViewMetaData: any) => {
|
|
|
137
104
|
};
|
|
138
105
|
};
|
|
139
106
|
|
|
140
|
-
export const SolidCardView =
|
|
141
|
-
const session = useSession();
|
|
142
|
-
const user = session?.data?.user;
|
|
107
|
+
export const SolidCardView = (params: SolidCardViewParams) => {
|
|
143
108
|
const visibleNavbar = useSelector((state: any) => state.navbarState?.visibleNavbar);
|
|
144
109
|
const dispatch = useDispatch();
|
|
145
110
|
const pathname = usePathname();
|
|
@@ -173,7 +138,6 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
173
138
|
const [showArchived, setShowArchived] = useState(false);
|
|
174
139
|
const [selectedCardForDelete, setSelectedCardForDelete] = useState<any>(null);
|
|
175
140
|
const [isDeleteDialogVisible, setDeleteDialogVisible] = useState(false);
|
|
176
|
-
const handleCustomButtonClick = useHandleListCustomButtonClick();
|
|
177
141
|
|
|
178
142
|
const lightboxSlides: SolidLightboxSlide[] = Array.isArray(lightboxUrls)
|
|
179
143
|
? lightboxUrls
|
|
@@ -219,8 +183,6 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
219
183
|
);
|
|
220
184
|
|
|
221
185
|
const {data: solidCardViewMetaDataResponse,isLoading: solidCardViewMetaDataIsLoading,} = useGetSolidViewLayoutQuery(cardViewMetaDataQs);
|
|
222
|
-
const visibleHeaderButtons = (solidCardViewMetaDataResponse?.data?.solidView?.layout?.attrs?.headerButtons ?? [])
|
|
223
|
-
.filter((button: any) => isButtonVisibleInCurrentEnv(button?.attrs));
|
|
224
186
|
|
|
225
187
|
const editBaseUrl = normalizeSolidListTreeKanbanActionPath(pathname, editButtonUrl || "form");
|
|
226
188
|
const recordClickAction = resolveRecordClickAction(solidSettingsMap, {
|
|
@@ -288,11 +250,7 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
288
250
|
restoredFilter.$and.push(persistedFilterObject.search_predicate);
|
|
289
251
|
}
|
|
290
252
|
if (persistedFilterObject?.saved_filter_predicate) {
|
|
291
|
-
restoredFilter.$and.push(
|
|
292
|
-
persistedFilterObject.saved_filter_predicate,
|
|
293
|
-
user?.id,
|
|
294
|
-
persistedFilterObject.saved_filter_variables || {}
|
|
295
|
-
).value);
|
|
253
|
+
restoredFilter.$and.push(persistedFilterObject.saved_filter_predicate);
|
|
296
254
|
}
|
|
297
255
|
if (persistedFilterObject?.predefined_search_predicate) {
|
|
298
256
|
restoredFilter.$and.push(persistedFilterObject.predefined_search_predicate);
|
|
@@ -401,8 +359,7 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
401
359
|
updatedFilter.$and.push(filterPredicates.search_predicate);
|
|
402
360
|
}
|
|
403
361
|
if (filterPredicates.saved_filter_predicate) {
|
|
404
|
-
updatedFilter.$and.push(filterPredicates.
|
|
405
|
-
resolveActiveUserId(filterPredicates.saved_filter_predicate, user?.id));
|
|
362
|
+
updatedFilter.$and.push(filterPredicates.saved_filter_predicate);
|
|
406
363
|
}
|
|
407
364
|
if (filterPredicates.predefined_search_predicate) {
|
|
408
365
|
updatedFilter.$and.push(filterPredicates.predefined_search_predicate);
|
|
@@ -419,9 +376,7 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
419
376
|
custom_filter_predicate: filterPredicates.custom_filter_predicate || {},
|
|
420
377
|
search_predicate: filterPredicates.search_predicate || {},
|
|
421
378
|
saved_filter_predicate: filterPredicates.saved_filter_predicate || {},
|
|
422
|
-
saved_filter_variables: filterPredicates.saved_filter_variables || {},
|
|
423
379
|
predefined_search_predicate: filterPredicates.predefined_search_predicate || {},
|
|
424
|
-
predefined_search_chip: filterPredicates.predefined_search_chip || null,
|
|
425
380
|
});
|
|
426
381
|
};
|
|
427
382
|
|
|
@@ -434,46 +389,6 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
434
389
|
await loadCards(filters);
|
|
435
390
|
};
|
|
436
391
|
|
|
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
|
-
|
|
477
392
|
const handleRecoverRecord = async (record: any) => {
|
|
478
393
|
if (!record?.id) return;
|
|
479
394
|
|
|
@@ -578,18 +493,7 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
578
493
|
</div>
|
|
579
494
|
)} */}
|
|
580
495
|
{/* <p className="m-0 view-title solid-text-wrapper">{cardViewTitle}</p> */}
|
|
581
|
-
<div className="
|
|
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`}>
|
|
496
|
+
<div className={`${showGlobalSearchElement ? "flex" : "hidden lg:flex"} mt-3 lg:mt-0 w-full lg:flex lg:min-w-0`}>
|
|
593
497
|
<SolidGlobalSearchElement
|
|
594
498
|
viewType="card"
|
|
595
499
|
showSaveFilterPopup={showSaveFilterPopup}
|
|
@@ -604,7 +508,7 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
604
508
|
|
|
605
509
|
<div className="flex items-center solid-header-buttons-wrapper solid-list-toolbar-actions lg:ml-auto">
|
|
606
510
|
<SolidHeaderRequestStatus label={headerRequestStatusLabel} />
|
|
607
|
-
<div className="
|
|
511
|
+
<div className="flex lg:hidden">
|
|
608
512
|
<SolidButton
|
|
609
513
|
type="button"
|
|
610
514
|
variant="outline"
|
|
@@ -616,22 +520,6 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
616
520
|
/>
|
|
617
521
|
</div>
|
|
618
522
|
|
|
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
|
-
|
|
635
523
|
{actionsAllowed.includes(`${permissionExpression(params.modelName, "create")}`) &&
|
|
636
524
|
solidCardViewMetaDataResponse?.data?.solidView?.layout?.attrs?.create !== false && (
|
|
637
525
|
<SolidCreateButton
|
|
@@ -662,9 +550,6 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
662
550
|
setShowSaveFilterPopup={setShowSaveFilterPopup}
|
|
663
551
|
filters={filters}
|
|
664
552
|
handleRefreshView={handleFetchUpdatedRecords}
|
|
665
|
-
params={params}
|
|
666
|
-
headerButtons={visibleHeaderButtons}
|
|
667
|
-
handleCustomButtonClick={handleCustomButtonClick}
|
|
668
553
|
/>
|
|
669
554
|
</div>
|
|
670
555
|
</div>
|
|
@@ -699,8 +584,6 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
699
584
|
setLightboxUrls={setLightboxUrls}
|
|
700
585
|
setOpenLightbox={setOpenLightbox}
|
|
701
586
|
showArchived={showArchived}
|
|
702
|
-
params={params}
|
|
703
|
-
handleCustomButtonClick={handleCustomButtonClick}
|
|
704
587
|
/>
|
|
705
588
|
)}
|
|
706
589
|
</div>
|
|
@@ -790,4 +673,4 @@ export const SolidCardView = forwardRef<SolidCardViewHandle, SolidCardViewParams
|
|
|
790
673
|
</SolidDialog>
|
|
791
674
|
</div>
|
|
792
675
|
);
|
|
793
|
-
}
|
|
676
|
+
};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SolidCardViewConfigure: ({ solidCardViewMetaData, modelName, actionsAllowed, viewModes, setShowArchived, showArchived, setLayoutDialogVisible, setShowSaveFilterPopup, filters, handleRefreshView,
|
|
1
|
+
export declare const SolidCardViewConfigure: ({ solidCardViewMetaData, modelName, actionsAllowed, viewModes, setShowArchived, showArchived, setLayoutDialogVisible, setShowSaveFilterPopup, filters, handleRefreshView, }: 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":"AAuDA,eAAO,MAAM,sBAAsB,gLAWhC,GAAG,4CAyNL,CAAC"}
|
|
@@ -19,7 +19,6 @@ 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";
|
|
23
22
|
var normalizeViewModes = function (viewModes) {
|
|
24
23
|
if (viewModes === void 0) { viewModes = []; }
|
|
25
24
|
return viewModes
|
|
@@ -41,14 +40,14 @@ var normalizeViewModes = function (viewModes) {
|
|
|
41
40
|
};
|
|
42
41
|
export var SolidCardViewConfigure = function (_a) {
|
|
43
42
|
var _b, _c, _d;
|
|
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
|
|
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;
|
|
45
44
|
var pathname = usePathname();
|
|
46
45
|
var router = useRouter();
|
|
47
46
|
var searchParams = useSearchParams();
|
|
48
|
-
var
|
|
49
|
-
var
|
|
50
|
-
var
|
|
51
|
-
var
|
|
47
|
+
var _e = useState(""), view = _e[0], setView = _e[1];
|
|
48
|
+
var _f = useState(false), isCogMenuOpen = _f[0], setIsCogMenuOpen = _f[1];
|
|
49
|
+
var _g = useState(false), openImportDialog = _g[0], setOpenImportDialog = _g[1];
|
|
50
|
+
var _h = useState(false), exportView = _h[0], setExportView = _h[1];
|
|
52
51
|
var visibleViewModes = normalizeViewModes(Array.isArray(viewModes) ? viewModes : []);
|
|
53
52
|
var showSwitchType = visibleViewModes.length > 1;
|
|
54
53
|
useEffect(function () {
|
|
@@ -104,21 +103,13 @@ export var SolidCardViewConfigure = function (_a) {
|
|
|
104
103
|
var canCustomizeLayout = actionsAllowed.includes("".concat(permissionExpression("userViewMetadata", "create")));
|
|
105
104
|
var canSaveCustomFilter = actionsAllowed.includes("".concat(permissionExpression("savedFilters", "create")));
|
|
106
105
|
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; });
|
|
109
106
|
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 () {
|
|
110
107
|
setOpenImportDialog(true);
|
|
111
108
|
setIsCogMenuOpen(false);
|
|
112
109
|
}, 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 () {
|
|
113
110
|
setExportView(true);
|
|
114
111
|
setIsCogMenuOpen(false);
|
|
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" })] })),
|
|
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 () {
|
|
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" })] })), 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 () {
|
|
122
113
|
setLayoutDialogVisible(true);
|
|
123
114
|
setIsCogMenuOpen(false);
|
|
124
115
|
}, 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\";\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"]}
|
|
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"]}
|
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
SolidDropdownMenuTrigger,
|
|
29
29
|
SolidIcon,
|
|
30
30
|
} from "../../shad-cn-ui";
|
|
31
|
-
import { SolidListViewHeaderContextMenuButton } from "../list/SolidListViewHeaderContextMenuButton";
|
|
32
31
|
|
|
33
32
|
const normalizeViewModes = (viewModes: any[] = []) => {
|
|
34
33
|
return viewModes
|
|
@@ -65,9 +64,6 @@ export const SolidCardViewConfigure = ({
|
|
|
65
64
|
setShowSaveFilterPopup,
|
|
66
65
|
filters,
|
|
67
66
|
handleRefreshView,
|
|
68
|
-
params,
|
|
69
|
-
headerButtons = [],
|
|
70
|
-
handleCustomButtonClick,
|
|
71
67
|
}: any) => {
|
|
72
68
|
const pathname = usePathname();
|
|
73
69
|
const router = useRouter();
|
|
@@ -138,8 +134,6 @@ export const SolidCardViewConfigure = ({
|
|
|
138
134
|
const canCustomizeLayout = actionsAllowed.includes(`${permissionExpression("userViewMetadata", "create")}`);
|
|
139
135
|
const canSaveCustomFilter = actionsAllowed.includes(`${permissionExpression("savedFilters", "create")}`);
|
|
140
136
|
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);
|
|
143
137
|
|
|
144
138
|
return (
|
|
145
139
|
<div className="position-relative">
|
|
@@ -180,34 +174,6 @@ export const SolidCardViewConfigure = ({
|
|
|
180
174
|
</SolidDropdownMenuItem>
|
|
181
175
|
)}
|
|
182
176
|
|
|
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
|
-
|
|
211
177
|
{canShowArchivedRecords && (
|
|
212
178
|
<SolidDropdownMenuCheckboxItem
|
|
213
179
|
className={showArchived ? "solid-archive-toggle-item-active" : undefined}
|
|
@@ -6,15 +6,11 @@ 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
|
-
*
|
|
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.
|
|
9
|
+
* The signed URL is fetched into a blob first, which both keeps any auth on the
|
|
10
|
+
* request and guarantees inline rendering regardless of the `Content-Disposition`
|
|
11
|
+
* the storage provider sends back. Everything else — zoom, rotation, page
|
|
12
|
+
* navigation, text search/selection, print, download — is handled natively by
|
|
13
|
+
* the browser, so there is no pdf.js worker to configure or version-match.
|
|
18
14
|
*/
|
|
19
15
|
export default function PDFViewer({ url, height }: PDFViewerProps): import("react/jsx-runtime").JSX.Element;
|
|
20
16
|
//# 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":"AAIA,MAAM,WAAW,cAAc;IAC3B,GAAG,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,EAAE,GAAG,EAAE,MAAe,EAAE,EAAE,cAAc,2CA6FzE"}
|
|
@@ -1,22 +1,114 @@
|
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
11
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
12
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
13
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
14
|
+
function step(op) {
|
|
15
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
16
|
+
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
17
|
+
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
18
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
19
|
+
switch (op[0]) {
|
|
20
|
+
case 0: case 1: t = op; break;
|
|
21
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
22
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
23
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
24
|
+
default:
|
|
25
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
26
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
27
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
28
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
29
|
+
if (t[2]) _.ops.pop();
|
|
30
|
+
_.trys.pop(); continue;
|
|
31
|
+
}
|
|
32
|
+
op = body.call(thisArg, _);
|
|
33
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
34
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
35
|
+
}
|
|
36
|
+
};
|
|
1
37
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
38
|
+
import { useEffect, useRef, useState } from 'react';
|
|
39
|
+
import { SolidButton } from '../../shad-cn-ui/SolidButton';
|
|
40
|
+
import { SolidIcon } from '../../shad-cn-ui/SolidIcon';
|
|
2
41
|
/**
|
|
3
42
|
* Renders a PDF using the browser's built-in PDF viewer.
|
|
4
43
|
*
|
|
5
|
-
* The signed URL is
|
|
6
|
-
*
|
|
7
|
-
* the storage
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* Zoom, rotation, page navigation, text search/selection, print and download all
|
|
12
|
-
* come from the browser's native viewer, so there is no pdf.js worker to
|
|
13
|
-
* configure or version-match.
|
|
44
|
+
* The signed URL is fetched into a blob first, which both keeps any auth on the
|
|
45
|
+
* request and guarantees inline rendering regardless of the `Content-Disposition`
|
|
46
|
+
* the storage provider sends back. Everything else — zoom, rotation, page
|
|
47
|
+
* navigation, text search/selection, print, download — is handled natively by
|
|
48
|
+
* the browser, so there is no pdf.js worker to configure or version-match.
|
|
14
49
|
*/
|
|
15
50
|
export default function PDFViewer(_a) {
|
|
51
|
+
var _this = this;
|
|
16
52
|
var url = _a.url, _b = _a.height, height = _b === void 0 ? '70vh' : _b;
|
|
53
|
+
var _c = useState(null), blobUrl = _c[0], setBlobUrl = _c[1];
|
|
54
|
+
var _d = useState(null), error = _d[0], setError = _d[1];
|
|
55
|
+
var _e = useState(0), reloadToken = _e[0], setReloadToken = _e[1];
|
|
56
|
+
var blobUrlRef = useRef(null);
|
|
57
|
+
useEffect(function () {
|
|
58
|
+
if (!url)
|
|
59
|
+
return;
|
|
60
|
+
var controller = new AbortController();
|
|
61
|
+
setError(null);
|
|
62
|
+
setBlobUrl(null);
|
|
63
|
+
fetch(url, { signal: controller.signal })
|
|
64
|
+
.then(function (res) { return __awaiter(_this, void 0, void 0, function () {
|
|
65
|
+
var contentType, blob, nextBlobUrl;
|
|
66
|
+
var _a;
|
|
67
|
+
return __generator(this, function (_b) {
|
|
68
|
+
switch (_b.label) {
|
|
69
|
+
case 0:
|
|
70
|
+
if (!res.ok)
|
|
71
|
+
throw new Error("Request failed with ".concat(res.status));
|
|
72
|
+
contentType = (_a = res.headers.get('content-type')) !== null && _a !== void 0 ? _a : '';
|
|
73
|
+
if (contentType && !contentType.includes('pdf') && !contentType.includes('octet-stream')) {
|
|
74
|
+
throw new Error("Unexpected content type: ".concat(contentType));
|
|
75
|
+
}
|
|
76
|
+
return [4 /*yield*/, res.blob()];
|
|
77
|
+
case 1:
|
|
78
|
+
blob = _b.sent();
|
|
79
|
+
nextBlobUrl = URL.createObjectURL(blob);
|
|
80
|
+
// Revoke the URL this one replaces so repeated previews don't leak.
|
|
81
|
+
if (blobUrlRef.current)
|
|
82
|
+
URL.revokeObjectURL(blobUrlRef.current);
|
|
83
|
+
blobUrlRef.current = nextBlobUrl;
|
|
84
|
+
setBlobUrl(nextBlobUrl);
|
|
85
|
+
return [2 /*return*/];
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}); })
|
|
89
|
+
.catch(function (err) {
|
|
90
|
+
if (controller.signal.aborted)
|
|
91
|
+
return;
|
|
92
|
+
console.error('PDF load error:', err);
|
|
93
|
+
setError('Failed to load PDF');
|
|
94
|
+
});
|
|
95
|
+
return function () { return controller.abort(); };
|
|
96
|
+
}, [url, reloadToken]);
|
|
97
|
+
useEffect(function () {
|
|
98
|
+
return function () {
|
|
99
|
+
if (blobUrlRef.current)
|
|
100
|
+
URL.revokeObjectURL(blobUrlRef.current);
|
|
101
|
+
};
|
|
102
|
+
}, []);
|
|
17
103
|
if (!url) {
|
|
18
104
|
return (_jsx("div", { className: "flex min-h-0 items-center justify-center rounded-lg bg-[var(--solid-surface-pane)]", style: { height: height }, children: _jsx("p", { className: "text-[var(--solid-text-muted)]", children: "No PDF URL provided" }) }));
|
|
19
105
|
}
|
|
20
|
-
|
|
106
|
+
if (error) {
|
|
107
|
+
return (_jsxs("div", { className: "flex min-h-0 flex-col items-center justify-center gap-4 rounded-lg bg-[var(--solid-danger-soft)]", style: { height: height }, children: [_jsx("p", { className: "text-[var(--solid-danger)]", children: error }), _jsx(SolidButton, { onClick: function () { return setReloadToken(function (t) { return t + 1; }); }, leftIcon: _jsx(SolidIcon, { name: "si-refresh", size: 16, "aria-hidden": true }), children: "Retry" })] }));
|
|
108
|
+
}
|
|
109
|
+
if (!blobUrl) {
|
|
110
|
+
return (_jsx("div", { className: "flex min-h-0 items-center justify-center rounded-lg bg-[var(--solid-surface-pane)]", style: { height: height }, children: _jsx("p", { className: "text-[var(--solid-text-secondary)]", children: "Loading PDF..." }) }));
|
|
111
|
+
}
|
|
112
|
+
return (_jsx("iframe", { src: blobUrl, title: "PDF preview", className: "block min-h-0 w-full rounded-lg border border-[var(--solid-border-default)] bg-[var(--solid-surface-pane)]", style: { height: height } }));
|
|
21
113
|
}
|
|
22
114
|
//# sourceMappingURL=PDFViewer.js.map
|