@elementor/editor-editing-panel 1.12.0 → 1.13.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elementor/editor-editing-panel",
3
- "version": "1.12.0",
3
+ "version": "1.13.0",
4
4
  "private": false,
5
5
  "author": "Elementor Team",
6
6
  "homepage": "https://elementor.com/",
@@ -40,9 +40,9 @@
40
40
  },
41
41
  "dependencies": {
42
42
  "@elementor/editor": "0.18.0",
43
- "@elementor/editor-controls": "0.11.0",
43
+ "@elementor/editor-controls": "0.12.0",
44
44
  "@elementor/editor-elements": "0.5.4",
45
- "@elementor/editor-panels": "0.11.0",
45
+ "@elementor/editor-panels": "0.11.1",
46
46
  "@elementor/editor-props": "0.9.2",
47
47
  "@elementor/editor-responsive": "0.13.0",
48
48
  "@elementor/editor-styles": "0.5.7",
@@ -4,6 +4,8 @@ import { ControlLabel } from '@elementor/editor-controls';
4
4
  import { MinusIcon, PlusIcon } from '@elementor/icons';
5
5
  import { Collapse, IconButton, Stack } from '@elementor/ui';
6
6
 
7
+ import { SectionContent } from './section-content';
8
+
7
9
  const SIZE = 'tiny';
8
10
 
9
11
  type Props = {
@@ -15,7 +17,7 @@ type Props = {
15
17
 
16
18
  export const AddOrRemoveContent = ( { isAdded, label, onAdd, onRemove, children }: PropsWithChildren< Props > ) => {
17
19
  return (
18
- <Stack gap={ 1.5 }>
20
+ <SectionContent>
19
21
  <Stack
20
22
  direction="row"
21
23
  sx={ {
@@ -35,8 +37,8 @@ export const AddOrRemoveContent = ( { isAdded, label, onAdd, onRemove, children
35
37
  ) }
36
38
  </Stack>
37
39
  <Collapse in={ isAdded } unmountOnExit>
38
- <Stack gap={ 1.5 }>{ children }</Stack>
40
+ <SectionContent>{ children }</SectionContent>
39
41
  </Collapse>
40
- </Stack>
42
+ </SectionContent>
41
43
  );
42
44
  };
@@ -17,7 +17,7 @@ export const CollapsibleContent = ( { children, defaultOpen = false }: Collapsib
17
17
  };
18
18
 
19
19
  return (
20
- <Stack sx={ { py: 0.5 } }>
20
+ <Stack>
21
21
  <Button
22
22
  fullWidth
23
23
  size="small"
@@ -25,6 +25,7 @@ export const CollapsibleContent = ( { children, defaultOpen = false }: Collapsib
25
25
  variant="outlined"
26
26
  onClick={ handleToggle }
27
27
  endIcon={ <CollapseIcon open={ open } /> }
28
+ sx={ { my: 0.5 } }
28
29
  >
29
30
  { open ? __( 'Show less', 'elementor' ) : __( 'Show more', 'elementor' ) }
30
31
  </Button>
@@ -0,0 +1,15 @@
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
+ );
@@ -0,0 +1,16 @@
1
+ import { type FC, type PropsWithChildren } from 'react';
2
+ import * as React from 'react';
3
+ import { Stack } from '@elementor/ui';
4
+
5
+ type SectionContentProps = PropsWithChildren< {
6
+ gap?: number;
7
+ sx?: {
8
+ pt?: number;
9
+ };
10
+ } >;
11
+
12
+ export const SectionContent: FC< SectionContentProps > = ( { gap = 2, sx, children } ) => (
13
+ <Stack gap={ gap } sx={ { ...sx } }>
14
+ { children }
15
+ </Stack>
16
+ );
@@ -1,14 +1,14 @@
1
1
  import * as React from 'react';
2
- import { Stack } from '@elementor/ui';
3
2
 
4
3
  import { PanelDivider } from '../../panel-divider';
4
+ import { SectionContent } from '../../section-content';
5
5
  import { BorderField } from './border-field';
6
6
  import { BorderRadiusField } from './border-radius-field';
7
7
 
8
8
  export const BorderSection = () => (
9
- <Stack gap={ 1.5 }>
9
+ <SectionContent>
10
10
  <BorderRadiusField />
11
11
  <PanelDivider />
12
12
  <BorderField />
13
- </Stack>
13
+ </SectionContent>
14
14
  );
@@ -1,15 +1,15 @@
1
1
  import * as React from 'react';
2
2
  import { BoxShadowRepeaterControl } from '@elementor/editor-controls';
3
- import { Stack } from '@elementor/ui';
4
3
 
5
4
  import { StylesField } from '../../../controls-registry/styles-field';
5
+ import { SectionContent } from '../../section-content';
6
6
 
7
7
  export const EffectsSection = () => {
8
8
  return (
9
- <Stack gap={ 1.5 }>
9
+ <SectionContent>
10
10
  <StylesField bind="box-shadow">
11
11
  <BoxShadowRepeaterControl />
12
12
  </StylesField>
13
- </Stack>
13
+ </SectionContent>
14
14
  );
15
15
  };
@@ -8,12 +8,13 @@ import {
8
8
  } from '@elementor/editor-controls';
9
9
  import { type NumberPropValue } from '@elementor/editor-props';
10
10
  import { ArrowDownSmallIcon, ArrowUpSmallIcon, PencilIcon } from '@elementor/icons';
11
- import { DirectionProvider, Grid, Stack, ThemeProvider } from '@elementor/ui';
11
+ import { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';
12
12
  import { __ } from '@wordpress/i18n';
13
13
 
14
14
  import { StylesField } from '../../../controls-registry/styles-field';
15
15
  import { useDirection } from '../../../hooks/use-direction';
16
16
  import { useStylesField } from '../../../hooks/use-styles-field';
17
+ import { SectionContent } from '../../section-content';
17
18
 
18
19
  type GroupControlItemOption = 'first' | 'last' | 'custom';
19
20
 
@@ -70,7 +71,7 @@ export const FlexOrderField = () => {
70
71
  return (
71
72
  <DirectionProvider rtl={ isSiteRtl }>
72
73
  <ThemeProvider>
73
- <Stack gap={ 2 }>
74
+ <SectionContent>
74
75
  <Grid container gap={ 2 } alignItems="center" flexWrap="nowrap">
75
76
  <Grid item xs={ 6 }>
76
77
  <ControlLabel>{ __( 'Order', 'elementor' ) }</ControlLabel>
@@ -101,7 +102,7 @@ export const FlexOrderField = () => {
101
102
  </Grid>
102
103
  </StylesField>
103
104
  ) }
104
- </Stack>
105
+ </SectionContent>
105
106
  </ThemeProvider>
106
107
  </DirectionProvider>
107
108
  );
@@ -9,12 +9,13 @@ import {
9
9
  } from '@elementor/editor-controls';
10
10
  import type { NumberPropValue, SizePropValue } from '@elementor/editor-props';
11
11
  import { ExpandIcon, PencilIcon, ShrinkIcon } from '@elementor/icons';
12
- import { DirectionProvider, Grid, Stack, ThemeProvider } from '@elementor/ui';
12
+ import { DirectionProvider, Grid, ThemeProvider } from '@elementor/ui';
13
13
  import { __ } from '@wordpress/i18n';
14
14
 
15
15
  import { StylesField } from '../../../controls-registry/styles-field';
16
16
  import { useDirection } from '../../../hooks/use-direction';
17
17
  import { useStylesField } from '../../../hooks/use-styles-field';
18
+ import { SectionContent } from '../../section-content';
18
19
 
19
20
  type GroupItem = 'flex-grow' | 'flex-shrink' | 'custom';
20
21
 
@@ -79,7 +80,7 @@ export const FlexSizeField = () => {
79
80
  return (
80
81
  <DirectionProvider rtl={ isSiteRtl }>
81
82
  <ThemeProvider>
82
- <Stack gap={ 2 }>
83
+ <SectionContent>
83
84
  <Grid container gap={ 2 } alignItems="center" flexWrap="nowrap">
84
85
  <Grid item xs={ 6 }>
85
86
  <ControlLabel>{ __( 'Size', 'elementor' ) }</ControlLabel>
@@ -95,7 +96,7 @@ export const FlexSizeField = () => {
95
96
  </Grid>
96
97
 
97
98
  { 'custom' === activeGroup && <FlexCustomField /> }
98
- </Stack>
99
+ </SectionContent>
99
100
  </ThemeProvider>
100
101
  </DirectionProvider>
101
102
  );
@@ -2,13 +2,13 @@ import * as React from 'react';
2
2
  import { ControlLabel } from '@elementor/editor-controls';
3
3
  import { useParentElement } from '@elementor/editor-elements';
4
4
  import { type StringPropValue } from '@elementor/editor-props';
5
- import { Stack } from '@elementor/ui';
6
5
  import { __ } from '@wordpress/i18n';
7
6
 
8
7
  import { useElement } from '../../../contexts/element-context';
9
8
  import { useComputedStyle } from '../../../hooks/use-computed-style';
10
9
  import { useStylesField } from '../../../hooks/use-styles-field';
11
10
  import { PanelDivider } from '../../panel-divider';
11
+ import { SectionContent } from '../../section-content';
12
12
  import { AlignItemsField } from './align-items-field';
13
13
  import { AlignSelfChild } from './align-self-child-field';
14
14
  import { DisplayField } from './display-field';
@@ -26,11 +26,11 @@ export const LayoutSection = () => {
26
26
  const parentStyle = useComputedStyle( parent?.id || null );
27
27
 
28
28
  return (
29
- <Stack gap={ 2 }>
29
+ <SectionContent>
30
30
  <DisplayField />
31
31
  { 'flex' === display?.value && <FlexFields /> }
32
32
  { 'flex' === parentStyle?.display && <FlexChildFields /> }
33
- </Stack>
33
+ </SectionContent>
34
34
  );
35
35
  };
36
36
 
@@ -1,11 +1,11 @@
1
1
  import * as React from 'react';
2
2
  import { type StringPropValue } from '@elementor/editor-props';
3
3
  import { useSessionStorage } from '@elementor/session';
4
- import { Stack } from '@elementor/ui';
5
4
 
6
5
  import { useStyle } from '../../../contexts/style-context';
7
6
  import { useStylesField } from '../../../hooks/use-styles-field';
8
7
  import { useStylesFields } from '../../../hooks/use-styles-fields';
8
+ import { SectionContent } from '../../section-content';
9
9
  import { DimensionsField } from './dimensions-field';
10
10
  import { PositionField } from './position-field';
11
11
  import { ZIndexField } from './z-index-field';
@@ -58,7 +58,7 @@ export const PositionSection = () => {
58
58
  const isNotStatic = positionValue && positionValue?.value !== 'static';
59
59
 
60
60
  return (
61
- <Stack gap={ 1.5 }>
61
+ <SectionContent>
62
62
  <PositionField onChange={ onPositionChange } />
63
63
  { isNotStatic ? (
64
64
  <>
@@ -66,7 +66,7 @@ export const PositionSection = () => {
66
66
  <ZIndexField />
67
67
  </>
68
68
  ) : null }
69
- </Stack>
69
+ </SectionContent>
70
70
  );
71
71
  };
72
72
 
@@ -1,6 +1,6 @@
1
1
  import * as React from 'react';
2
2
  import { ControlLabel, type ToggleButtonGroupItem, ToggleControl } from '@elementor/editor-controls';
3
- import { ExpandBottomIcon, EyeIcon, EyeOffIcon } from '@elementor/icons';
3
+ import { EyeIcon, EyeOffIcon, LetterAIcon } from '@elementor/icons';
4
4
  import { Grid } from '@elementor/ui';
5
5
  import { __ } from '@wordpress/i18n';
6
6
 
@@ -24,7 +24,7 @@ const options: ToggleButtonGroupItem< Overflows >[] = [
24
24
  {
25
25
  value: 'auto',
26
26
  label: __( 'Auto', 'elementor' ),
27
- renderContent: ( { size } ) => <ExpandBottomIcon fontSize={ size } />,
27
+ renderContent: ( { size } ) => <LetterAIcon fontSize={ size } />,
28
28
  showTooltip: true,
29
29
  },
30
30
  ];
@@ -5,11 +5,12 @@ import { __ } from '@wordpress/i18n';
5
5
 
6
6
  import { StylesField, type StylesFieldProps } from '../../../controls-registry/styles-field';
7
7
  import { PanelDivider } from '../../panel-divider';
8
+ import { SectionContent } from '../../section-content';
8
9
  import { OverflowField } from './overflow-field';
9
10
 
10
11
  export const SizeSection = () => {
11
12
  return (
12
- <Stack gap={ 1.5 }>
13
+ <SectionContent>
13
14
  <Grid container gap={ 2 } flexWrap="nowrap">
14
15
  <Grid item xs={ 6 }>
15
16
  <SizeField bind="width" label={ __( 'Width', 'elementor' ) } />
@@ -38,7 +39,7 @@ export const SizeSection = () => {
38
39
  <Stack>
39
40
  <OverflowField />
40
41
  </Stack>
41
- </Stack>
42
+ </SectionContent>
42
43
  );
43
44
  };
44
45
 
@@ -1,14 +1,14 @@
1
1
  import * as React from 'react';
2
2
  import { LinkedDimensionsControl } from '@elementor/editor-controls';
3
- import { Stack } from '@elementor/ui';
4
3
  import { __ } from '@wordpress/i18n';
5
4
 
6
5
  import { StylesField } from '../../../controls-registry/styles-field';
7
6
  import { PanelDivider } from '../../panel-divider';
7
+ import { SectionContent } from '../../section-content';
8
8
 
9
9
  export const SpacingSection = () => {
10
10
  return (
11
- <Stack gap={ 1.5 }>
11
+ <SectionContent>
12
12
  <StylesField bind={ 'padding' }>
13
13
  <LinkedDimensionsControl label={ __( 'Padding', 'elementor' ) } />
14
14
  </StylesField>
@@ -16,6 +16,6 @@ export const SpacingSection = () => {
16
16
  <StylesField bind={ 'margin' }>
17
17
  <LinkedDimensionsControl label={ __( 'Margin', 'elementor' ) } />
18
18
  </StylesField>
19
- </Stack>
19
+ </SectionContent>
20
20
  );
21
21
  };
@@ -1,8 +1,8 @@
1
1
  import * as React from 'react';
2
- import { Stack } from '@elementor/ui';
3
2
 
4
3
  import { CollapsibleContent } from '../../collapsible-content';
5
4
  import { PanelDivider } from '../../panel-divider';
5
+ import { SectionContent } from '../../section-content';
6
6
  import { FontFamilyField } from './font-family-field';
7
7
  import { FontSizeField } from './font-size-field';
8
8
  import { FontStyleField } from './font-style-field';
@@ -19,7 +19,7 @@ import { WordSpacingField } from './word-spacing-field';
19
19
 
20
20
  export const TypographySection = () => {
21
21
  return (
22
- <Stack gap={ 1.5 }>
22
+ <SectionContent>
23
23
  <FontFamilyField />
24
24
  <FontWeightField />
25
25
  <FontSizeField />
@@ -27,7 +27,7 @@ export const TypographySection = () => {
27
27
  <TextAlignmentField />
28
28
  <TextColorField />
29
29
  <CollapsibleContent>
30
- <Stack gap={ 1.5 } sx={ { pt: 1.5 } }>
30
+ <SectionContent sx={ { pt: 2 } }>
31
31
  <LineHeightField />
32
32
  <LetterSpacingField />
33
33
  <WordSpacingField />
@@ -37,8 +37,8 @@ export const TypographySection = () => {
37
37
  <TextDirectionField />
38
38
  <FontStyleField />
39
39
  <TextStrokeField />
40
- </Stack>
40
+ </SectionContent>
41
41
  </CollapsibleContent>
42
- </Stack>
42
+ </SectionContent>
43
43
  );
44
44
  };
@@ -22,6 +22,7 @@ import {
22
22
  } from '@elementor/ui';
23
23
  import { __ } from '@wordpress/i18n';
24
24
 
25
+ import { PopoverContent } from '../../components/popover-content';
25
26
  import { Control as BaseControl } from '../../controls-registry/control';
26
27
  import { type ControlType, getControlByType } from '../../controls-registry/controls-registry';
27
28
  import { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';
@@ -153,15 +154,15 @@ const DynamicSettings = ( { controls }: { controls: DynamicTag[ 'atomic_controls
153
154
 
154
155
  { tabs.map( ( { value }, index ) => {
155
156
  return (
156
- <TabPanel key={ index } sx={ { flexGrow: 1 } } { ...getTabPanelProps( index ) }>
157
- <Stack gap={ 1 } px={ 2 }>
157
+ <TabPanel key={ index } sx={ { flexGrow: 1, py: 0 } } { ...getTabPanelProps( index ) }>
158
+ <PopoverContent p={ 1.5 }>
158
159
  { value.items.map( ( item ) => {
159
160
  if ( item.type === 'control' ) {
160
161
  return <Control key={ item.value.bind } control={ item.value } />;
161
162
  }
162
163
  return null;
163
164
  } ) }
164
- </Stack>
165
+ </PopoverContent>
165
166
  </TabPanel>
166
167
  );
167
168
  } ) }
@@ -16,6 +16,7 @@ import {
16
16
  } from '@elementor/ui';
17
17
  import { __ } from '@wordpress/i18n';
18
18
 
19
+ import { PopoverContent } from '../../components/popover-content';
19
20
  import { usePersistDynamicValue } from '../../hooks/use-persist-dynamic-value';
20
21
  import { usePropDynamicTags } from '../hooks/use-prop-dynamic-tags';
21
22
  import { getAtomicDynamicTags } from '../sync/get-atomic-dynamic-tags';
@@ -85,7 +86,7 @@ export const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {
85
86
  <MenuList role="listbox" tabIndex={ 0 }>
86
87
  { options.map( ( [ category, items ], index ) => (
87
88
  <Fragment key={ index }>
88
- <ListSubheader sx={ { typography: 'caption', color: 'text.tertiary' } }>
89
+ <ListSubheader sx={ { px: 1.5, typography: 'caption', color: 'text.tertiary' } }>
89
90
  { dynamicGroups?.[ category ]?.title || category }
90
91
  </ListSubheader>
91
92
  { items.map( ( { value, label: tagLabel } ) => {
@@ -97,7 +98,7 @@ export const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {
97
98
  selected={ isSelected }
98
99
  // eslint-disable-next-line jsx-a11y/no-autofocus
99
100
  autoFocus={ isSelected }
100
- sx={ { typography: 'caption' } }
101
+ sx={ { px: 1.5, typography: 'caption' } }
101
102
  onClick={ () => handleSetDynamicTag( value ) }
102
103
  >
103
104
  { tagLabel }
@@ -108,7 +109,7 @@ export const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {
108
109
  ) ) }
109
110
  </MenuList>
110
111
  ) : (
111
- <Stack alignItems="center" p={ 2.5 } gap={ 1.5 }>
112
+ <PopoverContent alignItems="center" p={ 2.5 }>
112
113
  <PhotoIcon fontSize="large" />
113
114
  <Typography align="center" variant="caption" color="text.secondary">
114
115
  { __( 'Sorry, nothing matched', 'elementor' ) }
@@ -127,7 +128,7 @@ export const DynamicSelection = ( { onSelect }: DynamicSelectionProps ) => {
127
128
  &nbsp;
128
129
  { __( 'and try again.', 'elementor' ) }
129
130
  </Typography>
130
- </Stack>
131
+ </PopoverContent>
131
132
  ) }
132
133
  </Box>
133
134
  </Stack>