UNPKG

react-formio

Version:

React renderer for form.io forms.

291 lines (243 loc) 9.25 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); var _get2 = require('lodash/get'); var _get3 = _interopRequireDefault(_get2); var _isFunction2 = require('lodash/isFunction'); var _isFunction3 = _interopRequireDefault(_isFunction2); var _isString2 = require('lodash/isString'); var _isString3 = _interopRequireDefault(_isString2); var _map2 = require('lodash/map'); var _map3 = _interopRequireDefault(_map2); var _propTypes = require('prop-types'); var _propTypes2 = _interopRequireDefault(_propTypes); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _constants = require('../constants'); var _types = require('../types'); var _utils = require('../utils'); var _Grid = require('./Grid'); var _Grid2 = _interopRequireDefault(_Grid); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } var FormGrid = function (_React$Component) { _inherits(FormGrid, _React$Component); function FormGrid() { var _ref; var _temp, _this, _ret; _classCallCheck(this, FormGrid); for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) { args[_key] = arguments[_key]; } return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = FormGrid.__proto__ || Object.getPrototypeOf(FormGrid)).call.apply(_ref, [this].concat(args))), _this), _this.onSort = function (_ref2) { var key = _ref2.key, sort = _ref2.sort; if ((0, _isFunction3.default)(sort)) { return sort(); } var _this$props = _this.props, currentSort = _this$props.forms.sort, getForms = _this$props.getForms; var sortKey = (0, _isString3.default)(sort) ? sort : key; var ascSort = sortKey; var descSort = '-' + sortKey; var noSort = ''; var nextSort = noSort; if (currentSort === ascSort) { nextSort = descSort; } else if (currentSort === descSort) { nextSort = noSort; } else { nextSort = ascSort; } getForms(1, { sort: nextSort }); }, _this.Cell = function (_ref3) { var form = _ref3.row, column = _ref3.column; var _this$props2 = _this.props, formAccess = _this$props2.formAccess, onAction = _this$props2.onAction, _this$props2$operatio = _this$props2.operations, operations = _this$props2$operatio === undefined ? [] : _this$props2$operatio; var access = formAccess(form); if (column.key === 'title') { return _react2.default.createElement( 'span', { style: { cursor: 'pointer' }, onClick: (0, _utils.stopPropagationWrapper)(function () { if (access.submission.create) { onAction(form, 'view'); } }) }, _react2.default.createElement( 'h5', null, form.title ) ); } else if (column.key === 'operations') { return _react2.default.createElement( 'div', null, operations.map(function (_ref4) { var action = _ref4.action, _ref4$buttonType = _ref4.buttonType, buttonType = _ref4$buttonType === undefined ? 'primary' : _ref4$buttonType, _ref4$icon = _ref4.icon, icon = _ref4$icon === undefined ? '' : _ref4$icon, _ref4$permissionsReso = _ref4.permissionsResolver, permissionsResolver = _ref4$permissionsReso === undefined ? function () { return true; } : _ref4$permissionsReso, _ref4$title = _ref4.title, title = _ref4$title === undefined ? '' : _ref4$title; return permissionsResolver(form) ? _react2.default.createElement( 'span', { className: 'btn btn-' + buttonType + ' btn-sm form-btn', onClick: (0, _utils.stopPropagationWrapper)(function () { return onAction(form, action); }), key: action }, icon ? _react2.default.createElement( 'span', null, _react2.default.createElement('i', { className: 'fa fa-' + icon }), '\xA0' ) : null, title ) : null; }) ); } return _react2.default.createElement( 'span', null, (0, _isFunction3.default)(column.value) ? column.value(form) : (0, _get3.default)(form, column.key, '') ); }, _temp), _possibleConstructorReturn(_this, _ret); } _createClass(FormGrid, [{ key: 'render', value: function render() { var _props = this.props, columns = _props.columns, _props$forms = _props.forms, forms = _props$forms.forms, limit = _props$forms.limit, _props$forms$paginati = _props$forms.pagination, page = _props$forms$paginati.page, numPages = _props$forms$paginati.numPages, total = _props$forms$paginati.total, sort = _props$forms.sort, getForms = _props.getForms, onAction = _props.onAction, onPageSizeChanged = _props.onPageSizeChanged, pageSizes = _props.pageSizes; var skip = (page - 1) * limit; var last = Math.min(skip + limit, total); return _react2.default.createElement(_Grid2.default, { Cell: this.Cell, activePage: page, columns: columns, emptyText: 'No forms found', firstItem: skip + 1, items: forms, lastItem: last, onAction: onAction, onPage: getForms, onPageSizeChanged: onPageSizeChanged, onSort: this.onSort, pageSize: limit, pageSizes: pageSizes, pages: numPages, sortOrder: sort, total: total }); } }]); return FormGrid; }(_react2.default.Component); FormGrid.propTypes = { columns: _types.Columns, formAccess: _propTypes2.default.func, forms: _propTypes2.default.object.isRequired, getForms: _propTypes2.default.func, onAction: _propTypes2.default.func, onPageSizeChanged: _propTypes2.default.func, operations: _types.Operations, pageSizes: _types.PageSizes }; FormGrid.defaultProps = { columns: [{ key: 'title', sort: true, title: 'Form', width: 8 }, { key: 'operations', title: 'Operations', width: 4 }], formAccess: function formAccess() { return { form: { create: true, view: true, edit: true, delete: true }, submission: { create: true, view: true, edit: true, delete: true } }; }, getForms: function getForms() {}, onPageSizeChanged: function onPageSizeChanged() {}, operations: [{ action: 'view', buttonType: 'primary', icon: 'pencil', permissionsResolver: function permissionsResolver() { return true; }, title: 'Enter Data' }, { action: 'submission', buttonType: 'warning', icon: 'list-alt', permissionsResolver: function permissionsResolver() { return true; }, title: 'View Data' }, { action: 'edit', buttonType: 'secondary', icon: 'edit', permissionsResolver: function permissionsResolver() { return true; }, title: 'Edit Form' }, { action: 'delete', buttonType: 'danger', icon: 'trash', permissionsResolver: function permissionsResolver() { return true; } }], pageSizes: _constants.defaultPageSizes }; exports.default = FormGrid;