@imposium-hub/components 2.11.6-0 → 2.11.7-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 (104) hide show
  1. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.d.ts +0 -8
  2. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.js +2 -2
  3. package/dist/cjs/components/advanced-number-field/AdvancedNumberField.js.map +1 -1
  4. package/dist/cjs/components/button-group-field/ButtonGroupField.d.ts +0 -9
  5. package/dist/cjs/components/button-group-field/ButtonGroupField.js +20 -38
  6. package/dist/cjs/components/button-group-field/ButtonGroupField.js.map +1 -1
  7. package/dist/cjs/components/checkbox-field/CheckboxField.d.ts +0 -8
  8. package/dist/cjs/components/checkbox-field/CheckboxField.js +2 -2
  9. package/dist/cjs/components/checkbox-field/CheckboxField.js.map +1 -1
  10. package/dist/cjs/components/color-field/ColorField.d.ts +0 -8
  11. package/dist/cjs/components/color-field/ColorField.js +2 -2
  12. package/dist/cjs/components/color-field/ColorField.js.map +1 -1
  13. package/dist/cjs/components/controlled-list/ControlledList.d.ts +2 -6
  14. package/dist/cjs/components/controlled-list/ControlledList.js +6 -22
  15. package/dist/cjs/components/controlled-list/ControlledList.js.map +1 -1
  16. package/dist/cjs/components/field-wrapper/FieldWrapper.d.ts +0 -11
  17. package/dist/cjs/components/field-wrapper/FieldWrapper.js +6 -25
  18. package/dist/cjs/components/field-wrapper/FieldWrapper.js.map +1 -1
  19. package/dist/cjs/components/number-field/NumberField.d.ts +0 -9
  20. package/dist/cjs/components/number-field/NumberField.js +5 -2
  21. package/dist/cjs/components/number-field/NumberField.js.map +1 -1
  22. package/dist/cjs/components/publish-wizard/PublishWizard.js +9 -1
  23. package/dist/cjs/components/publish-wizard/PublishWizard.js.map +1 -1
  24. package/dist/cjs/components/select-field/SelectField.d.ts +0 -8
  25. package/dist/cjs/components/select-field/SelectField.js +2 -2
  26. package/dist/cjs/components/select-field/SelectField.js.map +1 -1
  27. package/dist/cjs/constants/copy.d.ts +0 -3
  28. package/dist/cjs/constants/copy.js +1 -4
  29. package/dist/cjs/constants/copy.js.map +1 -1
  30. package/dist/cjs/constants/icons.d.ts +0 -2
  31. package/dist/cjs/constants/icons.js +1 -3
  32. package/dist/cjs/constants/icons.js.map +1 -1
  33. package/dist/cjs/constants/variables.d.ts +0 -4
  34. package/dist/cjs/constants/variables.js +1 -13
  35. package/dist/cjs/constants/variables.js.map +1 -1
  36. package/dist/cjs/index.d.ts +2 -6
  37. package/dist/cjs/index.js +1 -9
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/esm/components/advanced-number-field/AdvancedNumberField.d.ts +0 -8
  40. package/dist/esm/components/advanced-number-field/AdvancedNumberField.js +2 -2
  41. package/dist/esm/components/advanced-number-field/AdvancedNumberField.js.map +1 -1
  42. package/dist/esm/components/button-group-field/ButtonGroupField.d.ts +0 -9
  43. package/dist/esm/components/button-group-field/ButtonGroupField.js +20 -38
  44. package/dist/esm/components/button-group-field/ButtonGroupField.js.map +1 -1
  45. package/dist/esm/components/checkbox-field/CheckboxField.d.ts +0 -8
  46. package/dist/esm/components/checkbox-field/CheckboxField.js +2 -2
  47. package/dist/esm/components/checkbox-field/CheckboxField.js.map +1 -1
  48. package/dist/esm/components/color-field/ColorField.d.ts +0 -8
  49. package/dist/esm/components/color-field/ColorField.js +2 -2
  50. package/dist/esm/components/color-field/ColorField.js.map +1 -1
  51. package/dist/esm/components/controlled-list/ControlledList.d.ts +2 -6
  52. package/dist/esm/components/controlled-list/ControlledList.js +7 -24
  53. package/dist/esm/components/controlled-list/ControlledList.js.map +1 -1
  54. package/dist/esm/components/field-wrapper/FieldWrapper.d.ts +0 -11
  55. package/dist/esm/components/field-wrapper/FieldWrapper.js +6 -24
  56. package/dist/esm/components/field-wrapper/FieldWrapper.js.map +1 -1
  57. package/dist/esm/components/number-field/NumberField.d.ts +0 -9
  58. package/dist/esm/components/number-field/NumberField.js +5 -2
  59. package/dist/esm/components/number-field/NumberField.js.map +1 -1
  60. package/dist/esm/components/publish-wizard/PublishWizard.js +9 -1
  61. package/dist/esm/components/publish-wizard/PublishWizard.js.map +1 -1
  62. package/dist/esm/components/select-field/SelectField.d.ts +0 -8
  63. package/dist/esm/components/select-field/SelectField.js +2 -2
  64. package/dist/esm/components/select-field/SelectField.js.map +1 -1
  65. package/dist/esm/constants/copy.d.ts +0 -3
  66. package/dist/esm/constants/copy.js +0 -3
  67. package/dist/esm/constants/copy.js.map +1 -1
  68. package/dist/esm/constants/icons.d.ts +0 -2
  69. package/dist/esm/constants/icons.js +2 -4
  70. package/dist/esm/constants/icons.js.map +1 -1
  71. package/dist/esm/constants/variables.d.ts +0 -4
  72. package/dist/esm/constants/variables.js +0 -11
  73. package/dist/esm/constants/variables.js.map +1 -1
  74. package/dist/esm/index.d.ts +2 -6
  75. package/dist/esm/index.js +1 -5
  76. package/dist/esm/index.js.map +1 -1
  77. package/dist/styles.css +26 -131
  78. package/dist/styles.less +225 -374
  79. package/less/components/button.less +1 -5
  80. package/less/components/controlled-list.less +13 -118
  81. package/less/components/dropdown.less +0 -3
  82. package/less/components/font-picker.less +14 -18
  83. package/less/components/form-field.less +182 -224
  84. package/less/components/publish-wizard.less +16 -9
  85. package/package.json +1 -3
  86. package/src/components/advanced-number-field/AdvancedNumberField.tsx +4 -29
  87. package/src/components/button-group-field/ButtonGroupField.tsx +39 -110
  88. package/src/components/checkbox-field/CheckboxField.tsx +3 -36
  89. package/src/components/color-field/ColorField.tsx +4 -29
  90. package/src/components/controlled-list/ControlledList.tsx +14 -62
  91. package/src/components/field-wrapper/FieldWrapper.tsx +6 -80
  92. package/src/components/number-field/NumberField.tsx +8 -34
  93. package/src/components/publish-wizard/PublishWizard.tsx +10 -0
  94. package/src/components/select-field/SelectField.tsx +4 -29
  95. package/src/constants/copy.ts +0 -4
  96. package/src/constants/icons.tsx +1 -6
  97. package/src/constants/variables.ts +0 -16
  98. package/src/index.ts +2 -11
  99. package/src/components/config-variable-button/ConfigVariableButton.tsx +0 -141
  100. package/src/components/font-field/FontField.tsx +0 -78
  101. package/src/components/icon-toggle/IconToggle.tsx +0 -63
  102. package/src/components/text-area-autocomplete/TextAreaAutocomplete.tsx +0 -78
  103. package/src/components/variables-dropdown/VariableDropdown.tsx +0 -98
  104. package/src/constants/fonts.ts +0 -296
@@ -23,15 +23,6 @@ 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;
35
26
  }
36
27
 
37
28
  class SelectField extends React.PureComponent<ISelectFieldProps> {
@@ -77,6 +68,7 @@ class SelectField extends React.PureComponent<ISelectFieldProps> {
77
68
 
78
69
  public render() {
79
70
  const {
71
+ label,
80
72
  showCopy,
81
73
  options,
82
74
  value,
@@ -88,15 +80,7 @@ class SelectField extends React.PureComponent<ISelectFieldProps> {
88
80
  info,
89
81
  labelPosition,
90
82
  labelWidth,
91
- disableFirst,
92
- propKey,
93
- override,
94
- inventory,
95
- setOverride,
96
- removeOverride,
97
- onClose,
98
- showCopyPropIds,
99
- activeOverride
83
+ disableFirst
100
84
  } = this.props;
101
85
 
102
86
  const selectValue = value === null || value === undefined ? '' : value;
@@ -163,22 +147,13 @@ class SelectField extends React.PureComponent<ISelectFieldProps> {
163
147
  return (
164
148
  <FieldWrapper
165
149
  customClass='select-field'
166
- label={this.props.label}
150
+ label={label}
167
151
  tooltip={tooltip}
168
152
  buttons={btns}
169
153
  info={info}
170
154
  labelPosition={labelPosition}
171
155
  labelWidth={labelWidth}
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'>
156
+ width={width}>
182
157
  <select
183
158
  value={selectValue}
184
159
  onChange={(e) => this.onChange(e)}
@@ -284,7 +284,3 @@ export const confirm: any = {
284
284
  no: 'No',
285
285
  cancel: 'Cancel'
286
286
  };
287
-
288
- export const fontField = {
289
- fontNotFound: 'Font not found'
290
- };
@@ -74,13 +74,12 @@ import {
74
74
  import { faCircleSmall } from '@fortawesome/pro-solid-svg-icons/faCircleSmall';
75
75
  import { faClapperboardPlay } from '@fortawesome/pro-solid-svg-icons/faClapperboardPlay';
76
76
  import {
77
- faBracketsCurly,
78
77
  faCloudArrowUp,
79
78
  faFileCirclePlus,
80
79
  faFilePen,
81
80
  faFilters
82
81
  } from '@fortawesome/pro-solid-svg-icons';
83
- import { faCircleExclamation, faTriangleExclamation } from '@fortawesome/free-solid-svg-icons';
82
+ import { faCircleExclamation } from '@fortawesome/free-solid-svg-icons';
84
83
 
85
84
  export const ICON_VIDEO = <FontAwesomeIcon icon={faVideo} />;
86
85
 
@@ -233,7 +232,3 @@ export const ICON_FILE_ERROR = <FontAwesomeIcon icon={faCircleExclamation} />;
233
232
  export const ICON_FILE_ADD = <FontAwesomeIcon icon={faFileCirclePlus} />;
234
233
 
235
234
  export const ICON_FILE_REPLACE = <FontAwesomeIcon icon={faFilePen} />;
236
-
237
- export const ICON_BRACKET_CURLY = <FontAwesomeIcon icon={faBracketsCurly} />;
238
-
239
- export const ICON_WARNING = <FontAwesomeIcon icon={faTriangleExclamation} />;
@@ -63,19 +63,3 @@ export const RGBAtoHexA = (red, green, blue, alpha) => {
63
63
  if (a.length === 1) a = '0' + a;
64
64
  return '#' + r + g + b + a;
65
65
  };
66
-
67
- export const getOverrideHandler = (propKey, override, inventory) => {
68
- const propKeys = propKey ? propKey.split('.') : [];
69
-
70
- const getOverride = () => {
71
- if (propKeys.length === 0) return undefined;
72
- return propKeys.reduce((acc, key) => acc?.[key], override);
73
- };
74
-
75
- const hasOverride = getOverride();
76
-
77
- const previewItem =
78
- hasOverride && inventory[hasOverride] ? inventory[hasOverride].previewItem.src : null;
79
-
80
- return { hasOverride, previewItem };
81
- };
package/src/index.ts CHANGED
@@ -7,7 +7,7 @@ import Button from './components/button/Button';
7
7
  import ButtonMenu from './components/button-menu/ButtonMenu';
8
8
  import ButtonMenuItem from './components/button-menu/ButtonMenuItem';
9
9
  import Card from './components/card/Card';
10
- import ControlledList, { ControlListType } from './components/controlled-list/ControlledList';
10
+ import ControlledList from './components/controlled-list/ControlledList';
11
11
  import DataTable from './components/data-table/DataTable';
12
12
  import DataTablePaginator from './components/data-table/DataTablePaginator';
13
13
  import Modal from './components/modal/Modal';
@@ -164,10 +164,6 @@ import { pushRoute, replaceRoute } from './utils/routing';
164
164
  import { ProjectDropdown } from './components/header/ProjectDropdown';
165
165
  import { openConfirmModal } from './utils/modal';
166
166
  import { ConfirmModal, IConfirmModalProps } from './components/confirm-modal/ConfirmModal';
167
- import TextAreaAutocomplete from './components/text-area-autocomplete/TextAreaAutocomplete';
168
- import IconToggle from './components/icon-toggle/IconToggle';
169
- import { DEFAULT_FONTS } from './constants/fonts';
170
- import FontField from './components/font-field/FontField';
171
167
 
172
168
  export {
173
169
  ProjectDropdown,
@@ -328,10 +324,5 @@ export {
328
324
  CopyPropIdButton,
329
325
  ConfirmModal,
330
326
  IConfirmModalProps,
331
- openConfirmModal,
332
- TextAreaAutocomplete,
333
- ControlListType,
334
- IconToggle,
335
- DEFAULT_FONTS,
336
- FontField
327
+ openConfirmModal
337
328
  };
@@ -1,141 +0,0 @@
1
- import React, { useState, useRef } from 'react';
2
- import { ICON_BRACKET_CURLY } from '../../constants/icons';
3
- import Button from '../button/Button';
4
- import ImposiumDropdown from '../dropdown/Dropdown';
5
- import moize from 'moize';
6
- import VariableDropDown from '../variables-dropdown/VariableDropdown';
7
- import { ControlListType } from '../controlled-list/ControlledList';
8
-
9
- interface IConfigVariableButtonProps {
10
- type: ControlListType;
11
- icon?: any;
12
- inventory: any;
13
- setOverride?(e): void;
14
- onClose?(e): void;
15
- removeOverride?(): void;
16
- activeOverride?: string;
17
- }
18
-
19
- const ConfigVariableButton: React.FC<IConfigVariableButtonProps> = ({
20
- type,
21
- inventory,
22
- setOverride,
23
- onClose,
24
- activeOverride,
25
- removeOverride,
26
- icon
27
- }) => {
28
- const [show, setShow] = useState(false);
29
- const variablesButtonRef = useRef();
30
-
31
- const close = () => {
32
- setShow(!show);
33
- if (onClose) {
34
- onClose(!show);
35
- }
36
- };
37
-
38
- const setOverrideHandler = (o) => {
39
- setOverride(o);
40
- close();
41
- };
42
-
43
- const removeOverrideHandler = () => {
44
- removeOverride();
45
- close();
46
- };
47
- return (
48
- <>
49
- <Button
50
- tooltip='Configure Variables'
51
- customClass={icon ? 'icon-toggle' : ''}
52
- onClick={() => {
53
- close();
54
- }}
55
- buttonRef={variablesButtonRef}
56
- size='small'
57
- style='subtle'>
58
- {ICON_BRACKET_CURLY}
59
- </Button>
60
-
61
- <ImposiumDropdown
62
- key='variables-dropdown'
63
- position='bottomleft'
64
- show={show}
65
- toggleRef={variablesButtonRef}
66
- customClass='variables'
67
- onOutsideClick={() => close()}>
68
- <VariableDropDown
69
- returnVariables={show}
70
- type={type}
71
- inventory={inventory}
72
- setOverride={setOverrideHandler}
73
- removeOverride={removeOverrideHandler}
74
- activeOverride={activeOverride}
75
- />
76
- </ImposiumDropdown>
77
- </>
78
- );
79
- };
80
-
81
- const mGetConfigVariableButton = (
82
- enabled,
83
- type,
84
- inventory,
85
- setOverride,
86
- onClose,
87
- icon,
88
- activeOverride,
89
- removeOverride
90
- ) => {
91
- if (enabled || activeOverride !== undefined) {
92
- return (
93
- <ConfigVariableButton
94
- type={type}
95
- inventory={inventory}
96
- setOverride={(o) => setOverride(o)}
97
- onClose={(o) => onClose(o)}
98
- icon={icon}
99
- activeOverride={activeOverride}
100
- removeOverride={removeOverride}
101
- />
102
- );
103
- } else {
104
- return null;
105
- }
106
- };
107
-
108
- export const getConfigVariableButton = moize(mGetConfigVariableButton);
109
-
110
- export const fieldLabel = (
111
- labelText,
112
- propKey,
113
- showCopyPropIds,
114
- type: string,
115
- inventory,
116
- setOverride,
117
- onClose,
118
- activeOverride,
119
- removeOverride,
120
- icon?
121
- ) => {
122
- const label = propKey ? (
123
- <span>
124
- {labelText}
125
- {getConfigVariableButton(
126
- showCopyPropIds,
127
- type,
128
- inventory,
129
- (o) => setOverride(o),
130
- (o) => onClose(o),
131
- icon,
132
- activeOverride,
133
- removeOverride
134
- )}
135
- </span>
136
- ) : (
137
- labelText
138
- );
139
-
140
- return label;
141
- };
@@ -1,78 +0,0 @@
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?: string;
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;
@@ -1,63 +0,0 @@
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;
@@ -1,78 +0,0 @@
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
-
13
- override?: any;
14
- showCopyPropIds?: boolean;
15
- propKey?: string;
16
- setOverride?(e): void;
17
- removeOverride?(): void;
18
- inventory?: any;
19
- onClose?(e: boolean): void;
20
- activeOverride?: string;
21
- }
22
-
23
- const TextAreaAutocomplete = (props: ITextAreaAutocompleteProps) => {
24
- const {
25
- options,
26
- showCopyPropIds,
27
- inventory,
28
- override,
29
- setOverride,
30
- removeOverride,
31
- onClose,
32
- propKey,
33
- varsData,
34
- variableItem,
35
- onChange,
36
- activeOverride
37
- } = props;
38
-
39
- return (
40
- <FieldWrapper
41
- label='Content'
42
- labelPosition='top'
43
- customClass='text-area-field autocomplete'
44
- propKey={propKey}
45
- showCopyPropIds={showCopyPropIds}
46
- inventory={inventory}
47
- setOverride={setOverride}
48
- onClose={onClose}
49
- activeOverride={activeOverride}
50
- removeOverride={removeOverride}
51
- override={override}
52
- type='textarea'>
53
- <ReactTextareaAutocomplete
54
- key='text-autocomplete'
55
- onChange={(e) => onChange(e.target.value)}
56
- value={options['content']}
57
- loadingComponent={() => <Spinner />}
58
- movePopupAsYouType
59
- minChar={0}
60
- tabOrEnter={true}
61
- trigger={{
62
- '{': {
63
- dataProvider: (d) => {
64
- const filtered = varsData.filter((f) =>
65
- f.name.toLowerCase().startsWith(d)
66
- );
67
- return filtered;
68
- },
69
- component: variableItem,
70
- output: (value) => `{{${value.name}}}`
71
- }
72
- }}
73
- />
74
- </FieldWrapper>
75
- );
76
- };
77
-
78
- export default TextAreaAutocomplete;
@@ -1,98 +0,0 @@
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;