UNPKG

13.8 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.default = void 0;
7
8var _react = _interopRequireWildcard(require("react"));
9
10var _propTypes = _interopRequireDefault(require("prop-types"));
11
12var _lodash = _interopRequireDefault(require("lodash"));
13
14var _moment = _interopRequireDefault(require("moment"));
15
16var _Dropdown = _interopRequireDefault(require("./Dropdown"));
17
18var _Grid = _interopRequireDefault(require("./Grid"));
19
20var _Cell = _interopRequireDefault(require("./Cell"));
21
22var _Responsive = require("./Responsive");
23
24var _Visibility = _interopRequireDefault(require("./Visibility"));
25
26var _CheckboxOnly = _interopRequireDefault(require("./CheckboxOnly"));
27
28var _InputOnly = _interopRequireDefault(require("./InputOnly"));
29
30var _ThrottledTextInput = _interopRequireDefault(require("./ThrottledTextInput"));
31
32var _Icon = _interopRequireDefault(require("./Icon"));
33
34var _Text = _interopRequireDefault(require("./Text"));
35
36var _Spacing = _interopRequireDefault(require("./Spacing"));
37
38var _SummaryItem = _interopRequireDefault(require("./SummaryItem"));
39
40var _withStyles = require("../helpers/withStyles");
41
42function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
43
44function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = Object.defineProperty && Object.getOwnPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : {}; if (desc.get || desc.set) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } } newObj.default = obj; return newObj; } }
45
46function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
47
48function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
49
50function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
51
52function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
53
54function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
55
56function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
57
58function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
59
60function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
61
62function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
63
64function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
65
66function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
67
68function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
69
70function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
71
72function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
73
74var propTypes = {
75 data: _propTypes.default.array.isRequired,
76 loading: _propTypes.default.bool,
77 dateFormat: _propTypes.default.string,
78 divided: _propTypes.default.bool,
79 searchPlaceholder: _propTypes.default.string,
80 maxResults: _propTypes.default.number,
81 noResultComponent: _propTypes.default.object,
82 customActions: _propTypes.default.any,
83 sortOptions: _propTypes.default.arrayOf(_propTypes.default.objectOf(_propTypes.default.string)),
84 filterFor: _propTypes.default.arrayOf(_propTypes.default.oneOf(['title', 'description'])),
85 clean: _propTypes.default.bool,
86 onItemAction: _propTypes.default.func,
87 paginate: _propTypes.default.bool,
88 icons: _propTypes.default.arrayOf(_propTypes.default.string),
89 withFilter: _propTypes.default.bool,
90 sortable: _propTypes.default.bool,
91 selectableItems: _propTypes.default.bool
92};
93var defaultProps = {
94 data: [],
95 dateFormat: 'YYYY-MM-DD hh:mm:ss',
96 maxResults: 0,
97 noResultComponent: _react.default.createElement("div", null, "Nenhum resultado..."),
98 searchPlaceholder: 'buscar...',
99 sortOptions: [{
100 label: 'Data de criação',
101 value: 'createdAt'
102 }, {
103 label: 'Última atualização',
104 value: 'updatedAt'
105 }, {
106 label: 'Título',
107 value: 'title'
108 }],
109 filterFor: ['title', 'description']
110};
111
112var SummaryList =
113/*#__PURE__*/
114function (_Component) {
115 _inherits(SummaryList, _Component);
116
117 function SummaryList(props) {
118 var _this;
119
120 _classCallCheck(this, SummaryList);
121
122 _this = _possibleConstructorReturn(this, _getPrototypeOf(SummaryList).call(this, props));
123 _this.state = {
124 checked: [],
125 sort: props.sortOptions ? props.sortOptions[0] : null,
126 filterString: ''
127 };
128 return _this;
129 }
130
131 _createClass(SummaryList, [{
132 key: "filterList",
133 value: function filterList(data) {
134 var _this$props = this.props,
135 filterFor = _this$props.filterFor,
136 withFilter = _this$props.withFilter;
137 var filterString = this.state.filterString;
138
139 if (withFilter && Array.isArray(filterFor) && filterFor.length > 0 && filterString.length > 2) {
140 return data.filter(function (item) {
141 return filterFor.some(function (filter) {
142 try {
143 return item[filter].toLowerCase().search(filterString.toLowerCase()) !== -1;
144 } catch (e) {
145 return false;
146 }
147 });
148 });
149 }
150
151 return data;
152 }
153 }, {
154 key: "sortList",
155 value: function sortList(data) {
156 var _this2 = this;
157
158 var sort = this.state.sort;
159
160 if (sort.value && data && Array.isArray(data) && data.length > 0 && data[0][sort.value] != null) {
161 var isTime = (0, _moment.default)(data[0][sort.value], this.props.dateFormat).isValid();
162 return _lodash.default.orderBy(data, function (item) {
163 return isTime ? (0, _moment.default)(item[sort.value], _this2.props.dateFormat).valueOf() : item[sort.value];
164 }, isTime ? ['desc'] : ['asc']);
165 }
166
167 return data;
168 }
169 }, {
170 key: "toggleItem",
171 value: function toggleItem(id) {
172 var checked = _toConsumableArray(this.state.checked);
173
174 if (checked.includes(id)) {
175 checked.splice(id, 1);
176 } else {
177 checked.push(id);
178 }
179
180 this.setState({
181 checked: checked
182 });
183 }
184 }, {
185 key: "render",
186 value: function render() {
187 var _this3 = this;
188
189 var _this$props2 = this.props,
190 data = _this$props2.data,
191 loading = _this$props2.loading,
192 divided = _this$props2.divided,
193 searchPlaceholder = _this$props2.searchPlaceholder,
194 noResultComponent = _this$props2.noResultComponent,
195 maxResults = _this$props2.maxResults,
196 customActions = _this$props2.customActions,
197 sortOptions = _this$props2.sortOptions,
198 clean = _this$props2.clean,
199 paginate = _this$props2.paginate,
200 onItemAction = _this$props2.onItemAction,
201 icons = _this$props2.icons,
202 withFilter = _this$props2.withFilter,
203 selectableItems = _this$props2.selectableItems,
204 sortable = _this$props2.sortable,
205 styles = _this$props2.styles,
206 css = _this$props2.css;
207 var checked = this.state.checked;
208 var listPlaceholder = loading ? _react.default.createElement(_react.Fragment, null, _toConsumableArray(Array(maxResults ? maxResults : 10)).map(function (e, i) {
209 return _react.default.createElement(_SummaryItem.default, {
210 divided: divided,
211 key: i,
212 loading: true
213 });
214 })) : _react.default.createElement("div", null, noResultComponent);
215 return _react.default.createElement("div", css(styles.summaryList, clean && styles.summaryList_clean, checked.length > 0 && styles.summaryList_edit), (withFilter || sortable || selectableItems) && _react.default.createElement("div", css(styles.summaryList__header), _react.default.createElement(_Grid.default, {
216 resetSpacing: true
217 }, selectableItems && _react.default.createElement(_Cell.default, {
218 shrink: true
219 }, _react.default.createElement(_CheckboxOnly.default, null)), withFilter && _react.default.createElement(_Responsive.Responsive, {
220 showFor: "large"
221 }, _react.default.createElement(_Cell.default, {
222 auto: true
223 }, _react.default.createElement("div", css(styles.summaryList__header__filter), _react.default.createElement(_ThrottledTextInput.default, {
224 debouncedOnChange: function debouncedOnChange(value) {
225 return _this3.setState({
226 filterString: value
227 });
228 },
229 debounceTimeoutMs: 500
230 }, _react.default.createElement(_InputOnly.default, {
231 name: "filterInput",
232 placeholder: searchPlaceholder,
233 shimmer: loading,
234 prefix: _react.default.createElement(_Icon.default, {
235 name: "search"
236 }),
237 removeMargins: true
238 }))))), customActions && _react.default.createElement(_Responsive.Responsive, {
239 showFor: "large"
240 }, _react.default.createElement(_Cell.default, {
241 shrink: true
242 }, customActions)), sortable && _react.default.createElement(_Cell.default, {
243 shrink: true
244 }, _react.default.createElement("span", null, _react.default.createElement(_Text.default, {
245 small: true,
246 inline: true,
247 loading: loading
248 }, "Ordernar por:"), _react.default.createElement(_Spacing.default, {
249 left: .1,
250 inline: true
251 }, _react.default.createElement(_Dropdown.default, {
252 button: true,
253 label: this.state.sort && this.state.sort.label,
254 options: sortOptions,
255 onSelectOption: function onSelectOption(value) {
256 return _this3.setState({
257 sort: value
258 });
259 },
260 shimmer: loading,
261 loading: loading,
262 closeOnSelect: true,
263 inverse: true,
264 compact: true,
265 noSpacing: true
266 })))))), _react.default.createElement("ul", css(styles.summaryList__list), data.length < 1 ? listPlaceholder : this.sortList(this.filterList(data)).map(function (item) {
267 if (item) {
268 return _react.default.createElement(_SummaryItem.default, {
269 key: item.id,
270 item: loading ? {} : item,
271 clean: clean,
272 divided: divided,
273 checked: checked.includes(item.id),
274 onAction: function onAction(action) {
275 return onItemAction(action, item.id);
276 },
277 onChange: function onChange() {
278 return _this3.toggleItem(item.id);
279 },
280 loading: loading,
281 selectable: selectableItems
282 }, icons ? _react.default.createElement(_react.Fragment, null, item.icons.map(function (icon) {
283 return _react.default.createElement("i", {
284 className: "icon-".concat(icon),
285 key: icon
286 });
287 })) : null);
288 } else {
289 return false;
290 }
291 })), _react.default.createElement(_Visibility.default, {
292 unmount: true,
293 showIf: paginate
294 }, "pagina\xE7\xE3o"));
295 }
296 }]);
297
298 return SummaryList;
299}(_react.Component);
300
301SummaryList.propTypes = propTypes;
302SummaryList.defaultProps = defaultProps;
303var SummaryListWithStyles = (0, _withStyles.withStyles)(function (_ref) {
304 var units = _ref.units,
305 color = _ref.color,
306 breakpoint = _ref.breakpoint;
307 return {
308 summaryList: {},
309 summaryList_clean: _defineProperty({}, breakpoint.mediumAndAbove, {//paddingLeft: units(2),
310 //paddingRight: units(2),
311 }),
312 summaryList_edit: {},
313 summaryList__header: {
314 paddingTop: 0,
315 paddingBottom: units(1.5),
316 borderBottomWidth: 1,
317 borderBottomStyle: 'solid',
318 borderBottomColor: color.blueGrayLight
319 },
320 summaryList__header__filter: {
321 maxWidth: units(24)
322 },
323 summaryList__list: {
324 margin: 0,
325 padding: 0,
326 listStyle: 'none'
327 }
328 };
329})(SummaryList);
330var _default = SummaryListWithStyles;
331exports.default = _default;
\No newline at end of file