@kaspernj/api-maker 1.0.469 → 1.0.471

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.
@@ -11,17 +11,32 @@ export default memo(shapeComponent(class ApiMakerUtilsCheckbox extends BaseCompo
11
11
  label: undefined
12
12
  };
13
13
  static propTypes = propTypesExact({
14
- checked: PropTypes.bool.isRequired,
14
+ checked: PropTypes.bool,
15
15
  dataSet: PropTypes.object,
16
+ defaultChecked: PropTypes.bool,
16
17
  label: PropTypes.string,
17
- onCheckedChange: PropTypes.func.isRequired,
18
+ onCheckedChange: PropTypes.func,
18
19
  style: PropTypes.object
19
20
  });
21
+ setup() {
22
+ this.useStates({
23
+ checked: this.props.defaultChecked
24
+ });
25
+ this.isChecked = this.calculateChecked();
26
+ }
27
+ calculateChecked() {
28
+ if ("checked" in this.props) {
29
+ return this.p.checked;
30
+ } else {
31
+ return this.s.checked;
32
+ }
33
+ }
20
34
  render() {
21
35
  const {
22
- checked,
23
- label,
24
- onCheckedChange
36
+ isChecked
37
+ } = this.tt;
38
+ const {
39
+ label
25
40
  } = this.p;
26
41
  const actualStyle = Object.assign({
27
42
  flexDirection: "row",
@@ -29,13 +44,13 @@ export default memo(shapeComponent(class ApiMakerUtilsCheckbox extends BaseCompo
29
44
  }, this.props.style);
30
45
  return /*#__PURE__*/React.createElement(View, {
31
46
  dataSet: {
32
- component: "api-maker--utils--checkbox"
47
+ component: "api-maker/utils/checkbox"
33
48
  },
34
49
  style: actualStyle
35
50
  }, /*#__PURE__*/React.createElement(CheckBox, {
36
51
  dataSet: this.props.dataSet,
37
- onValueChange: onCheckedChange,
38
- value: checked
52
+ onValueChange: this.tt.onValueChange,
53
+ value: isChecked
39
54
  }), label && /*#__PURE__*/React.createElement(Pressable, {
40
55
  onPress: this.tt.onLabelPressed
41
56
  }, /*#__PURE__*/React.createElement(Text, {
@@ -44,6 +59,14 @@ export default memo(shapeComponent(class ApiMakerUtilsCheckbox extends BaseCompo
44
59
  }
45
60
  }, label)));
46
61
  }
47
- onLabelPressed = () => this.p.onCheckedChange(!this.p.checked);
62
+ onLabelPressed = () => this.p.onCheckedChange(!this.tt.isChecked);
63
+ onValueChange = e => {
64
+ if (this.props.onCheckedChange) {
65
+ this.p.onCheckedChange(e);
66
+ }
67
+ this.setState({
68
+ checked: !this.tt.isChecked
69
+ });
70
+ };
48
71
  }));
49
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiQ2hlY2tCb3giLCJQcmVzc2FibGUiLCJWaWV3IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJzaGFwZUNvbXBvbmVudCIsIlRleHQiLCJBcGlNYWtlclV0aWxzQ2hlY2tib3giLCJkZWZhdWx0UHJvcHMiLCJsYWJlbCIsInVuZGVmaW5lZCIsInByb3BUeXBlcyIsImNoZWNrZWQiLCJib29sIiwiaXNSZXF1aXJlZCIsImRhdGFTZXQiLCJvYmplY3QiLCJzdHJpbmciLCJvbkNoZWNrZWRDaGFuZ2UiLCJmdW5jIiwic3R5bGUiLCJyZW5kZXIiLCJwIiwiYWN0dWFsU3R5bGUiLCJPYmplY3QiLCJhc3NpZ24iLCJmbGV4RGlyZWN0aW9uIiwiYWxpZ25JdGVtcyIsInByb3BzIiwiY3JlYXRlRWxlbWVudCIsImNvbXBvbmVudCIsIm9uVmFsdWVDaGFuZ2UiLCJ2YWx1ZSIsIm9uUHJlc3MiLCJ0dCIsIm9uTGFiZWxQcmVzc2VkIiwibWFyZ2luTGVmdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9jaGVja2JveC5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50XCJcbmltcG9ydCB7Q2hlY2tCb3gsIFByZXNzYWJsZSwgVmlld30gZnJvbSBcInJlYWN0LW5hdGl2ZVwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzQ2hlY2tib3ggZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBsYWJlbDogdW5kZWZpbmVkXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIGNoZWNrZWQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgZGF0YVNldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkNoZWNrZWRDaGFuZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3RcbiAgfSlcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NoZWNrZWQsIGxhYmVsLCBvbkNoZWNrZWRDaGFuZ2V9ID0gdGhpcy5wXG4gICAgY29uc3QgYWN0dWFsU3R5bGUgPSBPYmplY3QuYXNzaWduKFxuICAgICAge2ZsZXhEaXJlY3Rpb246IFwicm93XCIsIGFsaWduSXRlbXM6IFwiY2VudGVyXCJ9LFxuICAgICAgdGhpcy5wcm9wcy5zdHlsZVxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt7Y29tcG9uZW50OiBcImFwaS1tYWtlci0tdXRpbHMtLWNoZWNrYm94XCJ9fSBzdHlsZT17YWN0dWFsU3R5bGV9PlxuICAgICAgICA8Q2hlY2tCb3ggZGF0YVNldD17dGhpcy5wcm9wcy5kYXRhU2V0fSBvblZhbHVlQ2hhbmdlPXtvbkNoZWNrZWRDaGFuZ2V9IHZhbHVlPXtjaGVja2VkfSAvPlxuICAgICAgICB7bGFiZWwgJiZcbiAgICAgICAgICA8UHJlc3NhYmxlIG9uUHJlc3M9e3RoaXMudHQub25MYWJlbFByZXNzZWR9PlxuICAgICAgICAgICAgPFRleHQgc3R5bGU9e3ttYXJnaW5MZWZ0OiAzfX0+XG4gICAgICAgICAgICAgIHtsYWJlbH1cbiAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICA8L1ByZXNzYWJsZT5cbiAgICAgICAgfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIG9uTGFiZWxQcmVzc2VkID0gKCkgPT4gdGhpcy5wLm9uQ2hlY2tlZENoYW5nZSghdGhpcy5wLmNoZWNrZWQpXG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsYUFBYSxNQUFNLG1CQUFtQjtBQUM3QyxTQUFRQyxRQUFRLEVBQUVDLFNBQVMsRUFBRUMsSUFBSSxRQUFPLGNBQWM7QUFDdEQsT0FBT0MsSUFBSSxNQUFNLDRCQUE0QjtBQUM3QyxPQUFPQyxTQUFTLE1BQU0sWUFBWTtBQUNsQyxPQUFPQyxjQUFjLE1BQU0sa0JBQWtCO0FBQzdDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLFNBQVFDLGNBQWMsUUFBTyx1Q0FBdUM7QUFDcEUsT0FBT0MsSUFBSSxNQUFNLFFBQVE7QUFFekIsZUFBZUwsSUFBSSxDQUFDSSxjQUFjLENBQUMsTUFBTUUscUJBQXFCLFNBQVNWLGFBQWEsQ0FBQztFQUNuRixPQUFPVyxZQUFZLEdBQUc7SUFDcEJDLEtBQUssRUFBRUM7RUFDVCxDQUFDO0VBRUQsT0FBT0MsU0FBUyxHQUFHUixjQUFjLENBQUM7SUFDaENTLE9BQU8sRUFBRVYsU0FBUyxDQUFDVyxJQUFJLENBQUNDLFVBQVU7SUFDbENDLE9BQU8sRUFBRWIsU0FBUyxDQUFDYyxNQUFNO0lBQ3pCUCxLQUFLLEVBQUVQLFNBQVMsQ0FBQ2UsTUFBTTtJQUN2QkMsZUFBZSxFQUFFaEIsU0FBUyxDQUFDaUIsSUFBSSxDQUFDTCxVQUFVO0lBQzFDTSxLQUFLLEVBQUVsQixTQUFTLENBQUNjO0VBQ25CLENBQUMsQ0FBQztFQUVGSyxNQUFNQSxDQUFBLEVBQUc7SUFDUCxNQUFNO01BQUNULE9BQU87TUFBRUgsS0FBSztNQUFFUztJQUFlLENBQUMsR0FBRyxJQUFJLENBQUNJLENBQUM7SUFDaEQsTUFBTUMsV0FBVyxHQUFHQyxNQUFNLENBQUNDLE1BQU0sQ0FDL0I7TUFBQ0MsYUFBYSxFQUFFLEtBQUs7TUFBRUMsVUFBVSxFQUFFO0lBQVEsQ0FBQyxFQUM1QyxJQUFJLENBQUNDLEtBQUssQ0FBQ1IsS0FDYixDQUFDO0lBRUQsb0JBQ0VoQixLQUFBLENBQUF5QixhQUFBLENBQUM3QixJQUFJO01BQUNlLE9BQU8sRUFBRTtRQUFDZSxTQUFTLEVBQUU7TUFBNEIsQ0FBRTtNQUFDVixLQUFLLEVBQUVHO0lBQVksZ0JBQzNFbkIsS0FBQSxDQUFBeUIsYUFBQSxDQUFDL0IsUUFBUTtNQUFDaUIsT0FBTyxFQUFFLElBQUksQ0FBQ2EsS0FBSyxDQUFDYixPQUFRO01BQUNnQixhQUFhLEVBQUViLGVBQWdCO01BQUNjLEtBQUssRUFBRXBCO0lBQVEsQ0FBRSxDQUFDLEVBQ3hGSCxLQUFLLGlCQUNKTCxLQUFBLENBQUF5QixhQUFBLENBQUM5QixTQUFTO01BQUNrQyxPQUFPLEVBQUUsSUFBSSxDQUFDQyxFQUFFLENBQUNDO0lBQWUsZ0JBQ3pDL0IsS0FBQSxDQUFBeUIsYUFBQSxDQUFDdkIsSUFBSTtNQUFDYyxLQUFLLEVBQUU7UUFBQ2dCLFVBQVUsRUFBRTtNQUFDO0lBQUUsR0FDMUIzQixLQUNHLENBQ0csQ0FFVCxDQUFDO0VBRVg7RUFFQTBCLGNBQWMsR0FBR0EsQ0FBQSxLQUFNLElBQUksQ0FBQ2IsQ0FBQyxDQUFDSixlQUFlLENBQUMsQ0FBQyxJQUFJLENBQUNJLENBQUMsQ0FBQ1YsT0FBTyxDQUFDO0FBQ2hFLENBQUMsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
72
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29tcG9uZW50IiwiQ2hlY2tCb3giLCJQcmVzc2FibGUiLCJWaWV3IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJzaGFwZUNvbXBvbmVudCIsIlRleHQiLCJBcGlNYWtlclV0aWxzQ2hlY2tib3giLCJkZWZhdWx0UHJvcHMiLCJsYWJlbCIsInVuZGVmaW5lZCIsInByb3BUeXBlcyIsImNoZWNrZWQiLCJib29sIiwiZGF0YVNldCIsIm9iamVjdCIsImRlZmF1bHRDaGVja2VkIiwic3RyaW5nIiwib25DaGVja2VkQ2hhbmdlIiwiZnVuYyIsInN0eWxlIiwic2V0dXAiLCJ1c2VTdGF0ZXMiLCJwcm9wcyIsImlzQ2hlY2tlZCIsImNhbGN1bGF0ZUNoZWNrZWQiLCJwIiwicyIsInJlbmRlciIsInR0IiwiYWN0dWFsU3R5bGUiLCJPYmplY3QiLCJhc3NpZ24iLCJmbGV4RGlyZWN0aW9uIiwiYWxpZ25JdGVtcyIsImNyZWF0ZUVsZW1lbnQiLCJjb21wb25lbnQiLCJvblZhbHVlQ2hhbmdlIiwidmFsdWUiLCJvblByZXNzIiwib25MYWJlbFByZXNzZWQiLCJtYXJnaW5MZWZ0IiwiZSIsInNldFN0YXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2NoZWNrYm94LmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQmFzZUNvbXBvbmVudCBmcm9tIFwiLi4vYmFzZS1jb21wb25lbnRcIlxuaW1wb3J0IHtDaGVja0JveCwgUHJlc3NhYmxlLCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvbWVtb1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCJcbmltcG9ydCB7c2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCBUZXh0IGZyb20gXCIuL3RleHRcIlxuXG5leHBvcnQgZGVmYXVsdCBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VyVXRpbHNDaGVja2JveCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGxhYmVsOiB1bmRlZmluZWRcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgY2hlY2tlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgZGF0YVNldDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZWZhdWx0Q2hlY2tlZDogUHJvcFR5cGVzLmJvb2wsXG4gICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DaGVja2VkQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdFxuICB9KVxuXG4gIHNldHVwKCkge1xuICAgIHRoaXMudXNlU3RhdGVzKHtcbiAgICAgIGNoZWNrZWQ6IHRoaXMucHJvcHMuZGVmYXVsdENoZWNrZWRcbiAgICB9KVxuICAgIHRoaXMuaXNDaGVja2VkID0gdGhpcy5jYWxjdWxhdGVDaGVja2VkKClcbiAgfVxuXG4gIGNhbGN1bGF0ZUNoZWNrZWQoKSB7XG4gICAgaWYgKFwiY2hlY2tlZFwiIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnAuY2hlY2tlZFxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy5zLmNoZWNrZWRcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2lzQ2hlY2tlZH0gPSB0aGlzLnR0XG4gICAgY29uc3Qge2xhYmVsfSA9IHRoaXMucFxuICAgIGNvbnN0IGFjdHVhbFN0eWxlID0gT2JqZWN0LmFzc2lnbihcbiAgICAgIHtmbGV4RGlyZWN0aW9uOiBcInJvd1wiLCBhbGlnbkl0ZW1zOiBcImNlbnRlclwifSxcbiAgICAgIHRoaXMucHJvcHMuc3R5bGVcbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPFZpZXcgZGF0YVNldD17e2NvbXBvbmVudDogXCJhcGktbWFrZXIvdXRpbHMvY2hlY2tib3hcIn19IHN0eWxlPXthY3R1YWxTdHlsZX0+XG4gICAgICAgIDxDaGVja0JveCBkYXRhU2V0PXt0aGlzLnByb3BzLmRhdGFTZXR9IG9uVmFsdWVDaGFuZ2U9e3RoaXMudHQub25WYWx1ZUNoYW5nZX0gdmFsdWU9e2lzQ2hlY2tlZH0gLz5cbiAgICAgICAge2xhYmVsICYmXG4gICAgICAgICAgPFByZXNzYWJsZSBvblByZXNzPXt0aGlzLnR0Lm9uTGFiZWxQcmVzc2VkfT5cbiAgICAgICAgICAgIDxUZXh0IHN0eWxlPXt7bWFyZ2luTGVmdDogM319PlxuICAgICAgICAgICAgICB7bGFiZWx9XG4gICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgPC9QcmVzc2FibGU+XG4gICAgICAgIH1cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkxhYmVsUHJlc3NlZCA9ICgpID0+IHRoaXMucC5vbkNoZWNrZWRDaGFuZ2UoIXRoaXMudHQuaXNDaGVja2VkKVxuXG4gIG9uVmFsdWVDaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGlmICh0aGlzLnByb3BzLm9uQ2hlY2tlZENoYW5nZSkge1xuICAgICAgdGhpcy5wLm9uQ2hlY2tlZENoYW5nZShlKVxuICAgIH1cblxuICAgIHRoaXMuc2V0U3RhdGUoe2NoZWNrZWQ6ICF0aGlzLnR0LmlzQ2hlY2tlZH0pXG4gIH1cbn0pKVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxhQUFhLE1BQU0sbUJBQW1CO0FBQzdDLFNBQVFDLFFBQVEsRUFBRUMsU0FBUyxFQUFFQyxJQUFJLFFBQU8sY0FBYztBQUN0RCxPQUFPQyxJQUFJLE1BQU0sNEJBQTRCO0FBQzdDLE9BQU9DLFNBQVMsTUFBTSxZQUFZO0FBQ2xDLE9BQU9D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
@@ -0,0 +1,163 @@
1
+ import { shapeComponent, ShapeComponent } from "set-state-compare/src/shape-component";
2
+ import React, { useMemo } from "react";
3
+ import Checkbox from "./checkbox";
4
+ import { digs } from "diggerize";
5
+ import { useForm } from "../form";
6
+ import * as inflection from "inflection";
7
+ import InvalidFeedback from "./invalid-feedback";
8
+ import memo from "set-state-compare/src/memo";
9
+ import PropTypes from "prop-types";
10
+ import propTypesExact from "prop-types-exact";
11
+ import Text from "./text";
12
+ import useInput from "../use-input";
13
+ import { View } from "react-native";
14
+ const OptionElement = memo(shapeComponent(class OptionElement extends ShapeComponent {
15
+ static propTypes = propTypesExact({
16
+ checked: PropTypes.bool.isRequired,
17
+ inputName: PropTypes.string.isRequired,
18
+ onChange: PropTypes.func.isRequired,
19
+ option: PropTypes.array.isRequired
20
+ });
21
+ render() {
22
+ const {
23
+ checked,
24
+ inputName,
25
+ option
26
+ } = this.p;
27
+ return /*#__PURE__*/React.createElement(View, null, /*#__PURE__*/React.createElement(Checkbox, {
28
+ checked: checked,
29
+ dataSet: {
30
+ component: "api-maker/utils/checkboxes/option",
31
+ name: inputName,
32
+ value: option[1]
33
+ },
34
+ label: option[0],
35
+ onCheckedChange: this.tt.onChange
36
+ }));
37
+ }
38
+ onChange = checked => this.p.onChange({
39
+ checked,
40
+ option: this.p.option
41
+ });
42
+ }));
43
+ export default memo(shapeComponent(class ApiMakerUtilsCheckboxes extends ShapeComponent {
44
+ static propTypes = propTypesExact({
45
+ attribute: PropTypes.string,
46
+ defaultValue: PropTypes.array,
47
+ label: PropTypes.string,
48
+ labelClassName: PropTypes.string,
49
+ model: PropTypes.object,
50
+ name: PropTypes.string,
51
+ onChange: PropTypes.func,
52
+ options: PropTypes.array.isRequired
53
+ });
54
+ setup() {
55
+ const {
56
+ inputProps,
57
+ wrapperOpts
58
+ } = useInput({
59
+ props: this.props
60
+ });
61
+ this.generatedId = useMemo(() => Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15), []);
62
+ this.setInstance({
63
+ form: useForm(),
64
+ inputProps,
65
+ wrapperOpts
66
+ });
67
+ this.useStates({
68
+ checkedOptions: () => {
69
+ if (Array.isArray(this.props.defaultValue)) return this.props.defaultValue;
70
+ if (this.props.defaultValue) return [this.props.defaultValue];
71
+ return [];
72
+ }
73
+ });
74
+ useMemo(() => {
75
+ if (this.form && inputProps.name) {
76
+ this.form.setValue(inputProps.name, this.s.checkedOptions);
77
+ }
78
+ }, []);
79
+ }
80
+ render() {
81
+ const {
82
+ wrapperOpts
83
+ } = this.tt;
84
+ const {
85
+ errors
86
+ } = digs(wrapperOpts, "errors");
87
+ return /*#__PURE__*/React.createElement(View, {
88
+ dataSet: {
89
+ component: "api-maker/utils/checkboxes"
90
+ }
91
+ }, /*#__PURE__*/React.createElement(Text, {
92
+ style: {
93
+ fontWeight: "bold"
94
+ }
95
+ }, this.tt.wrapperOpts.label), this.props.options.map(option => /*#__PURE__*/React.createElement(OptionElement, {
96
+ checked: this.isChecked(option),
97
+ inputName: this.inputName(),
98
+ key: option[1],
99
+ onChange: this.tt.onOptionChecked,
100
+ option: option
101
+ })), errors.length > 0 && /*#__PURE__*/React.createElement(InvalidFeedback, {
102
+ errors: errors
103
+ }));
104
+ }
105
+ inputDefaultValue() {
106
+ const {
107
+ attribute,
108
+ defaultValue,
109
+ model
110
+ } = this.props;
111
+ if (defaultValue) {
112
+ return defaultValue;
113
+ } else if (attribute && model) {
114
+ if (!model[attribute]) throw `No such attribute: ${attribute}`;
115
+ return this.props.model[attribute]();
116
+ }
117
+ }
118
+ inputName() {
119
+ if (this.props.name) {
120
+ return `${this.props.name}[]`;
121
+ } else if (this.props.model) {
122
+ return `${this.props.model.modelClassData().paramKey}[${inflection.underscore(this.props.attribute)}]`;
123
+ }
124
+ }
125
+ isChecked = option => this.s.checkedOptions.includes(option[1]);
126
+ onOptionChecked = ({
127
+ checked,
128
+ option
129
+ }) => {
130
+ const {
131
+ inputProps,
132
+ form
133
+ } = this.tt;
134
+ const {
135
+ name
136
+ } = inputProps;
137
+ let newOptions;
138
+ if (checked) {
139
+ newOptions = this.s.checkedOptions.concat([option[1]]);
140
+ this.setState({
141
+ checkedOptions: newOptions
142
+ });
143
+ } else {
144
+ newOptions = this.s.checkedOptions.filter(value => value != option[1]);
145
+ this.setState({
146
+ checkedOptions: newOptions
147
+ });
148
+ }
149
+ console.log({
150
+ checkedOptions: this.s.checkedOptions
151
+ });
152
+ if (this.props.onChange) {
153
+ this.p.onChange({
154
+ checked,
155
+ option
156
+ });
157
+ }
158
+ if (form && name) {
159
+ form.setValue(name, newOptions);
160
+ }
161
+ };
162
+ }));
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzaGFwZUNvbXBvbmVudCIsIlNoYXBlQ29tcG9uZW50IiwiUmVhY3QiLCJ1c2VNZW1vIiwiQ2hlY2tib3giLCJkaWdzIiwidXNlRm9ybSIsImluZmxlY3Rpb24iLCJJbnZhbGlkRmVlZGJhY2siLCJtZW1vIiwiUHJvcFR5cGVzIiwicHJvcFR5cGVzRXhhY3QiLCJUZXh0IiwidXNlSW5wdXQiLCJWaWV3IiwiT3B0aW9uRWxlbWVudCIsInByb3BUeXBlcyIsImNoZWNrZWQiLCJib29sIiwiaXNSZXF1aXJlZCIsImlucHV0TmFtZSIsInN0cmluZyIsIm9uQ2hhbmdlIiwiZnVuYyIsIm9wdGlvbiIsImFycmF5IiwicmVuZGVyIiwicCIsImNyZWF0ZUVsZW1lbnQiLCJkYXRhU2V0IiwiY29tcG9uZW50IiwibmFtZSIsInZhbHVlIiwibGFiZWwiLCJvbkNoZWNrZWRDaGFuZ2UiLCJ0dCIsIkFwaU1ha2VyVXRpbHNDaGVja2JveGVzIiwiYXR0cmlidXRlIiwiZGVmYXVsdFZhbHVlIiwibGFiZWxDbGFzc05hbWUiLCJtb2RlbCIsIm9iamVjdCIsIm9wdGlvbnMiLCJzZXR1cCIsImlucHV0UHJvcHMiLCJ3cmFwcGVyT3B0cyIsInByb3BzIiwiZ2VuZXJhdGVkSWQiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJzdWJzdHJpbmciLCJzZXRJbnN0YW5jZSIsImZvcm0iLCJ1c2VTdGF0ZXMiLCJjaGVja2VkT3B0aW9ucyIsIkFycmF5IiwiaXNBcnJheSIsInNldFZhbHVlIiwicyIsImVycm9ycyIsInN0eWxlIiwiZm9udFdlaWdodCIsIm1hcCIsImlzQ2hlY2tlZCIsImtleSIsIm9uT3B0aW9uQ2hlY2tlZCIsImxlbmd0aCIsImlucHV0RGVmYXVsdFZhbHVlIiwibW9kZWxDbGFzc0RhdGEiLCJwYXJhbUtleSIsInVuZGVyc2NvcmUiLCJpbmNsdWRlcyIsIm5ld09wdGlvbnMiLCJjb25jYXQiLCJzZXRTdGF0ZSIsImZpbHRlciIsImNvbnNvbGUiLCJsb2ciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvY2hlY2tib3hlcy5qc3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzaGFwZUNvbXBvbmVudCwgU2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9zcmMvc2hhcGUtY29tcG9uZW50XCJcbmltcG9ydCBSZWFjdCwge3VzZU1lbW99IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgQ2hlY2tib3ggZnJvbSBcIi4vY2hlY2tib3hcIlxuaW1wb3J0IHtkaWdzfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCB7dXNlRm9ybX0gZnJvbSBcIi4uL2Zvcm1cIlxuaW1wb3J0ICogYXMgaW5mbGVjdGlvbiBmcm9tIFwiaW5mbGVjdGlvblwiXG5pbXBvcnQgSW52YWxpZEZlZWRiYWNrIGZyb20gXCIuL2ludmFsaWQtZmVlZGJhY2tcIlxuaW1wb3J0IG1lbW8gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL3NyYy9tZW1vXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IHByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcbmltcG9ydCBUZXh0IGZyb20gXCIuL3RleHRcIlxuaW1wb3J0IHVzZUlucHV0IGZyb20gXCIuLi91c2UtaW5wdXRcIlxuaW1wb3J0IHtWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcblxuY29uc3QgT3B0aW9uRWxlbWVudCA9IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgT3B0aW9uRWxlbWVudCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBjaGVja2VkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGlucHV0TmFtZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIG9wdGlvbjogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWRcbiAgfSlcblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge2NoZWNrZWQsIGlucHV0TmFtZSwgb3B0aW9ufSA9IHRoaXMucFxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3ID5cbiAgICAgICAgPENoZWNrYm94XG4gICAgICAgICAgY2hlY2tlZD17Y2hlY2tlZH1cbiAgICAgICAgICBkYXRhU2V0PXt7XG4gICAgICAgICAgICBjb21wb25lbnQ6IFwiYXBpLW1ha2VyL3V0aWxzL2NoZWNrYm94ZXMvb3B0aW9uXCIsXG4gICAgICAgICAgICBuYW1lOiBpbnB1dE5hbWUsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uWzFdXG4gICAgICAgICAgfX1cbiAgICAgICAgICBsYWJlbD17b3B0aW9uWzBdfVxuICAgICAgICAgIG9uQ2hlY2tlZENoYW5nZT17dGhpcy50dC5vbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBvbkNoYW5nZSA9IChjaGVja2VkKSA9PiB0aGlzLnAub25DaGFuZ2Uoe2NoZWNrZWQsIG9wdGlvbjogdGhpcy5wLm9wdGlvbn0pXG59KSlcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzQ2hlY2tib3hlcyBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBhdHRyaWJ1dGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbGFiZWxDbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb3B0aW9uczogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWRcbiAgfSlcblxuICBzZXR1cCgpIHtcbiAgICBjb25zdCB7aW5wdXRQcm9wcywgd3JhcHBlck9wdHN9ID0gdXNlSW5wdXQoe3Byb3BzOiB0aGlzLnByb3BzfSlcblxuICAgIHRoaXMuZ2VuZXJhdGVkSWQgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDIsIDE1KSArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCAxNSksXG4gICAgICBbXVxuICAgIClcblxuICAgIHRoaXMuc2V0SW5zdGFuY2Uoe1xuICAgICAgZm9ybTogdXNlRm9ybSgpLFxuICAgICAgaW5wdXRQcm9wcyxcbiAgICAgIHdyYXBwZXJPcHRzXG4gICAgfSlcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjaGVja2VkT3B0aW9uczogKCkgPT4ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSkpIHJldHVybiB0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZVxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUpIHJldHVybiBbdGhpcy5wcm9wcy5kZWZhdWx0VmFsdWVdXG5cbiAgICAgICAgcmV0dXJuIFtdXG4gICAgICB9XG4gICAgfSlcblxuICAgIHVzZU1lbW8oKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuZm9ybSAmJiBpbnB1dFByb3BzLm5hbWUpIHtcbiAgICAgICAgdGhpcy5mb3JtLnNldFZhbHVlKGlucHV0UHJvcHMubmFtZSwgdGhpcy5zLmNoZWNrZWRPcHRpb25zKVxuICAgICAgfVxuICAgIH0sIFtdKVxuICB9XG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCB7d3JhcHBlck9wdHN9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtlcnJvcnN9ID0gZGlncyh3cmFwcGVyT3B0cywgXCJlcnJvcnNcIilcblxuICAgIHJldHVybiAoXG4gICAgICA8VmlldyBkYXRhU2V0PXt7Y29tcG9uZW50OiBcImFwaS1tYWtlci91dGlscy9jaGVja2JveGVzXCJ9fT5cbiAgICAgICAgPFRleHQgc3R5bGU9e3tmb250V2VpZ2h0OiBcImJvbGRcIn19PlxuICAgICAgICAgIHt0aGlzLnR0LndyYXBwZXJPcHRzLmxhYmVsfVxuICAgICAgICA8L1RleHQ+XG4gICAgICAgIHt0aGlzLnByb3BzLm9wdGlvbnMubWFwKChvcHRpb24pID0+XG4gICAgICAgICAgPE9wdGlvbkVsZW1lbnRcbiAgICAgICAgICAgIGNoZWNrZWQ9e3RoaXMuaXNDaGVja2VkKG9wdGlvbil9XG4gICAgICAgICAgICBpbnB1dE5hbWU9e3RoaXMuaW5wdXROYW1lKCl9XG4gICAgICAgICAgICBrZXk9e29wdGlvblsxXX1cbiAgICAgICAgICAgIG9uQ2hhbmdlPXt0aGlzLnR0Lm9uT3B0aW9uQ2hlY2tlZH1cbiAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHtlcnJvcnMubGVuZ3RoID4gMCAmJlxuICAgICAgICAgIDxJbnZhbGlkRmVlZGJhY2sgZXJyb3JzPXtlcnJvcnN9IC8+XG4gICAgICAgIH1cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBpbnB1dERlZmF1bHRWYWx1ZSAoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlLCBtb2RlbH0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gZGVmYXVsdFZhbHVlXG4gICAgfSBlbHNlIGlmIChhdHRyaWJ1dGUgJiYgbW9kZWwpIHtcbiAgICAgIGlmICghbW9kZWxbYXR0cmlidXRlXSkgdGhyb3cgYE5vIHN1Y2ggYXR0cmlidXRlOiAke2F0dHJpYnV0ZX1gXG5cbiAgICAgIHJldHVybiB0aGlzLnByb3BzLm1vZGVsW2F0dHJpYnV0ZV0oKVxuICAgIH1cbiAgfVxuXG4gIGlucHV0TmFtZSAoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMubmFtZSkge1xuICAgICAgcmV0dXJuIGAke3RoaXMucHJvcHMubmFtZX1bXWBcbiAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMubW9kZWwpIHtcbiAgICAgIHJldHVybiBgJHt0aGlzLnByb3BzLm1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkucGFyYW1LZXl9WyR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMucHJvcHMuYXR0cmlidXRlKX1dYFxuICAgIH1cbiAgfVxuXG4gIGlzQ2hlY2tlZCA9IChvcHRpb24pID0+IHRoaXMucy5jaGVja2VkT3B0aW9ucy5pbmNsdWRlcyhvcHRpb25bMV0pXG5cbiAgb25PcHRpb25DaGVja2VkID0gKHtjaGVja2VkLCBvcHRpb259KSA9PiB7XG4gICAgY29uc3Qge2lucHV0UHJvcHMsIGZvcm19ID0gdGhpcy50dFxuICAgIGNvbnN0IHtuYW1lfSA9IGlucHV0UHJvcHNcbiAgICBsZXQgbmV3T3B0aW9uc1xuXG4gICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgIG5ld09wdGlvbnMgPSB0aGlzLnMuY2hlY2tlZE9wdGlvbnMuY29uY2F0KFtvcHRpb25bMV1dKVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkT3B0aW9uczogbmV3T3B0aW9uc30pXG4gICAgfSBlbHNlIHtcbiAgICAgIG5ld09wdGlvbnMgPSB0aGlzLnMuY2hlY2tlZE9wdGlvbnMuZmlsdGVyKCh2YWx1ZSkgPT4gdmFsdWUgIT0gb3B0aW9uWzFdKVxuXG4gICAgICB0aGlzLnNldFN0YXRlKHtjaGVja2VkT3B0aW9uczogbmV3T3B0aW9uc30pXG4gICAgfVxuXG4gICAgY29uc29sZS5sb2coe2NoZWNrZWRPcHRpb25zOiB0aGlzLnMuY2hlY2tlZE9wdGlvbnN9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHRoaXMucC5vbkNoYW5nZSh7Y2hlY2tlZCwgb3B0aW9ufSlcbiAgICB9XG5cbiAgICBpZiAoZm9ybSAmJiBuYW1lKSB7XG4gICAgICBmb3JtLnNldFZhbHVlKG5hbWUsIG5ld09wdGlvbnMpXG4gICAgfVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsY0FBYyxFQUFFQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BGLE9BQU9DLEtBQUssSUFBR0MsT0FBTyxRQUFPLE9BQU87QUFDcEMsT0FBT0MsUUFBUSxNQUFNLFlBQVk7QUFDakMsU0FBUUMsSUFBSSxRQUFPLFdBQVc7QUFDOUIsU0FBUUMsT0FBTyxRQUFPLFNBQVM7QUFDL0IsT0FBTyxLQUFLQyxVQUFVLE1BQU0sWUFBWTtBQUN4QyxPQUFPQyxlQUFlLE1BQU0sb0JBQW9CO0FBQ2hELE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxPQUFPQyxJQUFJLE1BQU0sUUFBUTtBQUN6QixPQUFPQyxRQUFRLE1BQU0sY0FBYztBQUNuQyxTQUFRQyxJQUFJLFFBQU8sY0FBYztBQUVqQyxNQUFNQyxhQUFhLEdBQUdOLElBQUksQ0FBQ1QsY0FBYyxDQUFDLE1BQU1lLGFBQWEsU0FBU2QsY0FBYyxDQUFDO0VBQ25GLE9BQU9lLFNBQVMsR0FBR0wsY0FBYyxDQUFDO0lBQ2hDTSxPQUFPLEVBQUVQLFNBQVMsQ0FBQ1EsSUFBSSxDQUFDQyxVQUFVO0lBQ2xDQyxTQUFTLEVBQUVWLFNBQVMsQ0FBQ1csTUFBTSxDQUFDRixVQUFVO0lBQ3RDRyxRQUFRLEVBQUVaLFNBQVMsQ0FBQ2EsSUFBSSxDQUFDSixVQUFVO0lBQ25DSyxNQUFNLEVBQUVkLFNBQVMsQ0FBQ2UsS0FBSyxDQUFDTjtFQUMxQixDQUFDLENBQUM7RUFFRk8sTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFDVCxPQUFPO01BQUVHLFNBQVM7TUFBRUk7SUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDRyxDQUFDO0lBRTNDLG9CQUNFekIsS0FBQSxDQUFBMEIsYUFBQSxDQUFDZCxJQUFJLHFCQUNIWixLQUFBLENBQUEw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
@@ -0,0 +1,19 @@
1
+ import { shapeComponent, ShapeComponent } from "set-state-compare/src/shape-component";
2
+ import memo from "set-state-compare/src/memo";
3
+ import PropTypes from "prop-types";
4
+ import propTypesExact from "prop-types-exact";
5
+ import React from "react";
6
+ import Text from "./text";
7
+ export default memo(shapeComponent(class ApiMakerUtilsInvalidFeedback extends ShapeComponent {
8
+ static propTypes = propTypesExact({
9
+ message: PropTypes.string.isRequired
10
+ });
11
+ render() {
12
+ return /*#__PURE__*/React.createElement(Text, {
13
+ style: {
14
+ color: "red"
15
+ }
16
+ }, this.p.message);
17
+ }
18
+ }));
19
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzaGFwZUNvbXBvbmVudCIsIlNoYXBlQ29tcG9uZW50IiwibWVtbyIsIlByb3BUeXBlcyIsInByb3BUeXBlc0V4YWN0IiwiUmVhY3QiLCJUZXh0IiwiQXBpTWFrZXJVdGlsc0ludmFsaWRGZWVkYmFjayIsInByb3BUeXBlcyIsIm1lc3NhZ2UiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwicmVuZGVyIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwiY29sb3IiLCJwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2ludmFsaWQtZmVlZGJhY2suanN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7c2hhcGVDb21wb25lbnQsIFNoYXBlQ29tcG9uZW50fSBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL3NoYXBlLWNvbXBvbmVudFwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvc3JjL21lbW9cIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQgVGV4dCBmcm9tIFwiLi90ZXh0XCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlclV0aWxzSW52YWxpZEZlZWRiYWNrIGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0gcHJvcFR5cGVzRXhhY3Qoe1xuICAgIG1lc3NhZ2U6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICB9KVxuXG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPFRleHQgc3R5bGU9e3tjb2xvcjogXCJyZWRcIn19PlxuICAgICAgICB7dGhpcy5wLm1lc3NhZ2V9XG4gICAgICA8L1RleHQ+XG4gICAgKVxuICB9XG59KSlcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUUEsY0FBYyxFQUFFQyxjQUFjLFFBQU8sdUNBQXVDO0FBQ3BGLE9BQU9DLElBQUksTUFBTSw0QkFBNEI7QUFDN0MsT0FBT0MsU0FBUyxNQUFNLFlBQVk7QUFDbEMsT0FBT0MsY0FBYyxNQUFNLGtCQUFrQjtBQUM3QyxPQUFPQyxLQUFLLE1BQU0sT0FBTztBQUN6QixPQUFPQyxJQUFJLE1BQU0sUUFBUTtBQUV6QixlQUFlSixJQUFJLENBQUNGLGNBQWMsQ0FBQyxNQUFNTyw0QkFBNEIsU0FBU04sY0FBYyxDQUFDO0VBQzNGLE9BQU9PLFNBQVMsR0FBR0osY0FBYyxDQUFDO0lBQ2hDSyxPQUFPLEVBQUVOLFNBQVMsQ0FBQ08sTUFBTSxDQUFDQztFQUM1QixDQUFDLENBQUM7RUFFRkMsTUFBTUEsQ0FBQSxFQUFHO0lBQ1Asb0JBQ0VQLEtBQUEsQ0FBQVEsYUFBQSxDQUFDUCxJQUFJO01BQUNRLEtBQUssRUFBRTtRQUFDQyxLQUFLLEVBQUU7TUFBSztJQUFFLEdBQ3pCLElBQUksQ0FBQ0MsQ0FBQyxDQUFDUCxPQUNKLENBQUM7RUFFWDtBQUNGLENBQUMsQ0FBQyxDQUFDIiwiaWdub3JlTGlzdCI6W119
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaspernj/api-maker",
3
- "version": "1.0.469",
3
+ "version": "1.0.471",
4
4
  "description": "My new module",
5
5
  "main": "build/index.js",
6
6
  "scripts": {
@@ -77,7 +77,6 @@
77
77
  "i18n-on-steroids": "*",
78
78
  "react": "*",
79
79
  "react-native": "*",
80
- "react-native-vector-icons": "*",
81
- "i18n-on-steroids": "*"
80
+ "react-native-vector-icons": "*"
82
81
  }
83
82
  }
@@ -13,23 +13,40 @@ export default memo(shapeComponent(class ApiMakerUtilsCheckbox extends BaseCompo
13
13
  }
14
14
 
15
15
  static propTypes = propTypesExact({
16
- checked: PropTypes.bool.isRequired,
16
+ checked: PropTypes.bool,
17
17
  dataSet: PropTypes.object,
18
+ defaultChecked: PropTypes.bool,
18
19
  label: PropTypes.string,
19
- onCheckedChange: PropTypes.func.isRequired,
20
+ onCheckedChange: PropTypes.func,
20
21
  style: PropTypes.object
21
22
  })
22
23
 
24
+ setup() {
25
+ this.useStates({
26
+ checked: this.props.defaultChecked
27
+ })
28
+ this.isChecked = this.calculateChecked()
29
+ }
30
+
31
+ calculateChecked() {
32
+ if ("checked" in this.props) {
33
+ return this.p.checked
34
+ } else {
35
+ return this.s.checked
36
+ }
37
+ }
38
+
23
39
  render() {
24
- const {checked, label, onCheckedChange} = this.p
40
+ const {isChecked} = this.tt
41
+ const {label} = this.p
25
42
  const actualStyle = Object.assign(
26
43
  {flexDirection: "row", alignItems: "center"},
27
44
  this.props.style
28
45
  )
29
46
 
30
47
  return (
31
- <View dataSet={{component: "api-maker--utils--checkbox"}} style={actualStyle}>
32
- <CheckBox dataSet={this.props.dataSet} onValueChange={onCheckedChange} value={checked} />
48
+ <View dataSet={{component: "api-maker/utils/checkbox"}} style={actualStyle}>
49
+ <CheckBox dataSet={this.props.dataSet} onValueChange={this.tt.onValueChange} value={isChecked} />
33
50
  {label &&
34
51
  <Pressable onPress={this.tt.onLabelPressed}>
35
52
  <Text style={{marginLeft: 3}}>
@@ -41,5 +58,13 @@ export default memo(shapeComponent(class ApiMakerUtilsCheckbox extends BaseCompo
41
58
  )
42
59
  }
43
60
 
44
- onLabelPressed = () => this.p.onCheckedChange(!this.p.checked)
61
+ onLabelPressed = () => this.p.onCheckedChange(!this.tt.isChecked)
62
+
63
+ onValueChange = (e) => {
64
+ if (this.props.onCheckedChange) {
65
+ this.p.onCheckedChange(e)
66
+ }
67
+
68
+ this.setState({checked: !this.tt.isChecked})
69
+ }
45
70
  }))
@@ -0,0 +1,158 @@
1
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
2
+ import React, {useMemo} from "react"
3
+ import Checkbox from "./checkbox"
4
+ import {digs} from "diggerize"
5
+ import {useForm} from "../form"
6
+ import * as inflection from "inflection"
7
+ import InvalidFeedback from "./invalid-feedback"
8
+ import memo from "set-state-compare/src/memo"
9
+ import PropTypes from "prop-types"
10
+ import propTypesExact from "prop-types-exact"
11
+ import Text from "./text"
12
+ import useInput from "../use-input"
13
+ import {View} from "react-native"
14
+
15
+ const OptionElement = memo(shapeComponent(class OptionElement extends ShapeComponent {
16
+ static propTypes = propTypesExact({
17
+ checked: PropTypes.bool.isRequired,
18
+ inputName: PropTypes.string.isRequired,
19
+ onChange: PropTypes.func.isRequired,
20
+ option: PropTypes.array.isRequired
21
+ })
22
+
23
+ render() {
24
+ const {checked, inputName, option} = this.p
25
+
26
+ return (
27
+ <View >
28
+ <Checkbox
29
+ checked={checked}
30
+ dataSet={{
31
+ component: "api-maker/utils/checkboxes/option",
32
+ name: inputName,
33
+ value: option[1]
34
+ }}
35
+ label={option[0]}
36
+ onCheckedChange={this.tt.onChange}
37
+ />
38
+ </View>
39
+ )
40
+ }
41
+
42
+ onChange = (checked) => this.p.onChange({checked, option: this.p.option})
43
+ }))
44
+
45
+ export default memo(shapeComponent(class ApiMakerUtilsCheckboxes extends ShapeComponent {
46
+ static propTypes = propTypesExact({
47
+ attribute: PropTypes.string,
48
+ defaultValue: PropTypes.array,
49
+ label: PropTypes.string,
50
+ labelClassName: PropTypes.string,
51
+ model: PropTypes.object,
52
+ name: PropTypes.string,
53
+ onChange: PropTypes.func,
54
+ options: PropTypes.array.isRequired
55
+ })
56
+
57
+ setup() {
58
+ const {inputProps, wrapperOpts} = useInput({props: this.props})
59
+
60
+ this.generatedId = useMemo(
61
+ () => Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15),
62
+ []
63
+ )
64
+
65
+ this.setInstance({
66
+ form: useForm(),
67
+ inputProps,
68
+ wrapperOpts
69
+ })
70
+ this.useStates({
71
+ checkedOptions: () => {
72
+ if (Array.isArray(this.props.defaultValue)) return this.props.defaultValue
73
+ if (this.props.defaultValue) return [this.props.defaultValue]
74
+
75
+ return []
76
+ }
77
+ })
78
+
79
+ useMemo(() => {
80
+ if (this.form && inputProps.name) {
81
+ this.form.setValue(inputProps.name, this.s.checkedOptions)
82
+ }
83
+ }, [])
84
+ }
85
+
86
+ render () {
87
+ const {wrapperOpts} = this.tt
88
+ const {errors} = digs(wrapperOpts, "errors")
89
+
90
+ return (
91
+ <View dataSet={{component: "api-maker/utils/checkboxes"}}>
92
+ <Text style={{fontWeight: "bold"}}>
93
+ {this.tt.wrapperOpts.label}
94
+ </Text>
95
+ {this.props.options.map((option) =>
96
+ <OptionElement
97
+ checked={this.isChecked(option)}
98
+ inputName={this.inputName()}
99
+ key={option[1]}
100
+ onChange={this.tt.onOptionChecked}
101
+ option={option}
102
+ />
103
+ )}
104
+ {errors.length > 0 &&
105
+ <InvalidFeedback errors={errors} />
106
+ }
107
+ </View>
108
+ )
109
+ }
110
+
111
+ inputDefaultValue () {
112
+ const {attribute, defaultValue, model} = this.props
113
+
114
+ if (defaultValue) {
115
+ return defaultValue
116
+ } else if (attribute && model) {
117
+ if (!model[attribute]) throw `No such attribute: ${attribute}`
118
+
119
+ return this.props.model[attribute]()
120
+ }
121
+ }
122
+
123
+ inputName () {
124
+ if (this.props.name) {
125
+ return `${this.props.name}[]`
126
+ } else if (this.props.model) {
127
+ return `${this.props.model.modelClassData().paramKey}[${inflection.underscore(this.props.attribute)}]`
128
+ }
129
+ }
130
+
131
+ isChecked = (option) => this.s.checkedOptions.includes(option[1])
132
+
133
+ onOptionChecked = ({checked, option}) => {
134
+ const {inputProps, form} = this.tt
135
+ const {name} = inputProps
136
+ let newOptions
137
+
138
+ if (checked) {
139
+ newOptions = this.s.checkedOptions.concat([option[1]])
140
+
141
+ this.setState({checkedOptions: newOptions})
142
+ } else {
143
+ newOptions = this.s.checkedOptions.filter((value) => value != option[1])
144
+
145
+ this.setState({checkedOptions: newOptions})
146
+ }
147
+
148
+ console.log({checkedOptions: this.s.checkedOptions})
149
+
150
+ if (this.props.onChange) {
151
+ this.p.onChange({checked, option})
152
+ }
153
+
154
+ if (form && name) {
155
+ form.setValue(name, newOptions)
156
+ }
157
+ }
158
+ }))
@@ -0,0 +1,20 @@
1
+ import {shapeComponent, ShapeComponent} from "set-state-compare/src/shape-component"
2
+ import memo from "set-state-compare/src/memo"
3
+ import PropTypes from "prop-types"
4
+ import propTypesExact from "prop-types-exact"
5
+ import React from "react"
6
+ import Text from "./text"
7
+
8
+ export default memo(shapeComponent(class ApiMakerUtilsInvalidFeedback extends ShapeComponent {
9
+ static propTypes = propTypesExact({
10
+ message: PropTypes.string.isRequired
11
+ })
12
+
13
+ render() {
14
+ return (
15
+ <Text style={{color: "red"}}>
16
+ {this.p.message}
17
+ </Text>
18
+ )
19
+ }
20
+ }))