decap-cms-widget-list 3.3.0 → 3.5.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/CHANGELOG.md +10 -0
- package/dist/decap-cms-widget-list.js +4 -4
- package/dist/decap-cms-widget-list.js.LICENSE.txt +2 -12
- package/dist/decap-cms-widget-list.js.map +1 -1
- package/dist/esm/ListControl.js +445 -447
- package/dist/esm/index.js +4 -8
- package/dist/esm/schema.js +6 -0
- package/package.json +3 -3
- package/src/ListControl.js +10 -1
- package/src/__tests__/ListControl.spec.js +58 -58
- package/src/__tests__/__snapshots__/ListControl.spec.js.snap +120 -78
- package/src/schema.js +2 -0
package/dist/esm/index.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
-
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
-
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
5
|
-
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
1
|
import DecapCmsWidgetObject from 'decap-cms-widget-object';
|
|
7
2
|
import controlComponent from './ListControl';
|
|
8
3
|
import schema from './schema';
|
|
9
4
|
const previewComponent = DecapCmsWidgetObject.previewComponent;
|
|
10
5
|
function Widget(opts = {}) {
|
|
11
|
-
return
|
|
6
|
+
return {
|
|
12
7
|
name: 'list',
|
|
13
8
|
controlComponent,
|
|
14
9
|
previewComponent,
|
|
15
|
-
schema
|
|
16
|
-
|
|
10
|
+
schema,
|
|
11
|
+
...opts
|
|
12
|
+
};
|
|
17
13
|
}
|
|
18
14
|
export const DecapCmsWidgetList = {
|
|
19
15
|
Widget,
|
package/dist/esm/schema.js
CHANGED
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "decap-cms-widget-list",
|
|
3
3
|
"description": "Widget for editing lists in Decap CMS.",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.5.0",
|
|
5
5
|
"homepage": "https://www.decapcms.org/docs/widgets/#list",
|
|
6
6
|
"repository": "https://github.com/decaporg/decap-cms/tree/main/packages/decap-cms-widget-list",
|
|
7
7
|
"bugs": "https://github.com/decaporg/decap-cms/issues",
|
|
@@ -34,8 +34,8 @@
|
|
|
34
34
|
"immutable": "^3.7.6",
|
|
35
35
|
"lodash": "^4.17.11",
|
|
36
36
|
"prop-types": "^15.7.2",
|
|
37
|
-
"react": "^
|
|
37
|
+
"react": "^19.1.0",
|
|
38
38
|
"react-immutable-proptypes": "^2.1.0"
|
|
39
39
|
},
|
|
40
|
-
"gitHead": "
|
|
40
|
+
"gitHead": "13afe6686b32f7c03b4819d343d787c63f13664f"
|
|
41
41
|
}
|
package/src/ListControl.js
CHANGED
|
@@ -4,7 +4,9 @@ import ImmutablePropTypes from 'react-immutable-proptypes';
|
|
|
4
4
|
import styled from '@emotion/styled';
|
|
5
5
|
import { css, ClassNames } from '@emotion/react';
|
|
6
6
|
import { List, Map, fromJS } from 'immutable';
|
|
7
|
-
import
|
|
7
|
+
import partial from 'lodash/partial';
|
|
8
|
+
import isEmpty from 'lodash/isEmpty';
|
|
9
|
+
import uniqueId from 'lodash/uniqueId';
|
|
8
10
|
import { v4 as uuid } from 'uuid';
|
|
9
11
|
import DecapCmsWidgetObject from 'decap-cms-widget-object';
|
|
10
12
|
import {
|
|
@@ -219,6 +221,11 @@ export default class ListControl extends React.Component {
|
|
|
219
221
|
};
|
|
220
222
|
}
|
|
221
223
|
|
|
224
|
+
componentDidMount() {
|
|
225
|
+
// Manually validate PropTypes - React 19 breaking change
|
|
226
|
+
PropTypes.checkPropTypes(ListControl.propTypes, this.props, 'prop', 'ListControl');
|
|
227
|
+
}
|
|
228
|
+
|
|
222
229
|
valueToString = value => {
|
|
223
230
|
let stringValue;
|
|
224
231
|
if (List.isList(value) || Array.isArray(value)) {
|
|
@@ -675,6 +682,8 @@ export default class ListControl extends React.Component {
|
|
|
675
682
|
onCollapseToggle={partial(this.handleItemCollapseToggle, index)}
|
|
676
683
|
dragHandle={DragHandle}
|
|
677
684
|
id={key}
|
|
685
|
+
allowRemove={field.get('allow_remove', true)}
|
|
686
|
+
allowReorder={field.get('allow_reorder', true)}
|
|
678
687
|
onRemove={partial(this.handleRemove, index)}
|
|
679
688
|
data-testid={`styled-list-item-top-bar-${key}`}
|
|
680
689
|
/>
|
|
@@ -104,11 +104,11 @@ describe('ListControl', () => {
|
|
|
104
104
|
/>,
|
|
105
105
|
);
|
|
106
106
|
|
|
107
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
108
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
107
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
108
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
109
109
|
|
|
110
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
111
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
110
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
111
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
112
112
|
|
|
113
113
|
expect(asFragment()).toMatchSnapshot();
|
|
114
114
|
});
|
|
@@ -133,11 +133,11 @@ describe('ListControl', () => {
|
|
|
133
133
|
/>,
|
|
134
134
|
);
|
|
135
135
|
|
|
136
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
137
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
136
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
137
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
138
138
|
|
|
139
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
140
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
139
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
140
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
141
141
|
|
|
142
142
|
expect(asFragment()).toMatchSnapshot();
|
|
143
143
|
});
|
|
@@ -162,19 +162,19 @@ describe('ListControl', () => {
|
|
|
162
162
|
/>,
|
|
163
163
|
);
|
|
164
164
|
|
|
165
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
166
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
165
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
166
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
167
167
|
|
|
168
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
169
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
168
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
169
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
170
170
|
|
|
171
171
|
fireEvent.click(getByTestId('expand-button'));
|
|
172
172
|
|
|
173
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
174
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
173
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
174
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
175
175
|
|
|
176
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
177
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
176
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
177
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
178
178
|
});
|
|
179
179
|
|
|
180
180
|
it('should collapse a single item on collapse item click', () => {
|
|
@@ -197,19 +197,19 @@ describe('ListControl', () => {
|
|
|
197
197
|
/>,
|
|
198
198
|
);
|
|
199
199
|
|
|
200
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
201
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
200
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
201
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
202
202
|
|
|
203
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
204
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
203
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
204
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
205
205
|
|
|
206
206
|
fireEvent.click(getByTestId('styled-list-item-top-bar-0'));
|
|
207
207
|
|
|
208
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
209
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
208
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
209
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
210
210
|
|
|
211
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
212
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
211
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
212
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
213
213
|
});
|
|
214
214
|
|
|
215
215
|
it('should expand all items on top bar expand click', () => {
|
|
@@ -232,19 +232,19 @@ describe('ListControl', () => {
|
|
|
232
232
|
/>,
|
|
233
233
|
);
|
|
234
234
|
|
|
235
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
236
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
235
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
236
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
237
237
|
|
|
238
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
239
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
238
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
239
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
240
240
|
|
|
241
241
|
fireEvent.click(getByTestId('expand-button'));
|
|
242
242
|
|
|
243
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
244
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
243
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
244
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
245
245
|
|
|
246
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
247
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
246
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
247
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
248
248
|
});
|
|
249
249
|
|
|
250
250
|
it('should expand a single item on expand item click', () => {
|
|
@@ -267,19 +267,19 @@ describe('ListControl', () => {
|
|
|
267
267
|
/>,
|
|
268
268
|
);
|
|
269
269
|
|
|
270
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
271
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
270
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
271
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
272
272
|
|
|
273
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
274
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
273
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
274
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
275
275
|
|
|
276
276
|
fireEvent.click(getByTestId('styled-list-item-top-bar-0'));
|
|
277
277
|
|
|
278
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
279
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
278
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
279
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
280
280
|
|
|
281
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
282
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
281
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
282
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
283
283
|
});
|
|
284
284
|
|
|
285
285
|
it('should use widget name when no summary or label are configured for mixed types', () => {
|
|
@@ -477,11 +477,11 @@ describe('ListControl', () => {
|
|
|
477
477
|
/>,
|
|
478
478
|
);
|
|
479
479
|
|
|
480
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
481
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
480
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
481
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
482
482
|
|
|
483
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
484
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
483
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
484
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
485
485
|
|
|
486
486
|
expect(asFragment()).toMatchSnapshot();
|
|
487
487
|
});
|
|
@@ -501,11 +501,11 @@ describe('ListControl', () => {
|
|
|
501
501
|
/>,
|
|
502
502
|
);
|
|
503
503
|
|
|
504
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
505
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
504
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
505
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
506
506
|
|
|
507
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
508
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
507
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
508
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
509
509
|
|
|
510
510
|
expect(asFragment()).toMatchSnapshot();
|
|
511
511
|
});
|
|
@@ -535,11 +535,11 @@ describe('ListControl', () => {
|
|
|
535
535
|
|
|
536
536
|
fireEvent.click(getByTestId('expand-button'));
|
|
537
537
|
|
|
538
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
539
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
538
|
+
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed');
|
|
539
|
+
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed');
|
|
540
540
|
|
|
541
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
542
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
541
|
+
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed');
|
|
542
|
+
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed');
|
|
543
543
|
});
|
|
544
544
|
|
|
545
545
|
it('should render list with fields with collapse = "false" and default minimize_collapsed = "true"', () => {
|
|
@@ -558,11 +558,11 @@ describe('ListControl', () => {
|
|
|
558
558
|
/>,
|
|
559
559
|
);
|
|
560
560
|
|
|
561
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
562
|
-
expect(getByTestId('styled-list-item-top-bar-1')).toHaveAttribute('collapsed'
|
|
561
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
562
|
+
expect(getByTestId('styled-list-item-top-bar-1')).not.toHaveAttribute('collapsed');
|
|
563
563
|
|
|
564
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
565
|
-
expect(getByTestId('object-control-1')).toHaveAttribute('collapsed'
|
|
564
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
565
|
+
expect(getByTestId('object-control-1')).not.toHaveAttribute('collapsed');
|
|
566
566
|
|
|
567
567
|
expect(asFragment()).toMatchSnapshot();
|
|
568
568
|
|
|
@@ -594,8 +594,8 @@ describe('ListControl', () => {
|
|
|
594
594
|
|
|
595
595
|
rerender(<ListControl {...props} field={field} value={fromJS([{}])} />);
|
|
596
596
|
|
|
597
|
-
expect(getByTestId('styled-list-item-top-bar-0')).toHaveAttribute('collapsed'
|
|
598
|
-
expect(getByTestId('object-control-0')).toHaveAttribute('collapsed'
|
|
597
|
+
expect(getByTestId('styled-list-item-top-bar-0')).not.toHaveAttribute('collapsed');
|
|
598
|
+
expect(getByTestId('object-control-0')).not.toHaveAttribute('collapsed');
|
|
599
599
|
|
|
600
600
|
expect(asFragment()).toMatchSnapshot();
|
|
601
601
|
});
|