easy3wui 2.0.13 → 2.0.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.
package/assets/index.css CHANGED
@@ -1455,7 +1455,7 @@ s {
1455
1455
  #Easy3wMButton {
1456
1456
  background: #fff;
1457
1457
  }
1458
- #Easy3wMButton :global .adm-space-item {
1458
+ #Easy3wMButton .adm-space-item {
1459
1459
  -ms-flex-positive: 1;
1460
1460
  flex-grow: 1;
1461
1461
  }
@@ -1500,7 +1500,7 @@ s {
1500
1500
  bottom: 0;
1501
1501
  left: 0;
1502
1502
  right: 0;
1503
- z-index: 999;
1503
+ z-index: 9999;
1504
1504
  }
1505
1505
  #Easy3wMSpin .spinLoading {
1506
1506
  position: relative;
@@ -1518,5 +1518,5 @@ s {
1518
1518
  padding: 40px 0 0 0;
1519
1519
  }
1520
1520
  #Easy3wMCard .adm-card-header-title {
1521
- --adm-font-size-7: 14;
1521
+ --adm-font-size-7: 14px;
1522
1522
  }
@@ -1,7 +1,7 @@
1
1
  #Easy3wMButton {
2
2
  background: #fff;
3
3
  }
4
- #Easy3wMButton :global .adm-space-item {
4
+ #Easy3wMButton .adm-space-item {
5
5
  -ms-flex-positive: 1;
6
6
  flex-grow: 1;
7
7
  }
package/assets/mCard.css CHANGED
@@ -1,3 +1,3 @@
1
1
  #Easy3wMCard .adm-card-header-title {
2
- --adm-font-size-7: 14;
2
+ --adm-font-size-7: 14px;
3
3
  }
@@ -0,0 +1,25 @@
1
+ #Easy3wMFormPage .pointer {
2
+ cursor: pointer;
3
+ }
4
+ #Easy3wMFormPage .pointerGray {
5
+ cursor: pointer;
6
+ color: #999;
7
+ }
8
+ #Easy3wMFormPage :global .adm-input-element {
9
+ border: 1px solid #d9d9d9;
10
+ }
11
+ #Easy3wMFormPage :global .adm-input-element:focus,
12
+ #Easy3wMFormPage :global .adm-input-element:hover {
13
+ border-color: var(--adm-color-primary);
14
+ }
15
+ #Easy3wMFormPage :global .adm-rate {
16
+ --star-size: 14px;
17
+ }
18
+ #Easy3wMFormPage :global .adm-radio,
19
+ #Easy3wMFormPage :global .adm-checkbox {
20
+ --icon-size: 14px;
21
+ --font-size: 14px;
22
+ }
23
+ #Easy3wMFormPage :global .adm-switch {
24
+ --height: 20.8px;
25
+ }
package/assets/mSpin.css CHANGED
@@ -5,7 +5,7 @@
5
5
  bottom: 0;
6
6
  left: 0;
7
7
  right: 0;
8
- z-index: 999;
8
+ z-index: 9999;
9
9
  }
10
10
  #Easy3wMSpin .spinLoading {
11
11
  position: relative;
@@ -1,7 +1,5 @@
1
1
  #Easy3wMButton {
2
- :global {
3
- .adm-space-item {
4
- flex-grow: 1;
5
- }
2
+ .adm-space-item {
3
+ flex-grow: 1;
6
4
  }
7
5
  }
@@ -24,10 +24,29 @@ var _react2 = _interopRequireDefault(_react);
24
24
 
25
25
  var _antdMobile = require('antd-mobile');
26
26
 
27
+ var _moment = require('moment');
28
+
29
+ var _moment2 = _interopRequireDefault(_moment);
30
+
31
+ var _numeral = require('numeral');
32
+
33
+ var _numeral2 = _interopRequireDefault(_numeral);
34
+
27
35
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
28
36
 
29
37
  var Item = _antdMobile.Form.Item;
30
38
 
39
+ var dateYearFormat = 'YYYY'; // 精度:年 2022
40
+ var dateMonthFormat = 'YYYY-MM'; // 精度:月 2022-07
41
+ var dateDayFormat = 'YYYY-MM-DD'; // 精度:日 2022-07-15
42
+ var dateHourFormat = 'YYYY-MM-DD HH'; // 精度:小时 2022-07-15 08
43
+ var dateMinuteFormat = 'YYYY-MM-DD HH:mm'; // 精度:分 2022-07-15 08:00
44
+ var dateSecondFormat = 'YYYY-MM-DD HH:mm:ss'; // 精度:秒 2022-07-15 08:00:00
45
+ var dateWeekFormat = 'YYYY-ww'; // 精度:周 2022-28
46
+ var dateWeekDayFormat = 'YYYY-ww-dddd'; // 精度:周-星期 2022-28-星期五
47
+ var dateWeekZHCNFormat = 'YYYY年ww周'; // 精度:周 2022-28
48
+ var dateWeekDayZHCNFormat = 'YYYY年ww周dddd'; // 精度:周-星期 2022-28-星期五
49
+
31
50
  var Easy3wMFormPage = function (_Component) {
32
51
  (0, _inherits3['default'])(Easy3wMFormPage, _Component);
33
52
 
@@ -36,20 +55,148 @@ var Easy3wMFormPage = function (_Component) {
36
55
 
37
56
  var _this = (0, _possibleConstructorReturn3['default'])(this, _Component.call(this, props));
38
57
 
39
- _this.renderItemChildren = function (item) {
58
+ _this.touchFormatData = function (item) {
40
59
  var fieldType = item.fieldType,
41
- childrenProps = item.childrenProps,
60
+ readFlag = item.readFlag,
61
+ _item$childrenProps = item.childrenProps,
62
+ childrenProps = _item$childrenProps === undefined ? {} : _item$childrenProps,
63
+ numberFormat = item.numberFormat;
64
+ var value = item.value;
65
+ var precision = childrenProps.precision;
66
+
67
+ if (value || value === false || value === 0) {
68
+ // value值存在 Boolean()值为false的7个特殊值 undefined, null, false, NaN, '', 0, -0
69
+ if (readFlag) {
70
+ // 只读
71
+ if (precision === 'year') {
72
+ // 时间:年
73
+ value = (0, _moment2['default'])(value).format(dateYearFormat);
74
+ } else if (precision === 'month') {
75
+ // 时间:月
76
+ value = (0, _moment2['default'])(value).format(dateMonthFormat);
77
+ } else if (precision === 'day') {
78
+ // 时间:天
79
+ value = (0, _moment2['default'])(value).format(dateDayFormat);
80
+ } else if (precision === 'hour') {
81
+ // 时间:时
82
+ value = (0, _moment2['default'])(value).format(dateHourFormat);
83
+ } else if (precision === 'minute') {
84
+ // 时间:分
85
+ value = (0, _moment2['default'])(value).format(dateMinuteFormat);
86
+ } else if (precision === 'second') {
87
+ // 时间:秒
88
+ value = (0, _moment2['default'])(value).format(dateSecondFormat);
89
+ } else if (precision === 'week') {
90
+ // 时间:周
91
+ value = (0, _moment2['default'])(value, dateWeekFormat).format(dateWeekZHCNFormat);
92
+ } else if (precision === 'week-day') {
93
+ // 时间:周-星期
94
+ value = (0, _moment2['default'])(value, dateWeekDayFormat).format(dateWeekDayZHCNFormat);
95
+ } else if (numberFormat) {
96
+ // 数字格式化千分位化
97
+ (0, _numeral2['default'])(value).format('0,0.00');
98
+ }
99
+ } else {
100
+ // 编辑
101
+ if (fieldType === 'datePicker' || fieldType === 'datePickerView') {
102
+ if (precision === 'week') {
103
+ // 时间:周
104
+ value = (0, _moment2['default'])(value, dateWeekFormat).format(dateDayFormat);
105
+ } else if (precision === 'week-day') {
106
+ // 时间:周-星期
107
+ value = (0, _moment2['default'])(value, dateWeekDayFormat).format(dateDayFormat);
108
+ }
109
+ value = new Date(value);
110
+ }
111
+ }
112
+ return value;
113
+ } else {
114
+ // value值不存在
115
+ return '';
116
+ }
117
+ };
118
+
119
+ _this.touchCascaderConfirm = function (value, fieldId) {
120
+ var _form$setFieldsValue;
121
+
122
+ var form = _this.props.form;
123
+
124
+ form.setFieldsValue((_form$setFieldsValue = {}, _form$setFieldsValue[fieldId] = value, _form$setFieldsValue));
125
+ };
126
+
127
+ _this.touchPickerConfirm = function (value, fieldId) {
128
+ var _form$setFieldsValue2;
129
+
130
+ var form = _this.props.form;
131
+
132
+ form.setFieldsValue((_form$setFieldsValue2 = {}, _form$setFieldsValue2[fieldId] = value, _form$setFieldsValue2));
133
+ };
134
+
135
+ _this.touchCascadePickerConfirm = function (value, fieldId) {
136
+ var _form$setFieldsValue3;
137
+
138
+ var form = _this.props.form;
139
+
140
+ form.setFieldsValue((_form$setFieldsValue3 = {}, _form$setFieldsValue3[fieldId] = value, _form$setFieldsValue3));
141
+ };
142
+
143
+ _this.touchDatePickerConfirm = function (value, fieldId) {
144
+ var _form$setFieldsValue4;
145
+
146
+ var form = _this.props.form;
147
+
148
+ form.setFieldsValue((_form$setFieldsValue4 = {}, _form$setFieldsValue4[fieldId] = value, _form$setFieldsValue4));
149
+ };
150
+
151
+ _this.renderItemChildren = function (item) {
152
+ var fieldId = item.fieldId,
153
+ fieldType = item.fieldType,
154
+ _item$childrenProps2 = item.childrenProps,
155
+ childrenProps = _item$childrenProps2 === undefined ? {} : _item$childrenProps2,
42
156
  label = item.label,
43
157
  options = item.options,
44
158
  element = item.element;
45
159
 
46
160
  if (fieldType === 'input') {
161
+ // 输入框
47
162
  return _react2['default'].createElement(_antdMobile.Input, (0, _extends3['default'])({ placeholder: '\u8BF7\u8F93\u5165' + label }, childrenProps));
48
163
  } else if (fieldType === 'cascaderView') {
164
+ // 都是单选,只有value
49
165
  return _react2['default'].createElement(_antdMobile.CascaderView, childrenProps);
50
166
  } else if (fieldType === 'cascader') {
51
- return _react2['default'].createElement(_antdMobile.Cascader, childrenProps);
167
+ // 都是单选,只有value
168
+ return _react2['default'].createElement(
169
+ _antdMobile.Cascader,
170
+ (0, _extends3['default'])({
171
+ onConfirm: function onConfirm(value) {
172
+ return _this.touchCascaderConfirm(value, fieldId);
173
+ } // 确认时触发
174
+ }, childrenProps),
175
+ function (items, actions) {
176
+ var labelValue = '';
177
+ var arrLabelValue = [];
178
+ items.map(function (obj) {
179
+ arrLabelValue.push(obj.label);
180
+ return '';
181
+ });
182
+ labelValue = arrLabelValue.join('-');
183
+ if (labelValue) {
184
+ return _react2['default'].createElement(
185
+ 'div',
186
+ { className: Easy3wMFormPageStyle.pointer, onClick: actions.open },
187
+ labelValue
188
+ );
189
+ } else {
190
+ return _react2['default'].createElement(
191
+ 'div',
192
+ { className: Easy3wMFormPageStyle.pointerGray, onClick: actions.open },
193
+ '\u8BF7\u9009\u62E9'
194
+ );
195
+ }
196
+ }
197
+ );
52
198
  } else if (fieldType === 'checkList') {
199
+ // 可单选可多选 multiple false(单选) true(多选)
53
200
  return _react2['default'].createElement(
54
201
  _antdMobile.CheckList,
55
202
  childrenProps,
@@ -64,6 +211,7 @@ var Easy3wMFormPage = function (_Component) {
64
211
  })
65
212
  );
66
213
  } else if (fieldType === 'checkbox') {
214
+ // 多选
67
215
  return _react2['default'].createElement(
68
216
  _antdMobile.Checkbox.Group,
69
217
  childrenProps,
@@ -80,15 +228,96 @@ var Easy3wMFormPage = function (_Component) {
80
228
  } else if (fieldType === 'pickerView') {
81
229
  return _react2['default'].createElement(_antdMobile.PickerView, childrenProps);
82
230
  } else if (fieldType === 'picker') {
83
- return _react2['default'].createElement(_antdMobile.Picker, childrenProps);
231
+ return _react2['default'].createElement(
232
+ _antdMobile.Picker,
233
+ (0, _extends3['default'])({
234
+ onConfirm: function onConfirm(value) {
235
+ return _this.touchPickerConfirm(value, fieldId);
236
+ } // 确认时触发
237
+ }, childrenProps),
238
+ function (items, actions) {
239
+ var labelValue = '';
240
+ var arrLabelValue = [];
241
+ items.map(function (obj) {
242
+ arrLabelValue.push(obj.label);
243
+ return '';
244
+ });
245
+ labelValue = arrLabelValue.join('-');
246
+ if (labelValue) {
247
+ return _react2['default'].createElement(
248
+ 'div',
249
+ { className: Easy3wMFormPageStyle.pointer, onClick: actions.open },
250
+ labelValue
251
+ );
252
+ } else {
253
+ return _react2['default'].createElement(
254
+ 'div',
255
+ { className: Easy3wMFormPageStyle.pointerGray, onClick: actions.open },
256
+ '\u8BF7\u9009\u62E9'
257
+ );
258
+ }
259
+ }
260
+ );
84
261
  } else if (fieldType === 'cascadePickerView') {
85
262
  return _react2['default'].createElement(_antdMobile.CascadePickerView, childrenProps);
86
263
  } else if (fieldType === 'cascadePicker') {
87
- return _react2['default'].createElement(_antdMobile.CascadePicker, childrenProps);
264
+ return _react2['default'].createElement(
265
+ _antdMobile.CascadePicker,
266
+ (0, _extends3['default'])({
267
+ onConfirm: function onConfirm(value) {
268
+ return _this.touchCascadePickerConfirm(value, fieldId);
269
+ } // 确认时触发
270
+ }, childrenProps),
271
+ function (items, actions) {
272
+ var labelValue = '';
273
+ var arrLabelValue = [];
274
+ items.map(function (obj) {
275
+ arrLabelValue.push(obj.label);
276
+ return '';
277
+ });
278
+ labelValue = arrLabelValue.join('-');
279
+ if (labelValue) {
280
+ return _react2['default'].createElement(
281
+ 'div',
282
+ { className: Easy3wMFormPageStyle.pointer, onClick: actions.open },
283
+ labelValue
284
+ );
285
+ } else {
286
+ return _react2['default'].createElement(
287
+ 'div',
288
+ { className: Easy3wMFormPageStyle.pointerGray, onClick: actions.open },
289
+ '\u8BF7\u9009\u62E9'
290
+ );
291
+ }
292
+ }
293
+ );
88
294
  } else if (fieldType === 'datePickerView') {
89
295
  return _react2['default'].createElement(_antdMobile.DatePickerView, childrenProps);
90
296
  } else if (fieldType === 'datePicker') {
91
- return _react2['default'].createElement(_antdMobile.DatePicker, childrenProps);
297
+ return _react2['default'].createElement(
298
+ _antdMobile.DatePicker,
299
+ (0, _extends3['default'])({
300
+ onConfirm: function onConfirm(value) {
301
+ return _this.touchDatePickerConfirm(value, fieldId);
302
+ } // 确认时触发
303
+ }, childrenProps),
304
+ function (items, actions) {
305
+ var strValue = _this.touchFormatData((0, _extends3['default'])({}, item, { value: items, readFlag: true }));
306
+ if (items) {
307
+ return _react2['default'].createElement(
308
+ 'div',
309
+ { className: Easy3wMFormPageStyle.pointer, onClick: actions.open },
310
+ strValue
311
+ );
312
+ } else {
313
+ return _react2['default'].createElement(
314
+ 'div',
315
+ { className: Easy3wMFormPageStyle.pointerGray, onClick: actions.open },
316
+ '\u8BF7\u9009\u62E9'
317
+ );
318
+ }
319
+ }
320
+ );
92
321
  } else if (fieldType === 'radio') {
93
322
  return _react2['default'].createElement(
94
323
  _antdMobile.Radio.Group,
@@ -106,15 +335,16 @@ var Easy3wMFormPage = function (_Component) {
106
335
  } else if (fieldType === 'rate') {
107
336
  return _react2['default'].createElement(_antdMobile.Rate, childrenProps);
108
337
  } else if (fieldType === 'selector') {
338
+ // 可多选,可单选 multiple true(多选) flase(单选)
109
339
  return _react2['default'].createElement(_antdMobile.Selector, childrenProps);
110
340
  } else if (fieldType === 'slider') {
111
341
  return _react2['default'].createElement(_antdMobile.Slider, childrenProps);
112
342
  } else if (fieldType === 'stepper') {
113
343
  return _react2['default'].createElement(_antdMobile.Stepper, childrenProps);
114
344
  } else if (fieldType === 'switch') {
115
- return _react2['default'].createElement(_antdMobile.Switch, childrenProps);
345
+ return _react2['default'].createElement(_antdMobile.Switch, (0, _extends3['default'])({ defaultChecked: item.value }, childrenProps));
116
346
  } else if (fieldType === 'textArea') {
117
- return _react2['default'].createElement(_antdMobile.TextArea, childrenProps);
347
+ return _react2['default'].createElement(_antdMobile.TextArea, (0, _extends3['default'])({ placeholder: '\u8BF7\u8F93\u5165' + label }, childrenProps));
118
348
  } else if (fieldType === 'else') {
119
349
  return element;
120
350
  }
@@ -125,6 +355,24 @@ var Easy3wMFormPage = function (_Component) {
125
355
  }
126
356
 
127
357
  Easy3wMFormPage.prototype.componentWillUnmount = function componentWillUnmount() {};
358
+ // 数据格式化
359
+
360
+ // ------------------------------------- Cascader start ------------------------------------------------------
361
+ // 确认时触发
362
+
363
+ // ------------------------------------- Cascader end --------------------------------------------------------
364
+ // ------------------------------------- Picker start ------------------------------------------------------
365
+ // 确认时触发
366
+
367
+ // ------------------------------------- Picker end --------------------------------------------------------
368
+ // ------------------------------------- CascadePicker start ------------------------------------------------------
369
+ // 确认时触发
370
+
371
+ // ------------------------------------- CascadePicker end --------------------------------------------------------
372
+ // ------------------------------------- DatePicker start ------------------------------------------------------
373
+ // 确认时触发
374
+
375
+ // ------------------------------------- DatePicker end --------------------------------------------------------
128
376
  // 渲染item的子内容
129
377
 
130
378
 
@@ -142,21 +390,21 @@ var Easy3wMFormPage = function (_Component) {
142
390
  form = _props.form;
143
391
  // fromProps 表单参数
144
392
  // itemProps 表单项参数
393
+ // childrenProps 输入框参数
145
394
  // rowItems 显示字段
146
395
  // hiddenItems 隐藏字段
147
- // <Easy3wFormPage rowItems={rowItems} form={form} hiddenItems={hiddenItems} mixColFlag />
148
396
 
149
397
  return _react2['default'].createElement(
150
398
  _antdMobile.Form,
151
- (0, _extends3['default'])({ layout: 'horizontal', form: form }, formProps),
399
+ (0, _extends3['default'])({ id: 'Easy3wMFormPage', layout: 'horizontal', form: form }, formProps),
152
400
  rowItems.map(function (item) {
153
401
  var label = item.label,
154
402
  fieldId = item.fieldId,
155
- value = item.value,
156
403
  required = item.required,
157
404
  readFlag = item.readFlag,
158
405
  disableFlag = item.disableFlag,
159
406
  cmptPros = item.cmptPros;
407
+ var value = item.value;
160
408
 
161
409
  var addrules = [{ required: required, message: requiredMessage || '\u8BF7\u586B\u5199' + label }];
162
410
  if (cmptPros && cmptPros.rules) {
@@ -164,6 +412,7 @@ var Easy3wMFormPage = function (_Component) {
164
412
 
165
413
  addrules.push.apply(addrules, rules);
166
414
  }
415
+ value = _this2.touchFormatData(item);
167
416
  if (readFlag) {
168
417
  return _react2['default'].createElement(
169
418
  Item,
@@ -0,0 +1,30 @@
1
+ #Easy3wMFormPage {
2
+ .pointer { // 鼠标形状:手形
3
+ cursor: pointer;
4
+ }
5
+ .pointerGray { // 鼠标形状:手形 文字:灰色
6
+ cursor: pointer;
7
+ color: #999
8
+ }
9
+ :global {
10
+ .adm-input-element {
11
+ border: 1px solid #d9d9d9;
12
+ }
13
+ .adm-input-element:focus, .adm-input-element:hover {
14
+ border-color: var(--adm-color-primary);
15
+ }
16
+ .adm-rate {
17
+ --star-size: 14px
18
+ }
19
+ .adm-radio, .adm-checkbox {
20
+ --icon-size: 14px;
21
+ --font-size: 14px;
22
+ }
23
+ .adm-switch {
24
+ --height: 20.8px;
25
+ }
26
+ .adm-slider {
27
+ padding: 0;
28
+ }
29
+ }
30
+ }
@@ -51,6 +51,26 @@ var Easy3wMGridPage = function (_Component) {
51
51
 
52
52
  var _this = (0, _possibleConstructorReturn3['default'])(this, _Component.call(this, props));
53
53
 
54
+ _this.touchFormatData = function (dataItem, columnItem) {
55
+ var key = columnItem.key,
56
+ dataIndex = columnItem.dataIndex,
57
+ numberFormat = columnItem.numberFormat;
58
+
59
+ var fieldId = dataIndex || key;
60
+ var value = dataItem[fieldId];
61
+ if (value || value === false || value === 0) {
62
+ // value值存在 Boolean()值为false的7个特殊值 undefined, null, false, NaN, '', 0, -0
63
+ if (numberFormat) {
64
+ var thousandthValue = numeral(dataItem[fieldId]).format('0,0.00');
65
+ value = thousandthValue;
66
+ }
67
+ return value;
68
+ } else {
69
+ // value值不存在
70
+ return '';
71
+ }
72
+ };
73
+
54
74
  _this.renderEasy3wMGridPage = function (dataList) {
55
75
  var _this$props = _this.props,
56
76
  _this$props$panelProp = _this$props.panelProps,
@@ -88,14 +108,14 @@ var Easy3wMGridPage = function (_Component) {
88
108
  dataIndex = column.dataIndex;
89
109
 
90
110
  var fieldId = dataIndex || key;
91
- var extra = column.render ? column.render(item[fieldId], item) : item[fieldId];
111
+ var extra = column.render ? column.render(item[fieldId], item) : _this.touchFormatData(item, column);
92
112
  if (column.children) {
93
113
  return _react2['default'].createElement(
94
114
  _Easy3wMList2['default'],
95
115
  (0, _extends3['default'])({}, listProps, { header: title }),
96
116
  column.children.map(function (childrenColumn) {
97
- var childrenFieldId = dataIndex || key;
98
- var childrenExtra = childrenColumn.render ? childrenColumn.render(item[fieldId], item) : item[childrenFieldId];
117
+ var childrenFieldId = childrenColumn.dataIndex || childrenColumn.key;
118
+ var childrenExtra = childrenColumn.render ? childrenColumn.render(item[childrenFieldId], item) : _this.touchFormatData(item, childrenColumn);
99
119
  // const {} = childrenItem;
100
120
  return _react2['default'].createElement(
101
121
  Item,
@@ -127,6 +147,8 @@ var Easy3wMGridPage = function (_Component) {
127
147
  }
128
148
 
129
149
  Easy3wMGridPage.prototype.componentWillUnmount = function componentWillUnmount() {};
150
+ // 数据格式化
151
+
130
152
  // 渲染列表
131
153
 
132
154
 
@@ -5,7 +5,7 @@
5
5
  bottom: 0;
6
6
  left: 0;
7
7
  right: 0;
8
- z-index: 999;
8
+ z-index: 9999;
9
9
  .spinLoading { // 内容
10
10
  position: relative;
11
11
  left: 50%;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "easy3wui",
3
- "version": "2.0.13",
3
+ "version": "2.0.14",
4
4
  "description": "easy3wui components for react",
5
5
  "keywords": [
6
6
  "react",
@@ -95,7 +95,8 @@
95
95
  "roadhog-api-doc": "^1.0.3",
96
96
  "rollbar": "^2.3.1",
97
97
  "stylelint": "^8.1.0",
98
- "stylelint-config-standard": "^17.0.0"
98
+ "stylelint-config-standard": "^17.0.0",
99
+ "sockjs-client": "1.1.5"
99
100
  },
100
101
  "pre-commit": [
101
102
  "lint"