@elementor/editor-global-classes 4.2.0-922 → 4.2.0-923
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/index.js +150 -133
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +143 -126
- package/dist/index.mjs.map +1 -1
- package/package.json +20 -20
- package/src/components/class-manager/global-classes-list.tsx +40 -17
- package/src/load-document-classes.ts +12 -5
- package/src/store.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elementor/editor-global-classes",
|
|
3
|
-
"version": "4.2.0-
|
|
3
|
+
"version": "4.2.0-923",
|
|
4
4
|
"private": false,
|
|
5
5
|
"author": "Elementor Team",
|
|
6
6
|
"homepage": "https://elementor.com/",
|
|
@@ -39,29 +39,29 @@
|
|
|
39
39
|
"dev": "tsup --config=../../tsup.dev.ts"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@elementor/editor": "4.2.0-
|
|
43
|
-
"@elementor/editor-current-user": "4.2.0-
|
|
44
|
-
"@elementor/editor-documents": "4.2.0-
|
|
45
|
-
"@elementor/editor-editing-panel": "4.2.0-
|
|
46
|
-
"@elementor/editor-mcp": "4.2.0-
|
|
47
|
-
"@elementor/editor-panels": "4.2.0-
|
|
48
|
-
"@elementor/editor-props": "4.2.0-
|
|
49
|
-
"@elementor/editor-variables": "4.2.0-
|
|
50
|
-
"@elementor/editor-styles": "4.2.0-
|
|
51
|
-
"@elementor/editor-canvas": "4.2.0-
|
|
52
|
-
"@elementor/editor-styles-repository": "4.2.0-
|
|
53
|
-
"@elementor/editor-ui": "4.2.0-
|
|
54
|
-
"@elementor/editor-v1-adapters": "4.2.0-
|
|
55
|
-
"@elementor/http-client": "4.2.0-
|
|
42
|
+
"@elementor/editor": "4.2.0-923",
|
|
43
|
+
"@elementor/editor-current-user": "4.2.0-923",
|
|
44
|
+
"@elementor/editor-documents": "4.2.0-923",
|
|
45
|
+
"@elementor/editor-editing-panel": "4.2.0-923",
|
|
46
|
+
"@elementor/editor-mcp": "4.2.0-923",
|
|
47
|
+
"@elementor/editor-panels": "4.2.0-923",
|
|
48
|
+
"@elementor/editor-props": "4.2.0-923",
|
|
49
|
+
"@elementor/editor-variables": "4.2.0-923",
|
|
50
|
+
"@elementor/editor-styles": "4.2.0-923",
|
|
51
|
+
"@elementor/editor-canvas": "4.2.0-923",
|
|
52
|
+
"@elementor/editor-styles-repository": "4.2.0-923",
|
|
53
|
+
"@elementor/editor-ui": "4.2.0-923",
|
|
54
|
+
"@elementor/editor-v1-adapters": "4.2.0-923",
|
|
55
|
+
"@elementor/http-client": "4.2.0-923",
|
|
56
56
|
"@elementor/icons": "~1.75.1",
|
|
57
|
-
"@elementor/query": "4.2.0-
|
|
58
|
-
"@elementor/schema": "4.2.0-
|
|
59
|
-
"@elementor/store": "4.2.0-
|
|
57
|
+
"@elementor/query": "4.2.0-923",
|
|
58
|
+
"@elementor/schema": "4.2.0-923",
|
|
59
|
+
"@elementor/store": "4.2.0-923",
|
|
60
60
|
"@elementor/ui": "1.37.5",
|
|
61
|
-
"@elementor/utils": "4.2.0-
|
|
61
|
+
"@elementor/utils": "4.2.0-923",
|
|
62
62
|
"@tanstack/react-virtual": "^3.13.24",
|
|
63
63
|
"@wordpress/i18n": "^5.13.0",
|
|
64
|
-
"@elementor/events": "4.2.0-
|
|
64
|
+
"@elementor/events": "4.2.0-923"
|
|
65
65
|
},
|
|
66
66
|
"peerDependencies": {
|
|
67
67
|
"react": "^18.3.1",
|
|
@@ -9,6 +9,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
9
9
|
import { useClassesOrder } from '../../hooks/use-classes-order';
|
|
10
10
|
import { useFilters } from '../../hooks/use-filters';
|
|
11
11
|
import { useOrderedClasses } from '../../hooks/use-ordered-classes';
|
|
12
|
+
import { loadExistingClasses } from '../../load-existing-classes';
|
|
12
13
|
import { slice } from '../../store';
|
|
13
14
|
import { trackGlobalClasses } from '../../utils/tracking';
|
|
14
15
|
import { useSearchAndFilters } from '../search-and-filter/context';
|
|
@@ -21,6 +22,8 @@ import { SortableItem, SortableProvider } from './sortable';
|
|
|
21
22
|
const ROW_HEIGHT = 40;
|
|
22
23
|
const OVERSCAN = 6;
|
|
23
24
|
|
|
25
|
+
type LoadingClassesMap = Record< StyleDefinitionID, boolean >;
|
|
26
|
+
|
|
24
27
|
type GlobalClassesListProps = {
|
|
25
28
|
disabled?: boolean;
|
|
26
29
|
scrollElement?: HTMLElement | null;
|
|
@@ -41,6 +44,17 @@ export const GlobalClassesList = ( {
|
|
|
41
44
|
const dispatch = useDispatch();
|
|
42
45
|
const filters = useFilters();
|
|
43
46
|
const [ draggedItemId, setDraggedItemId ] = useState< StyleDefinitionID | null >( null );
|
|
47
|
+
const [ loading, setLoading ] = useState< LoadingClassesMap >( {} );
|
|
48
|
+
|
|
49
|
+
const addLoadingClass = ( classId: StyleDefinitionID ) =>
|
|
50
|
+
setLoading( ( prev ) => ( { ...prev, [ classId ]: true } ) );
|
|
51
|
+
|
|
52
|
+
const removeLoadingClass = ( classId: StyleDefinitionID ) =>
|
|
53
|
+
setLoading( ( prev ) => {
|
|
54
|
+
const { [ classId ]: _, ...rest } = prev;
|
|
55
|
+
return rest;
|
|
56
|
+
} );
|
|
57
|
+
|
|
44
58
|
const draggedItemLabel = cssClasses.find( ( cssClass ) => cssClass.id === draggedItemId )?.label ?? '';
|
|
45
59
|
const [ classesOrder, reorderClasses ] = useReorder( draggedItemId, setDraggedItemId, draggedItemLabel ?? '' );
|
|
46
60
|
const filteredCssClasses = useFilteredCssClasses();
|
|
@@ -133,25 +147,34 @@ export const GlobalClassesList = ( {
|
|
|
133
147
|
<ClassItem
|
|
134
148
|
id={ cssClass.id }
|
|
135
149
|
label={ cssClass.label }
|
|
136
|
-
renameClass={ ( newLabel: string ) => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
150
|
+
renameClass={ async ( newLabel: string ) => {
|
|
151
|
+
addLoadingClass( cssClass.id );
|
|
152
|
+
|
|
153
|
+
try {
|
|
154
|
+
trackGlobalClasses( {
|
|
155
|
+
event: 'classRenamed',
|
|
156
|
+
classId: cssClass.id,
|
|
157
|
+
oldValue: cssClass.label,
|
|
158
|
+
newValue: newLabel,
|
|
159
|
+
source: 'class-manager',
|
|
160
|
+
} );
|
|
161
|
+
|
|
162
|
+
void ( await loadExistingClasses( [ cssClass.id ] ) );
|
|
163
|
+
|
|
164
|
+
dispatch(
|
|
165
|
+
slice.actions.update( {
|
|
166
|
+
style: {
|
|
167
|
+
id: cssClass.id,
|
|
168
|
+
label: newLabel,
|
|
169
|
+
},
|
|
170
|
+
} )
|
|
171
|
+
);
|
|
172
|
+
} finally {
|
|
173
|
+
removeLoadingClass( cssClass.id );
|
|
174
|
+
}
|
|
152
175
|
} }
|
|
153
176
|
selected={ isDragged }
|
|
154
|
-
disabled={ disabled || isDragPlaceholder }
|
|
177
|
+
disabled={ disabled || isDragPlaceholder || loading[ cssClass.id ] }
|
|
155
178
|
sortableTriggerProps={ {
|
|
156
179
|
...triggerProps,
|
|
157
180
|
style: triggerStyle,
|
|
@@ -27,14 +27,21 @@ function resetGlobalClassesState( globalOrder: StyleDefinitionID[], classLabels:
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export async function loadCurrentDocumentClasses() {
|
|
30
|
-
const previewIndexRes = await
|
|
30
|
+
const [ previewIndexRes, frontendIndexRes ] = await Promise.all( [
|
|
31
|
+
apiClient.all( 'preview' ),
|
|
32
|
+
apiClient.all( 'frontend' ),
|
|
33
|
+
] );
|
|
34
|
+
|
|
31
35
|
const previewIndex = previewIndexRes.data.data;
|
|
36
|
+
const frontendIndex = frontendIndexRes.data.data;
|
|
37
|
+
|
|
32
38
|
const classLabels = createLabelsForClasses( previewIndex );
|
|
33
|
-
const
|
|
39
|
+
const previewOrder = previewIndex.map( ( e ) => e.id );
|
|
40
|
+
const frontendOrder = frontendIndex.map( ( e ) => e.id );
|
|
34
41
|
|
|
35
42
|
// This is intended to establish the baseline with current labels and order
|
|
36
43
|
// without it we won't be able to properly resolve the styles' class names
|
|
37
|
-
resetGlobalClassesState(
|
|
44
|
+
resetGlobalClassesState( previewOrder, classLabels );
|
|
38
45
|
|
|
39
46
|
const postId = getCurrentDocument()?.id;
|
|
40
47
|
if ( ! postId ) {
|
|
@@ -51,8 +58,8 @@ export async function loadCurrentDocumentClasses() {
|
|
|
51
58
|
|
|
52
59
|
dispatch(
|
|
53
60
|
slice.actions.load( {
|
|
54
|
-
preview: { items: previewItems, order:
|
|
55
|
-
frontend: { items: frontendItems, order:
|
|
61
|
+
preview: { items: previewItems, order: previewOrder },
|
|
62
|
+
frontend: { items: frontendItems, order: frontendOrder },
|
|
56
63
|
classLabels,
|
|
57
64
|
} )
|
|
58
65
|
);
|
package/src/store.ts
CHANGED
|
@@ -339,7 +339,7 @@ export const selectClass = ( state: SliceState< typeof slice >, id: StyleDefinit
|
|
|
339
339
|
state[ SLICE_NAME ].data.items[ id ] ?? null;
|
|
340
340
|
|
|
341
341
|
export const selectEmptyCssClass = createSelector( selectData, ( { items } ) =>
|
|
342
|
-
Object.values( items ).filter( ( cssClass ) => cssClass.variants
|
|
342
|
+
Object.values( items ).filter( ( cssClass ) => ( cssClass.variants?.length ?? 0 ) === 0 )
|
|
343
343
|
);
|
|
344
344
|
|
|
345
345
|
export const selectIsClassFetched = ( state: SliceState< typeof slice >, id: StyleDefinitionID ) =>
|