@mirai/ui 1.0.133 → 1.0.134

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.
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+
3
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports.ColumnFilter = void 0;
8
+ var _propTypes = _interopRequireDefault(require("prop-types"));
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _helpers = require("../../helpers");
11
+ var _primitives = require("../../primitives");
12
+ var _Button = require("../Button");
13
+ var _InputText = require("../InputText");
14
+ var _Menu = require("../Menu");
15
+ var _TableModule = _interopRequireDefault(require("./Table.module.css"));
16
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+ 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; }
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
21
+ 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; }
22
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
23
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
24
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
25
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
26
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
27
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
28
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
29
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
30
+ var ColumnFilter = function ColumnFilter(_ref) {
31
+ var field = _ref.field,
32
+ _ref$labelCancel = _ref.labelCancel,
33
+ labelCancel = _ref$labelCancel === void 0 ? '$Cancel' : _ref$labelCancel,
34
+ _ref$labelSubmit = _ref.labelSubmit,
35
+ labelSubmit = _ref$labelSubmit === void 0 ? '$Submit' : _ref$labelSubmit,
36
+ _ref$schema = _ref.schema;
37
+ _ref$schema = _ref$schema === void 0 ? {} : _ref$schema;
38
+ var label = _ref$schema.label,
39
+ _ref$schema$type = _ref$schema.type,
40
+ type = _ref$schema$type === void 0 ? 'text' : _ref$schema$type,
41
+ _ref$onSubmit = _ref.onSubmit,
42
+ onSubmit = _ref$onSubmit === void 0 ? function () {} : _ref$onSubmit;
43
+ var _useState = (0, _react.useState)({}),
44
+ _useState2 = _slicedToArray(_useState, 2),
45
+ form = _useState2[0],
46
+ setForm = _useState2[1];
47
+ var _useState3 = (0, _react.useState)(false),
48
+ _useState4 = _slicedToArray(_useState3, 2),
49
+ visible = _useState4[0],
50
+ setVisible = _useState4[1];
51
+ (0, _react.useEffect)(function () {
52
+ setForm({});
53
+ }, [visible]);
54
+ var handlePress = function handlePress(event) {
55
+ event.preventDefault();
56
+ setVisible(!visible);
57
+ };
58
+ var handleCancel = function handleCancel() {
59
+ setVisible(false);
60
+ };
61
+ var handleSubmit = function handleSubmit(event) {
62
+ event.preventDefault();
63
+ setVisible(false);
64
+ onSubmit(_objectSpread({
65
+ field: field,
66
+ type: type
67
+ }, form), event);
68
+ };
69
+ return /*#__PURE__*/_react.default.createElement(_Menu.Menu, {
70
+ options: [{
71
+ children: /*#__PURE__*/_react.default.createElement(_primitives.Text, {
72
+ bold: true,
73
+ small: true
74
+ }, label || field),
75
+ divider: true
76
+ }, {
77
+ children: type === 'number' ? /*#__PURE__*/_react.default.createElement(_primitives.View, {
78
+ row: true,
79
+ className: _TableModule.default.items
80
+ }, /*#__PURE__*/_react.default.createElement(_InputText.InputText, {
81
+ label: "min",
82
+ name: "min",
83
+ type: "number",
84
+ value: form.min,
85
+ onChange: function onChange(min) {
86
+ return setForm(_objectSpread(_objectSpread({}, form), {}, {
87
+ min: min
88
+ }));
89
+ },
90
+ className: _TableModule.default.input
91
+ }), /*#__PURE__*/_react.default.createElement(_InputText.InputText, {
92
+ label: "max",
93
+ name: "max",
94
+ type: "number",
95
+ value: form.max,
96
+ onChange: function onChange(max) {
97
+ return setForm(_objectSpread(_objectSpread({}, form), {}, {
98
+ max: max
99
+ }));
100
+ },
101
+ className: _TableModule.default.input
102
+ })) : /*#__PURE__*/_react.default.createElement(_InputText.InputText, {
103
+ name: "search",
104
+ type: "search",
105
+ value: form.value,
106
+ onChange: function onChange(value) {
107
+ return setForm({
108
+ value: value
109
+ });
110
+ },
111
+ className: _TableModule.default.input
112
+ }),
113
+ divider: true
114
+ }, {
115
+ children: /*#__PURE__*/_react.default.createElement(_primitives.View, {
116
+ row: true,
117
+ wide: true,
118
+ className: _TableModule.default.items
119
+ }, /*#__PURE__*/_react.default.createElement(_Button.Button, {
120
+ secondary: true,
121
+ wide: true,
122
+ onPress: handleCancel
123
+ }, labelCancel), /*#__PURE__*/_react.default.createElement(_Button.Button, {
124
+ wide: true,
125
+ onPress: handleSubmit
126
+ }, labelSubmit))
127
+ }],
128
+ bottom: true,
129
+ centered: true,
130
+ visible: visible,
131
+ className: _TableModule.default.menuFilter
132
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Pressable, {
133
+ onPress: handlePress,
134
+ style: {
135
+ position: 'relative'
136
+ }
137
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
138
+ value: _primitives.ICON.FILTER,
139
+ className: (0, _helpers.styles)(_TableModule.default.icon, !visible && _TableModule.default.disabled)
140
+ })));
141
+ };
142
+ exports.ColumnFilter = ColumnFilter;
143
+ ColumnFilter.displayName = 'Component:Table:ColumnFilter';
144
+ ColumnFilter.propTypes = {
145
+ field: _propTypes.default.string.isRequired,
146
+ labelCancel: _propTypes.default.string,
147
+ labelSubmit: _propTypes.default.string,
148
+ schema: _propTypes.default.shape({
149
+ label: _propTypes.default.string,
150
+ type: _propTypes.default.string
151
+ }).isRequired,
152
+ onSubmit: _propTypes.default.func.isRequired
153
+ };
154
+ //# sourceMappingURL=Table.ColumnFilter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.ColumnFilter.js","names":["ColumnFilter","field","labelCancel","labelSubmit","schema","label","type","onSubmit","useState","form","setForm","visible","setVisible","useEffect","handlePress","event","preventDefault","handleCancel","handleSubmit","children","divider","style","items","min","input","max","value","menuFilter","position","ICON","FILTER","styles","icon","disabled","displayName","propTypes","PropTypes","string","isRequired","shape","func"],"sources":["../../../src/components/Table/Table.ColumnFilter.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { useEffect, useState } from 'react';\n\nimport { styles } from '../../helpers';\nimport { Icon, ICON, Pressable, Text, View } from '../../primitives';\nimport { Button } from '../Button';\nimport { InputText } from '../InputText';\nimport { Menu } from '../Menu';\nimport style from './Table.module.css';\n\nconst ColumnFilter = ({\n field,\n labelCancel = '$Cancel',\n labelSubmit = '$Submit',\n schema: { label, type = 'text' } = {},\n onSubmit = () => {},\n}) => {\n const [form, setForm] = useState({});\n const [visible, setVisible] = useState(false);\n\n useEffect(() => {\n setForm({});\n }, [visible]);\n\n const handlePress = (event) => {\n event.preventDefault();\n setVisible(!visible);\n };\n\n const handleCancel = () => {\n setVisible(false);\n };\n\n const handleSubmit = (event) => {\n event.preventDefault();\n setVisible(false);\n onSubmit({ field, type, ...form }, event);\n };\n\n return (\n <Menu\n options={[\n {\n children: (\n <Text bold small>\n {label || field}\n </Text>\n ),\n divider: true,\n },\n {\n children:\n type === 'number' ? (\n <View row className={style.items}>\n <InputText\n label=\"min\"\n name=\"min\"\n type=\"number\"\n value={form.min}\n onChange={(min) => setForm({ ...form, min })}\n className={style.input}\n />\n <InputText\n label=\"max\"\n name=\"max\"\n type=\"number\"\n value={form.max}\n onChange={(max) => setForm({ ...form, max })}\n className={style.input}\n />\n </View>\n ) : (\n <InputText\n name=\"search\"\n type=\"search\"\n value={form.value}\n onChange={(value) => setForm({ value })}\n className={style.input}\n />\n ),\n divider: true,\n },\n\n {\n children: (\n <View row wide className={style.items}>\n <Button secondary wide onPress={handleCancel}>\n {labelCancel}\n </Button>\n <Button wide onPress={handleSubmit}>\n {labelSubmit}\n </Button>\n </View>\n ),\n },\n ]}\n bottom\n centered\n visible={visible}\n className={style.menuFilter}\n >\n <Pressable onPress={handlePress} style={{ position: 'relative' }}>\n <Icon value={ICON.FILTER} className={styles(style.icon, !visible && style.disabled)} />\n </Pressable>\n </Menu>\n );\n};\n\nColumnFilter.displayName = 'Component:Table:ColumnFilter';\n\nColumnFilter.propTypes = {\n field: PropTypes.string.isRequired,\n labelCancel: PropTypes.string,\n labelSubmit: PropTypes.string,\n schema: PropTypes.shape({\n label: PropTypes.string,\n type: PropTypes.string,\n }).isRequired,\n onSubmit: PropTypes.func.isRequired,\n};\n\nexport { ColumnFilter };\n"],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.Filter = void 0;
7
+ var _propTypes = _interopRequireDefault(require("prop-types"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var _primitives = require("../../primitives");
10
+ var _TableModule = _interopRequireDefault(require("./Table.module.css"));
11
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
12
+ var Filter = function Filter(_ref) {
13
+ var _ref$filter = _ref.filter,
14
+ filter = _ref$filter === void 0 ? [] : _ref$filter,
15
+ _ref$onRemove = _ref.onRemove,
16
+ onRemove = _ref$onRemove === void 0 ? function () {} : _ref$onRemove;
17
+ return /*#__PURE__*/_react.default.createElement(_primitives.View, {
18
+ row: true,
19
+ wide: true,
20
+ className: _TableModule.default.filters
21
+ }, filter.map(function (_ref2, index) {
22
+ var field = _ref2.field,
23
+ value = _ref2.value,
24
+ min = _ref2.min,
25
+ max = _ref2.max;
26
+ return /*#__PURE__*/_react.default.createElement(_primitives.View, {
27
+ row: true,
28
+ key: index,
29
+ className: _TableModule.default.filter
30
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Text, {
31
+ small: true
32
+ }, field), value && /*#__PURE__*/_react.default.createElement(_primitives.Text, {
33
+ bold: true,
34
+ small: true
35
+ }, value), min && /*#__PURE__*/_react.default.createElement(_primitives.Text, {
36
+ bold: true,
37
+ small: true
38
+ }, "".concat(max ? '' : '≥ ').concat(min)), max && /*#__PURE__*/_react.default.createElement(_primitives.Text, {
39
+ bold: true,
40
+ small: true
41
+ }, "".concat(min ? ' - ' : '≤ ').concat(max)), /*#__PURE__*/_react.default.createElement(_primitives.Pressable, {
42
+ onPress: function onPress() {
43
+ return onRemove(index);
44
+ }
45
+ }, /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
46
+ action: true,
47
+ value: _primitives.ICON.CLOSE
48
+ })));
49
+ }));
50
+ };
51
+ exports.Filter = Filter;
52
+ Filter.displayName = 'Component:Table:Filter';
53
+ Filter.propTypes = {
54
+ filter: _propTypes.default.arrayOf(_propTypes.default.shape({})),
55
+ onRemove: _propTypes.default.func.isRequired
56
+ };
57
+ //# sourceMappingURL=Table.Filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Table.Filter.js","names":["Filter","filter","onRemove","style","filters","map","index","field","value","min","max","ICON","CLOSE","displayName","propTypes","PropTypes","arrayOf","shape","func","isRequired"],"sources":["../../../src/components/Table/Table.Filter.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { Icon, ICON, Pressable, Text, View } from '../../primitives';\nimport style from './Table.module.css';\n\nconst Filter = ({ filter = [], onRemove = () => {} }) => (\n <View row wide className={style.filters}>\n {filter.map(({ field, value, min, max }, index) => (\n <View row key={index} className={style.filter}>\n <Text small>{field}</Text>\n {value && (\n <Text bold small>\n {value}\n </Text>\n )}\n {min && (\n <Text bold small>\n {`${max ? '' : '≥ '}${min}`}\n </Text>\n )}\n {max && (\n <Text bold small>\n {`${min ? ' - ' : '≤ '}${max}`}\n </Text>\n )}\n <Pressable onPress={() => onRemove(index)}>\n <Icon action value={ICON.CLOSE} />\n </Pressable>\n </View>\n ))}\n </View>\n);\n\nFilter.displayName = 'Component:Table:Filter';\n\nFilter.propTypes = {\n filter: PropTypes.arrayOf(PropTypes.shape({})),\n onRemove: PropTypes.func.isRequired,\n};\n\nexport { Filter };\n"],"mappings":";;;;;;AAAA;AACA;AAEA;AACA;AAAuC;AAEvC,IAAMA,MAAM,GAAG,SAATA,MAAM;EAAA,uBAAMC,MAAM;IAANA,MAAM,4BAAG,EAAE;IAAA,qBAAEC,QAAQ;IAARA,QAAQ,8BAAG,YAAM,CAAC,CAAC;EAAA,oBAChD,6BAAC,gBAAI;IAAC,GAAG;IAAC,IAAI;IAAC,SAAS,EAAEC,oBAAK,CAACC;EAAQ,GACrCH,MAAM,CAACI,GAAG,CAAC,iBAA6BC,KAAK;IAAA,IAA/BC,KAAK,SAALA,KAAK;MAAEC,KAAK,SAALA,KAAK;MAAEC,GAAG,SAAHA,GAAG;MAAEC,GAAG,SAAHA,GAAG;IAAA,oBACnC,6BAAC,gBAAI;MAAC,GAAG;MAAC,GAAG,EAAEJ,KAAM;MAAC,SAAS,EAAEH,oBAAK,CAACF;IAAO,gBAC5C,6BAAC,gBAAI;MAAC,KAAK;IAAA,GAAEM,KAAK,CAAQ,EACzBC,KAAK,iBACJ,6BAAC,gBAAI;MAAC,IAAI;MAAC,KAAK;IAAA,GACbA,KAAK,CAET,EACAC,GAAG,iBACF,6BAAC,gBAAI;MAAC,IAAI;MAAC,KAAK;IAAA,aACVC,GAAG,GAAG,EAAE,GAAG,IAAI,SAAGD,GAAG,EAE5B,EACAC,GAAG,iBACF,6BAAC,gBAAI;MAAC,IAAI;MAAC,KAAK;IAAA,aACVD,GAAG,GAAG,KAAK,GAAG,IAAI,SAAGC,GAAG,EAE/B,eACD,6BAAC,qBAAS;MAAC,OAAO,EAAE;QAAA,OAAMR,QAAQ,CAACI,KAAK,CAAC;MAAA;IAAC,gBACxC,6BAAC,gBAAI;MAAC,MAAM;MAAC,KAAK,EAAEK,gBAAI,CAACC;IAAM,EAAG,CACxB,CACP;EAAA,CACR,CAAC,CACG;AAAA,CACR;AAAC;AAEFZ,MAAM,CAACa,WAAW,GAAG,wBAAwB;AAE7Cb,MAAM,CAACc,SAAS,GAAG;EACjBb,MAAM,EAAEc,kBAAS,CAACC,OAAO,CAACD,kBAAS,CAACE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;EAC9Cf,QAAQ,EAAEa,kBAAS,CAACG,IAAI,CAACC;AAC3B,CAAC"}
@@ -4,14 +4,15 @@ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" =
4
4
  Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
- exports.TableRow = void 0;
7
+ exports.Row = void 0;
8
8
  var _propTypes = _interopRequireDefault(require("prop-types"));
9
9
  var _react = _interopRequireDefault(require("react"));
10
10
  var _helpers = require("../../helpers");
11
11
  var _primitives = require("../../primitives");
12
12
  var _InputOption = require("../InputOption");
13
+ var _Table = require("./Table.ColumnFilter");
13
14
  var _TableModule = _interopRequireDefault(require("./Table.module.css"));
14
- var _excluded = ["checked", "dataSource", "indeterminate", "schema", "sort", "onPress", "onSelect", "onSort"];
15
+ var _excluded = ["checked", "dataSource", "indeterminate", "schema", "sort", "onFilter", "onPress", "onSelect", "onSort"];
15
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
17
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
17
18
  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; }
@@ -20,13 +21,14 @@ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input ==
20
21
  function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
21
22
  function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
22
23
  var CUSTOM_EVENT_TYPES = ['button', 'checkbox', 'input', 'radio', 'submit'];
23
- var TableRow = function TableRow(_ref) {
24
+ var Row = function Row(_ref) {
24
25
  var checked = _ref.checked,
25
26
  dataSource = _ref.dataSource,
26
27
  indeterminate = _ref.indeterminate,
27
28
  schema = _ref.schema,
28
29
  _ref$sort = _ref.sort,
29
30
  sort = _ref$sort === void 0 ? {} : _ref$sort,
31
+ onFilter = _ref.onFilter,
30
32
  onPress = _ref.onPress,
31
33
  onSelect = _ref.onSelect,
32
34
  onSort = _ref.onSort,
@@ -62,20 +64,28 @@ var TableRow = function TableRow(_ref) {
62
64
  onChange: function onChange(event) {
63
65
  return onSelect(dataSource, event);
64
66
  }
65
- }), isHead ? schema[field].label : dataSource[field], isHead && onSort && /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
67
+ }), isHead ? schema[field].label : dataSource[field], isHead && onSort && /*#__PURE__*/_react.default.createElement(_primitives.View, {
68
+ row: true,
69
+ className: _TableModule.default.icons
70
+ }, onSort && /*#__PURE__*/_react.default.createElement(_primitives.Icon, {
66
71
  value: sort[field] === false ? _primitives.ICON.UP : _primitives.ICON.DOWN,
67
72
  className: (0, _helpers.styles)(_TableModule.default.icon, sort[field] === undefined && _TableModule.default.disabled)
68
- })));
73
+ }), onFilter && /*#__PURE__*/_react.default.createElement(_Table.ColumnFilter, {
74
+ field: field,
75
+ schema: schema[field],
76
+ onSubmit: onFilter
77
+ }))));
69
78
  }));
70
79
  };
71
- exports.TableRow = TableRow;
72
- TableRow.displayName = 'Table:Row';
73
- TableRow.propTypes = {
80
+ exports.Row = Row;
81
+ Row.displayName = 'Component:Table:Row';
82
+ Row.propTypes = {
74
83
  checked: _propTypes.default.bool,
75
84
  dataSource: _propTypes.default.shape({}),
76
85
  indeterminate: _propTypes.default.bool,
77
86
  schema: _propTypes.default.shape({}).isRequired,
78
87
  sort: _propTypes.default.shape({}),
88
+ onFilter: _propTypes.default.func,
79
89
  onPress: _propTypes.default.func,
80
90
  onSelect: _propTypes.default.func,
81
91
  onSort: _propTypes.default.func
@@ -1 +1 @@
1
- {"version":3,"file":"Table.Row.js","names":["CUSTOM_EVENT_TYPES","TableRow","checked","dataSource","indeterminate","schema","sort","onPress","onSelect","onSort","others","isHead","undefined","testId","handlePress","field","event","target","type","includes","styles","style","selected","Object","keys","filter","map","index","React","createElement","column","selectable","checkbox","label","ICON","UP","DOWN","icon","disabled","displayName","propTypes","PropTypes","bool","shape","isRequired","func"],"sources":["../../../src/components/Table/Table.Row.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { styles } from '../../helpers';\nimport { Icon, ICON, View } from '../../primitives';\nimport { InputOption } from '../InputOption';\nimport style from './Table.module.css';\n\nconst CUSTOM_EVENT_TYPES = ['button', 'checkbox', 'input', 'radio', 'submit'];\n\nconst TableRow = ({ checked, dataSource, indeterminate, schema, sort = {}, onPress, onSelect, onSort, ...others }) => {\n const isHead = dataSource === undefined;\n const { ['data-testid']: testId } = others;\n\n const handlePress = (field, event) => {\n const { target: { type } = {} } = event;\n if (CUSTOM_EVENT_TYPES.includes(type)) return;\n\n isHead ? onSort(field) : onPress && onPress(dataSource, event);\n };\n\n return (\n <tr {...others} role=\"tr\" className={styles(checked && style.selected, onPress && style.onPress)}>\n {Object.keys(schema)\n .filter((field) => schema[field].type !== 'hidden')\n .map((field, index) =>\n React.createElement(\n isHead ? 'th' : 'td',\n {\n ['data-testid']: testId ? `${testId}-${field}` : undefined,\n key: field,\n onClick: (event) => handlePress(field, event),\n },\n <View\n forceRow\n tag=\"span\"\n className={styles(\n style.column,\n onSelect && index === 0 && style.selectable,\n !isHead && !(onSelect && index === 0) && style[schema[field].type || 'text'],\n )}\n >\n {onSelect && index === 0 && (\n <InputOption\n checked={checked}\n data-testid={testId ? `${testId}-checkbox` : undefined}\n indeterminate={indeterminate}\n name=\"checkbox\"\n className={style.checkbox}\n onChange={(event) => onSelect(dataSource, event)}\n />\n )}\n\n {isHead ? schema[field].label : dataSource[field]}\n\n {isHead && onSort && (\n <Icon\n value={sort[field] === false ? ICON.UP : ICON.DOWN}\n className={styles(style.icon, sort[field] === undefined && style.disabled)}\n />\n )}\n </View>,\n ),\n )}\n </tr>\n );\n};\n\nTableRow.displayName = 'Table:Row';\n\nTableRow.propTypes = {\n checked: PropTypes.bool,\n dataSource: PropTypes.shape({}),\n indeterminate: PropTypes.bool,\n schema: PropTypes.shape({}).isRequired,\n sort: PropTypes.shape({}),\n onPress: PropTypes.func,\n onSelect: PropTypes.func,\n onSort: PropTypes.func,\n};\n\nexport { TableRow };\n"],"mappings":"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"}
1
+ {"version":3,"file":"Table.Row.js","names":["CUSTOM_EVENT_TYPES","Row","checked","dataSource","indeterminate","schema","sort","onFilter","onPress","onSelect","onSort","others","isHead","undefined","testId","handlePress","field","event","target","type","includes","styles","style","selected","Object","keys","filter","map","index","React","createElement","column","selectable","checkbox","label","icons","ICON","UP","DOWN","icon","disabled","displayName","propTypes","PropTypes","bool","shape","isRequired","func"],"sources":["../../../src/components/Table/Table.Row.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React from 'react';\n\nimport { styles } from '../../helpers';\nimport { Icon, ICON, View } from '../../primitives';\nimport { InputOption } from '../InputOption';\nimport { ColumnFilter } from './Table.ColumnFilter';\nimport style from './Table.module.css';\n\nconst CUSTOM_EVENT_TYPES = ['button', 'checkbox', 'input', 'radio', 'submit'];\n\nconst Row = ({\n checked,\n dataSource,\n indeterminate,\n schema,\n sort = {},\n onFilter,\n onPress,\n onSelect,\n onSort,\n ...others\n}) => {\n const isHead = dataSource === undefined;\n const { ['data-testid']: testId } = others;\n\n const handlePress = (field, event) => {\n const { target: { type } = {} } = event;\n if (CUSTOM_EVENT_TYPES.includes(type)) return;\n\n isHead ? onSort(field) : onPress && onPress(dataSource, event);\n };\n\n return (\n <tr {...others} role=\"tr\" className={styles(checked && style.selected, onPress && style.onPress)}>\n {Object.keys(schema)\n .filter((field) => schema[field].type !== 'hidden')\n .map((field, index) =>\n React.createElement(\n isHead ? 'th' : 'td',\n {\n ['data-testid']: testId ? `${testId}-${field}` : undefined,\n key: field,\n onClick: (event) => handlePress(field, event),\n },\n <View\n forceRow\n tag=\"span\"\n className={styles(\n style.column,\n onSelect && index === 0 && style.selectable,\n !isHead && !(onSelect && index === 0) && style[schema[field].type || 'text'],\n )}\n >\n {onSelect && index === 0 && (\n <InputOption\n checked={checked}\n data-testid={testId ? `${testId}-checkbox` : undefined}\n indeterminate={indeterminate}\n name=\"checkbox\"\n className={style.checkbox}\n onChange={(event) => onSelect(dataSource, event)}\n />\n )}\n\n {isHead ? schema[field].label : dataSource[field]}\n\n {isHead && onSort && (\n <View row className={style.icons}>\n {onSort && (\n <Icon\n value={sort[field] === false ? ICON.UP : ICON.DOWN}\n className={styles(style.icon, sort[field] === undefined && style.disabled)}\n />\n )}\n {onFilter && <ColumnFilter field={field} schema={schema[field]} onSubmit={onFilter} />}\n </View>\n )}\n </View>,\n ),\n )}\n </tr>\n );\n};\n\nRow.displayName = 'Component:Table:Row';\n\nRow.propTypes = {\n checked: PropTypes.bool,\n dataSource: PropTypes.shape({}),\n indeterminate: PropTypes.bool,\n schema: PropTypes.shape({}).isRequired,\n sort: PropTypes.shape({}),\n onFilter: PropTypes.func,\n onPress: PropTypes.func,\n onSelect: PropTypes.func,\n onSort: PropTypes.func,\n};\n\nexport { Row };\n"],"mappings":"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"}
@@ -10,9 +10,10 @@ var _react = _interopRequireWildcard(require("react"));
10
10
  var _helpers = require("../../helpers");
11
11
  var _primitives = require("../../primitives");
12
12
  var _helpers2 = require("./helpers");
13
+ var _Table = require("./Table.Filter");
13
14
  var _TableModule = _interopRequireDefault(require("./Table.module.css"));
14
- var _Table = require("./Table.Row");
15
- var _excluded = ["dataSource", "inline", "schema", "search", "selected", "onPress", "onScroll", "onSelect"];
15
+ var _Table2 = require("./Table.Row");
16
+ var _excluded = ["dataSource", "filter", "inline", "schema", "search", "selected", "onPress", "onScroll", "onSelect"];
16
17
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
18
  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; }
18
19
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
@@ -22,6 +23,10 @@ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { va
22
23
  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; }
23
24
  function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
24
25
  function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
26
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
27
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
28
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
29
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
25
30
  function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
26
31
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
27
32
  function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
@@ -33,6 +38,8 @@ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) r
33
38
  var Table = function Table(_ref) {
34
39
  var _ref$dataSource = _ref.dataSource,
35
40
  dataSource = _ref$dataSource === void 0 ? [] : _ref$dataSource,
41
+ _ref$filter = _ref.filter,
42
+ propFilter = _ref$filter === void 0 ? [] : _ref$filter,
36
43
  _ref$inline = _ref.inline,
37
44
  inline = _ref$inline === void 0 ? true : _ref$inline,
38
45
  schema = _ref.schema,
@@ -43,14 +50,36 @@ var Table = function Table(_ref) {
43
50
  onScroll = _ref.onScroll,
44
51
  onSelect = _ref.onSelect,
45
52
  others = _objectWithoutProperties(_ref, _excluded);
46
- var _useState = (0, _react.useState)(propSelected),
53
+ var _useState = (0, _react.useState)(propFilter),
47
54
  _useState2 = _slicedToArray(_useState, 2),
48
- selected = _useState2[0],
49
- setSelected = _useState2[1];
50
- var _useState3 = (0, _react.useState)({}),
55
+ filter = _useState2[0],
56
+ setFilter = _useState2[1];
57
+ var _useState3 = (0, _react.useState)(propSelected),
51
58
  _useState4 = _slicedToArray(_useState3, 2),
52
- sort = _useState4[0],
53
- setSort = _useState4[1];
59
+ selected = _useState4[0],
60
+ setSelected = _useState4[1];
61
+ var _useState5 = (0, _react.useState)({}),
62
+ _useState6 = _slicedToArray(_useState5, 2),
63
+ sort = _useState6[0],
64
+ setSort = _useState6[1];
65
+ (0, _react.useEffect)(function () {
66
+ if (JSON.stringify(filter) !== JSON.stringify(propFilter)) setFilter(propFilter);
67
+ // eslint-disable-next-line react-hooks/exhaustive-deps
68
+ }, [propFilter]);
69
+ var handleAddFilter = function handleAddFilter(item) {
70
+ setFilter([].concat(_toConsumableArray(filter), [item]));
71
+ };
72
+ var handleRemoveFilter = function handleRemoveFilter(index) {
73
+ filter.splice(index, 1);
74
+ setFilter(_toConsumableArray(filter));
75
+ };
76
+ var handleHeadSelect = function handleHeadSelect(row, event) {
77
+ setSelected(function () {
78
+ var next = selected.length !== dataSource.length ? dataSource : [];
79
+ onSelect(next, event);
80
+ return next;
81
+ });
82
+ };
54
83
  var handleSelect = function handleSelect(row, event) {
55
84
  setSelected(function () {
56
85
  var exists = selected.includes(row);
@@ -62,13 +91,6 @@ var Table = function Table(_ref) {
62
91
  return next;
63
92
  });
64
93
  };
65
- var handleHeadSelect = function handleHeadSelect(row, event) {
66
- setSelected(function () {
67
- var next = selected.length !== dataSource.length ? dataSource : [];
68
- onSelect(next, event);
69
- return next;
70
- });
71
- };
72
94
  var handleSort = function handleSort(field) {
73
95
  setSort(sort[field] === undefined ? _defineProperty({}, field, true) : sort[field] ? _defineProperty({}, field, false) : {});
74
96
  };
@@ -76,24 +98,33 @@ var Table = function Table(_ref) {
76
98
  return /*#__PURE__*/_react.default.createElement(onScroll ? _primitives.ScrollView : !inline ? _primitives.View : _react.Fragment, onScroll || !inline ? _objectSpread(_objectSpread({}, others), {}, {
77
99
  onScroll: onScroll,
78
100
  className: (0, _helpers.styles)(!inline && _TableModule.default.outlined, others.className)
79
- }) : undefined, /*#__PURE__*/_react.default.createElement("table", _extends({}, !onScroll ? others : undefined, {
101
+ }) : undefined, /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, filter.length > 0 && /*#__PURE__*/_react.default.createElement(_Table.Filter, {
102
+ filter: filter,
103
+ onRemove: function onRemove(index) {
104
+ return handleRemoveFilter(index);
105
+ }
106
+ }), /*#__PURE__*/_react.default.createElement("table", _extends({}, !onScroll ? others : undefined, {
80
107
  className: (0, _helpers.styles)(_TableModule.default.table, !onScroll && !inline && others.className)
81
- }), /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement(_Table.TableRow, {
108
+ }), /*#__PURE__*/_react.default.createElement("thead", null, /*#__PURE__*/_react.default.createElement(_Table2.Row, {
82
109
  checked: selected.length === dataSource.length,
83
110
  indeterminate: selected.length > 0,
84
111
  schema: schema,
85
112
  sort: sort,
113
+ onFilter: handleAddFilter,
86
114
  onSelect: onSelect ? handleHeadSelect : undefined,
87
115
  onSort: handleSort,
88
116
  "data-testid": testId ? "".concat(testId, "-head") : undefined
89
117
  })), /*#__PURE__*/_react.default.createElement("tbody", null, (0, _react.useMemo)(function () {
90
118
  return (0, _helpers2.select)(dataSource, {
119
+ filter: filter,
91
120
  search: search,
92
121
  sort: sort
93
122
  });
94
- }, [dataSource, search, sort]).map(function (row, index) {
95
- return /*#__PURE__*/_react.default.createElement(_Table.TableRow, {
96
- checked: selected.includes(row),
123
+ }, [dataSource, filter, search, sort]).map(function (row, index) {
124
+ return /*#__PURE__*/_react.default.createElement(_Table2.Row, {
125
+ checked: !!selected.find(function (item) {
126
+ return JSON.stringify(item) === JSON.stringify(row);
127
+ }),
97
128
  dataSource: row,
98
129
  key: index,
99
130
  schema: schema,
@@ -101,11 +132,13 @@ var Table = function Table(_ref) {
101
132
  onSelect: onSelect ? handleSelect : undefined,
102
133
  "data-testid": testId ? "".concat(testId, "-").concat(index) : undefined
103
134
  });
104
- }))));
135
+ })))));
105
136
  };
106
137
  exports.Table = Table;
138
+ Table.displayName = 'Component:Table';
107
139
  Table.propTypes = {
108
140
  dataSource: _propTypes.default.arrayOf(_propTypes.default.shape({})),
141
+ filter: _propTypes.default.arrayOf(_propTypes.default.shape({})),
109
142
  inline: _propTypes.default.bool,
110
143
  schema: _propTypes.default.shape({}).isRequired,
111
144
  search: _propTypes.default.string,
@@ -1 +1 @@
1
- {"version":3,"file":"Table.js","names":["Table","dataSource","inline","schema","search","selected","propSelected","onPress","onScroll","onSelect","others","useState","setSelected","sort","setSort","handleSelect","row","event","exists","includes","next","filter","item","push","handleHeadSelect","length","handleSort","field","undefined","testId","React","createElement","ScrollView","View","Fragment","className","styles","style","outlined","table","useMemo","select","map","index","propTypes","PropTypes","arrayOf","shape","bool","isRequired","string","func"],"sources":["../../../src/components/Table/Table.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Fragment, useMemo, useState } from 'react';\n\nimport { styles } from '../../helpers';\nimport { ScrollView, View } from '../../primitives';\nimport { select } from './helpers';\nimport style from './Table.module.css';\nimport { TableRow } from './Table.Row';\n\nexport const Table = ({\n dataSource = [],\n inline = true,\n schema,\n search,\n selected: propSelected = [],\n onPress,\n onScroll,\n onSelect,\n ...others\n}) => {\n const [selected, setSelected] = useState(propSelected);\n const [sort, setSort] = useState({});\n\n const handleSelect = (row, event) => {\n setSelected(() => {\n const exists = selected.includes(row);\n const next = selected.filter((item) => item !== row);\n if (!exists) next.push(row);\n\n onSelect(next, event);\n\n return next;\n });\n };\n\n const handleHeadSelect = (row, event) => {\n setSelected(() => {\n const next = selected.length !== dataSource.length ? dataSource : [];\n onSelect(next, event);\n\n return next;\n });\n };\n\n const handleSort = (field) => {\n setSort(sort[field] === undefined ? { [field]: true } : sort[field] ? { [field]: false } : {});\n };\n\n const { ['data-testid']: testId } = others;\n\n return React.createElement(\n onScroll ? ScrollView : !inline ? View : Fragment,\n onScroll || !inline\n ? { ...others, onScroll, className: styles(!inline && style.outlined, others.className) }\n : undefined,\n <table\n {...(!onScroll ? others : undefined)}\n className={styles(style.table, !onScroll && !inline && others.className)}\n >\n <thead>\n <TableRow\n checked={selected.length === dataSource.length}\n indeterminate={selected.length > 0}\n schema={schema}\n sort={sort}\n onSelect={onSelect ? handleHeadSelect : undefined}\n onSort={handleSort}\n data-testid={testId ? `${testId}-head` : undefined}\n />\n </thead>\n <tbody>\n {useMemo(() => select(dataSource, { search, sort }), [dataSource, search, sort]).map((row, index) => (\n <TableRow\n checked={selected.includes(row)}\n dataSource={row}\n key={index}\n schema={schema}\n onPress={onPress}\n onSelect={onSelect ? handleSelect : undefined}\n data-testid={testId ? `${testId}-${index}` : undefined}\n />\n ))}\n </tbody>\n </table>,\n );\n};\n\nTable.propTypes = {\n dataSource: PropTypes.arrayOf(PropTypes.shape({})),\n inline: PropTypes.bool,\n schema: PropTypes.shape({}).isRequired,\n search: PropTypes.string,\n selected: PropTypes.arrayOf(PropTypes.shape()),\n onPress: PropTypes.func,\n onScroll: PropTypes.func,\n onSelect: PropTypes.func,\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"Table.js","names":["Table","dataSource","filter","propFilter","inline","schema","search","selected","propSelected","onPress","onScroll","onSelect","others","useState","setFilter","setSelected","sort","setSort","useEffect","JSON","stringify","handleAddFilter","item","handleRemoveFilter","index","splice","handleHeadSelect","row","event","next","length","handleSelect","exists","includes","push","handleSort","field","undefined","testId","React","createElement","ScrollView","View","Fragment","className","styles","style","outlined","table","useMemo","select","map","find","displayName","propTypes","PropTypes","arrayOf","shape","bool","isRequired","string","func"],"sources":["../../../src/components/Table/Table.jsx"],"sourcesContent":["import PropTypes from 'prop-types';\nimport React, { Fragment, useEffect, useMemo, useState } from 'react';\n\nimport { styles } from '../../helpers';\nimport { ScrollView, View } from '../../primitives';\nimport { select } from './helpers';\nimport { Filter } from './Table.Filter';\nimport style from './Table.module.css';\nimport { Row } from './Table.Row';\n\nexport const Table = ({\n dataSource = [],\n filter: propFilter = [],\n inline = true,\n schema,\n search,\n selected: propSelected = [],\n onPress,\n onScroll,\n onSelect,\n ...others\n}) => {\n const [filter, setFilter] = useState(propFilter);\n const [selected, setSelected] = useState(propSelected);\n const [sort, setSort] = useState({});\n\n useEffect(() => {\n if (JSON.stringify(filter) !== JSON.stringify(propFilter)) setFilter(propFilter);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [propFilter]);\n\n const handleAddFilter = (item) => {\n setFilter([...filter, item]);\n };\n\n const handleRemoveFilter = (index) => {\n filter.splice(index, 1);\n setFilter([...filter]);\n };\n\n const handleHeadSelect = (row, event) => {\n setSelected(() => {\n const next = selected.length !== dataSource.length ? dataSource : [];\n onSelect(next, event);\n\n return next;\n });\n };\n\n const handleSelect = (row, event) => {\n setSelected(() => {\n const exists = selected.includes(row);\n const next = selected.filter((item) => item !== row);\n if (!exists) next.push(row);\n onSelect(next, event);\n\n return next;\n });\n };\n\n const handleSort = (field) => {\n setSort(sort[field] === undefined ? { [field]: true } : sort[field] ? { [field]: false } : {});\n };\n\n const { ['data-testid']: testId } = others;\n\n return React.createElement(\n onScroll ? ScrollView : !inline ? View : Fragment,\n onScroll || !inline\n ? { ...others, onScroll, className: styles(!inline && style.outlined, others.className) }\n : undefined,\n <>\n {filter.length > 0 && <Filter filter={filter} onRemove={(index) => handleRemoveFilter(index)} />}\n <table\n {...(!onScroll ? others : undefined)}\n className={styles(style.table, !onScroll && !inline && others.className)}\n >\n <thead>\n <Row\n checked={selected.length === dataSource.length}\n indeterminate={selected.length > 0}\n schema={schema}\n sort={sort}\n onFilter={handleAddFilter}\n onSelect={onSelect ? handleHeadSelect : undefined}\n onSort={handleSort}\n data-testid={testId ? `${testId}-head` : undefined}\n />\n </thead>\n <tbody>\n {useMemo(() => select(dataSource, { filter, search, sort }), [dataSource, filter, search, sort]).map(\n (row, index) => (\n <Row\n checked={!!selected.find((item) => JSON.stringify(item) === JSON.stringify(row))}\n dataSource={row}\n key={index}\n schema={schema}\n onPress={onPress}\n onSelect={onSelect ? handleSelect : undefined}\n data-testid={testId ? `${testId}-${index}` : undefined}\n />\n ),\n )}\n </tbody>\n </table>\n </>,\n );\n};\n\nTable.displayName = 'Component:Table';\n\nTable.propTypes = {\n dataSource: PropTypes.arrayOf(PropTypes.shape({})),\n filter: PropTypes.arrayOf(PropTypes.shape({})),\n inline: PropTypes.bool,\n schema: PropTypes.shape({}).isRequired,\n search: PropTypes.string,\n selected: PropTypes.arrayOf(PropTypes.shape()),\n onPress: PropTypes.func,\n onScroll: PropTypes.func,\n onSelect: PropTypes.func,\n};\n"],"mappings":"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"}
@@ -67,9 +67,9 @@
67
67
  padding-right: var(--mirai-ui-table-padding-x);
68
68
  }
69
69
 
70
- .table th .icon {
71
- /* ? TODO: Ask design */
72
- /* margin-left: auto; */
70
+ .table th .icons {
71
+ gap: calc(var(--mirai-ui-space-XS) / 2);
72
+ margin-left: auto;
73
73
  }
74
74
 
75
75
  .table th .icon.disabled {
@@ -104,7 +104,44 @@
104
104
  overflow-y: hidden;
105
105
  }
106
106
 
107
- @media only screen and (min-width: 430px) {
107
+ /* <ColumnFilter> */
108
+ .table .menuFilter .items {
109
+ gap: var(--mirai-ui-space-M);
110
+ }
111
+
112
+ .table .menuFilter .input {
113
+ margin-bottom: 0;
114
+ }
115
+
116
+ /* */
117
+ .filters {
118
+ background-color: var(--mirai-ui-table-background);
119
+ box-shadow: inset 0 calc(var(--mirai-ui-border-width) * -1) var(--mirai-ui-table-border-color);
120
+ flex-wrap: wrap;
121
+ gap: var(--mirai-ui-space-XS);
122
+ left: 0;
123
+ padding: var(--mirai-ui-table-padding-y) var(--mirai-ui-table-padding-x);
124
+ position: sticky;
125
+ width: 100%;
126
+ }
127
+
128
+ .filters .filter {
129
+ background-color: var(--mirai-ui-table-color);
130
+ background-color: var(--mirai-ui-table-selected-background);
131
+ border-radius: var(--mirai-ui-table-border-radius);
132
+ gap: calc(var(--mirai-ui-space-XS) / 2);
133
+ padding: calc(var(--mirai-ui-space-XS) / 2) var(--mirai-ui-space-XS);
134
+ user-select: none;
135
+ }
136
+
137
+ .filters .filter * {
138
+ color: var(--mirai-ui-table-selected-color);
139
+ }
140
+
141
+ @media only screen and (max-width: 430px) {
142
+ }
143
+
144
+ @media only screen and (min-width: 431px) {
108
145
  .table thead tr th:hover {
109
146
  color: var(--mirai-ui-table-color);
110
147
  cursor: pointer;
@@ -118,4 +155,9 @@
118
155
  .table tbody tr:hover.onPress:not(.selected) td:first-child {
119
156
  background-color: var(--mirai-ui-table-selected-background);
120
157
  }
158
+
159
+ .table .menuFilter {
160
+ margin: var(--mirai-ui-space-M) 0;
161
+ width: calc(var(--mirai-ui-breakpoint-S) * 0.8);
162
+ }
121
163
  }