@kids-reporter/draft-editor 0.4.12 → 0.4.14

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.
@@ -19,36 +19,25 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
19
19
  const _ = {
20
20
  debounce: _debounce.default
21
21
  };
22
- const ImageSearchBox = (0, _styledComponents.default)(_searchBox.SearchBox)`
22
+ const SearchBox = (0, _styledComponents.default)(_searchBox.SearchBox)`
23
23
  margin-top: 10px;
24
24
  `;
25
- const ImageSelectionWrapper = _styledComponents.default.div`
25
+ const MainBlock = _styledComponents.default.div`
26
26
  overflow: auto;
27
27
  margin-top: 10px;
28
28
  `;
29
- const ImageBlockMetaWrapper = _styledComponents.default.div``;
30
- const ImageGridsWrapper = _styledComponents.default.div`
29
+ const GridsBlock = _styledComponents.default.div`
31
30
  display: flex;
32
31
  flex-wrap: wrap;
33
32
  overflow: auto;
34
33
  margin-top: 5px;
35
34
  `;
36
- const ImageGridWrapper = _styledComponents.default.div`
35
+ const GridBlock = _styledComponents.default.div`
37
36
  flex: 0 0 33.3333%;
38
37
  cursor: pointer;
39
38
  padding: 0 10px 10px;
40
39
  `;
41
- const ImageMetaGridsWrapper = _styledComponents.default.div`
42
- display: flex;
43
- flex-wrap: wrap;
44
- overflow: auto;
45
- `;
46
- const ImageMetaGridWrapper = _styledComponents.default.div`
47
- flex: 0 0 33.3333%;
48
- cursor: pointer;
49
- padding: 0 10px 10px;
50
- `;
51
- const Image = _styledComponents.default.img`
40
+ const Img = _styledComponents.default.img`
52
41
  display: block;
53
42
  width: 100%;
54
43
  aspect-ratio: 2;
@@ -64,9 +53,6 @@ const SeparationLine = _styledComponents.default.div`
64
53
  margin-top: 10px;
65
54
  margin-bottom: 10px;
66
55
  `;
67
- const ImageSelected = _styledComponents.default.div`
68
- height: 1.4rem;
69
- `;
70
56
  const ErrorWrapper = _styledComponents.default.div`
71
57
  & * {
72
58
  margin: 0;
@@ -75,32 +61,16 @@ const ErrorWrapper = _styledComponents.default.div`
75
61
  function ImageGrids(props) {
76
62
  const {
77
63
  images,
78
- selected,
79
64
  onSelect
80
65
  } = props;
81
- return /*#__PURE__*/_react.default.createElement(ImageGridsWrapper, null, images.map(image => {
82
- return /*#__PURE__*/_react.default.createElement(ImageGrid, {
66
+ return /*#__PURE__*/_react.default.createElement(GridsBlock, null, images.map(image => {
67
+ var _image$imageFile;
68
+ return /*#__PURE__*/_react.default.createElement(GridBlock, {
83
69
  key: image.id,
84
- isSelected: selected === null || selected === void 0 ? void 0 : selected.includes(image),
85
- onSelect: () => onSelect(image),
86
- image: image
87
- });
88
- }));
89
- }
90
- function ImageGrid(props) {
91
- var _image$imageFile;
92
- const {
93
- image,
94
- onSelect,
95
- isSelected
96
- } = props;
97
- return /*#__PURE__*/_react.default.createElement(ImageGridWrapper, {
98
- key: image === null || image === void 0 ? void 0 : image.id,
99
- onClick: () => onSelect(image)
100
- }, /*#__PURE__*/_react.default.createElement(ImageSelected, null, isSelected ? /*#__PURE__*/_react.default.createElement("i", {
101
- className: "fas fa-check-circle"
102
- }) : null), /*#__PURE__*/_react.default.createElement(Image, {
103
- src: image === null || image === void 0 || (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url
70
+ onClick: () => onSelect(image)
71
+ }, /*#__PURE__*/_react.default.createElement(Img, {
72
+ src: image === null || image === void 0 || (_image$imageFile = image.imageFile) === null || _image$imageFile === void 0 ? void 0 : _image$imageFile.url
73
+ }));
104
74
  }));
105
75
  }
106
76
  function ImageMetaGrids(props) {
@@ -108,78 +78,37 @@ function ImageMetaGrids(props) {
108
78
  imageMetas,
109
79
  onChange,
110
80
  enableCaption,
111
- enableUrl
81
+ enableDelete
112
82
  } = props;
113
- return /*#__PURE__*/_react.default.createElement(ImageMetaGridsWrapper, null, imageMetas.map(imageMeta => {
114
- var _imageMeta$image;
115
- return /*#__PURE__*/_react.default.createElement(ImageMetaGrid, {
116
- key: imageMeta === null || imageMeta === void 0 || (_imageMeta$image = imageMeta.image) === null || _imageMeta$image === void 0 ? void 0 : _imageMeta$image.id,
117
- imageMeta: imageMeta,
118
- enableCaption: enableCaption,
119
- enableUrl: enableUrl,
120
- onChange: onChange
121
- });
122
- }));
123
- }
124
- function ImageMetaGrid(props) {
125
- var _image$imageFile2;
126
- const {
127
- imageMeta,
128
- enableCaption,
129
- enableUrl,
130
- onChange
131
- } = props;
132
- const {
133
- image,
134
- desc,
135
- url
136
- } = imageMeta;
137
- return /*#__PURE__*/_react.default.createElement(ImageMetaGridWrapper, null, /*#__PURE__*/_react.default.createElement(Image, {
138
- src: image === null || image === void 0 || (_image$imageFile2 = image.imageFile) === null || _image$imageFile2 === void 0 ? void 0 : _image$imageFile2.url
139
- }), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
140
- htmlFor: "caption"
141
- }, "Image Caption:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
142
- id: "caption",
143
- type: "text",
144
- placeholder: image === null || image === void 0 ? void 0 : image.name,
145
- defaultValue: desc,
146
- onChange: _.debounce(e => {
147
- onChange({
148
- image,
149
- desc: e.target.value,
150
- url
151
- });
152
- })
153
- })), enableUrl && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
154
- htmlFor: "url"
155
- }, "Url:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
156
- id: "url",
157
- type: "text",
158
- placeholder: "(Optional)",
159
- defaultValue: url,
160
- onChange: _.debounce(e => {
161
- onChange({
162
- image,
163
- desc,
164
- url: e.target.value
165
- });
166
- })
167
- })));
168
- }
169
- function DelayInput(props) {
170
- const {
171
- delay,
172
- onChange
173
- } = props;
174
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, null, "Slideshow delay:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
175
- type: "number",
176
- placeholder: "\u8ACB\u8F38\u5165\u81EA\u52D5\u5207\u63DB\u79D2\u6578",
177
- step: "0.5",
178
- min: "1",
179
- value: delay,
180
- onChange: e => {
181
- onChange(e.target.value);
182
- }
83
+ return /*#__PURE__*/_react.default.createElement(GridsBlock, null, imageMetas.map((imageMeta, idx) => {
84
+ var _imageMeta$imageFile;
85
+ const {
86
+ desc,
87
+ url
88
+ } = imageMeta;
89
+ return /*#__PURE__*/_react.default.createElement(GridBlock, {
90
+ key: idx
91
+ }, enableDelete && /*#__PURE__*/_react.default.createElement("i", {
92
+ onClick: () => {
93
+ onChange(imageMeta, 'delete');
94
+ },
95
+ className: "fas fa-check-circle"
96
+ }), /*#__PURE__*/_react.default.createElement(Img, {
97
+ src: imageMeta === null || imageMeta === void 0 || (_imageMeta$imageFile = imageMeta.imageFile) === null || _imageMeta$imageFile === void 0 ? void 0 : _imageMeta$imageFile.url
98
+ }), enableCaption && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
99
+ htmlFor: "caption"
100
+ }, "Image Caption:"), /*#__PURE__*/_react.default.createElement(_fields.TextInput, {
101
+ id: "caption",
102
+ type: "text",
103
+ placeholder: imageMeta === null || imageMeta === void 0 ? void 0 : imageMeta.name,
104
+ defaultValue: desc,
105
+ onChange: _.debounce(e => {
106
+ onChange(Object.assign({}, imageMeta, {
107
+ desc: e.target.value,
108
+ url
109
+ }), 'modify');
110
+ })
111
+ })));
183
112
  }));
184
113
  }
185
114
  const imagesQuery = (0, _apollo.gql)`
@@ -208,6 +137,7 @@ const imagesQuery = (0, _apollo.gql)`
208
137
  }
209
138
  `;
210
139
  function ImageSelector(props) {
140
+ const alignment = props.alignment || 'default';
211
141
  const [queryImages, {
212
142
  loading,
213
143
  error,
@@ -220,13 +150,12 @@ function ImageSelector(props) {
220
150
  });
221
151
  const [currentPage, setCurrentPage] = (0, _react.useState)(0); // page starts with 1, 0 is used to detect initialization
222
152
  const [searchText, setSearchText] = (0, _react.useState)('');
223
- const [selected, setSelected] = (0, _react.useState)([]);
224
- const [delay, setDelay] = (0, _react.useState)('5');
225
- const [align, setAlign] = (0, _react.useState)(undefined);
226
- const contentWrapperRef = (0, _react.useRef)();
153
+ const [selected, setSelected] = (0, _react.useState)(props.selected || []);
154
+ const [align, setAlign] = (0, _react.useState)(alignment);
155
+ const contentWrapperRef = (0, _react.useRef)(null);
227
156
  const pageSize = 6;
228
157
  const options = [{
229
- value: undefined,
158
+ value: 'default',
230
159
  label: 'default',
231
160
  isDisabled: false
232
161
  }, {
@@ -245,15 +174,11 @@ function ImageSelector(props) {
245
174
  const {
246
175
  enableMultiSelect = false,
247
176
  enableCaption = false,
248
- enableUrl = false,
249
177
  enableAlignment = false,
250
- enableDelay = false,
251
178
  onChange
252
179
  } = props;
253
180
  const onSave = () => {
254
- let adjustedDelay = +delay;
255
- adjustedDelay = adjustedDelay < 1 ? 1 : adjustedDelay;
256
- onChange(selected, align, adjustedDelay);
181
+ onChange(selected, align);
257
182
  };
258
183
  const onCancel = () => {
259
184
  onChange([]);
@@ -262,61 +187,47 @@ function ImageSelector(props) {
262
187
  setSearchText(searchInput);
263
188
  setCurrentPage(1);
264
189
  };
265
- const onDealyChange = delay => {
266
- setDelay(delay);
267
- };
268
190
  const onAlignSelectChange = align => {
269
191
  setAlign(align);
270
192
  };
271
193
  const onAlignSelectOpen = () => {
272
194
  var _contentWrapperRef$cu;
273
195
  const scrollWrapper = (_contentWrapperRef$cu = contentWrapperRef.current) === null || _contentWrapperRef$cu === void 0 ? void 0 : _contentWrapperRef$cu.parentElement;
274
- scrollWrapper.scrollTop = scrollWrapper.scrollHeight;
196
+ if (scrollWrapper) {
197
+ scrollWrapper.scrollTop = scrollWrapper === null || scrollWrapper === void 0 ? void 0 : scrollWrapper.scrollHeight;
198
+ }
199
+ };
200
+ const changeSelectedImage = (imageEntityWithMeta, actionType) => {
201
+ switch (actionType) {
202
+ case 'delete':
203
+ {
204
+ setSelected(selected.filter(s => s.idForImageSelectorOnly !== imageEntityWithMeta.idForImageSelectorOnly));
205
+ break;
206
+ }
207
+ case 'modify':
208
+ {
209
+ const foundIndex = selected.findIndex(ele => ele.idForImageSelectorOnly === imageEntityWithMeta.idForImageSelectorOnly);
210
+ if (foundIndex !== -1) {
211
+ const newSelected = [...selected];
212
+ newSelected[foundIndex] = imageEntityWithMeta;
213
+ setSelected(newSelected);
214
+ }
215
+ break;
216
+ }
217
+ }
275
218
  };
276
- const onImageMetaChange = imageEntityWithMeta => {
219
+ const selectImage = imageEntity => {
220
+ const newImageEntity = Object.assign({
221
+ // `idForImageSelectorOnly` is designed for selecting one image multiple times
222
+ idForImageSelectorOnly: `${imageEntity.id}_${selected.length + 1}`,
223
+ desc: ''
224
+ }, imageEntity);
277
225
  if (enableMultiSelect) {
278
- const foundIndex = selected.findIndex(ele => {
279
- var _ele$image, _imageEntityWithMeta$;
280
- return (ele === null || ele === void 0 || (_ele$image = ele.image) === null || _ele$image === void 0 ? void 0 : _ele$image.id) === (imageEntityWithMeta === null || imageEntityWithMeta === void 0 || (_imageEntityWithMeta$ = imageEntityWithMeta.image) === null || _imageEntityWithMeta$ === void 0 ? void 0 : _imageEntityWithMeta$.id);
281
- });
282
- if (foundIndex !== -1) {
283
- selected[foundIndex] = imageEntityWithMeta;
284
- setSelected(selected);
285
- }
226
+ setSelected(selected.concat(newImageEntity));
286
227
  return;
287
228
  }
288
- setSelected([imageEntityWithMeta]);
229
+ setSelected([newImageEntity]);
289
230
  };
290
- const onImagesGridSelect = imageEntity => {
291
- setSelected(selected => {
292
- const filterdSelected = selected.filter(ele => {
293
- var _ele$image2;
294
- return ((_ele$image2 = ele.image) === null || _ele$image2 === void 0 ? void 0 : _ele$image2.id) !== imageEntity.id;
295
- });
296
-
297
- // deselect the image
298
- if (filterdSelected.length !== selected.length) {
299
- return filterdSelected;
300
- }
301
-
302
- // add new selected one
303
- if (enableMultiSelect) {
304
- return selected.concat([{
305
- image: imageEntity,
306
- desc: ''
307
- }]);
308
- }
309
-
310
- // single select
311
- return [{
312
- image: imageEntity,
313
- desc: ''
314
- }];
315
- });
316
- };
317
- const selectedImages = selected.map(ele => {
318
- return ele.image;
319
- });
320
231
  (0, _react.useEffect)(() => {
321
232
  if (currentPage !== 0) {
322
233
  queryImages({
@@ -328,10 +239,9 @@ function ImageSelector(props) {
328
239
  });
329
240
  }
330
241
  }, [currentPage, searchText]);
331
- let searchResult = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
242
+ let searchResult = /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(ImageGrids, {
332
243
  images: images,
333
- selected: selectedImages,
334
- onSelect: onImagesGridSelect
244
+ onSelect: selectImage
335
245
  }), /*#__PURE__*/_react.default.createElement(_pagination.Pagination, {
336
246
  currentPage: currentPage,
337
247
  total: imagesCount,
@@ -344,7 +254,8 @@ function ImageSelector(props) {
344
254
  searchResult = /*#__PURE__*/_react.default.createElement("p", null, "searching...");
345
255
  }
346
256
  if (error) {
347
- searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `images` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, imagesQuery.loc.source.body)));
257
+ var _imagesQuery$loc;
258
+ searchResult = /*#__PURE__*/_react.default.createElement(ErrorWrapper, null, /*#__PURE__*/_react.default.createElement("h3", null, "Errors occurs in the `images` query"), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Message:"), /*#__PURE__*/_react.default.createElement("div", null, error.message), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Stack:"), /*#__PURE__*/_react.default.createElement("div", null, error.stack), /*#__PURE__*/_react.default.createElement("br", null), /*#__PURE__*/_react.default.createElement("b", null, "Query:"), /*#__PURE__*/_react.default.createElement("pre", null, (_imagesQuery$loc = imagesQuery.loc) === null || _imagesQuery$loc === void 0 ? void 0 : _imagesQuery$loc.source.body)));
348
259
  }
349
260
  return /*#__PURE__*/_react.default.createElement(_modals.DrawerController, {
350
261
  isOpen: true
@@ -362,20 +273,17 @@ function ImageSelector(props) {
362
273
  }
363
274
  }, /*#__PURE__*/_react.default.createElement("div", {
364
275
  ref: contentWrapperRef
365
- }, /*#__PURE__*/_react.default.createElement(ImageSearchBox, {
276
+ }, /*#__PURE__*/_react.default.createElement(SearchBox, {
366
277
  onChange: onSearchBoxChange
367
- }), /*#__PURE__*/_react.default.createElement(ImageSelectionWrapper, null, /*#__PURE__*/_react.default.createElement("div", null, searchResult), !!selected.length && /*#__PURE__*/_react.default.createElement(SeparationLine, null), /*#__PURE__*/_react.default.createElement(ImageMetaGrids, {
278
+ }), /*#__PURE__*/_react.default.createElement(MainBlock, null, searchResult, selected.length > 0 && /*#__PURE__*/_react.default.createElement(SeparationLine, null), /*#__PURE__*/_react.default.createElement(ImageMetaGrids, {
368
279
  imageMetas: selected,
369
- onChange: onImageMetaChange,
280
+ onChange: changeSelectedImage,
370
281
  enableCaption: enableCaption,
371
- enableUrl: enableUrl
372
- })), /*#__PURE__*/_react.default.createElement(ImageBlockMetaWrapper, null, (enableDelay || enableAlignment) && /*#__PURE__*/_react.default.createElement(SeparationLine, null), enableDelay && /*#__PURE__*/_react.default.createElement(DelayInput, {
373
- delay: delay,
374
- onChange: onDealyChange
375
- }), enableAlignment && /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
282
+ enableDelete: enableMultiSelect
283
+ })), enableAlignment && /*#__PURE__*/_react.default.createElement(_alignSelector.AlignSelector, {
376
284
  align: align,
377
285
  options: options,
378
286
  onChange: onAlignSelectChange,
379
287
  onOpen: onAlignSelectOpen
380
- })))));
288
+ }))));
381
289
  }
@@ -20,21 +20,16 @@ function SlideshowButton(props) {
20
20
  const promptForImageSelector = () => {
21
21
  setToShowImageSelector(true);
22
22
  };
23
- const onImageSelectorChange = (selected, align, delay) => {
23
+ const onImageSelectorChange = (selected, alignment, delay) => {
24
24
  if (selected.length === 0) {
25
25
  setToShowImageSelector(false);
26
26
  return;
27
27
  }
28
28
  const contentState = editorState.getCurrentContent();
29
29
  const contentStateWithEntity = contentState.createEntity('SLIDESHOW', 'IMMUTABLE', {
30
- alignment: align,
30
+ alignment,
31
31
  delay,
32
- images: selected.map(ele => {
33
- return {
34
- ...(ele === null || ele === void 0 ? void 0 : ele.image),
35
- desc: ele === null || ele === void 0 ? void 0 : ele.desc
36
- };
37
- })
32
+ images: selected
38
33
  });
39
34
  const entityKey = contentStateWithEntity.getLastCreatedEntityKey();
40
35
  const newEditorState = _draftJs.EditorState.set(editorState, {
@@ -49,8 +44,8 @@ function SlideshowButton(props) {
49
44
  return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, toShowImageSelector && /*#__PURE__*/_react.default.createElement(ImageSelector, {
50
45
  onChange: onImageSelectorChange,
51
46
  enableCaption: true,
52
- enableDelay: false,
53
- enableMultiSelect: true
47
+ enableMultiSelect: true,
48
+ enableAlignment: false
54
49
  }), /*#__PURE__*/_react.default.createElement("div", {
55
50
  className: className,
56
51
  onClick: promptForImageSelector
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kids-reporter/draft-editor",
3
- "version": "0.4.12",
3
+ "version": "0.4.14",
4
4
  "description": "",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -23,7 +23,7 @@
23
23
  ],
24
24
  "license": "MIT",
25
25
  "dependencies": {
26
- "@kids-reporter/draft-renderer": "^0.4.12",
26
+ "@kids-reporter/draft-renderer": "^0.4.14",
27
27
  "@twreporter/errors": "^1.1.2",
28
28
  "draft-js": "^0.11.7"
29
29
  },
@@ -1,62 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.AlignSelector = AlignSelector;
7
- var _react = _interopRequireWildcard(require("react"));
8
- var _styledComponents = _interopRequireDefault(require("styled-components"));
9
- var _fields = require("@keystone-ui/fields");
10
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
11
- function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
12
- function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
13
- const Label = _styledComponents.default.label`
14
- display: block;
15
- margin: 10px 0;
16
- font-weight: 600;
17
- `;
18
- const AlignSelect = (0, _styledComponents.default)(_fields.Select)`
19
- ${({
20
- menuHeight
21
- }) => {
22
- return `margin-bottom: ${menuHeight}px;`;
23
- }}
24
- `;
25
- function AlignSelector(props) {
26
- const [isOpen, setIsOpen] = (0, _react.useState)(false);
27
- const [menuHeight, setMenuHeight] = (0, _react.useState)(0);
28
- const {
29
- align,
30
- options,
31
- onChange,
32
- onOpen
33
- } = props;
34
- (0, _react.useEffect)(() => {
35
- const selectMenu = document.querySelector('.css-nabggt-menu');
36
- if (selectMenu) {
37
- const styles = window.getComputedStyle(selectMenu);
38
- const margin = parseFloat(styles['marginTop']) + parseFloat(styles['marginBottom']);
39
- setMenuHeight(selectMenu.offsetHeight + margin);
40
- } else {
41
- setMenuHeight(0);
42
- }
43
- if (isOpen && onOpen) {
44
- onOpen();
45
- }
46
- }, [isOpen]);
47
- return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(Label, {
48
- htmlFor: "alignment"
49
- }, "\u5C0D\u9F4A"), /*#__PURE__*/_react.default.createElement(AlignSelect, {
50
- id: "alignment"
51
- // default align === undefined
52
- ,
53
- value: options.find(option => option.value === align),
54
- options: options,
55
- onChange: option => {
56
- onChange(option.value);
57
- },
58
- onMenuOpen: () => setIsOpen(true),
59
- onMenuClose: () => setIsOpen(false),
60
- menuHeight: menuHeight
61
- }));
62
- }