@elementor/editor-controls 4.0.0-564 → 4.0.0-573

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,7 +1,7 @@
1
1
  {
2
2
  "name": "@elementor/editor-controls",
3
3
  "description": "This package contains the controls model and utils for the Elementor editor",
4
- "version": "4.0.0-564",
4
+ "version": "4.0.0-573",
5
5
  "private": false,
6
6
  "author": "Elementor Team",
7
7
  "homepage": "https://elementor.com/",
@@ -40,22 +40,22 @@
40
40
  "dev": "tsup --config=../../tsup.dev.ts"
41
41
  },
42
42
  "dependencies": {
43
- "@elementor/editor-current-user": "4.0.0-564",
44
- "@elementor/editor-elements": "4.0.0-564",
45
- "@elementor/editor-props": "4.0.0-564",
46
- "@elementor/editor-responsive": "4.0.0-564",
47
- "@elementor/editor-ui": "4.0.0-564",
48
- "@elementor/editor-v1-adapters": "4.0.0-564",
49
- "@elementor/env": "4.0.0-564",
50
- "@elementor/http-client": "4.0.0-564",
43
+ "@elementor/editor-current-user": "4.0.0-573",
44
+ "@elementor/editor-elements": "4.0.0-573",
45
+ "@elementor/editor-props": "4.0.0-573",
46
+ "@elementor/editor-responsive": "4.0.0-573",
47
+ "@elementor/editor-ui": "4.0.0-573",
48
+ "@elementor/editor-v1-adapters": "4.0.0-573",
49
+ "@elementor/env": "4.0.0-573",
50
+ "@elementor/http-client": "4.0.0-573",
51
51
  "@elementor/icons": "^1.63.0",
52
- "@elementor/locations": "4.0.0-564",
53
- "@elementor/events": "4.0.0-564",
54
- "@elementor/query": "4.0.0-564",
55
- "@elementor/session": "4.0.0-564",
52
+ "@elementor/locations": "4.0.0-573",
53
+ "@elementor/events": "4.0.0-573",
54
+ "@elementor/query": "4.0.0-573",
55
+ "@elementor/session": "4.0.0-573",
56
56
  "@elementor/ui": "1.36.17",
57
- "@elementor/utils": "4.0.0-564",
58
- "@elementor/wp-media": "4.0.0-564",
57
+ "@elementor/utils": "4.0.0-573",
58
+ "@elementor/wp-media": "4.0.0-573",
59
59
  "@wordpress/i18n": "^5.13.0",
60
60
  "@monaco-editor/react": "^4.7.0",
61
61
  "dayjs": "^1.11.18",
@@ -0,0 +1,151 @@
1
+ import * as React from 'react';
2
+ import { emailPropTypeUtil } from '@elementor/editor-props';
3
+ import { CollapsibleContent } from '@elementor/editor-ui';
4
+ import { Box, Divider, Grid, Stack } from '@elementor/ui';
5
+ import { __ } from '@wordpress/i18n';
6
+
7
+ import { PropKeyProvider, PropProvider, useBoundProp } from '../bound-prop-context';
8
+ import { ControlFormLabel } from '../components/control-form-label';
9
+ import { ControlLabel } from '../components/control-label';
10
+ import { createControl } from '../create-control';
11
+ import { ChipsControl } from './chips-control';
12
+ import { SelectControl } from './select-control';
13
+ import { TextAreaControl } from './text-area-control';
14
+ import { TextControl } from './text-control';
15
+
16
+ const EmailField = ( { bind, label, placeholder }: { bind: string; label: string; placeholder?: string } ) => (
17
+ <PropKeyProvider bind={ bind }>
18
+ <Grid container direction="column" gap={ 0.5 }>
19
+ <Grid item>
20
+ <ControlFormLabel>{ label }</ControlFormLabel>
21
+ </Grid>
22
+ <Grid item>
23
+ <TextControl placeholder={ placeholder } />
24
+ </Grid>
25
+ </Grid>
26
+ </PropKeyProvider>
27
+ );
28
+
29
+ const SendToField = () => (
30
+ <EmailField
31
+ bind="to"
32
+ label={ __( 'Send To', 'elementor' ) }
33
+ placeholder={ __( 'Where should we send new submissions?', 'elementor' ) }
34
+ />
35
+ );
36
+
37
+ const SubjectField = () => (
38
+ <EmailField
39
+ bind="subject"
40
+ label={ __( 'Email Subject', 'elementor' ) }
41
+ placeholder={ __( 'New form submission', 'elementor' ) }
42
+ />
43
+ );
44
+
45
+ const MessageField = () => (
46
+ <PropKeyProvider bind="message">
47
+ <Grid container direction="column" gap={ 0.5 }>
48
+ <Grid item>
49
+ <ControlFormLabel>{ __( 'Message', 'elementor' ) }</ControlFormLabel>
50
+ </Grid>
51
+ <Grid item>
52
+ <TextAreaControl
53
+ placeholder={ __(
54
+ 'By default, all form fields are sent via [all-fields] shortcode.',
55
+ 'elementor'
56
+ ) }
57
+ />
58
+ </Grid>
59
+ </Grid>
60
+ </PropKeyProvider>
61
+ );
62
+
63
+ const FromEmailField = () => (
64
+ <EmailField
65
+ bind="from"
66
+ label={ __( 'From email', 'elementor' ) }
67
+ placeholder={ __( 'What email address should appear as the sender?', 'elementor' ) }
68
+ />
69
+ );
70
+
71
+ const FromNameField = () => (
72
+ <EmailField
73
+ bind="from-name"
74
+ label={ __( 'From name', 'elementor' ) }
75
+ placeholder={ __( 'What name should appear as the sender?', 'elementor' ) }
76
+ />
77
+ );
78
+
79
+ const ReplyToField = () => <EmailField bind="reply-to" label={ __( 'Reply-to', 'elementor' ) } />;
80
+
81
+ const CcField = () => <EmailField bind="cc" label={ __( 'Cc', 'elementor' ) } />;
82
+
83
+ const BccField = () => <EmailField bind="bcc" label={ __( 'Bcc', 'elementor' ) } />;
84
+
85
+ const MetaDataField = () => (
86
+ <PropKeyProvider bind="meta-data">
87
+ <Stack gap={ 0.5 }>
88
+ <ControlLabel>{ __( 'Meta data', 'elementor' ) }</ControlLabel>
89
+ <ChipsControl
90
+ options={ [
91
+ { label: __( 'Date', 'elementor' ), value: 'date' },
92
+ { label: __( 'Time', 'elementor' ), value: 'time' },
93
+ { label: __( 'Page URL', 'elementor' ), value: 'page-url' },
94
+ { label: __( 'User agent', 'elementor' ), value: 'user-agent' },
95
+ { label: __( 'Credit', 'elementor' ), value: 'credit' },
96
+ ] }
97
+ />
98
+ </Stack>
99
+ </PropKeyProvider>
100
+ );
101
+
102
+ const SendAsField = () => (
103
+ <PropKeyProvider bind="send-as">
104
+ <Grid container direction="column" gap={ 0.5 }>
105
+ <Grid item>
106
+ <ControlFormLabel>{ __( 'Send as', 'elementor' ) }</ControlFormLabel>
107
+ </Grid>
108
+ <Grid item>
109
+ <SelectControl
110
+ options={ [
111
+ { label: __( 'HTML', 'elementor' ), value: 'html' },
112
+ { label: __( 'Plain Text', 'elementor' ), value: 'plain' },
113
+ ] }
114
+ />
115
+ </Grid>
116
+ </Grid>
117
+ </PropKeyProvider>
118
+ );
119
+
120
+ const AdvancedSettings = () => (
121
+ <CollapsibleContent defaultOpen={ false }>
122
+ <Box sx={ { pt: 2 } }>
123
+ <Stack gap={ 2 }>
124
+ <FromNameField />
125
+ <ReplyToField />
126
+ <CcField />
127
+ <BccField />
128
+ <Divider />
129
+ <MetaDataField />
130
+ <SendAsField />
131
+ </Stack>
132
+ </Box>
133
+ </CollapsibleContent>
134
+ );
135
+
136
+ export const EmailFormActionControl = createControl( () => {
137
+ const { value, setValue, ...propContext } = useBoundProp( emailPropTypeUtil );
138
+
139
+ return (
140
+ <PropProvider { ...propContext } value={ value } setValue={ setValue }>
141
+ <Stack gap={ 2 }>
142
+ <ControlFormLabel>{ __( 'Email settings', 'elementor' ) }</ControlFormLabel>
143
+ <SendToField />
144
+ <SubjectField />
145
+ <MessageField />
146
+ <FromEmailField />
147
+ <AdvancedSettings />
148
+ </Stack>
149
+ </PropProvider>
150
+ );
151
+ } );
package/src/index.ts CHANGED
@@ -36,6 +36,7 @@ export { enqueueFont } from './controls/font-family-control/enqueue-font';
36
36
  export { transitionProperties, transitionsItemsList } from './controls/transition-control/data';
37
37
  export { DateTimeControl } from './controls/date-time-control';
38
38
  export { InlineEditingControl } from './controls/inline-editing-control';
39
+ export { EmailFormActionControl } from './controls/email-form-action-control';
39
40
 
40
41
  // components
41
42
  export { ControlFormLabel } from './components/control-form-label';