@elementor/editor-editing-panel 1.46.0 → 1.48.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.
Files changed (77) hide show
  1. package/CHANGELOG.md +85 -0
  2. package/dist/index.d.mts +12 -1
  3. package/dist/index.d.ts +12 -1
  4. package/dist/index.js +1094 -889
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +979 -780
  7. package/dist/index.mjs.map +1 -1
  8. package/package.json +17 -18
  9. package/src/components/popover-scrollable-content.tsx +12 -0
  10. package/src/components/section-content.tsx +6 -16
  11. package/src/components/section.tsx +8 -4
  12. package/src/components/settings-tab.tsx +5 -2
  13. package/src/components/style-sections/background-section/background-section.tsx +4 -1
  14. package/src/components/style-sections/border-section/border-color-field.tsx +10 -16
  15. package/src/components/style-sections/border-section/border-field.tsx +14 -7
  16. package/src/components/style-sections/border-section/border-radius-field.tsx +4 -2
  17. package/src/components/style-sections/border-section/border-style-field.tsx +11 -16
  18. package/src/components/style-sections/border-section/border-width-field.tsx +4 -2
  19. package/src/components/style-sections/effects-section/effects-section.tsx +29 -6
  20. package/src/components/style-sections/layout-section/align-content-field.tsx +11 -12
  21. package/src/components/style-sections/layout-section/align-items-field.tsx +8 -11
  22. package/src/components/style-sections/layout-section/align-self-child-field.tsx +11 -16
  23. package/src/components/style-sections/layout-section/display-field.tsx +6 -6
  24. package/src/components/style-sections/layout-section/flex-direction-field.tsx +11 -14
  25. package/src/components/style-sections/layout-section/flex-order-field.tsx +23 -20
  26. package/src/components/style-sections/layout-section/flex-size-field.tsx +42 -64
  27. package/src/components/style-sections/layout-section/gap-control-field.tsx +5 -6
  28. package/src/components/style-sections/layout-section/justify-content-field.tsx +11 -12
  29. package/src/components/style-sections/layout-section/layout-section.tsx +9 -2
  30. package/src/components/style-sections/layout-section/opacity-control-field.tsx +9 -13
  31. package/src/components/style-sections/layout-section/utils/rotated-icon.tsx +6 -1
  32. package/src/components/style-sections/layout-section/wrap-field.tsx +10 -14
  33. package/src/components/style-sections/position-section/dimensions-field.tsx +4 -4
  34. package/src/components/style-sections/position-section/offset-field.tsx +12 -14
  35. package/src/components/style-sections/position-section/position-field.tsx +7 -11
  36. package/src/components/style-sections/position-section/position-section.tsx +19 -8
  37. package/src/components/style-sections/position-section/z-index-field.tsx +7 -11
  38. package/src/components/style-sections/size-section/object-fit-field.tsx +7 -11
  39. package/src/components/style-sections/size-section/object-position-field.tsx +4 -1
  40. package/src/components/style-sections/size-section/overflow-field.tsx +7 -11
  41. package/src/components/style-sections/size-section/size-section.tsx +13 -8
  42. package/src/components/style-sections/spacing-section/spacing-section.tsx +7 -4
  43. package/src/components/style-sections/typography-section/column-count-field.tsx +7 -11
  44. package/src/components/style-sections/typography-section/column-gap-field.tsx +9 -13
  45. package/src/components/style-sections/typography-section/font-family-field.tsx +9 -11
  46. package/src/components/style-sections/typography-section/font-size-field.tsx +9 -13
  47. package/src/components/style-sections/typography-section/font-style-field.tsx +13 -13
  48. package/src/components/style-sections/typography-section/font-weight-field.tsx +7 -11
  49. package/src/components/style-sections/typography-section/letter-spacing-field.tsx +9 -13
  50. package/src/components/style-sections/typography-section/line-height-field.tsx +9 -13
  51. package/src/components/style-sections/typography-section/text-alignment-field.tsx +11 -14
  52. package/src/components/style-sections/typography-section/text-color-field.tsx +7 -11
  53. package/src/components/style-sections/typography-section/text-decoration-field.tsx +7 -11
  54. package/src/components/style-sections/typography-section/text-direction-field.tsx +7 -11
  55. package/src/components/style-sections/typography-section/text-stroke-field.tsx +7 -3
  56. package/src/components/style-sections/typography-section/transform-field.tsx +7 -11
  57. package/src/components/style-sections/typography-section/typography-section.tsx +6 -1
  58. package/src/components/style-sections/typography-section/word-spacing-field.tsx +9 -13
  59. package/src/components/style-tab.tsx +1 -1
  60. package/src/components/styles-field-layout.tsx +50 -0
  61. package/src/contexts/section-context.tsx +14 -0
  62. package/src/controls-registry/control-type-container.tsx +6 -2
  63. package/src/controls-registry/controls-registry.tsx +1 -1
  64. package/src/controls-registry/settings-field.tsx +85 -10
  65. package/src/controls-registry/styles-field.tsx +15 -5
  66. package/src/dynamics/components/dynamic-selection-control.tsx +10 -4
  67. package/src/dynamics/components/dynamic-selection.tsx +18 -14
  68. package/src/hooks/use-default-panel-settings.ts +4 -0
  69. package/src/hooks/use-styles-field.ts +3 -4
  70. package/src/hooks/use-styles-fields.ts +141 -73
  71. package/src/index.ts +4 -0
  72. package/src/init.ts +0 -6
  73. package/src/popover-action.tsx +8 -1
  74. package/src/styles-inheritance/components/styles-inheritance-indicator.tsx +4 -1
  75. package/src/styles-inheritance/components/styles-inheritance-infotip.tsx +9 -19
  76. package/src/sync/experiments-flags.ts +1 -0
  77. package/src/components/popover-content.tsx +0 -15
@@ -1,61 +1,38 @@
1
1
  import { useMemo } from 'react';
2
- import {
3
- createElementStyle,
4
- type CreateElementStyleArgs,
5
- deleteElementStyle,
6
- type ElementID,
7
- getElementLabel,
8
- } from '@elementor/editor-elements';
2
+ import { createElementStyle, deleteElementStyle, type ElementID, getElementLabel } from '@elementor/editor-elements';
9
3
  import type { Props } from '@elementor/editor-props';
10
4
  import { getVariantByMeta, type StyleDefinition, type StyleDefinitionVariant } from '@elementor/editor-styles';
11
- import { type StylesProvider } from '@elementor/editor-styles-repository';
5
+ import { isElementsStylesProvider, type StylesProvider } from '@elementor/editor-styles-repository';
12
6
  import { ELEMENTS_STYLES_RESERVED_LABEL } from '@elementor/editor-styles-repository';
13
- import { undoable } from '@elementor/editor-v1-adapters';
7
+ import { isExperimentActive, undoable } from '@elementor/editor-v1-adapters';
14
8
  import { __ } from '@wordpress/i18n';
15
9
 
16
10
  import { useClassesProp } from '../contexts/classes-prop-context';
17
11
  import { useElement } from '../contexts/element-context';
18
12
  import { useStyle } from '../contexts/style-context';
19
13
  import { StyleNotFoundUnderProviderError, StylesProviderCannotUpdatePropsError } from '../errors';
14
+ import { EXPERIMENTAL_FEATURES } from '../sync/experiments-flags';
20
15
  import { useStylesRerender } from './use-styles-rerender';
21
16
 
22
17
  export function useStylesFields< T extends Props >( propNames: ( keyof T & string )[] ) {
23
- const { element } = useElement();
24
- const { id, meta, provider, canEdit } = useStyle();
25
- const classesProp = useClassesProp();
18
+ const {
19
+ element: { id: elementId },
20
+ } = useElement();
21
+ const { id: styleId, meta, provider, canEdit } = useStyle();
26
22
 
27
- const undoableUpdateStyle = useUndoableUpdateStyle();
28
- const undoableCreateElementStyle = useUndoableCreateElementStyle();
23
+ const undoableUpdateStyle = useUndoableUpdateStyle( { elementId, meta } );
24
+ const undoableCreateElementStyle = useUndoableCreateElementStyle( { elementId, meta } );
29
25
 
30
26
  useStylesRerender();
31
27
 
32
- const values = getProps< T >( {
33
- elementId: element.id,
34
- styleId: id,
35
- provider,
36
- meta,
37
- propNames,
38
- } );
39
-
40
- const setValues = ( props: T ) => {
41
- if ( id === null ) {
42
- undoableCreateElementStyle( {
43
- elementId: element.id,
44
- classesProp,
45
- meta,
46
- props,
47
- } );
48
-
49
- return;
50
- }
28
+ const values = getProps< T >( { elementId, styleId, provider, meta, propNames } );
51
29
 
52
- undoableUpdateStyle( {
53
- elementId: element.id,
54
- styleId: id,
55
- provider,
56
- meta,
57
- props,
58
- } );
30
+ const setValues = ( props: T, { history: { propDisplayName } }: { history: { propDisplayName: string } } ) => {
31
+ if ( styleId === null ) {
32
+ undoableCreateElementStyle( { props, propDisplayName } );
33
+ } else {
34
+ undoableUpdateStyle( { provider, styleId, props, propDisplayName } );
35
+ }
59
36
  };
60
37
 
61
38
  return { values, setValues, canEdit };
@@ -91,52 +68,78 @@ function getProps< T extends Props >( { styleId, elementId, provider, meta, prop
91
68
  ) as NullableValues< T >;
92
69
  }
93
70
 
94
- type UndoableCreateElementStyleArgs = Omit< CreateElementStyleArgs, 'label' >;
71
+ type UndoableCreateElementStyleArgs = {
72
+ props: Props;
73
+ propDisplayName: string;
74
+ };
75
+
76
+ function useUndoableCreateElementStyle( {
77
+ elementId,
78
+ meta,
79
+ }: {
80
+ elementId: ElementID;
81
+ meta: StyleDefinitionVariant[ 'meta' ];
82
+ } ) {
83
+ const classesProp = useClassesProp();
95
84
 
96
- function useUndoableCreateElementStyle() {
97
85
  return useMemo( () => {
86
+ const isVersion331Active = isExperimentActive( EXPERIMENTAL_FEATURES.V_3_31 );
87
+
88
+ const createStyleArgs = { elementId, classesProp, meta, label: ELEMENTS_STYLES_RESERVED_LABEL };
89
+
98
90
  return undoable(
99
91
  {
100
- do: ( payload: UndoableCreateElementStyleArgs ) => {
101
- return createElementStyle( {
102
- ...payload,
103
- label: ELEMENTS_STYLES_RESERVED_LABEL,
104
- } );
92
+ do: ( { props }: UndoableCreateElementStyleArgs ) => {
93
+ return createElementStyle( { ...createStyleArgs, props } );
105
94
  },
106
95
 
107
- undo: ( { elementId }, styleId ) => {
96
+ undo: ( _, styleId ) => {
108
97
  deleteElementStyle( elementId, styleId );
109
98
  },
110
99
 
111
- redo: ( payload, styleId ) => {
112
- return createElementStyle( {
113
- ...payload,
114
- styleId,
115
- label: ELEMENTS_STYLES_RESERVED_LABEL,
116
- } );
100
+ redo: ( { props }, styleId ) => {
101
+ return createElementStyle( { ...createStyleArgs, props, styleId } );
117
102
  },
118
103
  },
119
104
  {
120
- title: ( { elementId } ) => getElementLabel( elementId ),
121
- subtitle: __( 'Style edited', 'elementor' ),
105
+ title: () => {
106
+ if ( isVersion331Active ) {
107
+ return localStyleHistoryTitlesV331.title( { elementId } );
108
+ }
109
+ return historyTitlesV330.title( { elementId } );
110
+ },
111
+ subtitle: ( { propDisplayName } ) => {
112
+ if ( isVersion331Active ) {
113
+ return localStyleHistoryTitlesV331.subtitle( { propDisplayName } );
114
+ }
115
+ return historyTitlesV330.subtitle;
116
+ },
122
117
  }
123
118
  );
124
- }, [] );
119
+ }, [ classesProp, elementId, meta ] );
125
120
  }
126
121
 
127
122
  type UndoableUpdateStyleArgs = {
128
- elementId: ElementID;
129
123
  styleId: StyleDefinition[ 'id' ];
130
124
  provider: StylesProvider;
131
- meta: StyleDefinitionVariant[ 'meta' ];
132
125
  props: Props;
126
+ propDisplayName: string;
133
127
  };
134
128
 
135
- function useUndoableUpdateStyle() {
129
+ function useUndoableUpdateStyle( {
130
+ elementId,
131
+ meta,
132
+ }: {
133
+ elementId: ElementID;
134
+
135
+ meta: StyleDefinitionVariant[ 'meta' ];
136
+ } ) {
136
137
  return useMemo( () => {
138
+ const isVersion331Active = isExperimentActive( EXPERIMENTAL_FEATURES.V_3_31 );
139
+
137
140
  return undoable(
138
141
  {
139
- do: ( { elementId, styleId, provider, meta, props }: UndoableUpdateStyleArgs ) => {
142
+ do: ( { provider, styleId, props }: UndoableUpdateStyleArgs ) => {
140
143
  if ( ! provider.actions.updateProps ) {
141
144
  throw new StylesProviderCannotUpdatePropsError( {
142
145
  context: { providerKey: provider.getKey() },
@@ -147,28 +150,41 @@ function useUndoableUpdateStyle() {
147
150
 
148
151
  const prevProps = getCurrentProps( style, meta );
149
152
 
150
- provider.actions.updateProps(
151
- {
152
- id: styleId,
153
- meta,
154
- props,
155
- },
156
- { elementId }
157
- );
153
+ provider.actions.updateProps( { id: styleId, meta, props }, { elementId } );
158
154
 
159
155
  return prevProps;
160
156
  },
161
157
 
162
- undo: ( { elementId, styleId, meta, provider }, prevProps ) => {
158
+ undo: ( { provider, styleId }, prevProps ) => {
163
159
  provider.actions.updateProps?.( { id: styleId, meta, props: prevProps }, { elementId } );
164
160
  },
165
161
  },
166
162
  {
167
- title: ( { elementId } ) => getElementLabel( elementId ),
168
- subtitle: __( 'Style edited', 'elementor' ),
163
+ title: ( { provider } ) => {
164
+ if ( isVersion331Active ) {
165
+ const isLocal = isElementsStylesProvider( provider.getKey() );
166
+
167
+ if ( isLocal ) {
168
+ return localStyleHistoryTitlesV331.title( { elementId } );
169
+ }
170
+ return defaultHistoryTitlesV331.title( { provider } );
171
+ }
172
+ return historyTitlesV330.title( { elementId } );
173
+ },
174
+ subtitle: ( { provider, styleId, propDisplayName } ) => {
175
+ if ( isVersion331Active ) {
176
+ const isLocal = isElementsStylesProvider( provider.getKey() );
177
+
178
+ if ( isLocal ) {
179
+ return localStyleHistoryTitlesV331.subtitle( { propDisplayName } );
180
+ }
181
+ return defaultHistoryTitlesV331.subtitle( { provider, styleId, elementId, propDisplayName } );
182
+ }
183
+ return historyTitlesV330.subtitle;
184
+ },
169
185
  }
170
186
  );
171
- }, [] );
187
+ }, [ elementId, meta ] );
172
188
  }
173
189
 
174
190
  function getCurrentProps( style: StyleDefinition | null, meta: StyleDefinitionVariant[ 'meta' ] ) {
@@ -182,3 +198,55 @@ function getCurrentProps( style: StyleDefinition | null, meta: StyleDefinitionVa
182
198
 
183
199
  return structuredClone( props );
184
200
  }
201
+
202
+ const historyTitlesV330 = {
203
+ title: ( { elementId }: { elementId: ElementID } ) => getElementLabel( elementId ),
204
+ subtitle: __( 'Style edited', 'elementor' ),
205
+ };
206
+
207
+ type DefaultHistoryTitleV331Args = {
208
+ provider: StylesProvider;
209
+ };
210
+
211
+ type DefaultHistorySubtitleV331Args = {
212
+ provider: StylesProvider;
213
+ styleId: StyleDefinition[ 'id' ];
214
+ elementId: ElementID;
215
+ propDisplayName: string;
216
+ };
217
+
218
+ const defaultHistoryTitlesV331 = {
219
+ title: ( { provider }: DefaultHistoryTitleV331Args ) => {
220
+ const providerLabel = provider.labels?.singular;
221
+ return providerLabel ? capitalize( providerLabel ) : __( 'Style', 'elementor' );
222
+ },
223
+ subtitle: ( { provider, styleId, elementId, propDisplayName }: DefaultHistorySubtitleV331Args ) => {
224
+ const styleLabel = provider.actions.get( styleId, { elementId } )?.label;
225
+
226
+ if ( ! styleLabel ) {
227
+ throw new Error( `Style ${ styleId } not found` );
228
+ }
229
+
230
+ // translators: %s$1 is the style label, %s$2 is the name of the style property being edited
231
+ return __( `%s$1 %s$2 edited`, 'elementor' ).replace( '%s$1', styleLabel ).replace( '%s$2', propDisplayName );
232
+ },
233
+ };
234
+
235
+ type LocalStyleHistoryTitleV331Args = {
236
+ elementId: ElementID;
237
+ };
238
+
239
+ type LocalStyleHistorySubtitleV331Args = {
240
+ propDisplayName: string;
241
+ };
242
+
243
+ const localStyleHistoryTitlesV331 = {
244
+ title: ( { elementId }: LocalStyleHistoryTitleV331Args ) => getElementLabel( elementId ),
245
+ subtitle: ( { propDisplayName }: LocalStyleHistorySubtitleV331Args ) =>
246
+ // translators: %s is the name of the style property being edited
247
+ __( `%s edited`, 'elementor' ).replace( '%s', propDisplayName ),
248
+ };
249
+
250
+ function capitalize( str: string ) {
251
+ return str.charAt( 0 ).toUpperCase() + str.slice( 1 );
252
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export { EXPERIMENTAL_FEATURES } from './sync/experiments-flags';
2
+
1
3
  export { useBoundProp } from '@elementor/editor-controls';
2
4
  export type { PopoverActionProps } from './popover-action';
3
5
  export { registerControlReplacement } from './control-replacement';
@@ -7,5 +9,7 @@ export { usePanelActions, usePanelStatus } from './panel';
7
9
  export { type ValidationResult, type ValidationEvent } from './components/creatable-autocomplete';
8
10
  export { controlActionsMenu } from './controls-actions';
9
11
  export { useFontFamilies } from './components/style-sections/typography-section/hooks/use-font-families';
12
+ export { PopoverScrollableContent } from './components/popover-scrollable-content';
13
+ export { useSectionWidth } from './contexts/section-context';
10
14
 
11
15
  export { init } from './init';
package/src/init.ts CHANGED
@@ -1,5 +1,4 @@
1
1
  import { injectIntoLogic } from '@elementor/editor';
2
- import { PrefetchUserData } from '@elementor/editor-current-user';
3
2
  import { __registerPanel as registerPanel } from '@elementor/editor-panels';
4
3
  import { blockCommand, isExperimentActive } from '@elementor/editor-v1-adapters';
5
4
 
@@ -20,11 +19,6 @@ export function init() {
20
19
  component: EditingPanelHooks,
21
20
  } );
22
21
 
23
- injectIntoLogic( {
24
- id: 'current-user-data',
25
- component: PrefetchUserData,
26
- } );
27
-
28
22
  // TODO: Move it from here once we have dynamic package.
29
23
  initDynamics();
30
24
 
@@ -39,7 +39,14 @@ export default function PopoverAction( {
39
39
  disableScrollLock
40
40
  anchorOrigin={ {
41
41
  vertical: 'bottom',
42
- horizontal: 'center',
42
+ horizontal: 'right',
43
+ } }
44
+ transformOrigin={ {
45
+ vertical: 'top',
46
+ horizontal: 'right',
47
+ } }
48
+ PaperProps={ {
49
+ sx: { my: 2.5 },
43
50
  } }
44
51
  { ...bindPopover( popupState ) }
45
52
  >
@@ -50,7 +50,10 @@ const Indicator = ( { inheritanceChain, path, propType }: IndicatorProps ) => {
50
50
 
51
51
  const [ actualStyle ] = inheritanceChain;
52
52
 
53
- if ( actualStyle.provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY ) {
53
+ if (
54
+ ! isExperimentActive( EXPERIMENTAL_FEATURES.V_3_31 ) &&
55
+ actualStyle.provider === ELEMENTS_BASE_STYLES_PROVIDER_KEY
56
+ ) {
54
57
  return null;
55
58
  }
56
59
 
@@ -2,29 +2,30 @@ import * as React from 'react';
2
2
  import { useMemo, useState } from 'react';
3
3
  import { createPropsResolver, type PropsResolver } from '@elementor/editor-canvas';
4
4
  import { type PropKey, type PropType } from '@elementor/editor-props';
5
+ import { PopoverHeader } from '@elementor/editor-ui';
5
6
  import {
6
7
  Backdrop,
7
8
  Box,
8
9
  Card,
9
10
  CardContent,
10
11
  ClickAwayListener,
11
- CloseButton,
12
12
  IconButton,
13
13
  Infotip,
14
14
  Stack,
15
15
  type Theme,
16
16
  Tooltip,
17
- Typography,
18
17
  } from '@elementor/ui';
19
18
  import { __ } from '@wordpress/i18n';
20
19
 
21
- import { useSectionContentRef } from '../../components/section-content';
20
+ import { useSectionWidth } from '../../contexts/section-context';
22
21
  import { useDirection } from '../../hooks/use-direction';
23
22
  import { useNormalizedInheritanceChainItems } from '../hooks/use-normalized-inheritance-chain-items';
24
23
  import { stylesInheritanceTransformersRegistry } from '../styles-inheritance-transformers-registry';
25
24
  import { type SnapshotPropValue } from '../types';
26
25
  import { ActionIcons, BreakpointIcon, LabelChip, ValueComponent } from './infotip';
27
26
 
27
+ const SECTION_PADDING_INLINE = 32;
28
+
28
29
  type Props = {
29
30
  inheritanceChain: SnapshotPropValue[];
30
31
  propType: PropType;
@@ -33,8 +34,6 @@ type Props = {
33
34
  children: React.ReactNode;
34
35
  };
35
36
 
36
- const SIZE = 'tiny';
37
-
38
37
  export const StylesInheritanceInfotip = ( { inheritanceChain, propType, path, label, children }: Props ) => {
39
38
  const [ showInfotip, setShowInfotip ] = useState< boolean >( false );
40
39
  const toggleInfotip = () => setShowInfotip( ( prev ) => ! prev );
@@ -42,8 +41,7 @@ export const StylesInheritanceInfotip = ( { inheritanceChain, propType, path, la
42
41
 
43
42
  const key = path.join( '.' );
44
43
 
45
- const sectionContentRef = useSectionContentRef();
46
- const sectionContentWidth = sectionContentRef?.current?.offsetWidth ?? 320;
44
+ const sectionWidth = useSectionWidth() + SECTION_PADDING_INLINE;
47
45
 
48
46
  const resolve = useMemo< PropsResolver >( () => {
49
47
  return createPropsResolver( {
@@ -59,8 +57,8 @@ export const StylesInheritanceInfotip = ( { inheritanceChain, propType, path, la
59
57
  <Card
60
58
  elevation={ 0 }
61
59
  sx={ {
62
- width: `${ sectionContentWidth }px`,
63
- maxWidth: 500,
60
+ width: `${ sectionWidth - SECTION_PADDING_INLINE }px`,
61
+ maxWidth: 496,
64
62
  overflowX: 'hidden',
65
63
  } }
66
64
  >
@@ -75,16 +73,8 @@ export const StylesInheritanceInfotip = ( { inheritanceChain, propType, path, la
75
73
  },
76
74
  } }
77
75
  >
78
- <Stack direction="row" alignItems="center" sx={ { pl: 1.5, pr: 0.5, minHeight: 36, py: 0.5 } }>
79
- <Typography variant="subtitle2" color="secondary" sx={ { fontSize: 12, fontWeight: '500' } }>
80
- { __( 'Style origin', 'elementor' ) }
81
- </Typography>
82
- <CloseButton
83
- slotProps={ { icon: { fontSize: SIZE } } }
84
- sx={ { ml: 'auto' } }
85
- onClick={ closeInfotip }
86
- />
87
- </Stack>
76
+ <PopoverHeader title={ __( 'Style origin', 'elementor' ) } onClose={ closeInfotip } />
77
+
88
78
  <Stack
89
79
  gap={ 1.5 }
90
80
  sx={ { pl: 2, pr: 1, pb: 2, overflowX: 'hidden', overflowY: 'auto' } }
@@ -1,4 +1,5 @@
1
1
  // Experimental features flags
2
2
  export const EXPERIMENTAL_FEATURES = {
3
3
  V_3_30: 'e_v_3_30',
4
+ V_3_31: 'e_v_3_31',
4
5
  };
@@ -1,15 +0,0 @@
1
- import { type FC, type PropsWithChildren } from 'react';
2
- import * as React from 'react';
3
- import { Stack } from '@elementor/ui';
4
-
5
- type PopoverContentProps = PropsWithChildren< {
6
- alignItems?: 'center';
7
- gap?: number;
8
- p?: 1.5 | 2 | 2.5;
9
- } >;
10
-
11
- export const PopoverContent: FC< PopoverContentProps > = ( { alignItems, gap = 1.5, p, children } ) => (
12
- <Stack alignItems={ alignItems } gap={ gap } p={ p }>
13
- { children }
14
- </Stack>
15
- );