@steroidsjs/core 3.0.3 → 3.0.5
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.
- package/components/MetaComponent.d.ts +1 -0
- package/components/MetaComponent.js +2 -1
- package/docs-autogen-result.json +138 -5
- package/en.json +13 -7
- package/package.json +1 -1
- package/ui/form/AutoCompleteField/AutoCompleteField.js +1 -2
- package/ui/form/CheckboxField/CheckboxField.js +0 -1
- package/ui/form/CheckboxListField/CheckboxListField.d.ts +1 -0
- package/ui/form/CheckboxTreeField/CheckboxTreeField.d.ts +5 -0
- package/ui/form/CheckboxTreeField/CheckboxTreeField.js +22 -14
- package/ui/form/DateField/DateField.js +1 -2
- package/ui/form/DateRangeField/DateRangeField.js +0 -1
- package/ui/form/DateTimeField/DateTimeField.js +0 -1
- package/ui/form/DateTimeRangeField/DateTimeRangeField.js +0 -1
- package/ui/form/DropDownField/DropDownField.js +0 -1
- package/ui/form/EmailField/EmailField.js +0 -1
- package/ui/form/Field/fieldWrapper.js +4 -2
- package/ui/form/Form/Form.d.ts +16 -1
- package/ui/form/Form/Form.js +4 -3
- package/ui/form/ImageField/ImageField.js +5 -4
- package/ui/form/InputField/InputField.js +0 -1
- package/ui/form/NumberField/NumberField.js +1 -2
- package/ui/form/PasswordField/PasswordField.js +1 -2
- package/ui/form/RadioField/RadioField.js +0 -1
- package/ui/form/RadioListField/RadioListField.d.ts +1 -0
- package/ui/form/RadioListField/RadioListField.js +0 -1
- package/ui/form/RateField/RateField.js +1 -2
- package/ui/form/SwitcherField/SwitcherField.js +1 -2
- package/ui/form/TimeField/TimeField.js +1 -2
- package/ui/form/TimeRangeField/TimeRangeField.js +7 -4
- package/ui/form/index.d.ts +10 -4
- package/ui/form/index.js +17 -8
- package/ui/format/TimeFormatter/TimeFormatter.d.ts +26 -0
- package/ui/format/TimeFormatter/TimeFormatter.js +21 -0
- package/ui/format/TimeFormatter/index.d.ts +2 -0
- package/ui/format/TimeFormatter/index.js +7 -0
- package/ui/nav/Tree/Tree.d.ts +2 -0
package/docs-autogen-result.json
CHANGED
|
@@ -15230,7 +15230,7 @@
|
|
|
15230
15230
|
"decorators": [],
|
|
15231
15231
|
"description": "",
|
|
15232
15232
|
"required": true,
|
|
15233
|
-
"type": "{color: string, id: string | number | boolean, isHovered: boolean, isSelected: boolean, label: string, required: boolean}[]",
|
|
15233
|
+
"type": "{color: string, id: string | number | boolean, isHovered: boolean, isSelected: boolean, label: string, required: boolean, size: string}[]",
|
|
15234
15234
|
"example": null
|
|
15235
15235
|
},
|
|
15236
15236
|
{
|
|
@@ -15423,6 +15423,15 @@
|
|
|
15423
15423
|
"example": "items",
|
|
15424
15424
|
"defaultValue": null
|
|
15425
15425
|
},
|
|
15426
|
+
{
|
|
15427
|
+
"name": "hasOnlyLeafCheckboxes",
|
|
15428
|
+
"decorators": [],
|
|
15429
|
+
"description": "Отображать чекбоксы только на узлах, не имеющих вложенных элементов",
|
|
15430
|
+
"required": false,
|
|
15431
|
+
"type": "boolean",
|
|
15432
|
+
"example": null,
|
|
15433
|
+
"defaultValue": null
|
|
15434
|
+
},
|
|
15426
15435
|
{
|
|
15427
15436
|
"name": "hint",
|
|
15428
15437
|
"decorators": [],
|
|
@@ -15697,6 +15706,14 @@
|
|
|
15697
15706
|
"type": "string",
|
|
15698
15707
|
"example": null
|
|
15699
15708
|
},
|
|
15709
|
+
{
|
|
15710
|
+
"name": "hasOnlyLeafCheckboxes",
|
|
15711
|
+
"decorators": [],
|
|
15712
|
+
"description": "",
|
|
15713
|
+
"required": false,
|
|
15714
|
+
"type": "boolean",
|
|
15715
|
+
"example": null
|
|
15716
|
+
},
|
|
15700
15717
|
{
|
|
15701
15718
|
"name": "input",
|
|
15702
15719
|
"decorators": [],
|
|
@@ -20607,7 +20624,7 @@
|
|
|
20607
20624
|
{
|
|
20608
20625
|
"name": "size",
|
|
20609
20626
|
"decorators": [],
|
|
20610
|
-
"description": "Размер компонента",
|
|
20627
|
+
"description": "Размер компонента и вложенных полей",
|
|
20611
20628
|
"required": false,
|
|
20612
20629
|
"type": "string",
|
|
20613
20630
|
"example": null,
|
|
@@ -21601,7 +21618,7 @@
|
|
|
21601
21618
|
{
|
|
21602
21619
|
"name": "size",
|
|
21603
21620
|
"decorators": [],
|
|
21604
|
-
"description": "Размер компонента",
|
|
21621
|
+
"description": "Размер компонента и вложенных полей",
|
|
21605
21622
|
"required": false,
|
|
21606
21623
|
"type": "string",
|
|
21607
21624
|
"example": null
|
|
@@ -21618,7 +21635,8 @@
|
|
|
21618
21635
|
"defaultProps": {
|
|
21619
21636
|
"actionMethod": "'POST'",
|
|
21620
21637
|
"autoStartTwoFactor": "true",
|
|
21621
|
-
"captchaActionName": "'submit'"
|
|
21638
|
+
"captchaActionName": "'submit'",
|
|
21639
|
+
"size": "'md'"
|
|
21622
21640
|
},
|
|
21623
21641
|
"extends": [
|
|
21624
21642
|
"IUiComponent"
|
|
@@ -21759,6 +21777,15 @@
|
|
|
21759
21777
|
"example": null,
|
|
21760
21778
|
"defaultValue": null
|
|
21761
21779
|
},
|
|
21780
|
+
{
|
|
21781
|
+
"name": "size",
|
|
21782
|
+
"decorators": [],
|
|
21783
|
+
"description": "Размер компонента и вложенных полей",
|
|
21784
|
+
"required": false,
|
|
21785
|
+
"type": "string",
|
|
21786
|
+
"example": null,
|
|
21787
|
+
"defaultValue": "'md'"
|
|
21788
|
+
},
|
|
21762
21789
|
{
|
|
21763
21790
|
"name": "style",
|
|
21764
21791
|
"decorators": [],
|
|
@@ -21768,6 +21795,15 @@
|
|
|
21768
21795
|
"example": "{width: '45%'}",
|
|
21769
21796
|
"defaultValue": null
|
|
21770
21797
|
},
|
|
21798
|
+
{
|
|
21799
|
+
"name": "submitButtonProps",
|
|
21800
|
+
"decorators": [],
|
|
21801
|
+
"description": "Параметры для кнопки отправки формы",
|
|
21802
|
+
"required": false,
|
|
21803
|
+
"type": "IButtonProps",
|
|
21804
|
+
"example": "{\n block: true,\n}",
|
|
21805
|
+
"defaultValue": null
|
|
21806
|
+
},
|
|
21771
21807
|
{
|
|
21772
21808
|
"name": "submitErrorMessage",
|
|
21773
21809
|
"decorators": [],
|
|
@@ -22069,6 +22105,14 @@
|
|
|
22069
22105
|
"type": "any",
|
|
22070
22106
|
"example": null
|
|
22071
22107
|
},
|
|
22108
|
+
{
|
|
22109
|
+
"name": "size",
|
|
22110
|
+
"decorators": [],
|
|
22111
|
+
"description": "",
|
|
22112
|
+
"required": false,
|
|
22113
|
+
"type": "string",
|
|
22114
|
+
"example": null
|
|
22115
|
+
},
|
|
22072
22116
|
{
|
|
22073
22117
|
"name": "style",
|
|
22074
22118
|
"decorators": [],
|
|
@@ -22077,6 +22121,14 @@
|
|
|
22077
22121
|
"type": "CSSProperties",
|
|
22078
22122
|
"example": null
|
|
22079
22123
|
},
|
|
22124
|
+
{
|
|
22125
|
+
"name": "submitButtonProps",
|
|
22126
|
+
"decorators": [],
|
|
22127
|
+
"description": "",
|
|
22128
|
+
"required": false,
|
|
22129
|
+
"type": "IButtonProps",
|
|
22130
|
+
"example": null
|
|
22131
|
+
},
|
|
22080
22132
|
{
|
|
22081
22133
|
"name": "submitLabel",
|
|
22082
22134
|
"decorators": [],
|
|
@@ -26583,7 +26635,7 @@
|
|
|
26583
26635
|
"decorators": [],
|
|
26584
26636
|
"description": "",
|
|
26585
26637
|
"required": true,
|
|
26586
|
-
"type": "{disabled: boolean, id: string | number | boolean, isHovered: boolean, isSelected: boolean, label: string, required: boolean}[]",
|
|
26638
|
+
"type": "{disabled: boolean, id: string | number | boolean, isHovered: boolean, isSelected: boolean, label: string, required: boolean, size: string}[]",
|
|
26587
26639
|
"example": null
|
|
26588
26640
|
},
|
|
26589
26641
|
{
|
|
@@ -31095,6 +31147,45 @@
|
|
|
31095
31147
|
],
|
|
31096
31148
|
"methods": []
|
|
31097
31149
|
},
|
|
31150
|
+
"ITimeFormatterProps": {
|
|
31151
|
+
"name": "ITimeFormatterProps",
|
|
31152
|
+
"moduleName": "ui/format/TimeFormatter/TimeFormatter",
|
|
31153
|
+
"title": "TimeFormatter",
|
|
31154
|
+
"description": "\nКомпонент TimeFormatter предназначен для форматирования времени с использованием заданного формата.\nОн позволяет кастомизировать отображение времени, используя переданный view React компонент.\n",
|
|
31155
|
+
"tags": {},
|
|
31156
|
+
"defaultProps": null,
|
|
31157
|
+
"extends": [],
|
|
31158
|
+
"properties": [
|
|
31159
|
+
{
|
|
31160
|
+
"name": "format",
|
|
31161
|
+
"decorators": [],
|
|
31162
|
+
"description": "Формат времени",
|
|
31163
|
+
"required": false,
|
|
31164
|
+
"type": "string",
|
|
31165
|
+
"example": "HH:mm",
|
|
31166
|
+
"defaultValue": null
|
|
31167
|
+
},
|
|
31168
|
+
{
|
|
31169
|
+
"name": "value",
|
|
31170
|
+
"decorators": [],
|
|
31171
|
+
"description": "Время",
|
|
31172
|
+
"required": false,
|
|
31173
|
+
"type": "string",
|
|
31174
|
+
"example": "16:15",
|
|
31175
|
+
"defaultValue": null
|
|
31176
|
+
},
|
|
31177
|
+
{
|
|
31178
|
+
"name": "view",
|
|
31179
|
+
"decorators": [],
|
|
31180
|
+
"description": "Переопределение view React компонента для кастомизации отображения колонки",
|
|
31181
|
+
"required": false,
|
|
31182
|
+
"type": "React.ReactNode | {}",
|
|
31183
|
+
"example": "MyCustomView",
|
|
31184
|
+
"defaultValue": null
|
|
31185
|
+
}
|
|
31186
|
+
],
|
|
31187
|
+
"methods": []
|
|
31188
|
+
},
|
|
31098
31189
|
"IHeaderProps": {
|
|
31099
31190
|
"name": "IHeaderProps",
|
|
31100
31191
|
"moduleName": "ui/layout/Header/Header",
|
|
@@ -35927,6 +36018,15 @@
|
|
|
35927
36018
|
"example": null,
|
|
35928
36019
|
"defaultValue": null
|
|
35929
36020
|
},
|
|
36021
|
+
{
|
|
36022
|
+
"name": "size",
|
|
36023
|
+
"decorators": [],
|
|
36024
|
+
"description": "Размер компонента и вложенных полей",
|
|
36025
|
+
"required": false,
|
|
36026
|
+
"type": "string",
|
|
36027
|
+
"example": null,
|
|
36028
|
+
"defaultValue": null
|
|
36029
|
+
},
|
|
35930
36030
|
{
|
|
35931
36031
|
"name": "style",
|
|
35932
36032
|
"decorators": [],
|
|
@@ -35936,6 +36036,15 @@
|
|
|
35936
36036
|
"example": "{width: '45%'}",
|
|
35937
36037
|
"defaultValue": null
|
|
35938
36038
|
},
|
|
36039
|
+
{
|
|
36040
|
+
"name": "submitButtonProps",
|
|
36041
|
+
"decorators": [],
|
|
36042
|
+
"description": "Параметры для кнопки отправки формы",
|
|
36043
|
+
"required": false,
|
|
36044
|
+
"type": "IButtonProps",
|
|
36045
|
+
"example": "{\n block: true,\n}",
|
|
36046
|
+
"defaultValue": null
|
|
36047
|
+
},
|
|
35939
36048
|
{
|
|
35940
36049
|
"name": "submitErrorMessage",
|
|
35941
36050
|
"decorators": [],
|
|
@@ -38826,6 +38935,14 @@
|
|
|
38826
38935
|
"required": false,
|
|
38827
38936
|
"type": "React.ReactNode | {}",
|
|
38828
38937
|
"example": "MyCustomView"
|
|
38938
|
+
},
|
|
38939
|
+
{
|
|
38940
|
+
"name": "withoutPointerOnLabel",
|
|
38941
|
+
"decorators": [],
|
|
38942
|
+
"description": "",
|
|
38943
|
+
"required": false,
|
|
38944
|
+
"type": "boolean",
|
|
38945
|
+
"example": null
|
|
38829
38946
|
}
|
|
38830
38947
|
],
|
|
38831
38948
|
"methods": [
|
|
@@ -38872,6 +38989,15 @@
|
|
|
38872
38989
|
"example": null
|
|
38873
38990
|
}
|
|
38874
38991
|
]
|
|
38992
|
+
},
|
|
38993
|
+
{
|
|
38994
|
+
"name": "onNestedItemClick",
|
|
38995
|
+
"decorators": [],
|
|
38996
|
+
"description": "",
|
|
38997
|
+
"required": false,
|
|
38998
|
+
"type": "void",
|
|
38999
|
+
"example": null,
|
|
39000
|
+
"parameters": []
|
|
38875
39001
|
}
|
|
38876
39002
|
]
|
|
38877
39003
|
},
|
|
@@ -43045,6 +43171,13 @@
|
|
|
43045
43171
|
"description": "",
|
|
43046
43172
|
"tags": {}
|
|
43047
43173
|
},
|
|
43174
|
+
"ui/format/TimeFormatter/TimeFormatter": {
|
|
43175
|
+
"name": "default",
|
|
43176
|
+
"moduleName": "ui/format/TimeFormatter/TimeFormatter",
|
|
43177
|
+
"title": "",
|
|
43178
|
+
"description": "",
|
|
43179
|
+
"tags": {}
|
|
43180
|
+
},
|
|
43048
43181
|
"ui/layout/Header/Header": {
|
|
43049
43182
|
"name": "default",
|
|
43050
43183
|
"moduleName": "ui/layout/Header/Header",
|
package/en.json
CHANGED
|
@@ -955,21 +955,17 @@
|
|
|
955
955
|
"Будет ли отображён item?": "",
|
|
956
956
|
"Устанавливать ли фокус и показывать панель времени сразу после рендера страницы": "",
|
|
957
957
|
"Флаг, определяющий раскрывать вложенные элементы по клику на весь элемент или только на иконку": "",
|
|
958
|
-
"\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": "",
|
|
959
|
-
"Компонент для создания 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": "",
|
|
960
958
|
"\nКомпонент для создания пошаговой формы. Предоставляет управление и синхронизацию состояния формы,\nа также список шагов формы для удобной навигации.\nПоля для шагов можно передавать как в виде компонентов, так и в виде объекта с названием поля.\nПозволяет выполнять отправку данных формы на сервер с возможностью валидации и перехода к неверно заполненным полям.\n\n": "",
|
|
959
|
+
"\nКомпонент TimeFormatter предназначен для форматирования времени с использованием заданного формата.\nОн позволяет кастомизировать отображение времени, используя переданный view React компонент.\n": "",
|
|
961
960
|
"При повторном нажатии на выбранный элемент из дерева, он продолжит отображаться как активный.": "",
|
|
962
961
|
"Дополнительные свойства, которые передаются во view компонента": "",
|
|
963
962
|
"Пропсы для инпута загрузки файлов": "",
|
|
964
963
|
"Переопределение view React компонента для кастомизации отображения элемента инпута": "",
|
|
965
964
|
"Кастомный placeholder для инпута": "",
|
|
966
|
-
"Компоненты для подключения wysiwyg редактора": "",
|
|
967
965
|
"Если true, то location.pathname будет совпадать с теми путями, которые содержат слеш в конце.\nНапример, если указать путь '/catalog/', тогда совпадение будет с '/catalog/' и '/catalog/chapter', но не '/catalog'.": "",
|
|
968
966
|
"Кастомная иконка, заменяющая иконку раскрытия по умолчанию": "",
|
|
969
967
|
"Опции маски для полей": "",
|
|
970
968
|
"Дополнительные кнопки": "",
|
|
971
|
-
"Конструктор редактора 'ckeditor5-react' из библиотеки @steroidsjs/ckeditor5/packages/ckeditor5-build-classic\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
972
|
-
"Компонент редактора 'ckeditor5-react' из библиотеки @ckeditor\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
973
969
|
"Свойства для Form": "",
|
|
974
970
|
"Свойства для кнопки продолжить/отправить": "",
|
|
975
971
|
"Свойства для кнопки возврата": "",
|
|
@@ -977,7 +973,17 @@
|
|
|
977
973
|
"Ориентация списка шагов формы": "",
|
|
978
974
|
"Коллекция полей и аттрибутов для каждого шага формы. Можно передавать как компонент, так и объект с полями.\nГлавное, чтобы внутри шага использовался один из способов.": "",
|
|
979
975
|
"Свойства для Steps": "",
|
|
980
|
-
"
|
|
976
|
+
"Формат времени": "",
|
|
977
|
+
"Время": "",
|
|
981
978
|
"Флаг, который позволяет использовать вложенные роуты c указанием вложенного пути": "",
|
|
982
|
-
"Скрыть иконку c лева от элемента": ""
|
|
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": "",
|
|
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
|
+
"Компоненты для подключения wysiwyg редактора": "",
|
|
983
|
+
"Отображать чекбоксы только на узлах, не имеющих вложенных элементов": "",
|
|
984
|
+
"Размер компонента и вложенных полей": "",
|
|
985
|
+
"Параметры для кнопки отправки формы": "",
|
|
986
|
+
"Конструктор редактора 'ckeditor5-react' из библиотеки @steroidsjs/ckeditor5/packages/ckeditor5-build-classic\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
987
|
+
"Компонент редактора 'ckeditor5-react' из библиотеки @ckeditor\nПримечание: для использования встроенного отображения 'HtmlField', данный компонент должен быть передан": "",
|
|
988
|
+
"CSS-класс для элемента навигации.": ""
|
|
983
989
|
}
|
package/package.json
CHANGED
|
@@ -120,7 +120,6 @@ AutoCompleteField.defaultProps = {
|
|
|
120
120
|
autoComplete: true,
|
|
121
121
|
multiple: false,
|
|
122
122
|
disabled: false,
|
|
123
|
-
required: false
|
|
124
|
-
size: 'md'
|
|
123
|
+
required: false
|
|
125
124
|
};
|
|
126
125
|
exports["default"] = (0, fieldWrapper_1["default"])('AutoCompleteField', AutoCompleteField);
|
|
@@ -46,6 +46,10 @@ export interface ICheckboxTreeFieldProps extends IFieldWrapperInputProps, Omit<I
|
|
|
46
46
|
* Первичный ключ для доступа к вложенным элементам
|
|
47
47
|
*/
|
|
48
48
|
primaryKey?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Отображать чекбоксы только на узлах, не имеющих вложенных элементов
|
|
51
|
+
*/
|
|
52
|
+
hasOnlyLeafCheckboxes?: boolean;
|
|
49
53
|
[key: string]: any;
|
|
50
54
|
}
|
|
51
55
|
export interface ICheckboxTreeFieldViewProps extends IFieldWrapperOutputProps, Pick<ITreeProps, 'levelPadding' | 'customIcon'> {
|
|
@@ -61,6 +65,7 @@ export interface ICheckboxTreeFieldViewProps extends IFieldWrapperOutputProps, P
|
|
|
61
65
|
onItemSelect: (checkbox: IPreparedTreeItem) => void;
|
|
62
66
|
renderCheckbox: (checkboxProps: ICheckboxFieldViewProps) => JSX.Element;
|
|
63
67
|
size?: Size;
|
|
68
|
+
hasOnlyLeafCheckboxes?: boolean;
|
|
64
69
|
}
|
|
65
70
|
export declare const getNestedItemsIds: (item: any, groupAttribute: any) => any[];
|
|
66
71
|
declare const _default: import("../../../ui/form/Field/fieldWrapper").FieldWrapperComponent<ICheckboxTreeFieldProps>;
|
|
@@ -41,6 +41,7 @@ exports.getNestedItemsIds = void 0;
|
|
|
41
41
|
var react_1 = __importStar(require("react"));
|
|
42
42
|
var react_use_1 = require("react-use");
|
|
43
43
|
var isArray_1 = __importDefault(require("lodash-es/isArray"));
|
|
44
|
+
var isEqual_1 = __importDefault(require("lodash-es/isEqual"));
|
|
44
45
|
var hooks_1 = require("../../../hooks");
|
|
45
46
|
var fieldWrapper_1 = __importDefault(require("../../../ui/form/Field/fieldWrapper"));
|
|
46
47
|
var getNestedItemsIds = function (item, groupAttribute) {
|
|
@@ -68,7 +69,9 @@ function CheckboxTreeField(props) {
|
|
|
68
69
|
var inputSelectedIds = (0, react_1.useMemo)(function () { return props.selectedIds || [].concat(props.input.value || []); }, [props.input.value, props.selectedIds]);
|
|
69
70
|
// Data Provider
|
|
70
71
|
var items = (0, hooks_1.useDataProvider)({
|
|
71
|
-
items: props.items
|
|
72
|
+
items: props.items,
|
|
73
|
+
initialSelectedIds: inputSelectedIds,
|
|
74
|
+
dataProvider: props.dataProvider
|
|
72
75
|
}).items;
|
|
73
76
|
// Tree items
|
|
74
77
|
var treeItems = (0, hooks_1.useTree)({
|
|
@@ -85,24 +88,27 @@ function CheckboxTreeField(props) {
|
|
|
85
88
|
inputValue: props.input.value
|
|
86
89
|
}), selectedIds = _a.selectedIds, setSelectedIds = _a.setSelectedIds;
|
|
87
90
|
var onItemSelect = (0, react_1.useCallback)(function (checkbox) {
|
|
88
|
-
if (checkbox.hasItems) {
|
|
91
|
+
if (checkbox.hasItems && !props.hasOnlyLeafCheckboxes) {
|
|
89
92
|
var selectedItemIds = (0, exports.getNestedItemsIds)(checkbox, props.primaryKey);
|
|
90
93
|
setSelectedIds(selectedItemIds);
|
|
91
94
|
}
|
|
92
|
-
else {
|
|
95
|
+
else if (checkbox.id && !checkbox.hasItems) {
|
|
93
96
|
setSelectedIds(checkbox.id);
|
|
94
97
|
}
|
|
95
|
-
}, [props.primaryKey, setSelectedIds]);
|
|
96
|
-
// Sync with form
|
|
97
|
-
(0, react_1.useEffect)(function () {
|
|
98
|
-
props.input.onChange.call(null, selectedIds);
|
|
99
|
-
if (props.onChange) {
|
|
100
|
-
props.onChange(selectedIds);
|
|
101
|
-
}
|
|
102
|
-
}, [props, props.input.onChange, selectedIds]);
|
|
98
|
+
}, [props.hasOnlyLeafCheckboxes, props.primaryKey, setSelectedIds]);
|
|
103
99
|
var onReset = (0, react_1.useCallback)(function () {
|
|
104
100
|
setSelectedIds([]);
|
|
105
101
|
}, [setSelectedIds]);
|
|
102
|
+
// Sync with form
|
|
103
|
+
var prevSelectedIds = (0, react_use_1.usePrevious)(selectedIds);
|
|
104
|
+
(0, react_1.useEffect)(function () {
|
|
105
|
+
if (!(0, isEqual_1["default"])(prevSelectedIds || [], selectedIds)) {
|
|
106
|
+
props.input.onChange.call(null, selectedIds);
|
|
107
|
+
if (props.onChange) {
|
|
108
|
+
props.onChange.call(null, selectedIds);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}, [prevSelectedIds, props.input.onChange, props.multiple, props.onChange, selectedIds]);
|
|
106
112
|
// Reset selected ids on form reset
|
|
107
113
|
var prevInputValue = (0, react_use_1.usePrevious)(props.input.value);
|
|
108
114
|
(0, react_use_1.useUpdateEffect)(function () {
|
|
@@ -119,8 +125,9 @@ function CheckboxTreeField(props) {
|
|
|
119
125
|
selectedIds: selectedIds,
|
|
120
126
|
renderCheckbox: renderCheckbox,
|
|
121
127
|
size: props.size,
|
|
122
|
-
levelPadding: props.levelPadding
|
|
123
|
-
|
|
128
|
+
levelPadding: props.levelPadding,
|
|
129
|
+
hasOnlyLeafCheckboxes: props.hasOnlyLeafCheckboxes
|
|
130
|
+
}); }, [onItemSelect, props.levelPadding, props.hasOnlyLeafCheckboxes, props.size, renderCheckbox, selectedIds, treeItems]);
|
|
124
131
|
return components.ui.renderView(props.view || 'form.CheckboxTreeFieldView', viewProps);
|
|
125
132
|
}
|
|
126
133
|
CheckboxTreeField.defaultProps = {
|
|
@@ -129,6 +136,7 @@ CheckboxTreeField.defaultProps = {
|
|
|
129
136
|
className: '',
|
|
130
137
|
levelPadding: 32,
|
|
131
138
|
alwaysOpened: false,
|
|
132
|
-
primaryKey: 'items'
|
|
139
|
+
primaryKey: 'items',
|
|
140
|
+
hasOnlyLeafCheckboxes: false
|
|
133
141
|
};
|
|
134
142
|
exports["default"] = (0, fieldWrapper_1["default"])('CheckboxTreeField', CheckboxTreeField);
|
|
@@ -45,6 +45,7 @@ var form_1 = require("../../../utils/form");
|
|
|
45
45
|
var Form_1 = require("../Form/Form");
|
|
46
46
|
var FieldLayout_1 = __importDefault(require("../FieldLayout/FieldLayout"));
|
|
47
47
|
var hooks_1 = require("../../../hooks");
|
|
48
|
+
var DEFAULT_SIZE = 'md';
|
|
48
49
|
var getKey = function (baseName, attribute) { return baseName + (0, upperFirst_1["default"])(attribute || ''); };
|
|
49
50
|
var createDynamicField = function (componentId, Component, options) {
|
|
50
51
|
var DynamicField = function (props) {
|
|
@@ -132,9 +133,10 @@ function fieldWrapper(componentId, Component, optionsConfig) {
|
|
|
132
133
|
var uniqueId = (0, hooks_1.useUniqueId)('input');
|
|
133
134
|
var inputId = props.id || uniqueId;
|
|
134
135
|
if (props.isRenderWithoutFieldLayout) {
|
|
135
|
-
return components.ui.renderView(Component.DynamicField, props);
|
|
136
|
+
return components.ui.renderView(Component.DynamicField, __assign(__assign({}, props), { size: props.size || DEFAULT_SIZE }));
|
|
136
137
|
}
|
|
137
|
-
|
|
138
|
+
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 }))) }));
|
|
138
140
|
};
|
|
139
141
|
NewComponent.WrappedComponent = Component;
|
|
140
142
|
NewComponent.displayName = componentId;
|
package/ui/form/Form/Form.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
+
import { IButtonProps } from '@steroidsjs/core/ui/form/Button/Button';
|
|
2
3
|
import { IAddressBarConfig } from '../../../hooks/useAddressBar';
|
|
3
4
|
import { IFieldProps } from '../Field/Field';
|
|
4
5
|
/**
|
|
@@ -128,6 +129,13 @@ export interface IFormProps extends IUiComponent {
|
|
|
128
129
|
* @example Submit
|
|
129
130
|
*/
|
|
130
131
|
submitLabel?: string;
|
|
132
|
+
/**
|
|
133
|
+
* Параметры для кнопки отправки формы
|
|
134
|
+
* @example {
|
|
135
|
+
* block: true,
|
|
136
|
+
* }
|
|
137
|
+
*/
|
|
138
|
+
submitButtonProps?: IButtonProps;
|
|
131
139
|
/**
|
|
132
140
|
* Синхронизация значений формы с адресной строкой
|
|
133
141
|
* @example true
|
|
@@ -153,6 +161,10 @@ export interface IFormProps extends IUiComponent {
|
|
|
153
161
|
* Дополнительные кнопки
|
|
154
162
|
*/
|
|
155
163
|
buttons?: React.ReactNode;
|
|
164
|
+
/**
|
|
165
|
+
* Размер компонента и вложенных полей
|
|
166
|
+
*/
|
|
167
|
+
size?: Size;
|
|
156
168
|
[key: string]: any;
|
|
157
169
|
}
|
|
158
170
|
export interface IFormViewProps {
|
|
@@ -164,6 +176,8 @@ export interface IFormViewProps {
|
|
|
164
176
|
style?: CustomStyle;
|
|
165
177
|
children?: React.ReactNode;
|
|
166
178
|
buttons?: React.ReactNode;
|
|
179
|
+
submitButtonProps?: IButtonProps;
|
|
180
|
+
size?: Size;
|
|
167
181
|
}
|
|
168
182
|
export interface IFormReducerState {
|
|
169
183
|
values: any;
|
|
@@ -187,7 +201,7 @@ export interface IFormContext {
|
|
|
187
201
|
*/
|
|
188
202
|
prefix?: string | boolean;
|
|
189
203
|
/**
|
|
190
|
-
* Размер компонента
|
|
204
|
+
* Размер компонента и вложенных полей
|
|
191
205
|
*/
|
|
192
206
|
size?: Size;
|
|
193
207
|
/**
|
|
@@ -213,6 +227,7 @@ declare namespace Form {
|
|
|
213
227
|
actionMethod: string;
|
|
214
228
|
autoStartTwoFactor: boolean;
|
|
215
229
|
captchaActionName: string;
|
|
230
|
+
size: string;
|
|
216
231
|
};
|
|
217
232
|
}
|
|
218
233
|
export default Form;
|
package/ui/form/Form/Form.js
CHANGED
|
@@ -321,8 +321,8 @@ function Form(props) {
|
|
|
321
321
|
reducer: reducer,
|
|
322
322
|
dispatch: dispatch
|
|
323
323
|
}); }, [dispatch, props.formId, props.model, props.prefix, props.size, provider, reducer]);
|
|
324
|
-
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { isSubmitting: isSubmitting, onSubmit: onSubmit, submitLabel: props.submitLabel, fields: props.fields, children: props.children, className: props.className, style: props.style, autoFocus: props.autoFocus, buttons: props.buttons })); }, [isSubmitting, onSubmit, props.autoFocus, props.buttons, props.children, props.className, props.fields,
|
|
325
|
-
props.submitLabel, props.viewProps]);
|
|
324
|
+
var viewProps = (0, react_1.useMemo)(function () { return (__assign(__assign({}, props.viewProps), { isSubmitting: isSubmitting, onSubmit: onSubmit, submitLabel: props.submitLabel, submitButtonProps: props.submitButtonProps, fields: props.fields, children: props.children, className: props.className, style: props.style, autoFocus: props.autoFocus, buttons: props.buttons, size: props.size })); }, [isSubmitting, onSubmit, props.autoFocus, props.buttons, props.children, props.className, props.fields,
|
|
325
|
+
props.size, props.style, props.submitButtonProps, props.submitLabel, props.viewProps]);
|
|
326
326
|
// Wait initialization (only for redux)
|
|
327
327
|
if (values === undefined) {
|
|
328
328
|
return null;
|
|
@@ -335,6 +335,7 @@ function Form(props) {
|
|
|
335
335
|
Form.defaultProps = {
|
|
336
336
|
actionMethod: 'POST',
|
|
337
337
|
autoStartTwoFactor: true,
|
|
338
|
-
captchaActionName: 'submit'
|
|
338
|
+
captchaActionName: 'submit',
|
|
339
|
+
size: 'md'
|
|
339
340
|
};
|
|
340
341
|
exports["default"] = Form;
|
|
@@ -50,10 +50,11 @@ var useFile_1 = __importDefault(require("../../../hooks/useFile"));
|
|
|
50
50
|
var fieldWrapper_1 = __importDefault(require("../Field/fieldWrapper"));
|
|
51
51
|
var modal_1 = require("../../../actions/modal");
|
|
52
52
|
function ImageField(props) {
|
|
53
|
+
var _a;
|
|
53
54
|
var components = (0, hooks_1.useComponents)();
|
|
54
55
|
var dispatch = (0, useDispatch_1["default"])();
|
|
55
56
|
// Add cropping option
|
|
56
|
-
var
|
|
57
|
+
var _b = (0, react_1.useState)(null), croppedImage = _b[0], setCroppedImage = _b[1];
|
|
57
58
|
var modalId = (0, react_1.useMemo)(function () { var _a; return ((_a = props.modalProps) === null || _a === void 0 ? void 0 : _a.modalId) || (0, uniqueId_1["default"])('cropModal'); }, [props.modalProps.modalId]);
|
|
58
59
|
var ImageFieldModalVIew = props.modalView || components.ui.getView('form.ImageFieldModalView');
|
|
59
60
|
var responseParser = (0, react_1.useCallback)(function (text) {
|
|
@@ -66,11 +67,11 @@ function ImageField(props) {
|
|
|
66
67
|
catch (e) { }
|
|
67
68
|
return data;
|
|
68
69
|
}, [ImageFieldModalVIew, modalId, dispatch, props.crop, props.modalProps]);
|
|
69
|
-
var
|
|
70
|
+
var _c = (0, useFile_1["default"])(__assign(__assign({}, props), { multiple: false, imagesOnly: true, uploader: __assign({ uploaderConfigs: {
|
|
70
71
|
xhr: {
|
|
71
72
|
responseParser: props.crop ? responseParser : null
|
|
72
73
|
}
|
|
73
|
-
} }, props.uploader) })), files =
|
|
74
|
+
} }, props.uploader) })), files = _c.files, onBrowse = _c.onBrowse, onRemove = _c.onRemove, onAdd = _c.onAdd;
|
|
74
75
|
var oldCroppedImage = (0, react_use_1.usePrevious)(croppedImage);
|
|
75
76
|
// Fetch cropped image
|
|
76
77
|
(0, react_1.useEffect)(function () {
|
|
@@ -88,7 +89,7 @@ function ImageField(props) {
|
|
|
88
89
|
props.input.onChange(res.id);
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
|
-
}, [components.http, croppedImage, onAdd, onRemove, props.crop.backendUrl, props.input, oldCroppedImage]);
|
|
92
|
+
}, [components.http, croppedImage, onAdd, onRemove, (_a = props.crop) === null || _a === void 0 ? void 0 : _a.backendUrl, props.input, oldCroppedImage]);
|
|
92
93
|
var ImageFieldView = props.view || components.ui.getView('form.ImageFieldView');
|
|
93
94
|
var item = (0, react_1.useMemo)(function () {
|
|
94
95
|
var result = null;
|
|
@@ -45,9 +45,8 @@ TimeField.defaultProps = {
|
|
|
45
45
|
showRemove: true,
|
|
46
46
|
type: 'text',
|
|
47
47
|
valueFormat: 'HH:mm',
|
|
48
|
-
useUTC:
|
|
48
|
+
useUTC: false,
|
|
49
49
|
dateInUTC: false,
|
|
50
|
-
size: 'md',
|
|
51
50
|
icon: true
|
|
52
51
|
};
|
|
53
52
|
exports["default"] = (0, fieldWrapper_1["default"])('TimeField', TimeField);
|
|
@@ -40,7 +40,9 @@ function TimeRangeField(props) {
|
|
|
40
40
|
inputProps: props.inputPropsFrom,
|
|
41
41
|
placeholder: props.placeholder,
|
|
42
42
|
valueFormat: props.valueFormat,
|
|
43
|
-
displayFormat: props.displayFormat
|
|
43
|
+
displayFormat: props.displayFormat,
|
|
44
|
+
useUTC: props.useUTC,
|
|
45
|
+
dateInUTC: props.dateInUTC
|
|
44
46
|
}), onNowFrom = _a.onNow, onCloseFrom = _a.onClose, inputPropsFrom = _a.inputProps, onClearFrom = _a.onClear, isOpenedFrom = _a.isOpened;
|
|
45
47
|
// Input 'to'
|
|
46
48
|
var _b = (0, useDateInputState_1["default"])({
|
|
@@ -51,7 +53,9 @@ function TimeRangeField(props) {
|
|
|
51
53
|
inputProps: props.inputPropsTo,
|
|
52
54
|
placeholder: props.placeholder,
|
|
53
55
|
valueFormat: props.valueFormat,
|
|
54
|
-
displayFormat: props.displayFormat
|
|
56
|
+
displayFormat: props.displayFormat,
|
|
57
|
+
useUTC: props.useUTC,
|
|
58
|
+
dateInUTC: props.dateInUTC
|
|
55
59
|
}), onNowTo = _b.onNow, onCloseTo = _b.onClose, inputPropsTo = _b.inputProps, onClearTo = _b.onClear, isOpenedTo = _b.isOpened;
|
|
56
60
|
var _c = (0, useDateRange_1["default"])({
|
|
57
61
|
onClearFrom: onClearFrom,
|
|
@@ -80,9 +84,8 @@ TimeRangeField.defaultProps = {
|
|
|
80
84
|
hasInitialFocus: false,
|
|
81
85
|
type: 'text',
|
|
82
86
|
valueFormat: 'HH:mm',
|
|
83
|
-
useUTC:
|
|
87
|
+
useUTC: false,
|
|
84
88
|
dateInUTC: false,
|
|
85
|
-
size: 'md',
|
|
86
89
|
icon: true
|
|
87
90
|
};
|
|
88
91
|
exports["default"] = (0, fieldWrapper_1["default"])('TimeRangeField', TimeRangeField, {
|
package/ui/form/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ import DateRangeField from './DateRangeField';
|
|
|
10
10
|
import DateTimeField from './DateTimeField';
|
|
11
11
|
import DateTimeRangeField from './DateTimeRangeField';
|
|
12
12
|
import DropDownField from './DropDownField';
|
|
13
|
+
import EmailField from './EmailField';
|
|
13
14
|
import Field from './Field';
|
|
14
15
|
import FieldLayout from './FieldLayout';
|
|
15
16
|
import FieldList from './FieldList';
|
|
@@ -17,21 +18,23 @@ import FieldSet from './FieldSet';
|
|
|
17
18
|
import FileField from './FileField';
|
|
18
19
|
import Form from './Form';
|
|
19
20
|
import HtmlField from './HtmlField';
|
|
21
|
+
import ImageField from './ImageField';
|
|
20
22
|
import InputField from './InputField';
|
|
23
|
+
import MaskField from './MaskField';
|
|
21
24
|
import NavField from './NavField';
|
|
22
25
|
import NumberField from './NumberField';
|
|
23
26
|
import PasswordField from './PasswordField';
|
|
24
27
|
import RadioField from './RadioField';
|
|
25
28
|
import RadioListField from './RadioListField';
|
|
29
|
+
import RateField from './RateField';
|
|
26
30
|
import ReCaptchaField from './ReCaptchaField';
|
|
27
31
|
import SliderField from './SliderField';
|
|
28
32
|
import SwitcherField from './SwitcherField';
|
|
29
33
|
import TextField from './TextField';
|
|
30
34
|
import TimeField from './TimeField';
|
|
31
|
-
import
|
|
32
|
-
import
|
|
33
|
-
|
|
34
|
-
export { AutoCompleteField, BlankField, Button, CheckboxField, CheckboxListField, CheckboxTreeField, DateField, DateRangeField, DateTimeField, DateTimeRangeField, DropDownField, Field, FieldLayout, FieldList, FieldSet, FileField, Form, HtmlField, InputField, NavField, NumberField, PasswordField, RadioField, RadioListField, ReCaptchaField, SliderField, SwitcherField, TextField, TimeField, RateField, MaskField, EmailField, };
|
|
35
|
+
import TimeRangeField from './TimeRangeField';
|
|
36
|
+
import WizardForm from './WizardForm';
|
|
37
|
+
export { AutoCompleteField, BlankField, Button, CheckboxField, CheckboxListField, CheckboxTreeField, DateField, DateRangeField, DateTimeField, DateTimeRangeField, DropDownField, Field, FieldLayout, FieldList, FieldSet, FileField, Form, HtmlField, ImageField, InputField, NavField, NumberField, PasswordField, RadioField, RadioListField, ReCaptchaField, SliderField, SwitcherField, TextField, TimeField, RateField, MaskField, EmailField, TimeRangeField, WizardForm, };
|
|
35
38
|
declare const _default: {
|
|
36
39
|
AutoCompleteField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./AutoCompleteField/AutoCompleteField").IAutoCompleteFieldProps>;
|
|
37
40
|
BlankField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./BlankField/BlankField").IBlankFieldProps>;
|
|
@@ -51,6 +54,7 @@ declare const _default: {
|
|
|
51
54
|
FileField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./FileField/FileField").IFileFieldProps>;
|
|
52
55
|
Form: typeof Form;
|
|
53
56
|
HtmlField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./HtmlField/HtmlField").IHtmlFieldProps>;
|
|
57
|
+
ImageField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./ImageField/ImageField").IImageFieldProps>;
|
|
54
58
|
InputField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./InputField/InputField").IInputFieldProps>;
|
|
55
59
|
NavField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./NavField/NavField").INavFieldProps>;
|
|
56
60
|
NumberField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./NumberField/NumberField").INumberFieldProps>;
|
|
@@ -65,5 +69,7 @@ declare const _default: {
|
|
|
65
69
|
RateField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./RateField/RateField").IRateFieldProps>;
|
|
66
70
|
MaskField: typeof MaskField;
|
|
67
71
|
EmailField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./EmailField/EmailField").IEmailFieldProps>;
|
|
72
|
+
TimeRangeField: import("./Field/fieldWrapper").FieldWrapperComponent<import("./TimeRangeField/TimeRangeField").ITimeRangeFieldProps>;
|
|
73
|
+
WizardForm: typeof WizardForm;
|
|
68
74
|
};
|
|
69
75
|
export default _default;
|
package/ui/form/index.js
CHANGED
|
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.EmailField = exports.MaskField = exports.RateField = exports.TimeField = exports.TextField = exports.SwitcherField = exports.SliderField = exports.ReCaptchaField = exports.RadioListField = exports.RadioField = exports.PasswordField = exports.NumberField = exports.NavField = exports.InputField = exports.HtmlField = exports.Form = exports.FileField = exports.FieldSet = exports.FieldList = exports.FieldLayout = exports.Field = exports.DropDownField = exports.DateTimeRangeField = exports.DateTimeField = exports.DateRangeField = exports.DateField = exports.CheckboxTreeField = exports.CheckboxListField = exports.CheckboxField = exports.Button = exports.BlankField = exports.AutoCompleteField = void 0;
|
|
6
|
+
exports.WizardForm = exports.TimeRangeField = exports.EmailField = exports.MaskField = exports.RateField = exports.TimeField = exports.TextField = exports.SwitcherField = exports.SliderField = exports.ReCaptchaField = exports.RadioListField = exports.RadioField = exports.PasswordField = exports.NumberField = exports.NavField = exports.InputField = exports.ImageField = exports.HtmlField = exports.Form = exports.FileField = exports.FieldSet = exports.FieldList = exports.FieldLayout = exports.Field = exports.DropDownField = exports.DateTimeRangeField = exports.DateTimeField = exports.DateRangeField = exports.DateField = exports.CheckboxTreeField = exports.CheckboxListField = exports.CheckboxField = exports.Button = exports.BlankField = exports.AutoCompleteField = void 0;
|
|
7
7
|
var AutoCompleteField_1 = __importDefault(require("./AutoCompleteField"));
|
|
8
8
|
exports.AutoCompleteField = AutoCompleteField_1["default"];
|
|
9
9
|
var BlankField_1 = __importDefault(require("./BlankField"));
|
|
@@ -26,6 +26,8 @@ var DateTimeRangeField_1 = __importDefault(require("./DateTimeRangeField"));
|
|
|
26
26
|
exports.DateTimeRangeField = DateTimeRangeField_1["default"];
|
|
27
27
|
var DropDownField_1 = __importDefault(require("./DropDownField"));
|
|
28
28
|
exports.DropDownField = DropDownField_1["default"];
|
|
29
|
+
var EmailField_1 = __importDefault(require("./EmailField"));
|
|
30
|
+
exports.EmailField = EmailField_1["default"];
|
|
29
31
|
var Field_1 = __importDefault(require("./Field"));
|
|
30
32
|
exports.Field = Field_1["default"];
|
|
31
33
|
var FieldLayout_1 = __importDefault(require("./FieldLayout"));
|
|
@@ -40,8 +42,12 @@ var Form_1 = __importDefault(require("./Form"));
|
|
|
40
42
|
exports.Form = Form_1["default"];
|
|
41
43
|
var HtmlField_1 = __importDefault(require("./HtmlField"));
|
|
42
44
|
exports.HtmlField = HtmlField_1["default"];
|
|
45
|
+
var ImageField_1 = __importDefault(require("./ImageField"));
|
|
46
|
+
exports.ImageField = ImageField_1["default"];
|
|
43
47
|
var InputField_1 = __importDefault(require("./InputField"));
|
|
44
48
|
exports.InputField = InputField_1["default"];
|
|
49
|
+
var MaskField_1 = __importDefault(require("./MaskField"));
|
|
50
|
+
exports.MaskField = MaskField_1["default"];
|
|
45
51
|
var NavField_1 = __importDefault(require("./NavField"));
|
|
46
52
|
exports.NavField = NavField_1["default"];
|
|
47
53
|
var NumberField_1 = __importDefault(require("./NumberField"));
|
|
@@ -52,6 +58,8 @@ var RadioField_1 = __importDefault(require("./RadioField"));
|
|
|
52
58
|
exports.RadioField = RadioField_1["default"];
|
|
53
59
|
var RadioListField_1 = __importDefault(require("./RadioListField"));
|
|
54
60
|
exports.RadioListField = RadioListField_1["default"];
|
|
61
|
+
var RateField_1 = __importDefault(require("./RateField"));
|
|
62
|
+
exports.RateField = RateField_1["default"];
|
|
55
63
|
var ReCaptchaField_1 = __importDefault(require("./ReCaptchaField"));
|
|
56
64
|
exports.ReCaptchaField = ReCaptchaField_1["default"];
|
|
57
65
|
var SliderField_1 = __importDefault(require("./SliderField"));
|
|
@@ -62,12 +70,10 @@ var TextField_1 = __importDefault(require("./TextField"));
|
|
|
62
70
|
exports.TextField = TextField_1["default"];
|
|
63
71
|
var TimeField_1 = __importDefault(require("./TimeField"));
|
|
64
72
|
exports.TimeField = TimeField_1["default"];
|
|
65
|
-
var
|
|
66
|
-
exports.
|
|
67
|
-
var
|
|
68
|
-
exports.
|
|
69
|
-
var EmailField_1 = __importDefault(require("./EmailField"));
|
|
70
|
-
exports.EmailField = EmailField_1["default"];
|
|
73
|
+
var TimeRangeField_1 = __importDefault(require("./TimeRangeField"));
|
|
74
|
+
exports.TimeRangeField = TimeRangeField_1["default"];
|
|
75
|
+
var WizardForm_1 = __importDefault(require("./WizardForm"));
|
|
76
|
+
exports.WizardForm = WizardForm_1["default"];
|
|
71
77
|
exports["default"] = {
|
|
72
78
|
AutoCompleteField: AutoCompleteField_1["default"],
|
|
73
79
|
BlankField: BlankField_1["default"],
|
|
@@ -87,6 +93,7 @@ exports["default"] = {
|
|
|
87
93
|
FileField: FileField_1["default"],
|
|
88
94
|
Form: Form_1["default"],
|
|
89
95
|
HtmlField: HtmlField_1["default"],
|
|
96
|
+
ImageField: ImageField_1["default"],
|
|
90
97
|
InputField: InputField_1["default"],
|
|
91
98
|
NavField: NavField_1["default"],
|
|
92
99
|
NumberField: NumberField_1["default"],
|
|
@@ -100,5 +107,7 @@ exports["default"] = {
|
|
|
100
107
|
TimeField: TimeField_1["default"],
|
|
101
108
|
RateField: RateField_1["default"],
|
|
102
109
|
MaskField: MaskField_1["default"],
|
|
103
|
-
EmailField: EmailField_1["default"]
|
|
110
|
+
EmailField: EmailField_1["default"],
|
|
111
|
+
TimeRangeField: TimeRangeField_1["default"],
|
|
112
|
+
WizardForm: WizardForm_1["default"]
|
|
104
113
|
};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/**
|
|
3
|
+
* TimeFormatter
|
|
4
|
+
*
|
|
5
|
+
* Компонент TimeFormatter предназначен для форматирования времени с использованием заданного формата.
|
|
6
|
+
* Он позволяет кастомизировать отображение времени, используя переданный view React компонент.
|
|
7
|
+
**/
|
|
8
|
+
export interface ITimeFormatterProps {
|
|
9
|
+
/**
|
|
10
|
+
* Формат времени
|
|
11
|
+
* @example HH:mm
|
|
12
|
+
*/
|
|
13
|
+
format?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Время
|
|
16
|
+
* @example 16:15
|
|
17
|
+
*/
|
|
18
|
+
value?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Переопределение view React компонента для кастомизации отображения колонки
|
|
21
|
+
* @example MyCustomView
|
|
22
|
+
*/
|
|
23
|
+
view?: CustomView;
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}
|
|
26
|
+
export default function TimeFormatter(props: ITimeFormatterProps): JSX.Element;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
var hooks_1 = require("@steroidsjs/core/hooks");
|
|
7
|
+
var dayjs_1 = __importDefault(require("dayjs"));
|
|
8
|
+
var defaultProps = {
|
|
9
|
+
format: 'HH:mm'
|
|
10
|
+
};
|
|
11
|
+
function TimeFormatter(props) {
|
|
12
|
+
var components = (0, hooks_1.useComponents)();
|
|
13
|
+
if (!props.value) {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
16
|
+
var time = (0, dayjs_1["default"])(props.value).format(props.format || defaultProps.format);
|
|
17
|
+
return components.ui.renderView(props.view || 'format.DefaultFormatterView', {
|
|
18
|
+
value: time
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
exports["default"] = TimeFormatter;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
var TimeFormatter_1 = __importDefault(require("./TimeFormatter"));
|
|
7
|
+
exports["default"] = TimeFormatter_1["default"];
|
package/ui/nav/Tree/Tree.d.ts
CHANGED