@payloadcms/ui 4.0.0-internal.cd69eef → 4.0.0-internal.d1cc1d3
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/css/app.css +121 -0
- package/dist/css/forms.css +0 -6
- package/dist/css/spacing.css +11 -3
- package/dist/css/z-index.css +1 -0
- package/dist/elements/AddNewRelation/index.css +0 -1
- package/dist/elements/AppHeader/index.css +0 -3
- package/dist/elements/AppHeader/index.d.ts.map +1 -1
- package/dist/elements/AppHeader/index.js +5 -1
- package/dist/elements/AppHeader/index.js.map +1 -1
- package/dist/elements/ArrayAction/index.d.ts +2 -0
- package/dist/elements/ArrayAction/index.d.ts.map +1 -1
- package/dist/elements/ArrayAction/index.js +65 -24
- package/dist/elements/ArrayAction/index.js.map +1 -1
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js +2 -2
- package/dist/elements/BulkUpload/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/BulkUpload/FileSidebar/index.css +4 -0
- package/dist/elements/ClipboardAction/clipboardUtilities.d.ts +8 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.js +40 -8
- package/dist/elements/ClipboardAction/clipboardUtilities.js.map +1 -1
- package/dist/elements/ClipboardAction/clipboardUtilities.spec.js +120 -0
- package/dist/elements/ClipboardAction/clipboardUtilities.spec.js.map +1 -0
- package/dist/elements/ClipboardAction/index.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/index.js +17 -1
- package/dist/elements/ClipboardAction/index.js.map +1 -1
- package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js +144 -0
- package/dist/elements/ClipboardAction/isClipboardDataValid.spec.js.map +1 -0
- package/dist/elements/ClipboardAction/types.d.ts +3 -0
- package/dist/elements/ClipboardAction/types.d.ts.map +1 -1
- package/dist/elements/ClipboardAction/types.js.map +1 -1
- package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts +10 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.d.ts.map +1 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.js +21 -0
- package/dist/elements/ClipboardAction/useCanPasteClipboard.js.map +1 -0
- package/dist/elements/CodeEditor/index.css +0 -5
- package/dist/elements/CommandPalette/index.css +0 -7
- package/dist/elements/CreateDocumentButton/index.d.ts.map +1 -1
- package/dist/elements/CreateDocumentButton/index.js +4 -1
- package/dist/elements/CreateDocumentButton/index.js.map +1 -1
- package/dist/elements/DatePicker/DatePicker.d.ts.map +1 -1
- package/dist/elements/DatePicker/DatePicker.js +1 -0
- package/dist/elements/DatePicker/DatePicker.js.map +1 -1
- package/dist/elements/DatePicker/index.css +1 -1
- package/dist/elements/DeleteDocument/index.d.ts.map +1 -1
- package/dist/elements/DeleteDocument/index.js +16 -1
- package/dist/elements/DeleteDocument/index.js.map +1 -1
- package/dist/elements/EditMany/DrawerContent.js +2 -2
- package/dist/elements/EditMany/DrawerContent.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.d.ts.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js +3 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.js.map +1 -1
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js +143 -0
- package/dist/elements/FieldSelect/reduceFieldOptions.spec.js.map +1 -0
- package/dist/elements/FileDetails/StaticFileDetails/index.css +8 -9
- package/dist/elements/FileManager/FilePreview/index.css +3 -3
- package/dist/elements/FileManager/index.css +36 -23
- package/dist/elements/FileManager/index.d.ts.map +1 -1
- package/dist/elements/FileManager/index.js +15 -4
- package/dist/elements/FileManager/index.js.map +1 -1
- package/dist/elements/Hierarchy/ColumnBrowser/ColumnItem/index.css +0 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js +109 -89
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.d.ts.map +1 -1
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js +2 -0
- package/dist/elements/Hierarchy/Tree/HierarchySidebarTab.server.js.map +1 -1
- package/dist/elements/Hierarchy/Tree/TreeNode/index.css +0 -1
- package/dist/elements/InputStepper/index.css +0 -1
- package/dist/elements/Locked/index.css +0 -8
- package/dist/elements/Locked/index.d.ts.map +1 -1
- package/dist/elements/Locked/index.js +70 -64
- package/dist/elements/Locked/index.js.map +1 -1
- package/dist/elements/MiniCarousel/index.css +39 -37
- package/dist/elements/Nav/SidebarTabs/index.client.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.client.js +12 -5
- package/dist/elements/Nav/SidebarTabs/index.client.js.map +1 -1
- package/dist/elements/Nav/SidebarTabs/index.css +0 -5
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts +1 -0
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.d.ts.map +1 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js +2 -1
- package/dist/elements/Nav/SidebarTabs/renderTabServerFn.js.map +1 -1
- package/dist/elements/NavGroup/index.css +0 -1
- package/dist/elements/PreviewButton/index.d.ts +1 -2
- package/dist/elements/PreviewButton/index.d.ts.map +1 -1
- package/dist/elements/PreviewButton/index.js +11 -5
- package/dist/elements/PreviewButton/index.js.map +1 -1
- package/dist/elements/PreviewSizes/index.css +8 -9
- package/dist/elements/ReactSelect/ClearIndicator/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValue/index.css +0 -1
- package/dist/elements/ReactSelect/MultiValueLabel/index.css +2 -2
- package/dist/elements/ReactSelect/index.css +0 -3
- package/dist/elements/RelationshipTable/Pagination.d.ts +0 -1
- package/dist/elements/RelationshipTable/Pagination.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/Pagination.js +27 -77
- package/dist/elements/RelationshipTable/Pagination.js.map +1 -1
- package/dist/elements/RelationshipTable/index.css +0 -2
- package/dist/elements/RelationshipTable/index.d.ts +1 -0
- package/dist/elements/RelationshipTable/index.d.ts.map +1 -1
- package/dist/elements/RelationshipTable/index.js +36 -3
- package/dist/elements/RelationshipTable/index.js.map +1 -1
- package/dist/elements/RenderTitle/index.css +4 -0
- package/dist/elements/RenderTitle/index.d.ts.map +1 -1
- package/dist/elements/RenderTitle/index.js +18 -13
- package/dist/elements/RenderTitle/index.js.map +1 -1
- package/dist/elements/SelectRow/index.d.ts +4 -3
- package/dist/elements/SelectRow/index.d.ts.map +1 -1
- package/dist/elements/SelectRow/index.js +10 -7
- package/dist/elements/SelectRow/index.js.map +1 -1
- package/dist/elements/SidebarToggle/index.css +0 -17
- package/dist/elements/SortColumn/index.d.ts.map +1 -1
- package/dist/elements/SortColumn/index.js +42 -38
- package/dist/elements/SortColumn/index.js.map +1 -1
- package/dist/elements/Table/OrderableRow.d.ts +3 -1
- package/dist/elements/Table/OrderableRow.d.ts.map +1 -1
- package/dist/elements/Table/OrderableRow.js +17 -1
- package/dist/elements/Table/OrderableRow.js.map +1 -1
- package/dist/elements/Table/OrderableTable.d.ts.map +1 -1
- package/dist/elements/Table/OrderableTable.js +19 -2
- package/dist/elements/Table/OrderableTable.js.map +1 -1
- package/dist/elements/Table/index.css +1 -0
- package/dist/elements/TableSection/index.css +0 -1
- package/dist/elements/TimezonePicker/index.d.ts.map +1 -1
- package/dist/elements/TimezonePicker/index.js +5 -1
- package/dist/elements/TimezonePicker/index.js.map +1 -1
- package/dist/elements/Tooltip/index.css +15 -34
- package/dist/elements/Tooltip/index.d.ts +11 -3
- package/dist/elements/Tooltip/index.d.ts.map +1 -1
- package/dist/elements/Tooltip/index.js +151 -85
- package/dist/elements/Tooltip/index.js.map +1 -1
- package/dist/elements/Upload/index.css +0 -5
- package/dist/exports/client/index.d.ts +3 -0
- package/dist/exports/client/index.d.ts.map +1 -1
- package/dist/exports/client/index.js +1 -1
- package/dist/exports/client/index.js.map +3 -3
- package/dist/exports/shared/index.d.ts +1 -0
- package/dist/exports/shared/index.d.ts.map +1 -1
- package/dist/exports/shared/index.js +2 -2
- package/dist/exports/shared/index.js.map +4 -4
- package/dist/fields/Array/ArrayRow.d.ts.map +1 -1
- package/dist/fields/Array/ArrayRow.js +97 -160
- package/dist/fields/Array/ArrayRow.js.map +1 -1
- package/dist/fields/Blocks/BlockRow.d.ts.map +1 -1
- package/dist/fields/Blocks/BlockRow.js +134 -195
- package/dist/fields/Blocks/BlockRow.js.map +1 -1
- package/dist/fields/Blocks/RowActions.d.ts +2 -0
- package/dist/fields/Blocks/RowActions.d.ts.map +1 -1
- package/dist/fields/Blocks/RowActions.js +23 -20
- package/dist/fields/Blocks/RowActions.js.map +1 -1
- package/dist/fields/Blocks/index.js +3 -3
- package/dist/fields/Blocks/index.js.map +1 -1
- package/dist/fields/Checkbox/Input.d.ts +2 -0
- package/dist/fields/Checkbox/Input.d.ts.map +1 -1
- package/dist/fields/Checkbox/Input.js +32 -26
- package/dist/fields/Checkbox/Input.js.map +1 -1
- package/dist/fields/Checkbox/index.css +37 -73
- package/dist/fields/FieldError/index.css +0 -9
- package/dist/fields/FieldError/index.d.ts.map +1 -1
- package/dist/fields/FieldError/index.js +19 -9
- package/dist/fields/FieldError/index.js.map +1 -1
- package/dist/fields/Join/index.css +9 -0
- package/dist/fields/Join/index.d.ts.map +1 -1
- package/dist/fields/Join/index.js +13 -9
- package/dist/fields/Join/index.js.map +1 -1
- package/dist/fields/RadioGroup/index.css +0 -7
- package/dist/fields/Relationship/Input.d.ts.map +1 -1
- package/dist/fields/Relationship/Input.js +32 -14
- package/dist/fields/Relationship/Input.js.map +1 -1
- package/dist/fields/Relationship/select-components/MultiValueLabel/index.css +1 -1
- package/dist/fields/Slug/index.css +0 -1
- package/dist/fields/Slug/index.d.ts.map +1 -1
- package/dist/fields/Slug/index.js +75 -111
- package/dist/fields/Slug/index.js.map +1 -1
- package/dist/fields/Upload/index.css +19 -4
- package/dist/forms/Form/fieldReducer.d.ts.map +1 -1
- package/dist/forms/Form/fieldReducer.js +3 -1
- package/dist/forms/Form/fieldReducer.js.map +1 -1
- package/dist/forms/Form/index.d.ts.map +1 -1
- package/dist/forms/Form/index.js +6 -1
- package/dist/forms/Form/index.js.map +1 -1
- package/dist/forms/Form/types.d.ts +1 -1
- package/dist/forms/Form/types.d.ts.map +1 -1
- package/dist/forms/Form/types.js.map +1 -1
- package/dist/forms/RenderFields/index.css +16 -2
- package/dist/forms/WatchChildErrors/index.d.ts.map +1 -1
- package/dist/forms/WatchChildErrors/index.js +2 -2
- package/dist/forms/WatchChildErrors/index.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js +1 -1
- package/dist/forms/fieldSchemasToFormState/addFieldStatePromise.js.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.d.ts.map +1 -1
- package/dist/forms/fieldSchemasToFormState/renderField.js +1 -3
- package/dist/forms/fieldSchemasToFormState/renderField.js.map +1 -1
- package/dist/layouts/Root/index.d.ts +1 -1
- package/dist/layouts/Root/index.d.ts.map +1 -1
- package/dist/layouts/Root/index.js +12 -4
- package/dist/layouts/Root/index.js.map +1 -1
- package/dist/providers/DocumentTitle/index.d.ts +1 -0
- package/dist/providers/DocumentTitle/index.d.ts.map +1 -1
- package/dist/providers/DocumentTitle/index.js +2 -0
- package/dist/providers/DocumentTitle/index.js.map +1 -1
- package/dist/providers/Embed/index.d.ts +24 -0
- package/dist/providers/Embed/index.d.ts.map +1 -0
- package/dist/providers/Embed/index.js +105 -0
- package/dist/providers/Embed/index.js.map +1 -0
- package/dist/providers/FormErrorHandler/index.d.ts +20 -0
- package/dist/providers/FormErrorHandler/index.d.ts.map +1 -0
- package/dist/providers/FormErrorHandler/index.js +6 -0
- package/dist/providers/FormErrorHandler/index.js.map +1 -0
- package/dist/providers/Root/index.d.ts +1 -0
- package/dist/providers/Root/index.d.ts.map +1 -1
- package/dist/providers/Root/index.js +33 -27
- package/dist/providers/Root/index.js.map +1 -1
- package/dist/providers/SidebarTabs/index.d.ts +3 -2
- package/dist/providers/SidebarTabs/index.d.ts.map +1 -1
- package/dist/providers/SidebarTabs/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.d.ts.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.js.map +1 -1
- package/dist/providers/TableColumns/buildColumnState/index.spec.js +40 -0
- package/dist/providers/TableColumns/buildColumnState/index.spec.js.map +1 -0
- package/dist/providers/Theme/index.d.ts +5 -2
- package/dist/providers/Theme/index.d.ts.map +1 -1
- package/dist/providers/Theme/index.js +109 -96
- package/dist/providers/Theme/index.js.map +1 -1
- package/dist/providers/Theme/shared.d.ts +3 -0
- package/dist/providers/Theme/shared.d.ts.map +1 -0
- package/dist/providers/Theme/shared.js +2 -0
- package/dist/providers/Theme/shared.js.map +1 -0
- package/dist/providers/UploadHandlers/index.js +2 -2
- package/dist/providers/UploadHandlers/index.js.map +1 -1
- package/dist/styles.css +13 -10
- package/dist/utilities/combineFieldLabel.d.ts.map +1 -1
- package/dist/utilities/combineFieldLabel.js +5 -1
- package/dist/utilities/combineFieldLabel.js.map +1 -1
- package/dist/utilities/generateFieldID.d.ts +1 -1
- package/dist/utilities/generateFieldID.d.ts.map +1 -1
- package/dist/utilities/generateFieldID.js +2 -2
- package/dist/utilities/generateFieldID.js.map +1 -1
- package/dist/utilities/getLanguageDir.d.ts +12 -0
- package/dist/utilities/getLanguageDir.d.ts.map +1 -0
- package/dist/utilities/getLanguageDir.js +12 -0
- package/dist/utilities/getLanguageDir.js.map +1 -0
- package/dist/utilities/getRequestEmbed.d.ts +14 -0
- package/dist/utilities/getRequestEmbed.d.ts.map +1 -0
- package/dist/utilities/getRequestEmbed.js +10 -0
- package/dist/utilities/getRequestEmbed.js.map +1 -0
- package/dist/utilities/getRequestTheme.d.ts +1 -1
- package/dist/utilities/getRequestTheme.d.ts.map +1 -1
- package/dist/utilities/getRequestTheme.js +1 -1
- package/dist/utilities/getRequestTheme.js.map +1 -1
- package/dist/utilities/handleServerFunctions.d.ts +32 -8
- package/dist/utilities/handleServerFunctions.d.ts.map +1 -1
- package/dist/utilities/handleServerFunctions.js +17 -37
- package/dist/utilities/handleServerFunctions.js.map +1 -1
- package/dist/utilities/renderTable.d.ts.map +1 -1
- package/dist/utilities/renderTable.js +18 -2
- package/dist/utilities/renderTable.js.map +1 -1
- package/dist/utilities/serverFunctionRegistry.d.ts +12 -7
- package/dist/utilities/serverFunctionRegistry.d.ts.map +1 -1
- package/dist/utilities/serverFunctionRegistry.js +25 -7
- package/dist/utilities/serverFunctionRegistry.js.map +1 -1
- package/dist/utilities/slugify.d.ts.map +1 -1
- package/dist/utilities/slugify.js +49 -6
- package/dist/utilities/slugify.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/index.css +0 -8
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js +4 -4
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/RenderWidget.js.map +1 -1
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js +10 -10
- package/dist/views/Dashboard/Default/ModularDashboard/renderWidget/renderWidgetServerFn.js.map +1 -1
- package/dist/views/Edit/index.css +61 -53
- package/dist/views/HierarchyList/index.css +1 -1
- package/dist/views/List/index.css +1 -1
- package/dist/views/List/index.d.ts.map +1 -1
- package/dist/views/List/index.js +4 -0
- package/dist/views/List/index.js.map +1 -1
- package/dist/views/Logout/index.d.ts.map +1 -1
- package/dist/views/Logout/index.js +11 -0
- package/dist/views/Logout/index.js.map +1 -1
- package/dist/views/Root/index.d.ts +12 -1
- package/dist/views/Root/index.d.ts.map +1 -1
- package/dist/views/Root/index.js +10 -3
- package/dist/views/Root/index.js.map +1 -1
- package/package.json +5 -10
- package/dist/elements/RelationshipTable/Pagination.css +0 -39
- package/dist/scss/app.scss +0 -183
- package/dist/scss/colors.scss +0 -191
- package/dist/scss/custom.css +0 -1
- package/dist/scss/queries.scss +0 -27
- package/dist/scss/styles.scss +0 -9
- package/dist/scss/svg.scss +0 -10
- package/dist/scss/toastify.scss +0 -61
- package/dist/scss/vars.scss +0 -192
- package/dist/scss/z-index.scss +0 -9
|
@@ -13,7 +13,7 @@ import { HydrateHierarchyProvider } from '../HydrateProvider/index.js';
|
|
|
13
13
|
import { HierarchySearch } from '../Search/index.js';
|
|
14
14
|
import { HierarchyTree } from './index.js';
|
|
15
15
|
export const HierarchySidebarTab = t0 => {
|
|
16
|
-
const $ = _c(
|
|
16
|
+
const $ = _c(44);
|
|
17
17
|
const {
|
|
18
18
|
baseFilter,
|
|
19
19
|
collectionSpecificOptions,
|
|
@@ -57,83 +57,107 @@ export const HierarchySidebarTab = t0 => {
|
|
|
57
57
|
treeRefreshKeys
|
|
58
58
|
} = useHierarchy();
|
|
59
59
|
const sidebarTabs = useSidebarTabs();
|
|
60
|
-
const
|
|
60
|
+
const resolvedParentFieldName = parentFieldName ?? "parent";
|
|
61
61
|
let t4;
|
|
62
|
-
if ($[2] !==
|
|
63
|
-
t4 =
|
|
64
|
-
$[2] =
|
|
65
|
-
$[3] =
|
|
62
|
+
if ($[2] !== resolvedParentFieldName || $[3] !== searchParams) {
|
|
63
|
+
t4 = searchParams.get(resolvedParentFieldName);
|
|
64
|
+
$[2] = resolvedParentFieldName;
|
|
65
|
+
$[3] = searchParams;
|
|
66
66
|
$[4] = t4;
|
|
67
67
|
} else {
|
|
68
68
|
t4 = $[4];
|
|
69
69
|
}
|
|
70
|
-
const
|
|
71
|
-
const
|
|
70
|
+
const currentParentParam = t4;
|
|
71
|
+
const tabSlug = `hierarchy-${hierarchyCollectionSlug}`;
|
|
72
|
+
const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug;
|
|
72
73
|
let t5;
|
|
74
|
+
if ($[5] !== hierarchyCollectionSlug || $[6] !== treeRefreshKeys) {
|
|
75
|
+
t5 = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0;
|
|
76
|
+
$[5] = hierarchyCollectionSlug;
|
|
77
|
+
$[6] = treeRefreshKeys;
|
|
78
|
+
$[7] = t5;
|
|
79
|
+
} else {
|
|
80
|
+
t5 = $[7];
|
|
81
|
+
}
|
|
82
|
+
const treeRefreshKey = t5;
|
|
83
|
+
const prevTreeRefreshKeyRef = useRef(treeRefreshKey);
|
|
73
84
|
let t6;
|
|
74
|
-
|
|
75
|
-
|
|
85
|
+
let t7;
|
|
86
|
+
if ($[8] !== currentParentParam || $[9] !== isActiveTab || $[10] !== resolvedParentFieldName || $[11] !== sidebarTabs || $[12] !== tabSlug || $[13] !== treeRefreshKey) {
|
|
87
|
+
t6 = () => {
|
|
76
88
|
if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {
|
|
77
89
|
prevTreeRefreshKeyRef.current = treeRefreshKey;
|
|
78
|
-
sidebarTabs?.reloadTabContent(tabSlug
|
|
90
|
+
sidebarTabs?.reloadTabContent(tabSlug, {
|
|
91
|
+
searchParams: isActiveTab && currentParentParam ? {
|
|
92
|
+
[resolvedParentFieldName]: currentParentParam
|
|
93
|
+
} : undefined
|
|
94
|
+
});
|
|
79
95
|
}
|
|
80
96
|
};
|
|
81
|
-
|
|
82
|
-
$[
|
|
83
|
-
$[
|
|
84
|
-
$[
|
|
85
|
-
$[
|
|
86
|
-
$[
|
|
97
|
+
t7 = [treeRefreshKey, sidebarTabs, tabSlug, isActiveTab, currentParentParam, resolvedParentFieldName];
|
|
98
|
+
$[8] = currentParentParam;
|
|
99
|
+
$[9] = isActiveTab;
|
|
100
|
+
$[10] = resolvedParentFieldName;
|
|
101
|
+
$[11] = sidebarTabs;
|
|
102
|
+
$[12] = tabSlug;
|
|
103
|
+
$[13] = treeRefreshKey;
|
|
104
|
+
$[14] = t6;
|
|
105
|
+
$[15] = t7;
|
|
87
106
|
} else {
|
|
88
|
-
|
|
89
|
-
|
|
107
|
+
t6 = $[14];
|
|
108
|
+
t7 = $[15];
|
|
90
109
|
}
|
|
91
|
-
useEffect(
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
110
|
+
useEffect(t6, t7);
|
|
111
|
+
const selectedNodeId = isActiveTab ? currentParentParam ?? selectedNodeIdFromServer ?? undefined : undefined;
|
|
112
|
+
let t8;
|
|
113
|
+
if ($[16] !== baseFilter) {
|
|
114
|
+
t8 = baseFilter ? JSON.stringify(baseFilter) : "";
|
|
115
|
+
$[16] = baseFilter;
|
|
116
|
+
$[17] = t8;
|
|
117
|
+
} else {
|
|
118
|
+
t8 = $[17];
|
|
119
|
+
}
|
|
120
|
+
const baseFilterKey = t8;
|
|
121
|
+
let t9;
|
|
122
|
+
if ($[18] !== setSelectedFiltersContext) {
|
|
123
|
+
t9 = filters => {
|
|
124
|
+
setSelectedFiltersLocal(filters);
|
|
125
|
+
setSelectedFiltersContext(filters);
|
|
126
|
+
};
|
|
127
|
+
$[18] = setSelectedFiltersContext;
|
|
128
|
+
$[19] = t9;
|
|
129
|
+
} else {
|
|
130
|
+
t9 = $[19];
|
|
131
|
+
}
|
|
132
|
+
const handleFilterChange = t9;
|
|
133
|
+
let t10;
|
|
134
|
+
if ($[20] !== adminRoute || $[21] !== hierarchyCollectionSlug || $[22] !== resolvedParentFieldName || $[23] !== router || $[24] !== startRouteTransition) {
|
|
135
|
+
t10 = t11 => {
|
|
136
|
+
const {
|
|
137
|
+
id
|
|
138
|
+
} = t11;
|
|
139
|
+
const url = formatAdminURL({
|
|
140
|
+
adminRoute,
|
|
141
|
+
path: `/collections/${hierarchyCollectionSlug}/hierarchy?${resolvedParentFieldName}=${id}`
|
|
142
|
+
});
|
|
143
|
+
startRouteTransition(() => {
|
|
144
|
+
router.push(url);
|
|
145
|
+
router.refresh();
|
|
146
|
+
});
|
|
147
|
+
};
|
|
148
|
+
$[20] = adminRoute;
|
|
149
|
+
$[21] = hierarchyCollectionSlug;
|
|
150
|
+
$[22] = resolvedParentFieldName;
|
|
151
|
+
$[23] = router;
|
|
152
|
+
$[24] = startRouteTransition;
|
|
153
|
+
$[25] = t10;
|
|
154
|
+
} else {
|
|
155
|
+
t10 = $[25];
|
|
156
|
+
}
|
|
157
|
+
const handleNavigateToParent = t10;
|
|
158
|
+
let t11;
|
|
159
|
+
if ($[26] !== baseFilter || $[27] !== baseFilterKey || $[28] !== collectionSpecificOptions || $[29] !== handleFilterChange || $[30] !== handleNavigateToParent || $[31] !== hierarchyCollectionSlug || $[32] !== icon || $[33] !== initialData || $[34] !== initialExpandedNodes || $[35] !== initialSelectedFilters || $[36] !== isSearchActive || $[37] !== parentFieldName || $[38] !== selectedFilters || $[39] !== selectedNodeId || $[40] !== treeLimit || $[41] !== typeFieldName || $[42] !== useAsTitle) {
|
|
160
|
+
t11 = _jsxs(_Fragment, {
|
|
137
161
|
children: [_jsx(HydrateHierarchyProvider, {
|
|
138
162
|
baseFilter,
|
|
139
163
|
collectionSlug: hierarchyCollectionSlug,
|
|
@@ -166,31 +190,27 @@ export const HierarchySidebarTab = t0 => {
|
|
|
166
190
|
}, `${hierarchyCollectionSlug}-${baseFilterKey}`)]
|
|
167
191
|
})]
|
|
168
192
|
});
|
|
169
|
-
$[
|
|
170
|
-
$[
|
|
171
|
-
$[
|
|
172
|
-
$[
|
|
173
|
-
$[
|
|
174
|
-
$[
|
|
175
|
-
$[
|
|
176
|
-
$[
|
|
177
|
-
$[
|
|
178
|
-
$[
|
|
179
|
-
$[
|
|
180
|
-
$[
|
|
181
|
-
$[
|
|
182
|
-
$[
|
|
183
|
-
$[
|
|
184
|
-
$[
|
|
185
|
-
$[
|
|
186
|
-
$[
|
|
187
|
-
$[28] = treeLimit;
|
|
188
|
-
$[29] = typeFieldName;
|
|
189
|
-
$[30] = useAsTitle;
|
|
190
|
-
$[31] = t7;
|
|
193
|
+
$[26] = baseFilter;
|
|
194
|
+
$[27] = baseFilterKey;
|
|
195
|
+
$[28] = collectionSpecificOptions;
|
|
196
|
+
$[29] = handleFilterChange;
|
|
197
|
+
$[30] = handleNavigateToParent;
|
|
198
|
+
$[31] = hierarchyCollectionSlug;
|
|
199
|
+
$[32] = icon;
|
|
200
|
+
$[33] = initialData;
|
|
201
|
+
$[34] = initialExpandedNodes;
|
|
202
|
+
$[35] = initialSelectedFilters;
|
|
203
|
+
$[36] = isSearchActive;
|
|
204
|
+
$[37] = parentFieldName;
|
|
205
|
+
$[38] = selectedFilters;
|
|
206
|
+
$[39] = selectedNodeId;
|
|
207
|
+
$[40] = treeLimit;
|
|
208
|
+
$[41] = typeFieldName;
|
|
209
|
+
$[42] = useAsTitle;
|
|
210
|
+
$[43] = t11;
|
|
191
211
|
} else {
|
|
192
|
-
|
|
212
|
+
t11 = $[43];
|
|
193
213
|
}
|
|
194
|
-
return
|
|
214
|
+
return t11;
|
|
195
215
|
};
|
|
196
216
|
//# sourceMappingURL=HierarchySidebarTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchySidebarTab.js","names":["c","_c","formatAdminURL","React","useCallback","useEffect","useRef","useState","useConfig","useHierarchy","useRouter","useSearchParams","useRouteTransition","useSidebarTabs","HydrateHierarchyProvider","HierarchySearch","HierarchyTree","HierarchySidebarTab","t0","$","baseFilter","collectionSpecificOptions","hierarchyCollectionSlug","icon","initialData","initialExpandedNodes","initialSelectedFilters","parentFieldName","selectedNodeId","selectedNodeIdFromServer","treeLimit","typeFieldName","useAsTitle","router","searchParams","startRouteTransition","config","t1","routes","t2","admin","adminRoute","isSearchActive","setIsSearchActive","t3","selectedFilters","setSelectedFiltersLocal","setSelectedFilters","setSelectedFiltersContext","treeRefreshKeys","sidebarTabs","tabSlug","t4","get","treeRefreshKey","prevTreeRefreshKeyRef","t5","t6","current","reloadTabContent","t7","activeTabSlug","parentParam","isActiveTab","undefined","baseFilterKey","JSON","stringify","t8","filters","handleFilterChange","t9","t10","id","queryParam","url","path","push","refresh","handleNavigateToParent","_jsxs","_Fragment","children","_jsx","collectionSlug","expandedNodes","treeData","className","isActive","onActiveChange","onFilterChange","onSelect","filterByCollections","length","onNodeClick"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"sourcesContent":["'use client'\n\nimport type { SidebarTabClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { HierarchyInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useSidebarTabs } from '../../../providers/SidebarTabs/index.js'\nimport { HydrateHierarchyProvider } from '../HydrateProvider/index.js'\nimport { HierarchySearch } from '../Search/index.js'\nimport { HierarchyTree } from './index.js'\n\nexport const HierarchySidebarTab: React.FC<\n {\n baseFilter?: Record<string, unknown>\n collectionSpecificOptions?: { label: string; value: string }[]\n hierarchyCollectionSlug: string\n icon?: React.ReactNode\n initialData?: HierarchyInitialData | null\n initialExpandedNodes?: (number | string)[]\n initialSelectedFilters?: string[]\n parentFieldName?: string\n selectedNodeId?: null | string\n treeLimit?: number\n typeFieldName?: string\n useAsTitle?: string\n } & SidebarTabClientProps\n> = ({\n baseFilter,\n collectionSpecificOptions,\n hierarchyCollectionSlug,\n icon,\n initialData,\n initialExpandedNodes,\n initialSelectedFilters,\n parentFieldName,\n selectedNodeId: selectedNodeIdFromServer,\n treeLimit,\n typeFieldName,\n useAsTitle,\n}) => {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [selectedFilters, setSelectedFiltersLocal] = useState<string[]>(\n initialSelectedFilters ?? [],\n )\n const { setSelectedFilters: setSelectedFiltersContext, treeRefreshKeys } = useHierarchy()\n const sidebarTabs = useSidebarTabs()\n\n // When refreshTree(slug) is called from the list view (e.g. after mutations), reload this tab.\n // Always reload regardless of active state so inactive tabs are fresh when switched to.\n const tabSlug = `hierarchy-${hierarchyCollectionSlug}`\n const treeRefreshKey = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0\n const prevTreeRefreshKeyRef = useRef(treeRefreshKey)\n useEffect(() => {\n if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {\n prevTreeRefreshKeyRef.current = treeRefreshKey\n sidebarTabs?.reloadTabContent(tabSlug)\n }\n }, [treeRefreshKey, sidebarTabs, tabSlug])\n\n // Only highlight selected node when this tab is active\n const parentParam = searchParams.get(parentFieldName ?? 'parent')\n const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug\n const selectedNodeId = isActiveTab\n ? (parentParam ?? selectedNodeIdFromServer ?? undefined)\n : undefined\n\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n\n const handleFilterChange = useCallback(\n (filters: string[]) => {\n setSelectedFiltersLocal(filters)\n setSelectedFiltersContext(filters)\n },\n [setSelectedFiltersContext],\n )\n\n const handleNavigateToParent = useCallback(\n ({ id }: { id: number | string }) => {\n const queryParam = parentFieldName ?? 'parent'\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${hierarchyCollectionSlug}/hierarchy?${queryParam}=${id}`,\n })\n startRouteTransition(() => {\n router.push(url)\n router.refresh()\n })\n },\n [adminRoute, hierarchyCollectionSlug, parentFieldName, router, startRouteTransition],\n )\n return (\n <>\n <HydrateHierarchyProvider\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n expandedNodes={initialExpandedNodes}\n parentFieldName={parentFieldName}\n selectedFilters={initialSelectedFilters}\n treeData={initialData}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n />\n <div className=\"hierarchy-sidebar-tab\">\n <HierarchySearch\n collectionSlug={hierarchyCollectionSlug}\n collectionSpecificOptions={collectionSpecificOptions}\n isActive={isSearchActive}\n onActiveChange={setIsSearchActive}\n onFilterChange={handleFilterChange}\n onSelect={handleNavigateToParent}\n selectedFilters={selectedFilters}\n />\n {!isSearchActive && (\n <HierarchyTree\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n filterByCollections={selectedFilters.length > 0 ? selectedFilters : undefined}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n key={`${hierarchyCollectionSlug}-${baseFilterKey}`}\n onNodeClick={handleNavigateToParent}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )}\n </div>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"HierarchySidebarTab.js","names":["c","_c","formatAdminURL","React","useCallback","useEffect","useRef","useState","useConfig","useHierarchy","useRouter","useSearchParams","useRouteTransition","useSidebarTabs","HydrateHierarchyProvider","HierarchySearch","HierarchyTree","HierarchySidebarTab","t0","$","baseFilter","collectionSpecificOptions","hierarchyCollectionSlug","icon","initialData","initialExpandedNodes","initialSelectedFilters","parentFieldName","selectedNodeId","selectedNodeIdFromServer","treeLimit","typeFieldName","useAsTitle","router","searchParams","startRouteTransition","config","t1","routes","t2","admin","adminRoute","isSearchActive","setIsSearchActive","t3","selectedFilters","setSelectedFiltersLocal","setSelectedFilters","setSelectedFiltersContext","treeRefreshKeys","sidebarTabs","resolvedParentFieldName","t4","get","currentParentParam","tabSlug","isActiveTab","activeTabSlug","t5","treeRefreshKey","prevTreeRefreshKeyRef","t6","t7","current","reloadTabContent","undefined","t8","JSON","stringify","baseFilterKey","t9","filters","handleFilterChange","t10","t11","id","url","path","push","refresh","handleNavigateToParent","_jsxs","_Fragment","children","_jsx","collectionSlug","expandedNodes","treeData","className","isActive","onActiveChange","onFilterChange","onSelect","filterByCollections","length","onNodeClick"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.tsx"],"sourcesContent":["'use client'\n\nimport type { SidebarTabClientProps } from 'payload'\n\nimport { formatAdminURL } from 'payload/shared'\nimport React, { useCallback, useEffect, useRef, useState } from 'react'\n\nimport type { HierarchyInitialData } from './types.js'\n\nimport { useConfig } from '../../../providers/Config/index.js'\nimport { useHierarchy } from '../../../providers/Hierarchy/index.js'\nimport { useRouter, useSearchParams } from '../../../providers/RouterAdapter/index.js'\nimport { useRouteTransition } from '../../../providers/RouteTransition/index.js'\nimport { useSidebarTabs } from '../../../providers/SidebarTabs/index.js'\nimport { HydrateHierarchyProvider } from '../HydrateProvider/index.js'\nimport { HierarchySearch } from '../Search/index.js'\nimport { HierarchyTree } from './index.js'\n\nexport const HierarchySidebarTab: React.FC<\n {\n baseFilter?: Record<string, unknown>\n collectionSpecificOptions?: { label: string; value: string }[]\n hierarchyCollectionSlug: string\n icon?: React.ReactNode\n initialData?: HierarchyInitialData | null\n initialExpandedNodes?: (number | string)[]\n initialSelectedFilters?: string[]\n parentFieldName?: string\n selectedNodeId?: null | string\n treeLimit?: number\n typeFieldName?: string\n useAsTitle?: string\n } & SidebarTabClientProps\n> = ({\n baseFilter,\n collectionSpecificOptions,\n hierarchyCollectionSlug,\n icon,\n initialData,\n initialExpandedNodes,\n initialSelectedFilters,\n parentFieldName,\n selectedNodeId: selectedNodeIdFromServer,\n treeLimit,\n typeFieldName,\n useAsTitle,\n}) => {\n const router = useRouter()\n const searchParams = useSearchParams()\n const { startRouteTransition } = useRouteTransition()\n const {\n config: {\n routes: { admin: adminRoute },\n },\n } = useConfig()\n const [isSearchActive, setIsSearchActive] = useState(false)\n const [selectedFilters, setSelectedFiltersLocal] = useState<string[]>(\n initialSelectedFilters ?? [],\n )\n const { setSelectedFilters: setSelectedFiltersContext, treeRefreshKeys } = useHierarchy()\n const sidebarTabs = useSidebarTabs()\n\n const resolvedParentFieldName = parentFieldName ?? 'parent'\n const currentParentParam = searchParams.get(resolvedParentFieldName)\n\n // When refreshTree(slug) is called from the list view (e.g. after mutations), reload this tab.\n // Always reload regardless of active state so inactive tabs are fresh when switched to.\n // The render-tab server function runs with a fresh request that lacks the client's URL query,\n // so forward the current selected parent id — otherwise the reload can't tell which node is\n // being viewed and rebuilds the tree from preference state.\n const tabSlug = `hierarchy-${hierarchyCollectionSlug}`\n const isActiveTab = sidebarTabs?.activeTabSlug === tabSlug\n const treeRefreshKey = treeRefreshKeys.get(hierarchyCollectionSlug) ?? 0\n const prevTreeRefreshKeyRef = useRef(treeRefreshKey)\n useEffect(() => {\n if (prevTreeRefreshKeyRef.current !== treeRefreshKey) {\n prevTreeRefreshKeyRef.current = treeRefreshKey\n // Only forward the selected parent id when this tab is active. currentParentParam\n // reflects the global URL search params, so an inactive tab could otherwise pick up\n // another hierarchy collection's value if they share the same parentFieldName.\n sidebarTabs?.reloadTabContent(tabSlug, {\n searchParams:\n isActiveTab && currentParentParam\n ? { [resolvedParentFieldName]: currentParentParam }\n : undefined,\n })\n }\n }, [\n treeRefreshKey,\n sidebarTabs,\n tabSlug,\n isActiveTab,\n currentParentParam,\n resolvedParentFieldName,\n ])\n\n // Only highlight selected node when this tab is active\n const selectedNodeId = isActiveTab\n ? (currentParentParam ?? selectedNodeIdFromServer ?? undefined)\n : undefined\n\n const baseFilterKey = baseFilter ? JSON.stringify(baseFilter) : ''\n\n const handleFilterChange = useCallback(\n (filters: string[]) => {\n setSelectedFiltersLocal(filters)\n setSelectedFiltersContext(filters)\n },\n [setSelectedFiltersContext],\n )\n\n const handleNavigateToParent = useCallback(\n ({ id }: { id: number | string }) => {\n const url = formatAdminURL({\n adminRoute,\n path: `/collections/${hierarchyCollectionSlug}/hierarchy?${resolvedParentFieldName}=${id}`,\n })\n startRouteTransition(() => {\n router.push(url)\n router.refresh()\n })\n },\n [adminRoute, hierarchyCollectionSlug, resolvedParentFieldName, router, startRouteTransition],\n )\n return (\n <>\n <HydrateHierarchyProvider\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n expandedNodes={initialExpandedNodes}\n parentFieldName={parentFieldName}\n selectedFilters={initialSelectedFilters}\n treeData={initialData}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n />\n <div className=\"hierarchy-sidebar-tab\">\n <HierarchySearch\n collectionSlug={hierarchyCollectionSlug}\n collectionSpecificOptions={collectionSpecificOptions}\n isActive={isSearchActive}\n onActiveChange={setIsSearchActive}\n onFilterChange={handleFilterChange}\n onSelect={handleNavigateToParent}\n selectedFilters={selectedFilters}\n />\n {!isSearchActive && (\n <HierarchyTree\n baseFilter={baseFilter}\n collectionSlug={hierarchyCollectionSlug}\n filterByCollections={selectedFilters.length > 0 ? selectedFilters : undefined}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n key={`${hierarchyCollectionSlug}-${baseFilterKey}`}\n onNodeClick={handleNavigateToParent}\n selectedNodeId={selectedNodeId}\n useAsTitle={useAsTitle}\n />\n )}\n </div>\n </>\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchySidebarTab.server.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAS,MAAM,SAAS,CAAA;AAK3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,uBAAuB,EAAE,MAAM,CAAA;CAChC,GAAG,qBAAqB,CAAA;AAEzB,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,
|
|
1
|
+
{"version":3,"file":"HierarchySidebarTab.server.d.ts","sourceRoot":"","sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAS,MAAM,SAAS,CAAA;AAK3D,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,MAAM,8BAA8B,GAAG;IAC3C,uBAAuB,EAAE,MAAM,CAAA;CAChC,GAAG,qBAAqB,CAAA;AAEzB,eAAO,MAAM,yBAAyB,EAAE,KAAK,CAAC,EAAE,CAAC,8BAA8B,CA+L9E,CAAA"}
|
|
@@ -131,6 +131,8 @@ export const HierarchySidebarTabServer = async ({
|
|
|
131
131
|
// Merge ancestor IDs with existing expanded nodes
|
|
132
132
|
const expandedSet = new Set(initialExpandedNodes);
|
|
133
133
|
ancestorIds.forEach(id => expandedSet.add(id));
|
|
134
|
+
// Include the selected node itself so its own children are loaded.
|
|
135
|
+
expandedSet.add(selectedNodeId);
|
|
134
136
|
initialExpandedNodes = Array.from(expandedSet);
|
|
135
137
|
}
|
|
136
138
|
const baseFilterFn = collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HierarchySidebarTab.server.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","getInitialTreeData","PREFERENCE_KEYS","React","HierarchySidebarTab","TagIcon","RenderServerComponent","HierarchySidebarTabServer","hierarchyCollectionSlug","i18n","payload","req","searchParams","user","initialData","initialExpandedNodes","initialSelectedFilters","selectedNodeId","parentFieldName","treeLimit","typeFieldName","useAsTitle","collectionSpecificOptions","baseFilter","collectionConfig","collections","config","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","SmallIcon","icon","clientProps","size","Component","importMap","key","_jsx","selectedNodeParam","String","preferenceKey","HIERARCHY_TREE","docs","preferenceDocs","find","collection","limit","overrideAccess","where","and","equals","id","preferences","value","expandedNodes","selectedFilters","collectionSpecific","fieldName","relatedCollections","Object","keys","map","slug","relatedConfig","label","labels","plural","sort","a","b","localeCompare","selectedNodeParentId","ancestorIds","currentNodeId","isFirstIteration","node","findByID","depth","parentId","push","expandedSet","Set","forEach","add","Array","from","baseFilterFn","baseListFilter","page","collectionSlug","expandedNodeIds","length","filterByCollections","error","logger","warn","err","msg"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"sourcesContent":["import type { SidebarTabServerProps, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, getInitialTreeData } from 'payload'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchySidebarTab } from '../../../exports/client/index.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { RenderServerComponent } from '../../RenderServerComponent/index.js'\n\nexport type HierarchySidebarTabServerProps = {\n hierarchyCollectionSlug: string\n} & SidebarTabServerProps\n\nexport const HierarchySidebarTabServer: React.FC<HierarchySidebarTabServerProps> = async ({\n hierarchyCollectionSlug,\n i18n,\n payload,\n req,\n searchParams,\n user,\n}) => {\n if (!user) {\n return null\n }\n\n let initialData = null\n let initialExpandedNodes: (number | string)[] = []\n let initialSelectedFilters: string[] = []\n let selectedNodeId: null | string = null\n let parentFieldName = 'parent'\n let treeLimit: number | undefined\n let typeFieldName: string | undefined\n let useAsTitle: string | undefined\n let collectionSpecificOptions: { label: string; value: string }[] = []\n let baseFilter: null | Where = null\n\n // Get collection config and render icon (outside try block - doesn't need async)\n const collectionConfig = payload.collections[hierarchyCollectionSlug]?.config\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const IconComponent = hierarchyConfig?.admin?.components?.SmallIcon\n const icon = IconComponent ? (\n RenderServerComponent({\n clientProps: { size: 16 },\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-sidebar-icon-${hierarchyCollectionSlug}`,\n })\n ) : (\n <TagIcon size={16} />\n )\n\n try {\n // Get parentFieldName from config first (needed for URL parsing)\n parentFieldName = hierarchyConfig?.parentFieldName ?? 'parent'\n\n // Get selected node from URL (?<parentFieldName>=<id>)\n const selectedNodeParam = searchParams?.[parentFieldName]\n selectedNodeId = selectedNodeParam ? String(selectedNodeParam) : null\n\n // STEP 1: Load user's expanded node preferences\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${hierarchyCollectionSlug}`\n\n const { docs: preferenceDocs } = await payload.find({\n collection: 'payload-preferences',\n limit: 1,\n overrideAccess: false,\n user,\n where: {\n and: [\n { key: { equals: preferenceKey } },\n { 'user.value': { equals: user.id } },\n { 'user.relationTo': { equals: user.collection } },\n ],\n },\n })\n\n const preferences = preferenceDocs[0]\n\n if (preferences?.value?.expandedNodes) {\n initialExpandedNodes = preferences.value.expandedNodes\n }\n\n if (preferences?.value?.selectedFilters) {\n initialSelectedFilters = preferences.value.selectedFilters\n }\n\n // STEP 2: Get remaining config values\n treeLimit = hierarchyConfig?.admin?.treeLimit\n typeFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n useAsTitle = collectionConfig?.admin?.useAsTitle\n\n // STEP 2.5: Build collection-specific options from related collections\n if (hierarchyConfig.collectionSpecific && hierarchyConfig?.relatedCollections) {\n collectionSpecificOptions = Object.keys(hierarchyConfig.relatedCollections)\n .map((slug) => {\n const relatedConfig = payload.collections[slug]?.config\n const label = relatedConfig?.labels?.plural ?? slug\n\n return {\n label: getTranslation(label, i18n),\n value: slug,\n }\n })\n .sort((a, b) => a.label.localeCompare(b.label))\n }\n\n // Track the immediate parent of the selected node (for ensuring siblings are loaded)\n let selectedNodeParentId: null | number | string = null\n\n // If there's a selected node, ensure its ancestor chain is expanded\n if (selectedNodeId) {\n // Walk up the parent chain to root\n const ancestorIds: (number | string)[] = []\n let currentNodeId: null | number | string = selectedNodeId\n let isFirstIteration = true\n\n while (currentNodeId) {\n try {\n const node = await payload.findByID({\n id: currentNodeId,\n collection: hierarchyCollectionSlug,\n depth: 0,\n overrideAccess: false,\n user,\n })\n\n const parentId = node?.[parentFieldName]\n\n // Capture the immediate parent of the selected node\n if (isFirstIteration) {\n selectedNodeParentId = parentId ?? null\n isFirstIteration = false\n }\n\n if (parentId) {\n ancestorIds.push(parentId)\n currentNodeId = parentId\n } else {\n currentNodeId = null\n }\n } catch {\n // Node not found or access denied\n break\n }\n }\n\n // Merge ancestor IDs with existing expanded nodes\n const expandedSet = new Set(initialExpandedNodes)\n ancestorIds.forEach((id) => expandedSet.add(id))\n initialExpandedNodes = Array.from(expandedSet)\n }\n\n const baseFilterFn =\n collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter\n if (baseFilterFn && req) {\n baseFilter =\n (await baseFilterFn({ limit: DEFAULT_HIERARCHY_TREE_LIMIT, page: 1, req, sort: 'id' })) ??\n null\n }\n\n initialData = await getInitialTreeData({\n baseFilter,\n collectionSlug: hierarchyCollectionSlug,\n expandedNodeIds: initialExpandedNodes,\n ...(initialSelectedFilters.length > 0 && { filterByCollections: initialSelectedFilters }),\n ...(treeLimit !== undefined && { limit: treeLimit }),\n payload,\n selectedNodeId,\n selectedNodeParentId,\n user: req.user,\n })\n } catch (error) {\n payload.logger.warn({\n err: error,\n msg: `Failed to fetch hierarchy data for ${hierarchyCollectionSlug}`,\n })\n // Fall back to client-side fetching if server fetch fails\n }\n\n return (\n <HierarchySidebarTab\n baseFilter={baseFilter}\n collectionSpecificOptions={collectionSpecificOptions}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n initialSelectedFilters={initialSelectedFilters}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"HierarchySidebarTab.server.js","names":["getTranslation","DEFAULT_HIERARCHY_TREE_LIMIT","getInitialTreeData","PREFERENCE_KEYS","React","HierarchySidebarTab","TagIcon","RenderServerComponent","HierarchySidebarTabServer","hierarchyCollectionSlug","i18n","payload","req","searchParams","user","initialData","initialExpandedNodes","initialSelectedFilters","selectedNodeId","parentFieldName","treeLimit","typeFieldName","useAsTitle","collectionSpecificOptions","baseFilter","collectionConfig","collections","config","hierarchyConfig","hierarchy","undefined","IconComponent","admin","components","SmallIcon","icon","clientProps","size","Component","importMap","key","_jsx","selectedNodeParam","String","preferenceKey","HIERARCHY_TREE","docs","preferenceDocs","find","collection","limit","overrideAccess","where","and","equals","id","preferences","value","expandedNodes","selectedFilters","collectionSpecific","fieldName","relatedCollections","Object","keys","map","slug","relatedConfig","label","labels","plural","sort","a","b","localeCompare","selectedNodeParentId","ancestorIds","currentNodeId","isFirstIteration","node","findByID","depth","parentId","push","expandedSet","Set","forEach","add","Array","from","baseFilterFn","baseListFilter","page","collectionSlug","expandedNodeIds","length","filterByCollections","error","logger","warn","err","msg"],"sources":["../../../../src/elements/Hierarchy/Tree/HierarchySidebarTab.server.tsx"],"sourcesContent":["import type { SidebarTabServerProps, Where } from 'payload'\n\nimport { getTranslation } from '@payloadcms/translations'\nimport { DEFAULT_HIERARCHY_TREE_LIMIT, getInitialTreeData } from 'payload'\nimport { PREFERENCE_KEYS } from 'payload/shared'\nimport React from 'react'\n\n// eslint-disable-next-line payload/no-imports-from-exports-dir -- Server component must reference exports dir for proper client boundary\nimport { HierarchySidebarTab } from '../../../exports/client/index.js'\nimport { TagIcon } from '../../../icons/Tag/index.js'\nimport { RenderServerComponent } from '../../RenderServerComponent/index.js'\n\nexport type HierarchySidebarTabServerProps = {\n hierarchyCollectionSlug: string\n} & SidebarTabServerProps\n\nexport const HierarchySidebarTabServer: React.FC<HierarchySidebarTabServerProps> = async ({\n hierarchyCollectionSlug,\n i18n,\n payload,\n req,\n searchParams,\n user,\n}) => {\n if (!user) {\n return null\n }\n\n let initialData = null\n let initialExpandedNodes: (number | string)[] = []\n let initialSelectedFilters: string[] = []\n let selectedNodeId: null | string = null\n let parentFieldName = 'parent'\n let treeLimit: number | undefined\n let typeFieldName: string | undefined\n let useAsTitle: string | undefined\n let collectionSpecificOptions: { label: string; value: string }[] = []\n let baseFilter: null | Where = null\n\n // Get collection config and render icon (outside try block - doesn't need async)\n const collectionConfig = payload.collections[hierarchyCollectionSlug]?.config\n const hierarchyConfig =\n collectionConfig?.hierarchy && typeof collectionConfig.hierarchy === 'object'\n ? collectionConfig.hierarchy\n : undefined\n\n const IconComponent = hierarchyConfig?.admin?.components?.SmallIcon\n const icon = IconComponent ? (\n RenderServerComponent({\n clientProps: { size: 16 },\n Component: IconComponent,\n importMap: payload.importMap,\n key: `hierarchy-sidebar-icon-${hierarchyCollectionSlug}`,\n })\n ) : (\n <TagIcon size={16} />\n )\n\n try {\n // Get parentFieldName from config first (needed for URL parsing)\n parentFieldName = hierarchyConfig?.parentFieldName ?? 'parent'\n\n // Get selected node from URL (?<parentFieldName>=<id>)\n const selectedNodeParam = searchParams?.[parentFieldName]\n selectedNodeId = selectedNodeParam ? String(selectedNodeParam) : null\n\n // STEP 1: Load user's expanded node preferences\n const preferenceKey = `${PREFERENCE_KEYS.HIERARCHY_TREE}-${hierarchyCollectionSlug}`\n\n const { docs: preferenceDocs } = await payload.find({\n collection: 'payload-preferences',\n limit: 1,\n overrideAccess: false,\n user,\n where: {\n and: [\n { key: { equals: preferenceKey } },\n { 'user.value': { equals: user.id } },\n { 'user.relationTo': { equals: user.collection } },\n ],\n },\n })\n\n const preferences = preferenceDocs[0]\n\n if (preferences?.value?.expandedNodes) {\n initialExpandedNodes = preferences.value.expandedNodes\n }\n\n if (preferences?.value?.selectedFilters) {\n initialSelectedFilters = preferences.value.selectedFilters\n }\n\n // STEP 2: Get remaining config values\n treeLimit = hierarchyConfig?.admin?.treeLimit\n typeFieldName =\n hierarchyConfig?.collectionSpecific && typeof hierarchyConfig.collectionSpecific === 'object'\n ? hierarchyConfig.collectionSpecific.fieldName\n : undefined\n useAsTitle = collectionConfig?.admin?.useAsTitle\n\n // STEP 2.5: Build collection-specific options from related collections\n if (hierarchyConfig.collectionSpecific && hierarchyConfig?.relatedCollections) {\n collectionSpecificOptions = Object.keys(hierarchyConfig.relatedCollections)\n .map((slug) => {\n const relatedConfig = payload.collections[slug]?.config\n const label = relatedConfig?.labels?.plural ?? slug\n\n return {\n label: getTranslation(label, i18n),\n value: slug,\n }\n })\n .sort((a, b) => a.label.localeCompare(b.label))\n }\n\n // Track the immediate parent of the selected node (for ensuring siblings are loaded)\n let selectedNodeParentId: null | number | string = null\n\n // If there's a selected node, ensure its ancestor chain is expanded\n if (selectedNodeId) {\n // Walk up the parent chain to root\n const ancestorIds: (number | string)[] = []\n let currentNodeId: null | number | string = selectedNodeId\n let isFirstIteration = true\n\n while (currentNodeId) {\n try {\n const node = await payload.findByID({\n id: currentNodeId,\n collection: hierarchyCollectionSlug,\n depth: 0,\n overrideAccess: false,\n user,\n })\n\n const parentId = node?.[parentFieldName]\n\n // Capture the immediate parent of the selected node\n if (isFirstIteration) {\n selectedNodeParentId = parentId ?? null\n isFirstIteration = false\n }\n\n if (parentId) {\n ancestorIds.push(parentId)\n currentNodeId = parentId\n } else {\n currentNodeId = null\n }\n } catch {\n // Node not found or access denied\n break\n }\n }\n\n // Merge ancestor IDs with existing expanded nodes\n const expandedSet = new Set(initialExpandedNodes)\n ancestorIds.forEach((id) => expandedSet.add(id))\n // Include the selected node itself so its own children are loaded.\n expandedSet.add(selectedNodeId)\n initialExpandedNodes = Array.from(expandedSet)\n }\n\n const baseFilterFn =\n collectionConfig?.admin?.baseFilter ?? collectionConfig?.admin?.baseListFilter\n if (baseFilterFn && req) {\n baseFilter =\n (await baseFilterFn({ limit: DEFAULT_HIERARCHY_TREE_LIMIT, page: 1, req, sort: 'id' })) ??\n null\n }\n\n initialData = await getInitialTreeData({\n baseFilter,\n collectionSlug: hierarchyCollectionSlug,\n expandedNodeIds: initialExpandedNodes,\n ...(initialSelectedFilters.length > 0 && { filterByCollections: initialSelectedFilters }),\n ...(treeLimit !== undefined && { limit: treeLimit }),\n payload,\n selectedNodeId,\n selectedNodeParentId,\n user: req.user,\n })\n } catch (error) {\n payload.logger.warn({\n err: error,\n msg: `Failed to fetch hierarchy data for ${hierarchyCollectionSlug}`,\n })\n // Fall back to client-side fetching if server fetch fails\n }\n\n return (\n <HierarchySidebarTab\n baseFilter={baseFilter}\n collectionSpecificOptions={collectionSpecificOptions}\n hierarchyCollectionSlug={hierarchyCollectionSlug}\n icon={icon}\n initialData={initialData}\n initialExpandedNodes={initialExpandedNodes}\n initialSelectedFilters={initialSelectedFilters}\n parentFieldName={parentFieldName}\n selectedNodeId={selectedNodeId}\n treeLimit={treeLimit}\n typeFieldName={typeFieldName}\n useAsTitle={useAsTitle}\n />\n )\n}\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -25,12 +25,4 @@
|
|
|
25
25
|
outline-color: var(--color-border-selected);
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
|
|
29
|
-
/* Fixed-position anchor mirroring the icon's rect, so the portaled tooltip (escaping
|
|
30
|
-
* the table's `overflow` clipping) can position against it. */
|
|
31
|
-
.locked__tooltip-anchor {
|
|
32
|
-
position: fixed;
|
|
33
|
-
z-index: var(--z-popup);
|
|
34
|
-
pointer-events: none;
|
|
35
|
-
}
|
|
36
28
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Locked/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/elements/Locked/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,OAAO,KAAmB,MAAM,OAAO,CAAA;AAMvC,OAAO,aAAa,CAAA;AAIpB,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX,CAkCA,CAAA"}
|
|
@@ -1,83 +1,89 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
|
|
3
|
+
import { c as _c } from "react/compiler-runtime";
|
|
3
4
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
4
|
-
import React, {
|
|
5
|
-
import { createPortal } from 'react-dom';
|
|
5
|
+
import React, { useState } from 'react';
|
|
6
6
|
import { LockIcon } from '../../icons/Lock/index.js';
|
|
7
7
|
import { useTranslation } from '../../providers/Translation/index.js';
|
|
8
8
|
import { isClientUserObject } from '../../utilities/isClientUserObject.js';
|
|
9
9
|
import { Tooltip } from '../Tooltip/index.js';
|
|
10
10
|
import './index.css';
|
|
11
11
|
const baseClass = 'locked';
|
|
12
|
-
export const Locked =
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
export const Locked = t0 => {
|
|
13
|
+
const $ = _c(10);
|
|
14
|
+
const {
|
|
15
|
+
className,
|
|
16
|
+
user
|
|
17
|
+
} = t0;
|
|
17
18
|
const [hovered, setHovered] = useState(false);
|
|
18
|
-
const [anchorRect, setAnchorRect] = useState(null);
|
|
19
19
|
const {
|
|
20
20
|
t
|
|
21
21
|
} = useTranslation();
|
|
22
|
-
const userToUse = isClientUserObject(user) ? user.email ?? user.id : t(
|
|
23
|
-
const tooltipLabel = `${userToUse} ${t(
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
height: anchorRect.height,
|
|
69
|
-
left: anchorRect.left,
|
|
70
|
-
top: anchorRect.top,
|
|
71
|
-
width: anchorRect.width
|
|
72
|
-
},
|
|
73
|
-
children: /*#__PURE__*/_jsx(Tooltip, {
|
|
22
|
+
const userToUse = isClientUserObject(user) ? user.email ?? user.id : t("general:anotherUser");
|
|
23
|
+
const tooltipLabel = `${userToUse} ${t("general:isEditing")}`;
|
|
24
|
+
let t1;
|
|
25
|
+
if ($[0] !== className) {
|
|
26
|
+
t1 = [baseClass, className].filter(Boolean);
|
|
27
|
+
$[0] = className;
|
|
28
|
+
$[1] = t1;
|
|
29
|
+
} else {
|
|
30
|
+
t1 = $[1];
|
|
31
|
+
}
|
|
32
|
+
const t2 = t1.join(" ");
|
|
33
|
+
let t3;
|
|
34
|
+
let t4;
|
|
35
|
+
if ($[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
36
|
+
t3 = () => setHovered(false);
|
|
37
|
+
t4 = () => setHovered(true);
|
|
38
|
+
$[2] = t3;
|
|
39
|
+
$[3] = t4;
|
|
40
|
+
} else {
|
|
41
|
+
t3 = $[2];
|
|
42
|
+
t4 = $[3];
|
|
43
|
+
}
|
|
44
|
+
let t5;
|
|
45
|
+
let t6;
|
|
46
|
+
if ($[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
47
|
+
t5 = () => setHovered(true);
|
|
48
|
+
t6 = () => setHovered(false);
|
|
49
|
+
$[4] = t5;
|
|
50
|
+
$[5] = t6;
|
|
51
|
+
} else {
|
|
52
|
+
t5 = $[4];
|
|
53
|
+
t6 = $[5];
|
|
54
|
+
}
|
|
55
|
+
let t7;
|
|
56
|
+
if ($[6] !== hovered || $[7] !== t2 || $[8] !== tooltipLabel) {
|
|
57
|
+
t7 = _jsxs("div", {
|
|
58
|
+
"aria-label": tooltipLabel,
|
|
59
|
+
className: t2,
|
|
60
|
+
onBlur: t3,
|
|
61
|
+
onFocus: t4,
|
|
62
|
+
onKeyDown: _temp,
|
|
63
|
+
onMouseEnter: t5,
|
|
64
|
+
onMouseLeave: t6,
|
|
65
|
+
role: "button",
|
|
66
|
+
tabIndex: 0,
|
|
67
|
+
children: [_jsx(LockIcon, {}), _jsx(Tooltip, {
|
|
74
68
|
alignCaret: "center",
|
|
75
69
|
className: `${baseClass}__tooltip`,
|
|
76
70
|
position: "bottom",
|
|
77
|
-
show:
|
|
71
|
+
show: hovered,
|
|
78
72
|
children: tooltipLabel
|
|
79
|
-
})
|
|
80
|
-
})
|
|
81
|
-
|
|
73
|
+
})]
|
|
74
|
+
});
|
|
75
|
+
$[6] = hovered;
|
|
76
|
+
$[7] = t2;
|
|
77
|
+
$[8] = tooltipLabel;
|
|
78
|
+
$[9] = t7;
|
|
79
|
+
} else {
|
|
80
|
+
t7 = $[9];
|
|
81
|
+
}
|
|
82
|
+
return t7;
|
|
82
83
|
};
|
|
84
|
+
function _temp(e) {
|
|
85
|
+
if (e.key === " ") {
|
|
86
|
+
e.preventDefault();
|
|
87
|
+
}
|
|
88
|
+
}
|
|
83
89
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["
|
|
1
|
+
{"version":3,"file":"index.js","names":["c","_c","React","useState","LockIcon","useTranslation","isClientUserObject","Tooltip","baseClass","Locked","t0","$","className","user","hovered","setHovered","t","userToUse","email","id","tooltipLabel","t1","filter","Boolean","t2","join","t3","t4","Symbol","for","t5","t6","t7","_jsxs","onBlur","onFocus","onKeyDown","_temp","onMouseEnter","onMouseLeave","role","tabIndex","children","_jsx","alignCaret","position","show","e","key","preventDefault"],"sources":["../../../src/elements/Locked/index.tsx"],"sourcesContent":["'use client'\nimport type { User } from 'payload'\n\nimport React, { useState } from 'react'\n\nimport { LockIcon } from '../../icons/Lock/index.js'\nimport { useTranslation } from '../../providers/Translation/index.js'\nimport { isClientUserObject } from '../../utilities/isClientUserObject.js'\nimport { Tooltip } from '../Tooltip/index.js'\nimport './index.css'\n\nconst baseClass = 'locked'\n\nexport const Locked: React.FC<{\n className?: string\n user: User\n}> = ({ className, user }) => {\n const [hovered, setHovered] = useState(false)\n const { t } = useTranslation()\n\n const userToUse = isClientUserObject(user) ? (user.email ?? user.id) : t('general:anotherUser')\n const tooltipLabel = `${userToUse} ${t('general:isEditing')}`\n\n return (\n <div\n aria-label={tooltipLabel}\n className={[baseClass, className].filter(Boolean).join(' ')}\n onBlur={() => setHovered(false)}\n onFocus={() => setHovered(true)}\n onKeyDown={(e) => {\n if (e.key === ' ') {\n e.preventDefault() // prevent page scroll when focused\n }\n }}\n onMouseEnter={() => setHovered(true)}\n onMouseLeave={() => setHovered(false)}\n role=\"button\"\n tabIndex={0}\n >\n <LockIcon />\n <Tooltip\n alignCaret=\"center\"\n className={`${baseClass}__tooltip`}\n position=\"bottom\"\n show={hovered}\n >\n {tooltipLabel}\n </Tooltip>\n </div>\n )\n}\n"],"mappings":"AAAA;;AAAA,SAAAA,CAAA,IAAAC,EAAA;;AAGA,OAAOC,KAAA,IAASC,QAAQ,QAAQ;AAEhC,SAASC,QAAQ,QAAQ;AACzB,SAASC,cAAc,QAAQ;AAC/B,SAASC,kBAAkB,QAAQ;AACnC,SAASC,OAAO,QAAQ;AACxB,OAAO;AAEP,MAAMC,SAAA,GAAY;AAElB,OAAO,MAAMC,MAAA,GAGRC,EAAA;EAAA,MAAAC,CAAA,GAAAV,EAAA;EAAC;IAAAW,SAAA;IAAAC;EAAA,IAAAH,EAAmB;EACvB,OAAAI,OAAA,EAAAC,UAAA,IAA8BZ,QAAA,MAAS;EACvC;IAAAa;EAAA,IAAcX,cAAA;EAEd,MAAAY,SAAA,GAAkBX,kBAAA,CAAmBO,IAAA,IAASA,IAAA,CAAAK,KAAA,IAAcL,IAAA,CAAAM,EAAO,GAAIH,CAAA,CAAE;EACzE,MAAAI,YAAA,GAAqB,GAAGH,SAAA,IAAaD,CAAA,CAAE,sBAAsB;EAAA,IAAAK,EAAA;EAAA,IAAAV,CAAA,QAAAC,SAAA;IAK9CS,EAAA,IAAAb,SAAA,EAAYI,SAAA,EAAAU,MAAA,CAAAC,OAAkB;IAAAZ,CAAA,MAAAC,SAAA;IAAAD,CAAA,MAAAU,EAAA;EAAA;IAAAA,EAAA,GAAAV,CAAA;EAAA;EAA9B,MAAAa,EAAA,GAAAH,EAA8B,CAAAI,IAAA,CAAc;EAAA,IAAAC,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAAhB,CAAA,QAAAiB,MAAA,CAAAC,GAAA;IAC/CH,EAAA,GAAAA,CAAA,KAAMX,UAAA,MAAW;IAChBY,EAAA,GAAAA,CAAA,KAAMZ,UAAA,KAAW;IAAAJ,CAAA,MAAAe,EAAA;IAAAf,CAAA,MAAAgB,EAAA;EAAA;IAAAD,EAAA,GAAAf,CAAA;IAAAgB,EAAA,GAAAhB,CAAA;EAAA;EAAA,IAAAmB,EAAA;EAAA,IAAAC,EAAA;EAAA,IAAApB,CAAA,QAAAiB,MAAA,CAAAC,GAAA;IAMZC,EAAA,GAAAA,CAAA,KAAMf,UAAA,KAAW;IACjBgB,EAAA,GAAAA,CAAA,KAAMhB,UAAA,MAAW;IAAAJ,CAAA,MAAAmB,EAAA;IAAAnB,CAAA,MAAAoB,EAAA;EAAA;IAAAD,EAAA,GAAAnB,CAAA;IAAAoB,EAAA,GAAApB,CAAA;EAAA;EAAA,IAAAqB,EAAA;EAAA,IAAArB,CAAA,QAAAG,OAAA,IAAAH,CAAA,QAAAa,EAAA,IAAAb,CAAA,QAAAS,YAAA;IAXjCY,EAAA,GAAAC,KAAA,CAAC;MAAA,cACab,YAAA;MAAAR,SAAA,EACDY,EAA4C;MAAAU,MAAA,EAC/CR,EAAiB;MAAAS,OAAA,EAChBR,EAAiB;MAAAS,SAAA,EAAAC,KAAA;MAAAC,YAAA,EAMZR,EAAiB;MAAAS,YAAA,EACjBR,EAAiB;MAAAS,IAAA,EAC1B;MAAAC,QAAA;MAAAC,QAAA,GAGLC,IAAA,CAAAvC,QAAA,IAAC,GACDuC,IAAA,CAAApC,OAAA;QAAAqC,UAAA,EACa;QAAAhC,SAAA,EACA,GAAAJ,SAAA,WAAuB;QAAAqC,QAAA,EACzB;QAAAC,IAAA,EACHhC,OAAA;QAAA4B,QAAA,EAELtB;MAAA,C;;;;;;;;;SAtBLY,E;CA0BJ;AAlCK,SAAAK,MAAAU,CAAA;EAAA,IAcOA,CAAA,CAAAC,GAAA,KAAU;IACZD,CAAA,CAAAE,cAAA,CAAgB;EAAA;AAAA","ignoreList":[]}
|