@yanqirenshi/table.wbs 0.0.17 → 0.0.19

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.
@@ -19,6 +19,30 @@ var style = {
19
19
  }
20
20
  };
21
21
 
22
+ function WidthInput(props) {
23
+ var column = props.column;
24
+ var key = props.name;
25
+ var value = column.width && column.width[key] || '';
26
+
27
+ var change = function change(e) {
28
+ props.callbacks.body.row.width(column.number, key, e.target.value);
29
+ };
30
+
31
+ return /*#__PURE__*/_react["default"].createElement("input", {
32
+ className: "input is-small",
33
+ type: "number",
34
+ min: "0",
35
+ step: "10",
36
+ style: {
37
+ width: 77
38
+ },
39
+ placeholder: key === 'min' ? 'Min' : 'Max',
40
+ title: key === 'min' ? '最小幅 (px)' : '最大幅 (px)',
41
+ value: value,
42
+ onChange: change
43
+ });
44
+ }
45
+
22
46
  function ChooserColumn(props) {
23
47
  var columns = props.columns || [];
24
48
  return /*#__PURE__*/_react["default"].createElement("div", {
@@ -56,7 +80,25 @@ function ChooserColumn(props) {
56
80
  }, "\u5FC5\u9808"), d.required !== true && /*#__PURE__*/_react["default"].createElement(_ButtonVisible["default"], {
57
81
  source: d,
58
82
  callbacks: props.callbacks
59
- })), /*#__PURE__*/_react["default"].createElement("td", null, d.label), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, d.leveling ? '○' : '×'), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, "--"));
83
+ })), /*#__PURE__*/_react["default"].createElement("td", null, d.label), /*#__PURE__*/_react["default"].createElement("td", null, /*#__PURE__*/_react["default"].createElement("div", {
84
+ style: {
85
+ display: 'flex',
86
+ gap: 4,
87
+ alignItems: 'center'
88
+ }
89
+ }, /*#__PURE__*/_react["default"].createElement(WidthInput, {
90
+ column: d,
91
+ name: "min",
92
+ callbacks: props.callbacks
93
+ }), /*#__PURE__*/_react["default"].createElement("span", {
94
+ style: {
95
+ color: '#888'
96
+ }
97
+ }, "\u301C"), /*#__PURE__*/_react["default"].createElement(WidthInput, {
98
+ column: d,
99
+ name: "max",
100
+ callbacks: props.callbacks
101
+ }))), /*#__PURE__*/_react["default"].createElement("td", null, d.leveling ? '○' : '×'), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, "--"), /*#__PURE__*/_react["default"].createElement("td", null, "--"));
60
102
  }))));
61
103
  }
62
104
 
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
 
3
+ function _typeof(obj) { "@babel/helpers - typeof"; 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); }
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
6
8
  exports["default"] = void 0;
7
9
 
8
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
9
11
 
10
12
  var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
13
 
@@ -15,14 +17,109 @@ var _Style = _interopRequireDefault(require("./Style.js"));
15
17
 
16
18
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
17
19
 
20
+ function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
21
+
22
+ function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
23
+
18
24
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
19
25
 
20
26
  function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
27
 
22
28
  function _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; }
23
29
 
30
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
31
+
32
+ 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."); }
33
+
34
+ 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); }
35
+
36
+ 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; }
37
+
38
+ function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
39
+
40
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
41
+
24
42
  var style = _Style["default"].controller;
25
43
 
44
+ function DownloadButton(props) {
45
+ var download = props.download;
46
+
47
+ var _useState = (0, _react.useState)(false),
48
+ _useState2 = _slicedToArray(_useState, 2),
49
+ open = _useState2[0],
50
+ setOpen = _useState2[1];
51
+
52
+ var root = (0, _react.useRef)(null);
53
+ (0, _react.useEffect)(function () {
54
+ if (!open) return;
55
+
56
+ var closeIfOutside = function closeIfOutside(e) {
57
+ if (root.current && !root.current.contains(e.target)) setOpen(false);
58
+ };
59
+
60
+ document.addEventListener('mousedown', closeIfOutside);
61
+ return function () {
62
+ return document.removeEventListener('mousedown', closeIfOutside);
63
+ };
64
+ }, [open]);
65
+
66
+ if (typeof download === 'function') {
67
+ return /*#__PURE__*/_react["default"].createElement("button", {
68
+ className: "button is-small",
69
+ onClick: download
70
+ }, /*#__PURE__*/_react["default"].createElement(_reactFontawesome.FontAwesomeIcon, {
71
+ icon: _freeSolidSvgIcons.faDownload,
72
+ className: "",
73
+ style: {
74
+ fontSize: 14
75
+ }
76
+ }));
77
+ }
78
+
79
+ var select = function select(fn) {
80
+ fn();
81
+ setOpen(false);
82
+ };
83
+
84
+ return /*#__PURE__*/_react["default"].createElement("div", {
85
+ className: "dropdown is-right" + (open ? " is-active" : ""),
86
+ ref: root
87
+ }, /*#__PURE__*/_react["default"].createElement("div", {
88
+ className: "dropdown-trigger"
89
+ }, /*#__PURE__*/_react["default"].createElement("button", {
90
+ className: "button is-small",
91
+ onClick: function onClick() {
92
+ return setOpen(!open);
93
+ }
94
+ }, /*#__PURE__*/_react["default"].createElement(_reactFontawesome.FontAwesomeIcon, {
95
+ icon: _freeSolidSvgIcons.faDownload,
96
+ className: "",
97
+ style: {
98
+ fontSize: 14
99
+ }
100
+ }))), /*#__PURE__*/_react["default"].createElement("div", {
101
+ className: "dropdown-menu",
102
+ role: "menu"
103
+ }, /*#__PURE__*/_react["default"].createElement("div", {
104
+ className: "dropdown-content"
105
+ }, /*#__PURE__*/_react["default"].createElement("a", {
106
+ className: "dropdown-item",
107
+ onClick: function onClick() {
108
+ return select(download.hierarchy);
109
+ }
110
+ }, "\u968E\u5C64"), /*#__PURE__*/_react["default"].createElement("a", {
111
+ className: "dropdown-item",
112
+ onClick: function onClick() {
113
+ return select(download.flat);
114
+ }
115
+ }, "\u30D5\u30E9\u30C3\u30C8"), /*#__PURE__*/_react["default"].createElement("a", {
116
+ className: "dropdown-item",
117
+ onClick: function onClick() {
118
+ return select(download.data);
119
+ }
120
+ }, "\u30C7\u30FC\u30BF"))));
121
+ }
122
+
26
123
  function Controller(props) {
27
124
  var style_right = _objectSpread({}, style.center);
28
125
 
@@ -45,10 +142,6 @@ function Controller(props) {
45
142
  return callbacks.filter.clear();
46
143
  };
47
144
 
48
- var xxx = function xxx() {
49
- return callbacks.download();
50
- };
51
-
52
145
  return /*#__PURE__*/_react["default"].createElement("div", {
53
146
  style: style.root
54
147
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -87,16 +180,9 @@ function Controller(props) {
87
180
  onClick: clickColumns
88
181
  }, "Columns")), /*#__PURE__*/_react["default"].createElement("div", {
89
182
  style: style.right
90
- }, /*#__PURE__*/_react["default"].createElement("button", {
91
- className: "button is-small",
92
- onClick: xxx
93
- }, /*#__PURE__*/_react["default"].createElement(_reactFontawesome.FontAwesomeIcon, {
94
- icon: _freeSolidSvgIcons.faDownload,
95
- className: "",
96
- style: {
97
- fontSize: 14
98
- }
99
- }))));
183
+ }, /*#__PURE__*/_react["default"].createElement(DownloadButton, {
184
+ download: callbacks.download
185
+ })));
100
186
  }
101
187
 
102
188
  var _default = Controller;
@@ -18,7 +18,9 @@ var makeTr = function makeTr(d, props) {
18
18
  columns: props.columns,
19
19
  max_level: props.max_level,
20
20
  callbacks: props.callbacks,
21
- closed_wbs: props.closed_wbs
21
+ closed_wbs: props.closed_wbs,
22
+ selected: props.selected && props.selected[d._id] ? true : false,
23
+ style_selected: props.style_selected
22
24
  });
23
25
  };
24
26
 
@@ -11,14 +11,24 @@ var _reactFontawesome = require("@fortawesome/react-fontawesome");
11
11
 
12
12
  var _freeSolidSvgIcons = require("@fortawesome/free-solid-svg-icons");
13
13
 
14
+ var _Core = _interopRequireDefault(require("../Core.js"));
15
+
14
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
15
17
 
18
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
19
+
20
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
21
+
22
+ function _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; }
23
+
16
24
  function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
17
25
 
18
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); }
19
27
 
20
28
  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; }
21
29
 
30
+ var core = new _Core["default"]();
31
+
22
32
  function makeLevelingSpace(level) {
23
33
  var out = [];
24
34
  if (level > 0) for (var i = 0; i < level; i++) {
@@ -45,7 +55,7 @@ function opener(row, column, closed_wbs, callback) {
45
55
  display: 'inline-block'
46
56
  },
47
57
  onClick: callback,
48
- action: x ? "open" : "close",
58
+ "data-action": x ? "open" : "close",
49
59
  data_id: row._id
50
60
  }, x && /*#__PURE__*/_react["default"].createElement(_reactFontawesome.FontAwesomeIcon, {
51
61
  style: {
@@ -121,7 +131,9 @@ function cells(props, clickOpner) {
121
131
  colSpan: colSpan(column.leveling, level, max_level),
122
132
  callbacks: callbacks,
123
133
  nowrap: column.nowrap ? 'true' : null
124
- }, opener(row, column, props.closed_wbs, clickOpner), column.contents(column, row, key)));
134
+ }, /*#__PURE__*/_react["default"].createElement("div", {
135
+ style: core.widthStyle(column)
136
+ }, opener(row, column, props.closed_wbs, clickOpner), column.contents(column, row, key))));
125
137
  }
126
138
  } catch (err) {
127
139
  _iterator.e(err);
@@ -132,34 +144,51 @@ function cells(props, clickOpner) {
132
144
  return out;
133
145
  }
134
146
 
135
- ;
147
+ ; // 選択行の既定スタイル。文字色は変えず背景だけ変える。
148
+ // WBSTable の style.selected で上書きできる。
149
+
150
+ var SELECTED_STYLE = {
151
+ backgroundColor: '#F2F2B0'
152
+ };
136
153
 
137
- function trStyle(props) {
138
- if (props.source._class === "WORKPACKAGE") return {}; // return { fontWeight: 'bold' };
154
+ function trStyle(props, selectable) {
155
+ var style = selectable ? {
156
+ cursor: 'pointer'
157
+ } : {};
158
+ if (props.selected) style = _objectSpread(_objectSpread(_objectSpread({}, style), SELECTED_STYLE), props.style_selected || {});
159
+ if (props.source._class === "WORKPACKAGE") return style; // return { fontWeight: 'bold' };
139
160
 
140
161
  var x = props.max_level + 1 - props.source._level;
141
- return {
162
+ return _objectSpread(_objectSpread({}, style), {}, {
142
163
  fontSize: 14 + x * 2
143
- };
164
+ });
144
165
  }
145
166
 
146
167
  function TBodyTr(props) {
147
- trStyle(props);
168
+ var select = props.callbacks.body.row.select;
169
+ var clickRow = select ? function () {
170
+ return select(props.source);
171
+ } : null;
148
172
 
149
173
  var clickOpner = function clickOpner(e) {
174
+ // 折りたたみの矢印をクリックしたときは行の選択を発火させない。
175
+ e.stopPropagation();
176
+
150
177
  var span = function span(element) {
151
178
  if (element.tagName === 'SPAN') return element;
152
179
  return span(element.parentNode);
153
180
  };
154
181
 
155
182
  var element = span(e.target);
156
- var action = element.getAttribute('action');
183
+ var action = element.getAttribute('data-action');
157
184
  var data_id = element.getAttribute('data_id') * 1;
158
185
  props.callbacks.body.wbs["switch"](action, data_id);
159
186
  };
160
187
 
161
188
  return /*#__PURE__*/_react["default"].createElement("tr", {
162
- style: trStyle(props)
189
+ style: trStyle(props, !!select),
190
+ className: props.selected ? 'wbs-selected' : null,
191
+ onClick: clickRow
163
192
  }, cells(props, clickOpner));
164
193
  }
165
194
 
@@ -7,8 +7,18 @@ exports["default"] = void 0;
7
7
 
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
 
10
+ var _Core = _interopRequireDefault(require("../Core.js"));
11
+
10
12
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
11
13
 
14
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
15
+
16
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
17
+
18
+ function _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; }
19
+
20
+ var core = new _Core["default"]();
21
+
12
22
  var colSpan = function colSpan(leveling, max_level) {
13
23
  if (!leveling) return 1;
14
24
  return max_level + 1;
@@ -22,8 +32,10 @@ function THead(props) {
22
32
  return /*#__PURE__*/_react["default"].createElement("th", {
23
33
  key: i,
24
34
  colSpan: colSpan(d.leveling, max_level),
25
- style: style
26
- }, d.label);
35
+ style: _objectSpread(_objectSpread({}, style), core.widthCellStyle(d))
36
+ }, /*#__PURE__*/_react["default"].createElement("div", {
37
+ style: core.widthStyle(d)
38
+ }, d.label));
27
39
  })));
28
40
  }
29
41
 
package/dist/index.js CHANGED
@@ -9,12 +9,20 @@ Object.defineProperty(exports, "Core", {
9
9
  return _Core["default"];
10
10
  }
11
11
  });
12
+ Object.defineProperty(exports, "Supporter", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Supporter["default"];
16
+ }
17
+ });
12
18
  exports["default"] = void 0;
13
19
 
14
20
  var _WBSTable = _interopRequireDefault(require("./WBSTable.js"));
15
21
 
16
22
  var _Core = _interopRequireDefault(require("./Core.js"));
17
23
 
24
+ var _Supporter = _interopRequireDefault(require("./Supporter.js"));
25
+
18
26
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
19
27
 
20
28
  var _default = _WBSTable["default"];
package/example/.env ADDED
@@ -0,0 +1,4 @@
1
+ PORT=3002
2
+ SKIP_PREFLIGHT_CHECK=true
3
+ BROWSER=none
4
+ CI=true