@elementor/editor-variables 3.33.0-136 → 3.33.0-138

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elementor/editor-variables",
3
- "version": "3.33.0-136",
3
+ "version": "3.33.0-138",
4
4
  "private": false,
5
5
  "author": "Elementor Team",
6
6
  "homepage": "https://elementor.com/",
@@ -39,19 +39,19 @@
39
39
  "dev": "tsup --config=../../tsup.dev.ts"
40
40
  },
41
41
  "dependencies": {
42
- "@elementor/editor": "3.33.0-136",
43
- "@elementor/editor-canvas": "3.33.0-136",
44
- "@elementor/editor-controls": "3.33.0-136",
45
- "@elementor/editor-current-user": "3.33.0-136",
46
- "@elementor/editor-editing-panel": "3.33.0-136",
47
- "@elementor/editor-panels": "3.33.0-136",
48
- "@elementor/editor-props": "3.33.0-136",
49
- "@elementor/editor-ui": "3.33.0-136",
50
- "@elementor/editor-v1-adapters": "3.33.0-136",
51
- "@elementor/http-client": "3.33.0-136",
42
+ "@elementor/editor": "3.33.0-138",
43
+ "@elementor/editor-canvas": "3.33.0-138",
44
+ "@elementor/editor-controls": "3.33.0-138",
45
+ "@elementor/editor-current-user": "3.33.0-138",
46
+ "@elementor/editor-editing-panel": "3.33.0-138",
47
+ "@elementor/editor-panels": "3.33.0-138",
48
+ "@elementor/editor-props": "3.33.0-138",
49
+ "@elementor/editor-ui": "3.33.0-138",
50
+ "@elementor/editor-v1-adapters": "3.33.0-138",
51
+ "@elementor/http-client": "3.33.0-138",
52
52
  "@elementor/icons": "1.46.0",
53
- "@elementor/mixpanel": "3.33.0-136",
54
- "@elementor/schema": "3.33.0-136",
53
+ "@elementor/mixpanel": "3.33.0-138",
54
+ "@elementor/schema": "3.33.0-138",
55
55
  "@elementor/ui": "1.36.12",
56
56
  "@wordpress/i18n": "^5.13.0"
57
57
  },
@@ -47,7 +47,9 @@ export const buildOperationsArray = (
47
47
  } );
48
48
  } else if (
49
49
  ! variable.deleted &&
50
- ( original.label !== variable.label || original.value !== variable.value )
50
+ ( original.label !== variable.label ||
51
+ original.value !== variable.value ||
52
+ original.order !== variable.order )
51
53
  ) {
52
54
  operations.push( {
53
55
  type: 'update',
@@ -55,6 +57,7 @@ export const buildOperationsArray = (
55
57
  variable: {
56
58
  ...( original.label !== variable.label && { label: variable.label } ),
57
59
  ...( original.value !== variable.value && { value: variable.value } ),
60
+ ...( original.order !== variable.order && { order: variable.order } ),
58
61
  },
59
62
  } );
60
63
  }
@@ -69,8 +69,17 @@ export const VariablesManagerTable = ( {
69
69
  }
70
70
  };
71
71
 
72
+ useEffect( () => {
73
+ const sortedIds = [ ...ids ].sort( sortVariablesOrder( variables ) );
74
+
75
+ if ( JSON.stringify( sortedIds ) !== JSON.stringify( ids ) ) {
76
+ setIds( sortedIds );
77
+ }
78
+ }, [ ids, variables, setIds ] );
79
+
72
80
  const rows = ids
73
81
  .filter( ( id ) => ! variables[ id ].deleted )
82
+ .sort( sortVariablesOrder( variables ) )
74
83
  .map( ( id ) => {
75
84
  const variable = variables[ id ];
76
85
  const variableType = getVariableType( variable.type );
@@ -103,7 +112,19 @@ export const VariablesManagerTable = ( {
103
112
  <TableBody>
104
113
  <UnstableSortableProvider
105
114
  value={ ids }
106
- onChange={ setIds }
115
+ onChange={ ( newIds ) => {
116
+ const updatedVariables = { ...variables };
117
+ newIds.forEach( ( id, index ) => {
118
+ if ( updatedVariables[ id ] ) {
119
+ updatedVariables[ id ] = {
120
+ ...updatedVariables[ id ],
121
+ order: index + 1,
122
+ };
123
+ }
124
+ } );
125
+ handleOnChange( updatedVariables );
126
+ setIds( newIds );
127
+ } }
107
128
  variant="static"
108
129
  restrictAxis
109
130
  dragOverlay={ ( { children: dragOverlayChildren, ...dragOverlayProps } ) => (
@@ -255,3 +276,10 @@ export const VariablesManagerTable = ( {
255
276
  </TableContainer>
256
277
  );
257
278
  };
279
+ function sortVariablesOrder( variables: TVariablesList ): ( a: string, b: string ) => number {
280
+ return ( a, b ) => {
281
+ const orderA = variables[ a ]?.order ?? Number.MAX_SAFE_INTEGER;
282
+ const orderB = variables[ b ]?.order ?? Number.MAX_SAFE_INTEGER;
283
+ return orderA - orderB;
284
+ };
285
+ }
@@ -34,9 +34,14 @@ export const useFilteredVariables = ( searchValue: string, propTypeKey: string )
34
34
 
35
35
  const typeFilteredVariables = useVariableSelectionFilter( baseVariables );
36
36
  const searchFilteredVariables = filterVariablesBySearchValue( typeFilteredVariables, searchValue );
37
+ const sortedVariables = searchFilteredVariables.sort( ( a, b ) => {
38
+ const orderA = a.order ?? Number.MAX_SAFE_INTEGER;
39
+ const orderB = b.order ?? Number.MAX_SAFE_INTEGER;
40
+ return orderA - orderB;
41
+ } );
37
42
 
38
43
  return {
39
- list: searchFilteredVariables,
44
+ list: sortedVariables,
40
45
  hasMatches: searchFilteredVariables.length > 0,
41
46
  isSourceNotEmpty: typeFilteredVariables.length > 0,
42
47
  hasNoCompatibleVariables: baseVariables.length > 0 && typeFilteredVariables.length === 0,
@@ -64,10 +69,11 @@ const normalizeVariables = ( propKey: string ) => {
64
69
 
65
70
  return Object.entries( variables )
66
71
  .filter( ( [ , variable ] ) => variable.type === propKey )
67
- .map( ( [ key, { label, value } ] ) => ( {
72
+ .map( ( [ key, { label, value, order } ] ) => ( {
68
73
  key,
69
74
  label,
70
75
  value,
76
+ order,
71
77
  } ) );
72
78
  };
73
79
 
package/src/storage.ts CHANGED
@@ -2,6 +2,7 @@ export type TVariable = {
2
2
  type: string;
3
3
  label: string;
4
4
  value: string;
5
+ order?: number;
5
6
  deleted?: boolean;
6
7
  deleted_at?: string;
7
8
  };
package/src/types.ts CHANGED
@@ -22,4 +22,5 @@ export type NormalizedVariable = {
22
22
  key: string;
23
23
  label: string;
24
24
  value: string;
25
+ order?: number;
25
26
  };