@steroidsjs/core 3.0.24 → 3.0.26

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.
@@ -16002,6 +16002,15 @@
16002
16002
  "example": null,
16003
16003
  "defaultValue": null
16004
16004
  },
16005
+ {
16006
+ "name": "itemView",
16007
+ "decorators": [],
16008
+ "description": "View компонент для элемента дерева",
16009
+ "required": false,
16010
+ "type": "React.ReactNode | {}",
16011
+ "example": null,
16012
+ "defaultValue": null
16013
+ },
16005
16014
  {
16006
16015
  "name": "items",
16007
16016
  "decorators": [],
@@ -16255,6 +16264,14 @@
16255
16264
  "type": "IInputParams",
16256
16265
  "example": null
16257
16266
  },
16267
+ {
16268
+ "name": "itemView",
16269
+ "decorators": [],
16270
+ "description": "",
16271
+ "required": true,
16272
+ "type": "React.ReactNode | {}",
16273
+ "example": null
16274
+ },
16258
16275
  {
16259
16276
  "name": "items",
16260
16277
  "decorators": [],
package/en.json CHANGED
@@ -998,6 +998,7 @@
998
998
  "Компоненты для подключения wysiwyg редактора": "",
999
999
  "Текст при отсутствии элементов": "",
1000
1000
  "Отображать чекбоксы только на узлах, не имеющих вложенных элементов": "",
1001
+ "View компонент для элемента дерева": "",
1001
1002
  "Разделитель для даты и времени, не влияет на отображение": "",
1002
1003
  "Начальные элементы списка": "",
1003
1004
  "Значения для полей при нажатии кнопки 'Добавить'": "",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.24",
3
+ "version": "3.0.26",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -50,6 +50,10 @@ export interface ICheckboxTreeFieldProps extends IFieldWrapperInputProps, Omit<I
50
50
  * Отображать чекбоксы только на узлах, не имеющих вложенных элементов
51
51
  */
52
52
  hasOnlyLeafCheckboxes?: boolean;
53
+ /**
54
+ * View компонент для элемента дерева
55
+ */
56
+ itemView?: CustomView;
53
57
  [key: string]: any;
54
58
  }
55
59
  export interface ICheckboxTreeFieldViewProps extends IFieldWrapperOutputProps, Pick<ITreeProps, 'levelPadding' | 'hasIconExpandOnly' | 'customIcon'> {
@@ -66,6 +70,7 @@ export interface ICheckboxTreeFieldViewProps extends IFieldWrapperOutputProps, P
66
70
  renderCheckbox: (checkboxProps: ICheckboxFieldViewProps) => JSX.Element;
67
71
  size?: Size;
68
72
  hasOnlyLeafCheckboxes?: boolean;
73
+ itemView: CustomView;
69
74
  }
70
75
  export declare const getNestedItemsIds: (item: any, groupAttribute: any, hasOnlyLeafCheckboxes?: boolean) => any[];
71
76
  declare const _default: import("../../../ui/form/Field/fieldWrapper").FieldWrapperComponent<ICheckboxTreeFieldProps>;
@@ -67,6 +67,7 @@ var getNestedItemsIds = function (item, groupAttribute, hasOnlyLeafCheckboxes) {
67
67
  exports.getNestedItemsIds = getNestedItemsIds;
68
68
  function CheckboxTreeField(props) {
69
69
  var components = (0, hooks_1.useComponents)();
70
+ var TreeItemView = props.itemView || components.ui.getView('nav.TreeItemView');
70
71
  var inputSelectedIds = (0, react_1.useMemo)(function () { return props.selectedIds || [].concat(props.input.value || []); }, [props.input.value, props.selectedIds]);
71
72
  // Data Provider
72
73
  var items = (0, hooks_1.useDataProvider)({
@@ -129,8 +130,10 @@ function CheckboxTreeField(props) {
129
130
  size: props.size,
130
131
  levelPadding: props.levelPadding,
131
132
  hasOnlyLeafCheckboxes: props.hasOnlyLeafCheckboxes,
132
- hasIconExpandOnly: props.hasIconExpandOnly
133
- }); }, [treeItems, onItemSelect, selectedIds, renderCheckbox, props.size, props.levelPadding, props.hasOnlyLeafCheckboxes, props.hasIconExpandOnly]);
133
+ hasIconExpandOnly: props.hasIconExpandOnly,
134
+ itemView: TreeItemView
135
+ }); }, [treeItems, onItemSelect, selectedIds, renderCheckbox, props.size, props.levelPadding, props.hasOnlyLeafCheckboxes,
136
+ props.hasIconExpandOnly, TreeItemView]);
134
137
  return components.ui.renderView(props.view || 'form.CheckboxTreeFieldView', viewProps);
135
138
  }
136
139
  CheckboxTreeField.defaultProps = {
@@ -125,6 +125,8 @@ function fieldWrapper(componentId, Component, optionsConfig) {
125
125
  return obj;
126
126
  }, {});
127
127
  var attribute = Object.values(attributesProps)[0];
128
+ // Get full path to the field, it is necessary for displaying errors in nested fields, for example, in FieldList
129
+ var errorsAttribute = [props.prefix, attribute].filter(Boolean).join('.');
128
130
  // Get UI props and create Field Class dynamically (for add field props - input, errors, model, ...)
129
131
  var metaProps = (0, react_1.useMemo)(function () { return components.ui.getFieldProps(componentId, model, attribute); }, [components.ui, attribute, model]);
130
132
  if (!Component.DynamicField) {
@@ -136,7 +138,7 @@ function fieldWrapper(componentId, Component, optionsConfig) {
136
138
  return components.ui.renderView(Component.DynamicField, __assign(__assign({}, props), { size: props.size || DEFAULT_SIZE }));
137
139
  }
138
140
  var size = props.size || context.size || DEFAULT_SIZE;
139
- return components.ui.renderView(FieldLayout_1["default"], __assign(__assign({}, attributesProps), { size: size, className: props.fieldLayoutClassName, required: (0, has_1["default"])(props, 'required') ? props.required : metaProps.required, label: options.label === false ? null : ((0, has_1["default"])(props, 'label') ? props.label : metaProps.label), hint: (0, has_1["default"])(props, 'hint') ? props.hint : metaProps.hint, errors: props.errors, id: inputId, children: (React.createElement(Component.DynamicField, __assign({}, props, { id: inputId, size: size }))) }));
141
+ return components.ui.renderView(FieldLayout_1["default"], __assign(__assign({}, attributesProps), { errorsAttribute: errorsAttribute, size: size, className: props.fieldLayoutClassName, required: (0, has_1["default"])(props, 'required') ? props.required : metaProps.required, label: options.label === false ? null : ((0, has_1["default"])(props, 'label') ? props.label : metaProps.label), hint: (0, has_1["default"])(props, 'hint') ? props.hint : metaProps.hint, errors: props.errors, id: inputId, children: (React.createElement(Component.DynamicField, __assign({}, props, { id: inputId, size: size }))) }));
140
142
  };
141
143
  NewComponent.WrappedComponent = Component;
142
144
  NewComponent.displayName = componentId;
@@ -33,7 +33,7 @@ var hooks_1 = require("../../../hooks");
33
33
  function FieldLayout(props) {
34
34
  var components = (0, hooks_1.useComponents)();
35
35
  // Error from state
36
- var errors = (0, hooks_1.useForm)().formSelector(function (state) { return (0, get_1["default"])(state, 'errors.' + props.attribute); });
36
+ var errors = (0, hooks_1.useForm)().formSelector(function (state) { return (0, get_1["default"])(state, 'errors.' + props.errorsAttribute); });
37
37
  var viewProps = (0, react_1.useMemo)(function () { return ({
38
38
  errors: props.errors || errors,
39
39
  className: props.className,