@strapi/content-type-builder 5.54.0 → 5.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/admin/components/AIChat/hooks/useAIFetch.js +6 -2
- package/dist/admin/components/AIChat/hooks/useAIFetch.js.map +1 -1
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs +7 -3
- package/dist/admin/components/AIChat/hooks/useAIFetch.mjs.map +1 -1
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.js +20 -0
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.js.map +1 -0
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.mjs +18 -0
- package/dist/admin/components/AIChat/hooks/usePrefetchAIToken.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js +83 -59
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.js.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs +86 -62
- package/dist/admin/components/ContentTypeBuilderNav/ContentTypeBuilderNav.mjs.map +1 -1
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.js +112 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.mjs +110 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.js +159 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.mjs +157 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.js +311 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.mjs +309 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js +379 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.mjs +376 -0
- package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.js +172 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.mjs +166 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useContentTypeBuilderMenu.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.js +62 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.mjs +60 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useFolderActions.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.js +145 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.mjs +143 -0
- package/dist/admin/components/ContentTypeBuilderNav/hooks/useSortableTree.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js +176 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs +169 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/buildFolderTree.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js +277 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs +273 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/dropProjection.mjs.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.js +62 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.js.map +1 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.mjs +58 -0
- package/dist/admin/components/ContentTypeBuilderNav/lib/flatModel.mjs.map +1 -0
- package/dist/admin/components/DataManager/DataManagerContext.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerContext.mjs.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.js +70 -8
- package/dist/admin/components/DataManager/DataManagerProvider.js.map +1 -1
- package/dist/admin/components/DataManager/DataManagerProvider.mjs +70 -8
- package/dist/admin/components/DataManager/DataManagerProvider.mjs.map +1 -1
- package/dist/admin/components/DataManager/reducer.js +411 -33
- package/dist/admin/components/DataManager/reducer.js.map +1 -1
- package/dist/admin/components/DataManager/reducer.mjs +411 -33
- package/dist/admin/components/DataManager/reducer.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.js +11 -2
- package/dist/admin/components/DataManager/utils/cleanData.js.map +1 -1
- package/dist/admin/components/DataManager/utils/cleanData.mjs +11 -2
- package/dist/admin/components/DataManager/utils/cleanData.mjs.map +1 -1
- package/dist/admin/components/DataManager/utils/contentStructure.js +150 -0
- package/dist/admin/components/DataManager/utils/contentStructure.js.map +1 -0
- package/dist/admin/components/DataManager/utils/contentStructure.mjs +133 -0
- package/dist/admin/components/DataManager/utils/contentStructure.mjs.map +1 -0
- package/dist/admin/components/FolderSelect.js +200 -0
- package/dist/admin/components/FolderSelect.js.map +1 -0
- package/dist/admin/components/FolderSelect.mjs +198 -0
- package/dist/admin/components/FolderSelect.mjs.map +1 -0
- package/dist/admin/components/FormModal/FormModal.js +23 -2
- package/dist/admin/components/FormModal/FormModal.js.map +1 -1
- package/dist/admin/components/FormModal/FormModal.mjs +23 -2
- package/dist/admin/components/FormModal/FormModal.mjs.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.js +15 -18
- package/dist/admin/components/FormModal/contentType/contentTypeForm.js.map +1 -1
- package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs +15 -18
- package/dist/admin/components/FormModal/contentType/contentTypeForm.mjs.map +1 -1
- package/dist/admin/components/FormModal/reducer.js +6 -0
- package/dist/admin/components/FormModal/reducer.js.map +1 -1
- package/dist/admin/components/FormModal/reducer.mjs +6 -0
- package/dist/admin/components/FormModal/reducer.mjs.map +1 -1
- package/dist/admin/pages/App/index.js +2 -5
- package/dist/admin/pages/App/index.js.map +1 -1
- package/dist/admin/pages/App/index.mjs +2 -5
- package/dist/admin/pages/App/index.mjs.map +1 -1
- package/dist/admin/src/components/AIChat/hooks/usePrefetchAIToken.d.ts +1 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/DeleteFolderDialog.d.ts +16 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNameField.d.ts +12 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/FolderNavSection.d.ts +14 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.d.ts +38 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/{useContentTypeBuilderMenu.d.ts → hooks/useContentTypeBuilderMenu.d.ts} +17 -7
- package/dist/admin/src/components/ContentTypeBuilderNav/hooks/useFolderActions.d.ts +42 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/hooks/useSortableTree.d.ts +53 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/lib/buildFolderTree.d.ts +42 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/lib/dropProjection.d.ts +58 -0
- package/dist/admin/src/components/ContentTypeBuilderNav/lib/flatModel.d.ts +18 -0
- package/dist/admin/src/components/DataManager/DataManagerContext.d.ts +41 -0
- package/dist/admin/src/components/DataManager/reducer.d.ts +105 -1
- package/dist/admin/src/components/DataManager/utils/cleanData.d.ts +5 -1
- package/dist/admin/src/components/DataManager/utils/contentStructure.d.ts +68 -0
- package/dist/admin/src/components/FolderSelect.d.ts +18 -0
- package/dist/admin/src/components/FormModal/contentType/contentTypeForm.d.ts +0 -21
- package/dist/admin/src/components/FormModal/forms/forms.d.ts +0 -10
- package/dist/admin/src/components/FormModal/reducer.d.ts +7 -0
- package/dist/admin/src/utils/folderTelemetry.d.ts +5 -0
- package/dist/admin/translations/en.json.js +23 -0
- package/dist/admin/translations/en.json.js.map +1 -1
- package/dist/admin/translations/en.json.mjs +23 -0
- package/dist/admin/translations/en.json.mjs.map +1 -1
- package/dist/admin/utils/folderTelemetry.js +19 -0
- package/dist/admin/utils/folderTelemetry.js.map +1 -0
- package/dist/admin/utils/folderTelemetry.mjs +16 -0
- package/dist/admin/utils/folderTelemetry.mjs.map +1 -0
- package/dist/server/controllers/schema.js +1 -1
- package/dist/server/controllers/schema.js.map +1 -1
- package/dist/server/controllers/schema.mjs +1 -1
- package/dist/server/controllers/schema.mjs.map +1 -1
- package/dist/server/controllers/validation/common.js +3 -0
- package/dist/server/controllers/validation/common.js.map +1 -1
- package/dist/server/controllers/validation/common.mjs +3 -1
- package/dist/server/controllers/validation/common.mjs.map +1 -1
- package/dist/server/controllers/validation/content-structure.js +177 -0
- package/dist/server/controllers/validation/content-structure.js.map +1 -0
- package/dist/server/controllers/validation/content-structure.mjs +173 -0
- package/dist/server/controllers/validation/content-structure.mjs.map +1 -0
- package/dist/server/controllers/validation/schema.js +3 -1
- package/dist/server/controllers/validation/schema.js.map +1 -1
- package/dist/server/controllers/validation/schema.mjs +3 -1
- package/dist/server/controllers/validation/schema.mjs.map +1 -1
- package/dist/server/register.js +1 -1
- package/dist/server/register.js.map +1 -1
- package/dist/server/register.mjs +1 -1
- package/dist/server/register.mjs.map +1 -1
- package/dist/server/routes/content-api.js +4 -4
- package/dist/server/routes/content-api.js.map +1 -1
- package/dist/server/routes/content-api.mjs +4 -4
- package/dist/server/routes/content-api.mjs.map +1 -1
- package/dist/server/services/api-handler.js +37 -4
- package/dist/server/services/api-handler.js.map +1 -1
- package/dist/server/services/api-handler.mjs +36 -5
- package/dist/server/services/api-handler.mjs.map +1 -1
- package/dist/server/services/content-structure.js +174 -0
- package/dist/server/services/content-structure.js.map +1 -0
- package/dist/server/services/content-structure.mjs +172 -0
- package/dist/server/services/content-structure.mjs.map +1 -0
- package/dist/server/services/content-types.js +196 -44
- package/dist/server/services/content-types.js.map +1 -1
- package/dist/server/services/content-types.mjs +195 -45
- package/dist/server/services/content-types.mjs.map +1 -1
- package/dist/server/services/index.js +3 -1
- package/dist/server/services/index.js.map +1 -1
- package/dist/server/services/index.mjs +3 -1
- package/dist/server/services/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/index.js +4 -2
- package/dist/server/services/schema-builder/index.js.map +1 -1
- package/dist/server/services/schema-builder/index.mjs +4 -2
- package/dist/server/services/schema-builder/index.mjs.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.js +16 -16
- package/dist/server/services/schema-builder/schema-handler.js.map +1 -1
- package/dist/server/services/schema-builder/schema-handler.mjs +16 -16
- package/dist/server/services/schema-builder/schema-handler.mjs.map +1 -1
- package/dist/server/services/schema-mutation.js +46 -0
- package/dist/server/services/schema-mutation.js.map +1 -0
- package/dist/server/services/schema-mutation.mjs +43 -0
- package/dist/server/services/schema-mutation.mjs.map +1 -0
- package/dist/server/services/schema.js +134 -79
- package/dist/server/services/schema.js.map +1 -1
- package/dist/server/services/schema.mjs +135 -80
- package/dist/server/services/schema.mjs.map +1 -1
- package/dist/server/src/controllers/schema.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/common.d.ts +1 -0
- package/dist/server/src/controllers/validation/common.d.ts.map +1 -1
- package/dist/server/src/controllers/validation/content-structure.d.ts +56 -0
- package/dist/server/src/controllers/validation/content-structure.d.ts.map +1 -0
- package/dist/server/src/controllers/validation/schema.d.ts +35 -0
- package/dist/server/src/controllers/validation/schema.d.ts.map +1 -1
- package/dist/server/src/index.d.ts +3 -0
- package/dist/server/src/index.d.ts.map +1 -1
- package/dist/server/src/routes/content-api.d.ts.map +1 -1
- package/dist/server/src/services/api-handler.d.ts +13 -1
- package/dist/server/src/services/api-handler.d.ts.map +1 -1
- package/dist/server/src/services/content-structure.d.ts +37 -0
- package/dist/server/src/services/content-structure.d.ts.map +1 -0
- package/dist/server/src/services/content-types.d.ts +4 -0
- package/dist/server/src/services/content-types.d.ts.map +1 -1
- package/dist/server/src/services/index.d.ts +4 -0
- package/dist/server/src/services/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/index.d.ts +3 -1
- package/dist/server/src/services/schema-builder/index.d.ts.map +1 -1
- package/dist/server/src/services/schema-builder/schema-handler.d.ts.map +1 -1
- package/dist/server/src/services/schema-mutation.d.ts +26 -0
- package/dist/server/src/services/schema-mutation.d.ts.map +1 -0
- package/dist/server/src/services/schema.d.ts +1 -0
- package/dist/server/src/services/schema.d.ts.map +1 -1
- package/dist/server/src/utils/index.d.ts +2 -0
- package/dist/server/src/utils/index.d.ts.map +1 -1
- package/dist/server/utils/index.js.map +1 -1
- package/dist/server/utils/index.mjs.map +1 -1
- package/package.json +6 -6
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js +0 -157
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.js.map +0 -1
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs +0 -151
- package/dist/admin/components/ContentTypeBuilderNav/useContentTypeBuilderMenu.mjs.map +0 -1
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var jsxRuntime = require('react/jsx-runtime');
|
|
4
|
+
var React = require('react');
|
|
5
|
+
var sortable = require('@dnd-kit/sortable');
|
|
6
|
+
var designSystem = require('@strapi/design-system');
|
|
7
|
+
var Icons = require('@strapi/icons');
|
|
8
|
+
var reactIntl = require('react-intl');
|
|
9
|
+
var reactRouterDom = require('react-router-dom');
|
|
10
|
+
var styledComponents = require('styled-components');
|
|
11
|
+
var getTrad = require('../../../../utils/getTrad.js');
|
|
12
|
+
var Status = require('../../../Status.js');
|
|
13
|
+
var FolderNameField = require('./FolderNameField.js');
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* The drop-position indicator is absolutely positioned so that it does not displace
|
|
17
|
+
* a row and cause cyclical layout shifts.
|
|
18
|
+
* It is justified to the right edge of the row and its width is based on the
|
|
19
|
+
* depth of the destination it indicates.
|
|
20
|
+
*/ const DropIndicator = styledComponents.styled.span`
|
|
21
|
+
position: absolute;
|
|
22
|
+
left: ${({ theme, $indentDepth })=>`calc(${$indentDepth} * ${theme.spaces[6]})`};
|
|
23
|
+
right: 0;
|
|
24
|
+
${({ $edge })=>$edge === 'top' ? 'top: 0;' : 'bottom: 0;'}
|
|
25
|
+
transform: ${({ $edge })=>$edge === 'top' ? 'translateY(-1px)' : 'translateY(1px)'};
|
|
26
|
+
|
|
27
|
+
height: 2px;
|
|
28
|
+
background-color: ${({ theme })=>theme.colors.primary600};
|
|
29
|
+
border-radius: 2px;
|
|
30
|
+
pointer-events: none;
|
|
31
|
+
z-index: 2;
|
|
32
|
+
|
|
33
|
+
&::before {
|
|
34
|
+
content: '';
|
|
35
|
+
|
|
36
|
+
position: absolute;
|
|
37
|
+
top: 50%;
|
|
38
|
+
left: 0;
|
|
39
|
+
width: 6px;
|
|
40
|
+
height: 6px;
|
|
41
|
+
border-radius: 50%;
|
|
42
|
+
background-color: ${({ theme })=>theme.colors.primary600};
|
|
43
|
+
transform: translate(-50%, -50%);
|
|
44
|
+
}
|
|
45
|
+
`;
|
|
46
|
+
const MenuTrigger = styledComponents.styled(designSystem.Menu.Trigger)`
|
|
47
|
+
display: flex;
|
|
48
|
+
align-items: center;
|
|
49
|
+
justify-content: center;
|
|
50
|
+
width: 16px;
|
|
51
|
+
height: 16px;
|
|
52
|
+
padding: 0;
|
|
53
|
+
|
|
54
|
+
position: relative;
|
|
55
|
+
z-index: 1;
|
|
56
|
+
`;
|
|
57
|
+
const Row = styledComponents.styled(designSystem.Flex)`
|
|
58
|
+
position: relative;
|
|
59
|
+
border-radius: ${({ theme })=>theme.borderRadius};
|
|
60
|
+
|
|
61
|
+
padding-right: ${({ theme })=>theme.spaces[3]};
|
|
62
|
+
padding-block: ${({ theme })=>theme.spaces[2]};
|
|
63
|
+
padding-left: ${({ theme })=>theme.spaces[3]};
|
|
64
|
+
padding-left: ${({ theme, $depth })=>`calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};
|
|
65
|
+
|
|
66
|
+
background-color: ${({ $dropTarget, theme })=>$dropTarget ? theme.colors.primary100 : 'transparent'};
|
|
67
|
+
outline: ${({ $dropTarget, theme })=>$dropTarget ? `1px solid ${theme.colors.primary600}` : 'none'};
|
|
68
|
+
outline-offset: -1px;
|
|
69
|
+
|
|
70
|
+
${MenuTrigger} {
|
|
71
|
+
opacity: 0;
|
|
72
|
+
transition: opacity 0.1s ease-out;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/*
|
|
76
|
+
* This selects for the opened Radix popover menu so that the hover state doesn't disappear while it is open.
|
|
77
|
+
*/
|
|
78
|
+
&:hover,
|
|
79
|
+
&:has([data-state='open']) {
|
|
80
|
+
background-color: ${({ $dropTarget, theme })=>$dropTarget ? theme.colors.primary100 : theme.colors.neutral100};
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
&:hover ${MenuTrigger}, &:focus-within ${MenuTrigger}, &:has([data-state='open']) ${MenuTrigger} {
|
|
84
|
+
opacity: 1;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
${({ $dragging })=>$dragging && styledComponents.css`
|
|
88
|
+
& > *:not(${DropIndicator}) {
|
|
89
|
+
opacity: 0.4;
|
|
90
|
+
}
|
|
91
|
+
`}
|
|
92
|
+
`;
|
|
93
|
+
const GrabArea = styledComponents.styled.button`
|
|
94
|
+
display: flex;
|
|
95
|
+
align-items: center;
|
|
96
|
+
flex: 1;
|
|
97
|
+
min-width: 0;
|
|
98
|
+
gap: ${({ theme })=>theme.spaces[2]};
|
|
99
|
+
|
|
100
|
+
height: 100%;
|
|
101
|
+
padding: 0;
|
|
102
|
+
border: none;
|
|
103
|
+
background: transparent;
|
|
104
|
+
text-align: left;
|
|
105
|
+
cursor: pointer;
|
|
106
|
+
|
|
107
|
+
/* The interactive area must be larger than the contents-driven hit area. */
|
|
108
|
+
&::before {
|
|
109
|
+
content: '';
|
|
110
|
+
position: absolute;
|
|
111
|
+
inset: 0;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
&:focus-visible {
|
|
115
|
+
outline-offset: -2px;
|
|
116
|
+
}
|
|
117
|
+
`;
|
|
118
|
+
const ContentTypeLink = styledComponents.styled(reactRouterDom.NavLink)`
|
|
119
|
+
display: flex;
|
|
120
|
+
align-items: center;
|
|
121
|
+
flex: 1;
|
|
122
|
+
min-width: 0;
|
|
123
|
+
gap: ${({ theme })=>theme.spaces[2]};
|
|
124
|
+
|
|
125
|
+
height: 100%;
|
|
126
|
+
text-decoration: none;
|
|
127
|
+
color: ${({ theme })=>theme.colors.neutral800};
|
|
128
|
+
|
|
129
|
+
&.active {
|
|
130
|
+
color: ${({ theme })=>theme.colors.primary700};
|
|
131
|
+
font-weight: 500;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* The interactive area must be larger than the contents-driven hit area. */
|
|
135
|
+
&::before {
|
|
136
|
+
content: '';
|
|
137
|
+
position: absolute;
|
|
138
|
+
inset: 0;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
&:focus-visible {
|
|
142
|
+
outline-offset: -2px;
|
|
143
|
+
}
|
|
144
|
+
`;
|
|
145
|
+
const Glyph = styledComponents.styled.span`
|
|
146
|
+
display: inline-flex;
|
|
147
|
+
align-items: center;
|
|
148
|
+
justify-content: center;
|
|
149
|
+
flex: 0 0 16px;
|
|
150
|
+
`;
|
|
151
|
+
const Bullet = styledComponents.styled(Glyph)`
|
|
152
|
+
&::before {
|
|
153
|
+
content: '';
|
|
154
|
+
width: 4px;
|
|
155
|
+
height: 4px;
|
|
156
|
+
border-radius: 50%;
|
|
157
|
+
background-color: currentColor;
|
|
158
|
+
}
|
|
159
|
+
`;
|
|
160
|
+
const Label = styledComponents.styled(designSystem.Typography)`
|
|
161
|
+
flex: 1;
|
|
162
|
+
min-width: 0;
|
|
163
|
+
overflow: hidden;
|
|
164
|
+
text-overflow: ellipsis;
|
|
165
|
+
white-space: nowrap;
|
|
166
|
+
`;
|
|
167
|
+
const SortableTreeRow = ({ item, handlers })=>{
|
|
168
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
169
|
+
const renameSelectedRef = React.useRef(false); // Tracks when the "rename" option is clicked in the popover so Radix's default "restore focus to menu trigger on menu close" behavior doesn't compete with our desired focus on the inline input.
|
|
170
|
+
const { listeners, setNodeRef, isDragging } = sortable.useSortable({
|
|
171
|
+
animateLayoutChanges: ()=>false,
|
|
172
|
+
disabled: !handlers.canEdit,
|
|
173
|
+
id: item.id
|
|
174
|
+
});
|
|
175
|
+
const dragListeners = handlers.canEdit ? listeners : undefined;
|
|
176
|
+
const depth = item.depth;
|
|
177
|
+
const node = item.node;
|
|
178
|
+
const canToggle = Boolean(handlers.canToggle);
|
|
179
|
+
const dropLine = handlers.dropLine && handlers.dropLine.anchorId === item.id ? handlers.dropLine : null;
|
|
180
|
+
if (node.type === 'folder' && handlers.canEdit && handlers.editingId === node.id) {
|
|
181
|
+
const validateFolderName = (name)=>{
|
|
182
|
+
return handlers.validateFolderName({
|
|
183
|
+
name,
|
|
184
|
+
parentId: node.parentId,
|
|
185
|
+
excludeId: node.id
|
|
186
|
+
});
|
|
187
|
+
};
|
|
188
|
+
const onFolderNameSubmit = (name)=>{
|
|
189
|
+
if (name === node.name) {
|
|
190
|
+
handlers.onCancelRename();
|
|
191
|
+
return;
|
|
192
|
+
}
|
|
193
|
+
handlers.onSubmitRename(node.id, name);
|
|
194
|
+
};
|
|
195
|
+
return /*#__PURE__*/ jsxRuntime.jsx("div", {
|
|
196
|
+
ref: setNodeRef,
|
|
197
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(FolderNameField.FolderNameField, {
|
|
198
|
+
onCancel: handlers.onCancelRename,
|
|
199
|
+
onSubmit: onFolderNameSubmit,
|
|
200
|
+
validate: validateFolderName,
|
|
201
|
+
defaultValue: node.name,
|
|
202
|
+
depth: item.depth
|
|
203
|
+
})
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
const trailingContents = /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Flex, {
|
|
207
|
+
gap: 1,
|
|
208
|
+
alignItems: "center",
|
|
209
|
+
onPointerDown: (e)=>{
|
|
210
|
+
// Prevent propagation when the interactive elements container is clicked as not to compete with the row's drag detection.
|
|
211
|
+
e.stopPropagation();
|
|
212
|
+
},
|
|
213
|
+
children: [
|
|
214
|
+
node.type === 'contentType' && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Box, {
|
|
215
|
+
tag: "span",
|
|
216
|
+
textAlign: "center",
|
|
217
|
+
width: "24px",
|
|
218
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Status.Status, {
|
|
219
|
+
status: node.status
|
|
220
|
+
})
|
|
221
|
+
}),
|
|
222
|
+
node.type === 'folder' && handlers.canEdit && /*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Root, {
|
|
223
|
+
children: [
|
|
224
|
+
/*#__PURE__*/ jsxRuntime.jsx(MenuTrigger, {
|
|
225
|
+
variant: "ghost",
|
|
226
|
+
endIcon: null,
|
|
227
|
+
size: "S",
|
|
228
|
+
"aria-label": formatMessage({
|
|
229
|
+
id: getTrad.getTrad('nav.folder.actions-label'),
|
|
230
|
+
defaultMessage: 'Actions for {name}'
|
|
231
|
+
}, {
|
|
232
|
+
name: node.name
|
|
233
|
+
}),
|
|
234
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.More, {
|
|
235
|
+
"aria-hidden": true,
|
|
236
|
+
focusable: false
|
|
237
|
+
})
|
|
238
|
+
}),
|
|
239
|
+
/*#__PURE__*/ jsxRuntime.jsxs(designSystem.Menu.Content, {
|
|
240
|
+
zIndex: 2,
|
|
241
|
+
onCloseAutoFocus: (event)=>{
|
|
242
|
+
if (renameSelectedRef.current) {
|
|
243
|
+
event.preventDefault();
|
|
244
|
+
}
|
|
245
|
+
renameSelectedRef.current = false;
|
|
246
|
+
},
|
|
247
|
+
children: [
|
|
248
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
249
|
+
onSelect: ()=>{
|
|
250
|
+
renameSelectedRef.current = true;
|
|
251
|
+
handlers.onBeginRename(node.id);
|
|
252
|
+
},
|
|
253
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Pencil, {}),
|
|
254
|
+
children: formatMessage({
|
|
255
|
+
id: getTrad.getTrad('nav.folder.rename'),
|
|
256
|
+
defaultMessage: 'Rename'
|
|
257
|
+
})
|
|
258
|
+
}),
|
|
259
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Separator, {}),
|
|
260
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
261
|
+
onSelect: ()=>handlers.onDeleteFolder(node),
|
|
262
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Trash, {}),
|
|
263
|
+
variant: "danger",
|
|
264
|
+
children: formatMessage({
|
|
265
|
+
id: getTrad.getTrad('nav.folder.delete'),
|
|
266
|
+
defaultMessage: 'Delete folder'
|
|
267
|
+
})
|
|
268
|
+
}),
|
|
269
|
+
node.children.length > 0 && /*#__PURE__*/ jsxRuntime.jsx(designSystem.Menu.Item, {
|
|
270
|
+
onSelect: ()=>handlers.onDeleteFolderAndContent(node),
|
|
271
|
+
startIcon: /*#__PURE__*/ jsxRuntime.jsx(Icons.Trash, {}),
|
|
272
|
+
children: formatMessage({
|
|
273
|
+
id: getTrad.getTrad('nav.folder.delete-with-content'),
|
|
274
|
+
defaultMessage: 'Delete folder and contents'
|
|
275
|
+
})
|
|
276
|
+
})
|
|
277
|
+
]
|
|
278
|
+
})
|
|
279
|
+
]
|
|
280
|
+
})
|
|
281
|
+
]
|
|
282
|
+
});
|
|
283
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(Row, {
|
|
284
|
+
ref: setNodeRef,
|
|
285
|
+
...dragListeners,
|
|
286
|
+
alignItems: "center",
|
|
287
|
+
$dropTarget: handlers.dropTargetId === item.id,
|
|
288
|
+
$dragging: isDragging,
|
|
289
|
+
$depth: depth,
|
|
290
|
+
children: [
|
|
291
|
+
node.type === 'folder' ? /*#__PURE__*/ jsxRuntime.jsxs(GrabArea, {
|
|
292
|
+
"aria-expanded": canToggle ? !handlers.isCollapsed(node.id) : undefined,
|
|
293
|
+
onClick: canToggle ? ()=>handlers.onToggle(node.id) : undefined,
|
|
294
|
+
style: canToggle ? undefined : {
|
|
295
|
+
cursor: 'default'
|
|
296
|
+
},
|
|
297
|
+
type: canToggle ? 'button' : undefined,
|
|
298
|
+
as: canToggle ? 'button' : 'span',
|
|
299
|
+
children: [
|
|
300
|
+
/*#__PURE__*/ jsxRuntime.jsx(Glyph, {
|
|
301
|
+
"aria-hidden": true,
|
|
302
|
+
children: /*#__PURE__*/ jsxRuntime.jsx(Icons.ChevronDown, {
|
|
303
|
+
fill: "neutral500",
|
|
304
|
+
style: {
|
|
305
|
+
transform: handlers.isCollapsed(node.id) ? 'rotate(-90deg)' : 'none',
|
|
306
|
+
transition: 'transform 0.2s'
|
|
307
|
+
}
|
|
308
|
+
})
|
|
309
|
+
}),
|
|
310
|
+
/*#__PURE__*/ jsxRuntime.jsx(Label, {
|
|
311
|
+
tag: "span",
|
|
312
|
+
textColor: "neutral800",
|
|
313
|
+
fontWeight: "semiBold",
|
|
314
|
+
children: node.name
|
|
315
|
+
})
|
|
316
|
+
]
|
|
317
|
+
}) : /*#__PURE__*/ jsxRuntime.jsxs(ContentTypeLink, {
|
|
318
|
+
to: node.to,
|
|
319
|
+
draggable: false,
|
|
320
|
+
children: [
|
|
321
|
+
/*#__PURE__*/ jsxRuntime.jsx(Bullet, {
|
|
322
|
+
"aria-hidden": true
|
|
323
|
+
}),
|
|
324
|
+
/*#__PURE__*/ jsxRuntime.jsx(Label, {
|
|
325
|
+
tag: "span",
|
|
326
|
+
children: node.title
|
|
327
|
+
})
|
|
328
|
+
]
|
|
329
|
+
}),
|
|
330
|
+
trailingContents,
|
|
331
|
+
dropLine && /*#__PURE__*/ jsxRuntime.jsx(DropIndicator, {
|
|
332
|
+
$indentDepth: dropLine.depth,
|
|
333
|
+
$edge: dropLine.edge,
|
|
334
|
+
"aria-hidden": true
|
|
335
|
+
})
|
|
336
|
+
]
|
|
337
|
+
});
|
|
338
|
+
};
|
|
339
|
+
/**
|
|
340
|
+
* This is rendered in place of the actual row when it is being dragged.
|
|
341
|
+
*/ const RowOverlay = ({ item })=>{
|
|
342
|
+
const { formatMessage } = reactIntl.useIntl();
|
|
343
|
+
const node = item.node;
|
|
344
|
+
const name = node.type === 'folder' ? node.name : node.title;
|
|
345
|
+
return /*#__PURE__*/ jsxRuntime.jsxs(Row, {
|
|
346
|
+
style: {
|
|
347
|
+
cursor: 'grabbing'
|
|
348
|
+
},
|
|
349
|
+
background: "neutral0",
|
|
350
|
+
shadow: "filterShadow",
|
|
351
|
+
alignItems: "center",
|
|
352
|
+
$depth: 0,
|
|
353
|
+
children: [
|
|
354
|
+
/*#__PURE__*/ jsxRuntime.jsx(Glyph, {
|
|
355
|
+
"aria-hidden": true,
|
|
356
|
+
children: node.type === 'folder' ? /*#__PURE__*/ jsxRuntime.jsx(Icons.ChevronDown, {
|
|
357
|
+
fill: "neutral500"
|
|
358
|
+
}) : /*#__PURE__*/ jsxRuntime.jsx(Bullet, {})
|
|
359
|
+
}),
|
|
360
|
+
/*#__PURE__*/ jsxRuntime.jsx(Label, {
|
|
361
|
+
tag: "span",
|
|
362
|
+
fontWeight: node.type === 'folder' ? 'semiBold' : 'regular',
|
|
363
|
+
children: node.type === 'folder' ? node.name : node.title
|
|
364
|
+
}),
|
|
365
|
+
/*#__PURE__*/ jsxRuntime.jsx(designSystem.VisuallyHidden, {
|
|
366
|
+
children: formatMessage({
|
|
367
|
+
id: getTrad.getTrad('nav.folder.dragging'),
|
|
368
|
+
defaultMessage: 'Dragging {name}'
|
|
369
|
+
}, {
|
|
370
|
+
name
|
|
371
|
+
})
|
|
372
|
+
})
|
|
373
|
+
]
|
|
374
|
+
});
|
|
375
|
+
};
|
|
376
|
+
|
|
377
|
+
exports.RowOverlay = RowOverlay;
|
|
378
|
+
exports.SortableTreeRow = SortableTreeRow;
|
|
379
|
+
//# sourceMappingURL=SortableTreeRow.js.map
|
package/dist/admin/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SortableTreeRow.js","sources":["../../../../../../admin/src/components/ContentTypeBuilderNav/components/FolderNav/SortableTreeRow.tsx"],"sourcesContent":["import { useRef } from 'react';\n\nimport { useSortable } from '@dnd-kit/sortable';\nimport { Box, Flex, Menu, Typography, VisuallyHidden } from '@strapi/design-system';\nimport { ChevronDown, More, Pencil, Trash } from '@strapi/icons';\nimport { useIntl } from 'react-intl';\nimport { NavLink } from 'react-router-dom';\nimport { css, styled } from 'styled-components';\n\nimport { getTrad } from '../../../../utils/getTrad';\nimport { Status } from '../../../Status';\n\nimport { FolderNameField } from './FolderNameField';\n\nimport type { SectionKey } from '../../../DataManager/utils/contentStructure';\nimport type { FolderNode } from '../../lib/buildFolderTree';\nimport type { FlatItem } from '../../lib/flatModel';\n\n/**\n * The drop-position indicator is absolutely positioned so that it does not displace\n * a row and cause cyclical layout shifts.\n * It is justified to the right edge of the row and its width is based on the\n * depth of the destination it indicates.\n */\nconst DropIndicator = styled.span<{ $edge: 'top' | 'bottom'; $indentDepth: number }>`\n position: absolute;\n left: ${({ theme, $indentDepth }) => `calc(${$indentDepth} * ${theme.spaces[6]})`};\n right: 0;\n ${({ $edge }) => ($edge === 'top' ? 'top: 0;' : 'bottom: 0;')}\n transform: ${({ $edge }) => ($edge === 'top' ? 'translateY(-1px)' : 'translateY(1px)')};\n\n height: 2px;\n background-color: ${({ theme }) => theme.colors.primary600};\n border-radius: 2px;\n pointer-events: none;\n z-index: 2;\n\n &::before {\n content: '';\n\n position: absolute;\n top: 50%;\n left: 0;\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background-color: ${({ theme }) => theme.colors.primary600};\n transform: translate(-50%, -50%);\n }\n`;\n\nconst MenuTrigger = styled(Menu.Trigger)`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 16px;\n height: 16px;\n padding: 0;\n\n position: relative;\n z-index: 1;\n`;\n\nconst Row = styled(Flex)<{ $depth: number; $dropTarget?: boolean; $dragging?: boolean }>`\n position: relative;\n border-radius: ${({ theme }) => theme.borderRadius};\n\n padding-right: ${({ theme }) => theme.spaces[3]};\n padding-block: ${({ theme }) => theme.spaces[2]};\n padding-left: ${({ theme }) => theme.spaces[3]};\n padding-left: ${({ theme, $depth }) =>\n `calc(${$depth} * ${theme.spaces[6]} + ${theme.spaces[3]})`};\n\n background-color: ${({ $dropTarget, theme }) =>\n $dropTarget ? theme.colors.primary100 : 'transparent'};\n outline: ${({ $dropTarget, theme }) =>\n $dropTarget ? `1px solid ${theme.colors.primary600}` : 'none'};\n outline-offset: -1px;\n\n ${MenuTrigger} {\n opacity: 0;\n transition: opacity 0.1s ease-out;\n }\n\n /*\n * This selects for the opened Radix popover menu so that the hover state doesn't disappear while it is open.\n */\n &:hover,\n &:has([data-state='open']) {\n background-color: ${({ $dropTarget, theme }) =>\n $dropTarget ? theme.colors.primary100 : theme.colors.neutral100};\n }\n\n &:hover ${MenuTrigger}, &:focus-within ${MenuTrigger}, &:has([data-state='open']) ${MenuTrigger} {\n opacity: 1;\n }\n\n ${({ $dragging }) =>\n $dragging &&\n css`\n & > *:not(${DropIndicator}) {\n opacity: 0.4;\n }\n `}\n`;\n\nconst GrabArea = styled.button`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n gap: ${({ theme }) => theme.spaces[2]};\n\n height: 100%;\n padding: 0;\n border: none;\n background: transparent;\n text-align: left;\n cursor: pointer;\n\n /* The interactive area must be larger than the contents-driven hit area. */\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst ContentTypeLink = styled(NavLink)`\n display: flex;\n align-items: center;\n flex: 1;\n min-width: 0;\n gap: ${({ theme }) => theme.spaces[2]};\n\n height: 100%;\n text-decoration: none;\n color: ${({ theme }) => theme.colors.neutral800};\n\n &.active {\n color: ${({ theme }) => theme.colors.primary700};\n font-weight: 500;\n }\n\n /* The interactive area must be larger than the contents-driven hit area. */\n &::before {\n content: '';\n position: absolute;\n inset: 0;\n }\n\n &:focus-visible {\n outline-offset: -2px;\n }\n`;\n\nconst Glyph = styled.span`\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex: 0 0 16px;\n`;\n\nconst Bullet = styled(Glyph)`\n &::before {\n content: '';\n width: 4px;\n height: 4px;\n border-radius: 50%;\n background-color: currentColor;\n }\n`;\n\nconst Label = styled(Typography)`\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nexport interface TreeHandlers {\n section: SectionKey;\n canEdit: boolean;\n /** Whether a folder can be collapsed / uncollapsed. */\n canToggle?: boolean;\n editingId: string | null;\n isCollapsed: (id: string) => boolean;\n onToggle: (id: string) => void;\n onBeginRename: (id: string) => void;\n onSubmitRename: (id: string, name: string) => void;\n onCancelRename: () => void;\n onDeleteFolder: (node: FolderNode) => void;\n onDeleteFolderAndContent: (node: FolderNode) => void;\n validateFolderName: (params: {\n name: string;\n parentId: string | null;\n excludeId?: string;\n }) => string | undefined;\n dropTargetId: string | null;\n dropLine: { anchorId: string; edge: 'top' | 'bottom'; depth: number } | null;\n}\n\nexport const SortableTreeRow = ({ item, handlers }: { item: FlatItem; handlers: TreeHandlers }) => {\n const { formatMessage } = useIntl();\n\n const renameSelectedRef = useRef(false); // Tracks when the \"rename\" option is clicked in the popover so Radix's default \"restore focus to menu trigger on menu close\" behavior doesn't compete with our desired focus on the inline input.\n\n const { listeners, setNodeRef, isDragging } = useSortable({\n animateLayoutChanges: () => false,\n disabled: !handlers.canEdit,\n id: item.id,\n });\n\n const dragListeners = handlers.canEdit ? listeners : undefined;\n\n const depth = item.depth;\n const node = item.node;\n\n const canToggle = Boolean(handlers.canToggle);\n\n const dropLine =\n handlers.dropLine && handlers.dropLine.anchorId === item.id ? handlers.dropLine : null;\n\n if (node.type === 'folder' && handlers.canEdit && handlers.editingId === node.id) {\n const validateFolderName = (name: string) => {\n return handlers.validateFolderName({ name, parentId: node.parentId, excludeId: node.id });\n };\n\n const onFolderNameSubmit = (name: string) => {\n if (name === node.name) {\n handlers.onCancelRename();\n return;\n }\n\n handlers.onSubmitRename(node.id, name);\n };\n\n return (\n <div ref={setNodeRef}>\n <FolderNameField\n onCancel={handlers.onCancelRename}\n onSubmit={onFolderNameSubmit}\n validate={validateFolderName}\n defaultValue={node.name}\n depth={item.depth}\n />\n </div>\n );\n }\n\n const trailingContents = (\n <Flex\n gap={1}\n alignItems=\"center\"\n onPointerDown={(e) => {\n // Prevent propagation when the interactive elements container is clicked as not to compete with the row's drag detection.\n e.stopPropagation();\n }}\n >\n {node.type === 'contentType' && (\n <Box tag=\"span\" textAlign=\"center\" width=\"24px\">\n <Status status={node.status} />\n </Box>\n )}\n {node.type === 'folder' && handlers.canEdit && (\n <Menu.Root>\n <MenuTrigger\n variant=\"ghost\"\n endIcon={null}\n size=\"S\"\n aria-label={formatMessage(\n { id: getTrad('nav.folder.actions-label'), defaultMessage: 'Actions for {name}' },\n { name: node.name }\n )}\n >\n <More aria-hidden focusable={false} />\n </MenuTrigger>\n <Menu.Content\n zIndex={2}\n onCloseAutoFocus={(event) => {\n if (renameSelectedRef.current) {\n event.preventDefault();\n }\n\n renameSelectedRef.current = false;\n }}\n >\n <Menu.Item\n onSelect={() => {\n renameSelectedRef.current = true;\n handlers.onBeginRename(node.id);\n }}\n startIcon={<Pencil />}\n >\n {formatMessage({ id: getTrad('nav.folder.rename'), defaultMessage: 'Rename' })}\n </Menu.Item>\n\n <Menu.Separator />\n <Menu.Item\n onSelect={() => handlers.onDeleteFolder(node)}\n startIcon={<Trash />}\n variant=\"danger\"\n >\n {formatMessage({ id: getTrad('nav.folder.delete'), defaultMessage: 'Delete folder' })}\n </Menu.Item>\n\n {node.children.length > 0 && (\n <Menu.Item\n onSelect={() => handlers.onDeleteFolderAndContent(node)}\n startIcon={<Trash />}\n >\n {formatMessage({\n id: getTrad('nav.folder.delete-with-content'),\n defaultMessage: 'Delete folder and contents',\n })}\n </Menu.Item>\n )}\n </Menu.Content>\n </Menu.Root>\n )}\n </Flex>\n );\n\n return (\n <Row\n ref={setNodeRef}\n {...dragListeners}\n alignItems=\"center\"\n $dropTarget={handlers.dropTargetId === item.id}\n $dragging={isDragging}\n $depth={depth}\n >\n {node.type === 'folder' ? (\n <GrabArea\n aria-expanded={canToggle ? !handlers.isCollapsed(node.id) : undefined}\n onClick={canToggle ? () => handlers.onToggle(node.id) : undefined}\n style={canToggle ? undefined : { cursor: 'default' }}\n type={canToggle ? 'button' : undefined}\n as={canToggle ? 'button' : 'span'}\n >\n <Glyph aria-hidden>\n <ChevronDown\n fill=\"neutral500\"\n style={{\n transform: handlers.isCollapsed(node.id) ? 'rotate(-90deg)' : 'none',\n transition: 'transform 0.2s',\n }}\n />\n </Glyph>\n <Label tag=\"span\" textColor=\"neutral800\" fontWeight=\"semiBold\">\n {node.name}\n </Label>\n </GrabArea>\n ) : (\n <ContentTypeLink to={node.to} draggable={false}>\n <Bullet aria-hidden />\n <Label tag=\"span\">{node.title}</Label>\n </ContentTypeLink>\n )}\n {trailingContents}\n {dropLine && (\n <DropIndicator $indentDepth={dropLine.depth} $edge={dropLine.edge} aria-hidden />\n )}\n </Row>\n );\n};\n\n/**\n * This is rendered in place of the actual row when it is being dragged.\n */\nexport const RowOverlay = ({ item }: { item: FlatItem }) => {\n const { formatMessage } = useIntl();\n const node = item.node;\n const name = node.type === 'folder' ? node.name : node.title;\n\n return (\n <Row\n style={{ cursor: 'grabbing' }}\n background=\"neutral0\"\n shadow=\"filterShadow\"\n alignItems=\"center\"\n $depth={0}\n >\n <Glyph aria-hidden>\n {node.type === 'folder' ? <ChevronDown fill=\"neutral500\" /> : <Bullet />}\n </Glyph>\n <Label tag=\"span\" fontWeight={node.type === 'folder' ? 'semiBold' : 'regular'}>\n {node.type === 'folder' ? node.name : node.title}\n </Label>\n <VisuallyHidden>\n {formatMessage(\n { id: getTrad('nav.folder.dragging'), defaultMessage: 'Dragging {name}' },\n { name }\n )}\n </VisuallyHidden>\n </Row>\n );\n};\n"],"names":["DropIndicator","styled","span","theme","$indentDepth","spaces","$edge","colors","primary600","MenuTrigger","Menu","Trigger","Row","Flex","borderRadius","$depth","$dropTarget","primary100","neutral100","$dragging","css","GrabArea","button","ContentTypeLink","NavLink","neutral800","primary700","Glyph","Bullet","Label","Typography","SortableTreeRow","item","handlers","formatMessage","useIntl","renameSelectedRef","useRef","listeners","setNodeRef","isDragging","useSortable","animateLayoutChanges","disabled","canEdit","id","dragListeners","undefined","depth","node","canToggle","Boolean","dropLine","anchorId","type","editingId","validateFolderName","name","parentId","excludeId","onFolderNameSubmit","onCancelRename","onSubmitRename","_jsx","div","ref","FolderNameField","onCancel","onSubmit","validate","defaultValue","trailingContents","_jsxs","gap","alignItems","onPointerDown","e","stopPropagation","Box","tag","textAlign","width","Status","status","Root","variant","endIcon","size","aria-label","getTrad","defaultMessage","More","aria-hidden","focusable","Content","zIndex","onCloseAutoFocus","event","current","preventDefault","Item","onSelect","onBeginRename","startIcon","Pencil","Separator","onDeleteFolder","Trash","children","length","onDeleteFolderAndContent","dropTargetId","aria-expanded","isCollapsed","onClick","onToggle","style","cursor","as","ChevronDown","fill","transform","transition","textColor","fontWeight","to","draggable","title","edge","RowOverlay","background","shadow","VisuallyHidden"],"mappings":"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"}
|