@imposium-hub/components 2.13.7 → 2.13.8-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/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +9 -0
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.js +2 -2
- package/dist/cjs/components/advanced-number-field/AdvancedNumberField.js.map +1 -1
- package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +9 -0
- package/dist/cjs/components/button-group-field/ButtonGroupField.js +38 -20
- package/dist/cjs/components/button-group-field/ButtonGroupField.js.map +1 -1
- package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +8 -0
- package/dist/cjs/components/checkbox-field/CheckboxField.js +2 -2
- package/dist/cjs/components/checkbox-field/CheckboxField.js.map +1 -1
- package/dist/cjs/components/color-field/ColorField.d.ts +8 -0
- package/dist/cjs/components/color-field/ColorField.js +2 -2
- package/dist/cjs/components/color-field/ColorField.js.map +1 -1
- package/dist/cjs/components/controlled-list/ControlledList.d.ts +6 -2
- package/dist/cjs/components/controlled-list/ControlledList.js +22 -6
- package/dist/cjs/components/controlled-list/ControlledList.js.map +1 -1
- package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +11 -0
- package/dist/cjs/components/field-wrapper/FieldWrapper.js +25 -6
- package/dist/cjs/components/field-wrapper/FieldWrapper.js.map +1 -1
- package/dist/cjs/components/number-field/NumberField.d.ts +9 -0
- package/dist/cjs/components/number-field/NumberField.js +2 -5
- package/dist/cjs/components/number-field/NumberField.js.map +1 -1
- package/dist/cjs/components/select-field/SelectField.d.ts +8 -0
- package/dist/cjs/components/select-field/SelectField.js +2 -2
- package/dist/cjs/components/select-field/SelectField.js.map +1 -1
- package/dist/cjs/components/slider-field/SliderField.d.ts +9 -0
- package/dist/cjs/components/slider-field/SliderField.js +2 -2
- package/dist/cjs/components/slider-field/SliderField.js.map +1 -1
- package/dist/cjs/constants/copy.d.ts +3 -0
- package/dist/cjs/constants/copy.js +4 -1
- package/dist/cjs/constants/copy.js.map +1 -1
- package/dist/cjs/constants/icons.d.ts +2 -0
- package/dist/cjs/constants/icons.js +3 -1
- package/dist/cjs/constants/icons.js.map +1 -1
- package/dist/cjs/constants/variables.d.ts +4 -0
- package/dist/cjs/constants/variables.js +13 -1
- package/dist/cjs/constants/variables.js.map +1 -1
- package/dist/cjs/index.d.ts +6 -2
- package/dist/cjs/index.js +9 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +9 -0
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.js +2 -2
- package/dist/esm/components/advanced-number-field/AdvancedNumberField.js.map +1 -1
- package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +9 -0
- package/dist/esm/components/button-group-field/ButtonGroupField.js +38 -20
- package/dist/esm/components/button-group-field/ButtonGroupField.js.map +1 -1
- package/dist/esm/components/checkbox-field/CheckboxField.d.ts +8 -0
- package/dist/esm/components/checkbox-field/CheckboxField.js +2 -2
- package/dist/esm/components/checkbox-field/CheckboxField.js.map +1 -1
- package/dist/esm/components/color-field/ColorField.d.ts +8 -0
- package/dist/esm/components/color-field/ColorField.js +2 -2
- package/dist/esm/components/color-field/ColorField.js.map +1 -1
- package/dist/esm/components/controlled-list/ControlledList.d.ts +6 -2
- package/dist/esm/components/controlled-list/ControlledList.js +24 -7
- package/dist/esm/components/controlled-list/ControlledList.js.map +1 -1
- package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +11 -0
- package/dist/esm/components/field-wrapper/FieldWrapper.js +24 -6
- package/dist/esm/components/field-wrapper/FieldWrapper.js.map +1 -1
- package/dist/esm/components/number-field/NumberField.d.ts +9 -0
- package/dist/esm/components/number-field/NumberField.js +2 -5
- package/dist/esm/components/number-field/NumberField.js.map +1 -1
- package/dist/esm/components/select-field/SelectField.d.ts +8 -0
- package/dist/esm/components/select-field/SelectField.js +2 -2
- package/dist/esm/components/select-field/SelectField.js.map +1 -1
- package/dist/esm/components/slider-field/SliderField.d.ts +9 -0
- package/dist/esm/components/slider-field/SliderField.js +2 -2
- package/dist/esm/components/slider-field/SliderField.js.map +1 -1
- package/dist/esm/constants/copy.d.ts +3 -0
- package/dist/esm/constants/copy.js +3 -0
- package/dist/esm/constants/copy.js.map +1 -1
- package/dist/esm/constants/icons.d.ts +2 -0
- package/dist/esm/constants/icons.js +4 -2
- package/dist/esm/constants/icons.js.map +1 -1
- package/dist/esm/constants/variables.d.ts +4 -0
- package/dist/esm/constants/variables.js +11 -0
- package/dist/esm/constants/variables.js.map +1 -1
- package/dist/esm/index.d.ts +6 -2
- package/dist/esm/index.js +5 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/styles.css +130 -13
- package/dist/styles.less +369 -209
- package/less/components/button.less +5 -1
- package/less/components/controlled-list.less +122 -13
- package/less/components/dropdown.less +3 -0
- package/less/components/font-picker.less +18 -14
- package/less/components/form-field.less +224 -182
- package/package.json +3 -1
- package/src/components/advanced-number-field/AdvancedNumberField.tsx +33 -4
- package/src/components/button-group-field/ButtonGroupField.tsx +110 -39
- package/src/components/checkbox-field/CheckboxField.tsx +36 -3
- package/src/components/color-field/ColorField.tsx +29 -4
- package/src/components/config-variable-button/ConfigVariableButton.tsx +144 -0
- package/src/components/controlled-list/ControlledList.tsx +68 -14
- package/src/components/field-wrapper/FieldWrapper.tsx +80 -6
- package/src/components/font-field/FontField.tsx +78 -0
- package/src/components/icon-toggle/IconToggle.tsx +63 -0
- package/src/components/number-field/NumberField.tsx +34 -8
- package/src/components/select-field/SelectField.tsx +29 -4
- package/src/components/slider-field/SliderField.tsx +32 -2
- package/src/components/text-area-autocomplete/TextAreaAutocomplete.tsx +80 -0
- package/src/components/variables-dropdown/VariableDropdown.tsx +98 -0
- package/src/constants/copy.ts +4 -0
- package/src/constants/fonts.ts +296 -0
- package/src/constants/icons.tsx +6 -1
- package/src/constants/variables.ts +16 -0
- package/src/index.ts +11 -2
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import FieldWrapper from '../field-wrapper/FieldWrapper';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import FontPicker from '../font-picker/FontPicker';
|
|
4
|
+
import { fontField } from '../../constants/copy';
|
|
5
|
+
import { DEFAULT_FONTS } from '../../constants/fonts';
|
|
6
|
+
|
|
7
|
+
interface IFontFieldProps {
|
|
8
|
+
font: string;
|
|
9
|
+
availableFonts: any[];
|
|
10
|
+
apiKey: string;
|
|
11
|
+
onChange: (font: string) => void;
|
|
12
|
+
width?: string | number;
|
|
13
|
+
labelPosition?: string;
|
|
14
|
+
label?: any;
|
|
15
|
+
|
|
16
|
+
override?: any;
|
|
17
|
+
showCopyPropIds?: boolean;
|
|
18
|
+
propKey?: string;
|
|
19
|
+
setOverride?(e): void;
|
|
20
|
+
removeOverride?(): void;
|
|
21
|
+
inventory?: any;
|
|
22
|
+
onClose?(e: boolean): void;
|
|
23
|
+
activeOverride: string;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
const FontField = (props: IFontFieldProps) => {
|
|
27
|
+
const {
|
|
28
|
+
font,
|
|
29
|
+
availableFonts,
|
|
30
|
+
apiKey,
|
|
31
|
+
onChange,
|
|
32
|
+
width,
|
|
33
|
+
labelPosition,
|
|
34
|
+
label,
|
|
35
|
+
override,
|
|
36
|
+
showCopyPropIds,
|
|
37
|
+
propKey,
|
|
38
|
+
setOverride,
|
|
39
|
+
removeOverride,
|
|
40
|
+
inventory,
|
|
41
|
+
onClose,
|
|
42
|
+
activeOverride
|
|
43
|
+
} = props;
|
|
44
|
+
|
|
45
|
+
const customAvailableFonts = availableFonts.map((asset) => asset.name);
|
|
46
|
+
const standardFonts = DEFAULT_FONTS.map((f) => f.name);
|
|
47
|
+
const availableAssets = [...standardFonts, ...customAvailableFonts].sort();
|
|
48
|
+
const fontCheck = availableAssets.includes(font);
|
|
49
|
+
const fontValue = fontCheck ? font : fontField.fontNotFound;
|
|
50
|
+
|
|
51
|
+
return (
|
|
52
|
+
<FieldWrapper
|
|
53
|
+
customClass='font-field'
|
|
54
|
+
label={label}
|
|
55
|
+
labelPosition={labelPosition}
|
|
56
|
+
width={width}
|
|
57
|
+
propKey={propKey}
|
|
58
|
+
showCopyPropIds={showCopyPropIds}
|
|
59
|
+
inventory={inventory}
|
|
60
|
+
setOverride={setOverride}
|
|
61
|
+
onClose={onClose}
|
|
62
|
+
activeOverride={activeOverride}
|
|
63
|
+
removeOverride={removeOverride}
|
|
64
|
+
override={override}
|
|
65
|
+
type='text'>
|
|
66
|
+
<FontPicker
|
|
67
|
+
apiKey={apiKey}
|
|
68
|
+
activeFontFamily={fontValue}
|
|
69
|
+
families={availableAssets}
|
|
70
|
+
defaultFonts={DEFAULT_FONTS}
|
|
71
|
+
customFonts={availableFonts}
|
|
72
|
+
onChange={onChange}
|
|
73
|
+
/>
|
|
74
|
+
</FieldWrapper>
|
|
75
|
+
);
|
|
76
|
+
};
|
|
77
|
+
|
|
78
|
+
export default FontField;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { getConfigVariableButton } from '../config-variable-button/ConfigVariableButton';
|
|
3
|
+
import { getOverrideHandler } from '../../constants/variables';
|
|
4
|
+
|
|
5
|
+
interface IIconToggleProps {
|
|
6
|
+
selected: boolean;
|
|
7
|
+
onChange(selected: boolean): any;
|
|
8
|
+
icon: any;
|
|
9
|
+
|
|
10
|
+
override?: any;
|
|
11
|
+
showCopyPropIds?: boolean;
|
|
12
|
+
propKey?: string;
|
|
13
|
+
setOverride?(e): void;
|
|
14
|
+
removeOverride?(): void;
|
|
15
|
+
inventory?: any;
|
|
16
|
+
onClose?(e: boolean): void;
|
|
17
|
+
activeOverride?: string;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
const IconToggle: React.FC<IIconToggleProps> = ({
|
|
21
|
+
icon,
|
|
22
|
+
selected,
|
|
23
|
+
onChange,
|
|
24
|
+
override,
|
|
25
|
+
showCopyPropIds,
|
|
26
|
+
propKey,
|
|
27
|
+
setOverride,
|
|
28
|
+
removeOverride,
|
|
29
|
+
inventory,
|
|
30
|
+
onClose,
|
|
31
|
+
activeOverride
|
|
32
|
+
}) => {
|
|
33
|
+
const content = selected ? icon : null;
|
|
34
|
+
|
|
35
|
+
const { hasOverride } = getOverrideHandler(propKey, override, inventory);
|
|
36
|
+
|
|
37
|
+
const inputField = () => {
|
|
38
|
+
if (hasOverride || showCopyPropIds) {
|
|
39
|
+
return getConfigVariableButton(
|
|
40
|
+
showCopyPropIds,
|
|
41
|
+
'boolean',
|
|
42
|
+
inventory,
|
|
43
|
+
(o) => setOverride(o),
|
|
44
|
+
(o) => onClose(o),
|
|
45
|
+
icon,
|
|
46
|
+
activeOverride,
|
|
47
|
+
() => removeOverride()
|
|
48
|
+
);
|
|
49
|
+
} else {
|
|
50
|
+
return (
|
|
51
|
+
<div
|
|
52
|
+
className='icon-toggle'
|
|
53
|
+
onClick={() => onChange(!selected)}>
|
|
54
|
+
{content}
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
return inputField();
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
export default IconToggle;
|
|
@@ -18,6 +18,17 @@ interface INumberFieldProps {
|
|
|
18
18
|
max?: number;
|
|
19
19
|
onBlur?(e): void;
|
|
20
20
|
focusOnMount?: boolean;
|
|
21
|
+
|
|
22
|
+
override?: any;
|
|
23
|
+
showCopyPropIds?: boolean;
|
|
24
|
+
propKey?: string;
|
|
25
|
+
setOverride?(e): void;
|
|
26
|
+
removeOverride?(): void;
|
|
27
|
+
inventory?: any;
|
|
28
|
+
onClose?(e: boolean): void;
|
|
29
|
+
activeOverride?: string;
|
|
30
|
+
|
|
31
|
+
previewMultiplier?: number;
|
|
21
32
|
}
|
|
22
33
|
|
|
23
34
|
interface INumberFieldState {
|
|
@@ -122,17 +133,24 @@ class NumberField extends React.PureComponent<INumberFieldProps, INumberFieldSta
|
|
|
122
133
|
let error: string = null;
|
|
123
134
|
|
|
124
135
|
const {
|
|
125
|
-
label,
|
|
126
136
|
placeholder,
|
|
127
137
|
width,
|
|
128
138
|
readOnly,
|
|
129
|
-
buttons,
|
|
130
139
|
tooltip,
|
|
131
140
|
info,
|
|
132
141
|
labelPosition,
|
|
133
142
|
labelWidth,
|
|
134
143
|
min,
|
|
135
|
-
max
|
|
144
|
+
max,
|
|
145
|
+
showCopyPropIds,
|
|
146
|
+
propKey,
|
|
147
|
+
override,
|
|
148
|
+
inventory,
|
|
149
|
+
setOverride,
|
|
150
|
+
removeOverride,
|
|
151
|
+
onClose,
|
|
152
|
+
activeOverride,
|
|
153
|
+
previewMultiplier
|
|
136
154
|
} = this.props;
|
|
137
155
|
let value: any = this.state.value;
|
|
138
156
|
if (value === null) {
|
|
@@ -154,15 +172,23 @@ class NumberField extends React.PureComponent<INumberFieldProps, INumberFieldSta
|
|
|
154
172
|
return (
|
|
155
173
|
<FieldWrapper
|
|
156
174
|
customClass={`number-field ${this.state.error ? 'invalid' : ''}`}
|
|
157
|
-
|
|
158
|
-
// onDrag = {(v)=>this.handleLabelDrag(v)}
|
|
159
|
-
label={label}
|
|
175
|
+
label={this.props.label}
|
|
160
176
|
tooltip={tooltip}
|
|
161
|
-
buttons={buttons}
|
|
177
|
+
buttons={this.props.buttons}
|
|
162
178
|
info={error}
|
|
163
179
|
labelPosition={labelPosition}
|
|
164
180
|
labelWidth={labelWidth}
|
|
165
|
-
width={width}
|
|
181
|
+
width={width}
|
|
182
|
+
propKey={propKey}
|
|
183
|
+
showCopyPropIds={showCopyPropIds}
|
|
184
|
+
inventory={inventory}
|
|
185
|
+
setOverride={setOverride}
|
|
186
|
+
onClose={onClose}
|
|
187
|
+
activeOverride={activeOverride}
|
|
188
|
+
removeOverride={removeOverride}
|
|
189
|
+
override={override}
|
|
190
|
+
type='number'
|
|
191
|
+
previewMultiplier={previewMultiplier}>
|
|
166
192
|
<input
|
|
167
193
|
ref={this.inputRef}
|
|
168
194
|
type='number'
|
|
@@ -23,6 +23,15 @@ interface ISelectFieldProps {
|
|
|
23
23
|
showCopy?: boolean;
|
|
24
24
|
onNotification?(e): void;
|
|
25
25
|
onError?(e): void;
|
|
26
|
+
|
|
27
|
+
override?: any;
|
|
28
|
+
showCopyPropIds?: boolean;
|
|
29
|
+
propKey?: string;
|
|
30
|
+
setOverride?(e): void;
|
|
31
|
+
removeOverride?(): void;
|
|
32
|
+
inventory?: any;
|
|
33
|
+
onClose?(e: boolean): void;
|
|
34
|
+
activeOverride?: string;
|
|
26
35
|
}
|
|
27
36
|
|
|
28
37
|
class SelectField extends React.PureComponent<ISelectFieldProps> {
|
|
@@ -68,7 +77,6 @@ class SelectField extends React.PureComponent<ISelectFieldProps> {
|
|
|
68
77
|
|
|
69
78
|
public render() {
|
|
70
79
|
const {
|
|
71
|
-
label,
|
|
72
80
|
showCopy,
|
|
73
81
|
options,
|
|
74
82
|
value,
|
|
@@ -80,7 +88,15 @@ class SelectField extends React.PureComponent<ISelectFieldProps> {
|
|
|
80
88
|
info,
|
|
81
89
|
labelPosition,
|
|
82
90
|
labelWidth,
|
|
83
|
-
disableFirst
|
|
91
|
+
disableFirst,
|
|
92
|
+
propKey,
|
|
93
|
+
override,
|
|
94
|
+
inventory,
|
|
95
|
+
setOverride,
|
|
96
|
+
removeOverride,
|
|
97
|
+
onClose,
|
|
98
|
+
showCopyPropIds,
|
|
99
|
+
activeOverride
|
|
84
100
|
} = this.props;
|
|
85
101
|
|
|
86
102
|
const selectValue = value === null || value === undefined ? '' : value;
|
|
@@ -147,13 +163,22 @@ class SelectField extends React.PureComponent<ISelectFieldProps> {
|
|
|
147
163
|
return (
|
|
148
164
|
<FieldWrapper
|
|
149
165
|
customClass='select-field'
|
|
150
|
-
label={label}
|
|
166
|
+
label={this.props.label}
|
|
151
167
|
tooltip={tooltip}
|
|
152
168
|
buttons={btns}
|
|
153
169
|
info={info}
|
|
154
170
|
labelPosition={labelPosition}
|
|
155
171
|
labelWidth={labelWidth}
|
|
156
|
-
width={width}
|
|
172
|
+
width={width}
|
|
173
|
+
propKey={propKey}
|
|
174
|
+
showCopyPropIds={showCopyPropIds}
|
|
175
|
+
inventory={inventory}
|
|
176
|
+
setOverride={setOverride}
|
|
177
|
+
onClose={onClose}
|
|
178
|
+
activeOverride={activeOverride}
|
|
179
|
+
removeOverride={removeOverride}
|
|
180
|
+
override={override}
|
|
181
|
+
type='text'>
|
|
157
182
|
<select
|
|
158
183
|
value={selectValue}
|
|
159
184
|
onChange={(e) => this.onChange(e)}
|
|
@@ -17,6 +17,17 @@ interface ISliderFieldProps {
|
|
|
17
17
|
labelPosition?: string;
|
|
18
18
|
labelWidth?: string | number;
|
|
19
19
|
enabledToggle?: boolean;
|
|
20
|
+
|
|
21
|
+
override?: any;
|
|
22
|
+
showCopyPropIds?: boolean;
|
|
23
|
+
propKey?: string;
|
|
24
|
+
setOverride?(e): void;
|
|
25
|
+
removeOverride?(): void;
|
|
26
|
+
inventory?: any;
|
|
27
|
+
onClose?(e: boolean): void;
|
|
28
|
+
activeOverride?: string;
|
|
29
|
+
|
|
30
|
+
previewMultiplier?: number;
|
|
20
31
|
}
|
|
21
32
|
|
|
22
33
|
interface ISliderFieldState {
|
|
@@ -92,7 +103,16 @@ class SliderField extends React.PureComponent<ISliderFieldProps, ISliderFieldSta
|
|
|
92
103
|
info,
|
|
93
104
|
labelPosition,
|
|
94
105
|
labelWidth,
|
|
95
|
-
enabledToggle
|
|
106
|
+
enabledToggle,
|
|
107
|
+
propKey,
|
|
108
|
+
showCopyPropIds,
|
|
109
|
+
inventory,
|
|
110
|
+
setOverride,
|
|
111
|
+
onClose,
|
|
112
|
+
activeOverride,
|
|
113
|
+
removeOverride,
|
|
114
|
+
override,
|
|
115
|
+
previewMultiplier
|
|
96
116
|
} = this.props;
|
|
97
117
|
const { tempValue } = this.state;
|
|
98
118
|
const valueSet = value !== null && value !== undefined;
|
|
@@ -109,7 +129,17 @@ class SliderField extends React.PureComponent<ISliderFieldProps, ISliderFieldSta
|
|
|
109
129
|
info={info}
|
|
110
130
|
labelPosition={labelPosition}
|
|
111
131
|
labelWidth={labelWidth}
|
|
112
|
-
width={width}
|
|
132
|
+
width={width}
|
|
133
|
+
propKey={propKey}
|
|
134
|
+
showCopyPropIds={showCopyPropIds}
|
|
135
|
+
inventory={inventory}
|
|
136
|
+
setOverride={setOverride}
|
|
137
|
+
onClose={onClose}
|
|
138
|
+
activeOverride={activeOverride}
|
|
139
|
+
removeOverride={removeOverride}
|
|
140
|
+
override={override}
|
|
141
|
+
type='number'
|
|
142
|
+
previewMultiplier={previewMultiplier}>
|
|
113
143
|
{enabledToggle && (
|
|
114
144
|
<div
|
|
115
145
|
className='checkbox'
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import ReactTextareaAutocomplete from '@imposium-hub/react-textarea-autocomplete';
|
|
3
|
+
import FieldWrapper from '../field-wrapper/FieldWrapper';
|
|
4
|
+
import Spinner from '../spinner/Spinner';
|
|
5
|
+
|
|
6
|
+
interface ITextAreaAutocompleteProps {
|
|
7
|
+
options: any;
|
|
8
|
+
variables: any;
|
|
9
|
+
varsData: any;
|
|
10
|
+
variableItem: any;
|
|
11
|
+
onChange?(e: any): void;
|
|
12
|
+
label?: any;
|
|
13
|
+
|
|
14
|
+
override?: any;
|
|
15
|
+
showCopyPropIds?: boolean;
|
|
16
|
+
propKey?: string;
|
|
17
|
+
setOverride?(e): void;
|
|
18
|
+
removeOverride?(): void;
|
|
19
|
+
inventory?: any;
|
|
20
|
+
onClose?(e: boolean): void;
|
|
21
|
+
activeOverride?: string;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const TextAreaAutocomplete = (props: ITextAreaAutocompleteProps) => {
|
|
25
|
+
const {
|
|
26
|
+
options,
|
|
27
|
+
showCopyPropIds,
|
|
28
|
+
inventory,
|
|
29
|
+
override,
|
|
30
|
+
setOverride,
|
|
31
|
+
removeOverride,
|
|
32
|
+
onClose,
|
|
33
|
+
propKey,
|
|
34
|
+
varsData,
|
|
35
|
+
variableItem,
|
|
36
|
+
onChange,
|
|
37
|
+
activeOverride,
|
|
38
|
+
label
|
|
39
|
+
} = props;
|
|
40
|
+
|
|
41
|
+
return (
|
|
42
|
+
<FieldWrapper
|
|
43
|
+
label={label}
|
|
44
|
+
labelPosition='top'
|
|
45
|
+
customClass='text-area-field autocomplete'
|
|
46
|
+
propKey={propKey}
|
|
47
|
+
showCopyPropIds={showCopyPropIds}
|
|
48
|
+
inventory={inventory}
|
|
49
|
+
setOverride={setOverride}
|
|
50
|
+
onClose={onClose}
|
|
51
|
+
activeOverride={activeOverride}
|
|
52
|
+
removeOverride={removeOverride}
|
|
53
|
+
override={override}
|
|
54
|
+
type='textarea'>
|
|
55
|
+
<ReactTextareaAutocomplete
|
|
56
|
+
key='text-autocomplete'
|
|
57
|
+
onChange={(e) => onChange(e.target.value)}
|
|
58
|
+
value={options['content']}
|
|
59
|
+
loadingComponent={() => <Spinner />}
|
|
60
|
+
movePopupAsYouType
|
|
61
|
+
minChar={0}
|
|
62
|
+
tabOrEnter={true}
|
|
63
|
+
trigger={{
|
|
64
|
+
'{': {
|
|
65
|
+
dataProvider: (d) => {
|
|
66
|
+
const filtered = varsData.filter((f) =>
|
|
67
|
+
f.name.toLowerCase().startsWith(d)
|
|
68
|
+
);
|
|
69
|
+
return filtered;
|
|
70
|
+
},
|
|
71
|
+
component: variableItem,
|
|
72
|
+
output: (value) => `{{${value.name}}}`
|
|
73
|
+
}
|
|
74
|
+
}}
|
|
75
|
+
/>
|
|
76
|
+
</FieldWrapper>
|
|
77
|
+
);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
export default TextAreaAutocomplete;
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ICON_TIMES, ICON_WARNING } from '../../constants/icons';
|
|
3
|
+
import { ControlListType } from '../controlled-list/ControlledList';
|
|
4
|
+
import Button from '../button/Button';
|
|
5
|
+
import { renderTooltip, renderTooltipProps } from '../Tooltip';
|
|
6
|
+
import { generateUUID } from '../../Util';
|
|
7
|
+
|
|
8
|
+
interface IVariableDropDownProps {
|
|
9
|
+
returnVariables: boolean;
|
|
10
|
+
type: ControlListType;
|
|
11
|
+
inventory: any;
|
|
12
|
+
setOverride?(e): void;
|
|
13
|
+
removeOverride?(): void;
|
|
14
|
+
activeOverride?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const VariableDropDown: React.FC<IVariableDropDownProps> = (props: IVariableDropDownProps) => {
|
|
18
|
+
const { returnVariables, inventory, setOverride, removeOverride, activeOverride } = props;
|
|
19
|
+
|
|
20
|
+
const type = props.type === 'textarea' ? 'text' : props.type;
|
|
21
|
+
const include = type ? [type.toLowerCase()] : [];
|
|
22
|
+
|
|
23
|
+
const variableOptions = [];
|
|
24
|
+
|
|
25
|
+
if (returnVariables) {
|
|
26
|
+
for (const key in inventory) {
|
|
27
|
+
if (inventory.hasOwnProperty(key)) {
|
|
28
|
+
const variable = inventory[key];
|
|
29
|
+
|
|
30
|
+
if (include.indexOf(variable.type.toLowerCase()) !== -1 || include.length === 0) {
|
|
31
|
+
variableOptions.push(variable);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
const warningTooltipId = `imposium-button-${generateUUID()}`;
|
|
37
|
+
const warning = (
|
|
38
|
+
<div
|
|
39
|
+
className='warning'
|
|
40
|
+
{...renderTooltipProps(warningTooltipId, 'No variable preview')}>
|
|
41
|
+
{ICON_WARNING}
|
|
42
|
+
{renderTooltip(warningTooltipId, 'No variable preview')}
|
|
43
|
+
</div>
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const removeButton = (
|
|
47
|
+
<div className='buttons'>
|
|
48
|
+
<Button
|
|
49
|
+
onClick={() => removeOverride()}
|
|
50
|
+
size='small'
|
|
51
|
+
style='subtle'
|
|
52
|
+
color='danger'>
|
|
53
|
+
{ICON_TIMES}
|
|
54
|
+
</Button>
|
|
55
|
+
</div>
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
const variableOption = () => {
|
|
59
|
+
const options = variableOptions.map((variable) => {
|
|
60
|
+
const hasPreviewItem =
|
|
61
|
+
variable.previewItem.src !== null && variable.previewItem.src !== undefined;
|
|
62
|
+
|
|
63
|
+
const className = `variable-name ${
|
|
64
|
+
activeOverride === variable.name ? 'active' : ''
|
|
65
|
+
}`;
|
|
66
|
+
|
|
67
|
+
const showRemoveButton = activeOverride === variable.name ? removeButton : null;
|
|
68
|
+
const showWarning = !hasPreviewItem && warning;
|
|
69
|
+
|
|
70
|
+
const onClickHandler = () => {
|
|
71
|
+
if (activeOverride === variable.name) return;
|
|
72
|
+
setOverride(variable);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
return (
|
|
76
|
+
<div
|
|
77
|
+
className='color-options-menu'
|
|
78
|
+
key={variable.id.toString()}>
|
|
79
|
+
<div
|
|
80
|
+
className='color-option-list'
|
|
81
|
+
onClick={onClickHandler}>
|
|
82
|
+
<div className={className}>
|
|
83
|
+
<p>{variable.name}</p>
|
|
84
|
+
{showRemoveButton}
|
|
85
|
+
{showWarning}
|
|
86
|
+
</div>
|
|
87
|
+
</div>
|
|
88
|
+
</div>
|
|
89
|
+
);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
return options;
|
|
93
|
+
};
|
|
94
|
+
return <>{variableOption()}</>;
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export default VariableDropDown;
|