@steroidsjs/core 3.0.48 → 3.0.50

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.
@@ -3262,6 +3262,14 @@
3262
3262
  "defaultProps": null,
3263
3263
  "extends": [],
3264
3264
  "properties": [
3265
+ {
3266
+ "name": "autoCompleteInputRef",
3267
+ "decorators": [],
3268
+ "description": " Ref autocomplete поиска",
3269
+ "required": false,
3270
+ "type": "MutableRefObject",
3271
+ "example": null
3272
+ },
3265
3273
  {
3266
3274
  "name": "groupAttribute",
3267
3275
  "decorators": [],
@@ -11178,7 +11186,7 @@
11178
11186
  "name": "IKanbanProps",
11179
11187
  "moduleName": "ui/content/Kanban/Kanban",
11180
11188
  "title": "Kanban",
11181
- "description": "\nКомпонент `Kanban` позволяет создать доску для управления задачами.\nКоличество столбцов задается с помощью пропа `columns`.\nЗадачи на доске можно создавать, редактировать и перемещать с визуальным отображением.\n\nДля работы этого компонента необходимо установить в проекте зависимости `react-beautiful-dnd`\nи передать в пропсы `droppableComponent`, `draggableComponent` и `dndContext`\nкомпоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.\n\nДля корректной работы функционала создания задач,\nнеобходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nИмпортированные компоненты нужно передать в проп `createTaskEditorConfig`,\nв поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.\n",
11189
+ "description": "\nКомпонент `Kanban` позволяет создать доску для управления задачами.\nКоличество столбцов задается с помощью пропа `columns`.\nЗадачи на доске можно создавать, редактировать и перемещать с визуальным отображением.\n\nДля работы этого компонента необходимо установить в проекте зависимости `react-beautiful-dnd`\nи передать в пропсы `droppableComponent`, `draggableComponent` и `dndContext`\nкомпоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.\n\nДля корректной работы функционала создания задач,\nнеобходимо установить в проекте зависимости `@ckeditor/ckeditor5-react v3.0.2` и `@steroidsjs/ckeditor5 v27.0.2-rc.2`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nИмпортированные компоненты нужно передать в проп `createTaskEditorConfig`,\nв поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.\n",
11182
11190
  "tags": {},
11183
11191
  "defaultProps": null,
11184
11192
  "extends": [
@@ -13633,6 +13641,15 @@
13633
13641
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}",
13634
13642
  "defaultValue": null
13635
13643
  },
13644
+ {
13645
+ "name": "autoCompleteInputRef",
13646
+ "decorators": [],
13647
+ "description": " Ref autocomplete поиска",
13648
+ "required": false,
13649
+ "type": "MutableRefObject",
13650
+ "example": null,
13651
+ "defaultValue": null
13652
+ },
13636
13653
  {
13637
13654
  "name": "autoFetch",
13638
13655
  "decorators": [],
@@ -15447,6 +15464,15 @@
15447
15464
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}",
15448
15465
  "defaultValue": null
15449
15466
  },
15467
+ {
15468
+ "name": "autoCompleteInputRef",
15469
+ "decorators": [],
15470
+ "description": " Ref autocomplete поиска",
15471
+ "required": false,
15472
+ "type": "MutableRefObject",
15473
+ "example": null,
15474
+ "defaultValue": null
15475
+ },
15450
15476
  {
15451
15477
  "name": "autoFetch",
15452
15478
  "decorators": [],
@@ -15976,6 +16002,15 @@
15976
16002
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}",
15977
16003
  "defaultValue": null
15978
16004
  },
16005
+ {
16006
+ "name": "autoCompleteInputRef",
16007
+ "decorators": [],
16008
+ "description": " Ref autocomplete поиска",
16009
+ "required": false,
16010
+ "type": "MutableRefObject",
16011
+ "example": null,
16012
+ "defaultValue": null
16013
+ },
15979
16014
  {
15980
16015
  "name": "autoFetch",
15981
16016
  "decorators": [],
@@ -18819,6 +18854,15 @@
18819
18854
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}",
18820
18855
  "defaultValue": null
18821
18856
  },
18857
+ {
18858
+ "name": "autoCompleteInputRef",
18859
+ "decorators": [],
18860
+ "description": " Ref autocomplete поиска",
18861
+ "required": false,
18862
+ "type": "MutableRefObject",
18863
+ "example": null,
18864
+ "defaultValue": null
18865
+ },
18822
18866
  {
18823
18867
  "name": "autoFetch",
18824
18868
  "decorators": [],
@@ -19264,6 +19308,14 @@
19264
19308
  "type": "boolean | IAutoCompleteConfig",
19265
19309
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}"
19266
19310
  },
19311
+ {
19312
+ "name": "autoCompleteInputRef",
19313
+ "decorators": [],
19314
+ "description": " Ref autocomplete поиска",
19315
+ "required": false,
19316
+ "type": "MutableRefObject",
19317
+ "example": null
19318
+ },
19267
19319
  {
19268
19320
  "name": "autoFetch",
19269
19321
  "decorators": [],
@@ -19328,6 +19380,14 @@
19328
19380
  "type": "string",
19329
19381
  "example": null
19330
19382
  },
19383
+ {
19384
+ "name": "forwardedInputRef",
19385
+ "decorators": [],
19386
+ "description": "",
19387
+ "required": true,
19388
+ "type": "MutableRefObject",
19389
+ "example": null
19390
+ },
19331
19391
  {
19332
19392
  "name": "forwardedRef",
19333
19393
  "decorators": [],
@@ -27294,6 +27354,15 @@
27294
27354
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}",
27295
27355
  "defaultValue": null
27296
27356
  },
27357
+ {
27358
+ "name": "autoCompleteInputRef",
27359
+ "decorators": [],
27360
+ "description": " Ref autocomplete поиска",
27361
+ "required": false,
27362
+ "type": "MutableRefObject",
27363
+ "example": null,
27364
+ "defaultValue": null
27365
+ },
27297
27366
  {
27298
27367
  "name": "autoFetch",
27299
27368
  "decorators": [],
@@ -29491,6 +29560,15 @@
29491
29560
  "example": "{\n enable: true,\n minLength: 2,\n delay: 100\n}",
29492
29561
  "defaultValue": null
29493
29562
  },
29563
+ {
29564
+ "name": "autoCompleteInputRef",
29565
+ "decorators": [],
29566
+ "description": " Ref autocomplete поиска",
29567
+ "required": false,
29568
+ "type": "MutableRefObject",
29569
+ "example": null,
29570
+ "defaultValue": null
29571
+ },
29494
29572
  {
29495
29573
  "name": "autoFetch",
29496
29574
  "decorators": [],
@@ -33565,7 +33643,7 @@
33565
33643
  "name": "ITooltipProps",
33566
33644
  "moduleName": "ui/layout/Tooltip/Tooltip",
33567
33645
  "title": "Tooltip",
33568
- "description": "\nКомпонент Tooltip предоставляет всплывающую подсказку для дочерних элементов.\n",
33646
+ "description": "\nКомпонент Tooltip предоставляет всплывающую подсказку для дочерних элементов.\nВнутри компонента, то есть между тегами Tooltip можно использовать только html теги, например div, span и тд\n",
33569
33647
  "tags": {},
33570
33648
  "defaultProps": {
33571
33649
  "animationMs": "300",
@@ -37785,10 +37863,10 @@
37785
37863
  {
37786
37864
  "name": "customIcon",
37787
37865
  "decorators": [],
37788
- "description": "",
37866
+ "description": "Кастомная иконка для сворачивания элементов",
37789
37867
  "required": false,
37790
37868
  "type": "string | ReactElement",
37791
- "example": null
37869
+ "example": "'arrow'"
37792
37870
  },
37793
37871
  {
37794
37872
  "name": "diagram",
@@ -38001,19 +38079,19 @@
38001
38079
  {
38002
38080
  "name": "customIcon",
38003
38081
  "decorators": [],
38004
- "description": "",
38082
+ "description": "Кастомная иконка для сворачивания элементов",
38005
38083
  "required": false,
38006
38084
  "type": "string | ReactElement",
38007
- "example": null,
38085
+ "example": "'arrow'",
38008
38086
  "defaultValue": null
38009
38087
  },
38010
38088
  {
38011
38089
  "name": "isSinglePageItems",
38012
38090
  "decorators": [],
38013
- "description": "",
38091
+ "description": "Если флаг true, то данные в items переданы только для одной страницы, если false, то данные в items переданы сразу для всех страниц",
38014
38092
  "required": false,
38015
38093
  "type": "boolean",
38016
- "example": null,
38094
+ "example": "true",
38017
38095
  "defaultValue": null
38018
38096
  },
38019
38097
  {
package/en.json CHANGED
@@ -977,12 +977,14 @@
977
977
  "Время": "",
978
978
  "Флаг, который позволяет использовать вложенные роуты c указанием вложенного пути": "",
979
979
  "Скрыть иконку c лева от элемента": "",
980
- "\nКомпонент `Kanban` позволяет создать доску для управления задачами.\nКоличество столбцов задается с помощью пропа `columns`.\nЗадачи на доске можно создавать, редактировать и перемещать с визуальным отображением.\n\nДля работы этого компонента необходимо установить в проекте зависимости `react-beautiful-dnd`\nи передать в пропсы `droppableComponent`, `draggableComponent` и `dndContext`\nкомпоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.\n\nДля корректной работы функционала создания задач,\nнеобходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nИмпортированные компоненты нужно передать в проп `createTaskEditorConfig`,\nв поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.\n": "",
980
+ "\nКомпонент `Kanban` позволяет создать доску для управления задачами.\nКоличество столбцов задается с помощью пропа `columns`.\nЗадачи на доске можно создавать, редактировать и перемещать с визуальным отображением.\n\nДля работы этого компонента необходимо установить в проекте зависимости `react-beautiful-dnd`\nи передать в пропсы `droppableComponent`, `draggableComponent` и `dndContext`\nкомпоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.\n\nДля корректной работы функционала создания задач,\nнеобходимо установить в проекте зависимости `@ckeditor/ckeditor5-react v3.0.2` и `@steroidsjs/ckeditor5 v27.0.2-rc.2`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nИмпортированные компоненты нужно передать в проп `createTaskEditorConfig`,\nв поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.\n": "",
981
981
  "Компонент для создания HTML-разметки, использующий WYSIWYG редактор.\n\nДля использования WYSIWYG редактора, необходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,\nзатем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.\nКомпонент `CKEditor` нужно передать в проп `htmlComponent`, а конструктор `ClassicEditor` в проп `editorConstructor`.\n\nПри передаче `HtmlField` с бэкенда, необходимо переопределить `view` компонента, указав локальный.\nВ локальном компоненте добавить вместо пропсов `htmlComponent` и `editorConstructor` импорты `CKEditor` и `ClassicEditor` соотвественно.\n": "",
982
+ "\nКомпонент Tooltip предоставляет всплывающую подсказку для дочерних элементов.\nВнутри компонента, то есть между тегами Tooltip можно использовать только html теги, например div, span и тд\n": "",
982
983
  "Компонент с бесконечным скроллом страниц.": "",
983
984
  "Компонент, который представляет в виде дерева список с иерархической структурой данных\n\nДополнительный функционал: в кастомном view компонента есть возможность реализовать кнопку, по клику на которую\nбудет вызываться функция props.onItemFocus. Данная функция \"находит\" текущий роут в дереве -\nраскрывает родительские уровни, делает элемент активным.\nДанная функция не включает скролл к активному компоненту внутри дерева, это также необходимо\nреализовать в кастомном view локально в проекте.\n": "",
984
985
  "Значение страницы по умолчанию.": "",
985
986
  "Логическое значение, указывающее, можно ли загрузить еще элементы для списка при скролле.": "",
987
+ " Ref autocomplete поиска": "",
986
988
  "Подключение бесконечного скролла": "",
987
989
  "Дополнительный свойства для view части компонента": "",
988
990
  "Используется для управления раскрытием всех элементов в дереве": "",
@@ -1025,6 +1027,7 @@
1025
1027
  "Аттрибут (название) в форме для поля с флагом, определяющим есть ли следующая страница": "",
1026
1028
  "Аттрибут (название) в форме для поля с номером текущей страницы": "",
1027
1029
  "Список, для которого используется пагинация, пример {items: [...], total: number},": "",
1030
+ "Кастомная иконка для сворачивания элементов": "",
1028
1031
  "CSS-класс для элемента навигации.": "",
1029
1032
  "Тип данных для параметров маршрута.": "",
1030
1033
  "Обертка над Redux Store со встроенными middleware (thunk, multi, promise..) и react-router.": ""
@@ -1,3 +1,4 @@
1
+ import { MutableRefObject } from 'react';
1
2
  export interface IDataSelectItem {
2
3
  /**
3
4
  * Идентификатор элемента
@@ -49,6 +50,10 @@ export interface IDataSelectConfig {
49
50
  * Список со всеми элементами
50
51
  */
51
52
  sourceItems?: IDataSelectItem[];
53
+ /**
54
+ * Ref autocomplete поиска
55
+ */
56
+ autoCompleteInputRef?: MutableRefObject<HTMLInputElement>;
52
57
  }
53
58
  export interface IDataSelectResult {
54
59
  isOpened: boolean;
@@ -25,6 +25,7 @@ var react_use_1 = require("react-use");
25
25
  var defaultProps = {
26
26
  primaryKey: 'id'
27
27
  };
28
+ var isAutoCompleteInputFocused = function (autoCompleteInputRef) { return document.activeElement === autoCompleteInputRef.current; };
28
29
  var getFlattenedItems = function (items, groupAttribute) {
29
30
  var result = [];
30
31
  items.forEach(function (item) {
@@ -218,8 +219,8 @@ function useDataSelect(config) {
218
219
  }
219
220
  setIsOpened(false);
220
221
  }
221
- // Keys: space (toggle select)
222
- if (e.which === 32 && isOpened) {
222
+ // Keys: space (toggle select), disable in DropDownField with focused autocomplete
223
+ if (e.which === 32 && isOpened && !isAutoCompleteInputFocused(config.autoCompleteInputRef)) {
223
224
  if (hoveredId) {
224
225
  e.preventDefault();
225
226
  // Select hovered
@@ -253,7 +254,7 @@ function useDataSelect(config) {
253
254
  setHoveredId(keys[newIndex]);
254
255
  }
255
256
  }
256
- }, [isFocused, isOpened, hoveredId, selectedIds, flattenedItems, setSelectedIds]);
257
+ }, [isFocused, isOpened, config.autoCompleteInputRef, hoveredId, selectedIds, flattenedItems, setSelectedIds]);
257
258
  (0, react_use_1.useEvent)('keydown', onKeyDown);
258
259
  return {
259
260
  isOpened: isOpened,
package/index.d.ts CHANGED
@@ -15,7 +15,7 @@ declare module '*.png' {
15
15
 
16
16
  /**
17
17
  * Метод для локализации фраз и предложений
18
- * @example {__('{count} {count, plural, one{день} few{дня} many{дней}}', {count: 2})}
18
+ * @example {__('{count} {count, plural, one{день} few{дня} other{дней}}', {count: 2})}
19
19
  * @param {string} phrase
20
20
  * @param {object} params
21
21
  * @private
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@steroidsjs/core",
3
- "version": "3.0.48",
3
+ "version": "3.0.50",
4
4
  "description": "",
5
5
  "author": "Vladimir Kozhin <hello@kozhindev.com>",
6
6
  "repository": {
@@ -81,7 +81,7 @@ export interface IKanbanTaskDetailsModalViewProps extends IModalProps {
81
81
  * компоненты `Droppable`, `Draggable` и `DragDropContext` соответственно.
82
82
  *
83
83
  * Для корректной работы функционала создания задач,
84
- * необходимо установить в проекте зависимости `@ckeditor/ckeditor5-react` и `@steroidsjs/ckeditor5`,
84
+ * необходимо установить в проекте зависимости `@ckeditor/ckeditor5-react v3.0.2` и `@steroidsjs/ckeditor5 v27.0.2-rc.2`,
85
85
  * затем импортировать `CKEditor` из `@ckeditor/ckeditor5-react` и `ClassicEditor` из `@steroidsjs/ckeditor5/packages/ckeditor5-build-classic`.
86
86
  * Импортированные компоненты нужно передать в проп `createTaskEditorConfig`,
87
87
  * в поле `htmlComponent` передать `CKEditor`, а в `editorConstructor` передать `ClassicEditor`.
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { MutableRefObject } from 'react';
2
2
  import { IAccordionItemViewProps } from '../../../ui/content/Accordion/Accordion';
3
3
  import { DataProviderItems, IDataProviderConfig } from '../../../hooks/useDataProvider';
4
4
  import { IDataSelectConfig } from '../../../hooks/useDataSelect';
@@ -165,6 +165,7 @@ export interface IDropDownFieldViewProps extends IDropDownFieldProps {
165
165
  hoveredId: PrimaryKey | any;
166
166
  selectedIds: (PrimaryKey | any)[];
167
167
  forwardedRef: any;
168
+ forwardedInputRef: MutableRefObject<HTMLInputElement>;
168
169
  searchInputProps: {
169
170
  type: string;
170
171
  name: string;
@@ -87,6 +87,7 @@ function DropDownField(props) {
87
87
  var components = (0, hooks_1.useComponents)();
88
88
  // Query state
89
89
  var _a = (0, react_1.useState)(''), query = _a[0], setQuery = _a[1];
90
+ var forwardedInputRef = (0, react_1.useRef)(null);
90
91
  var hasGroup = !!props.groupAttribute;
91
92
  var _b = react_1["default"].useState([]), selectedAccordionItems = _b[0], setSelectedAccordionItems = _b[1];
92
93
  var normalizedItemToSelectAll = react_1["default"].useMemo(function () { return normalizeItemToSelectAll(props.itemToSelectAll); }, [props.itemToSelectAll]);
@@ -123,7 +124,8 @@ function DropDownField(props) {
123
124
  groupAttribute: props.groupAttribute,
124
125
  items: items,
125
126
  sourceItems: sourceItems,
126
- inputValue: props.input.value
127
+ inputValue: props.input.value,
128
+ autoCompleteInputRef: forwardedInputRef
127
129
  }), isOpened = _d.isOpened, setIsOpened = _d.setIsOpened, setIsFocused = _d.setIsFocused, hoveredId = _d.hoveredId, setHoveredId = _d.setHoveredId, selectedIds = _d.selectedIds, setSelectedIds = _d.setSelectedIds, selectedItems = _d.selectedItems, setSelectedAll = _d.setSelectedAll, isSelectedAll = _d.isSelectedAll;
128
130
  var onOpen = (0, react_1.useCallback)(function () {
129
131
  setQuery('');
@@ -226,7 +228,7 @@ function DropDownField(props) {
226
228
  }
227
229
  return renderItemView(item, 'default', null);
228
230
  };
229
- var viewProps = (0, react_1.useMemo)(function () { return (__assign({ isAutoComplete: isAutoComplete, items: items, hoveredId: hoveredId, selectedIds: selectedIds, forwardedRef: forwardedRef, searchInputProps: searchInputProps, isOpened: isOpened, isLoading: isLoading, onOpen: onOpen, selectedItems: selectedItems,
231
+ var viewProps = (0, react_1.useMemo)(function () { return (__assign({ isAutoComplete: isAutoComplete, items: items, hoveredId: hoveredId, selectedIds: selectedIds, forwardedRef: forwardedRef, forwardedInputRef: forwardedInputRef, searchInputProps: searchInputProps, isOpened: isOpened, isLoading: isLoading, onOpen: onOpen, selectedItems: selectedItems,
230
232
  // TODO onFocus
231
233
  // TODO onBlur
232
234
  onReset: onReset, onClose: onClose, renderItem: renderItem, onItemRemove: onItemRemove, hasGroup: hasGroup, multiple: props.multiple, isSearchAutoFocus: props.isSearchAutoFocus, itemToSelectAll: normalizedItemToSelectAll, className: props.className, viewProps: props.viewProps, style: props.style, size: props.size, color: props.color, outline: props.outline, placeholder: props.placeholder, showReset: props.showReset, showEllipses: props.showEllipses, errors: props.errors, disabled: props.disabled }, dataProvider)); }, [isAutoComplete, items, hoveredId, selectedIds, searchInputProps, isOpened, isLoading, onOpen, selectedItems, onReset, onClose,
@@ -36,6 +36,7 @@ export interface ITooltipStylePosition {
36
36
  * Tooltip
37
37
  *
38
38
  * Компонент Tooltip предоставляет всплывающую подсказку для дочерних элементов.
39
+ * Внутри компонента, то есть между тегами Tooltip можно использовать только html теги, например div, span и тд
39
40
  **/
40
41
  export interface ITooltipProps {
41
42
  /**
@@ -27,7 +27,15 @@ export interface ITreeTableProps extends Omit<IGridProps, 'items'>, Pick<ITreePr
27
27
  * ]
28
28
  */
29
29
  items?: ITreeItem[];
30
+ /**
31
+ * Если флаг true, то данные в items переданы только для одной страницы, если false, то данные в items переданы сразу для всех страниц
32
+ * @example true
33
+ */
30
34
  isSinglePageItems?: boolean;
35
+ /**
36
+ * Кастомная иконка для сворачивания элементов
37
+ * @example 'arrow'
38
+ */
31
39
  customIcon?: string | React.ReactElement;
32
40
  }
33
41
  export declare const addTreeColumnFieldsToFirstColumn: (columns: IGridColumn[], levelPadding: string | number, customIcon?: string | React.ReactElement) => IGridColumn[];
package/ui/nav/Nav/Nav.js CHANGED
@@ -103,7 +103,7 @@ function Nav(props) {
103
103
  toRouteParams: routerParams,
104
104
  visible: route.isNavVisible,
105
105
  isActive: (activeRouteIds || []).includes(route.id),
106
- isActiveNested: ((_a = route.items) === null || _a === void 0 ? void 0 : _a.filter(function (nestedItem) { return activeRouteIds.includes(nestedItem.id); })),
106
+ isActiveNested: !(0, isEmpty_1["default"])((_a = route.items) === null || _a === void 0 ? void 0 : _a.filter(function (nestedItem) { return activeRouteIds.includes(nestedItem.id); })),
107
107
  items: route.items ? formatItems(route.items) : null
108
108
  });
109
109
  })