@fctc/sme-widget-ui 1.0.3 → 1.0.4
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/README.md +93 -93
- package/dist/index.js +22 -19
- package/dist/index.mjs +22 -19
- package/dist/widgets.d.mts +2 -6
- package/dist/widgets.d.ts +2 -6
- package/dist/widgets.js +22 -19
- package/dist/widgets.mjs +22 -19
- package/package.json +71 -71
package/README.md
CHANGED
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
# edu-widget-ui
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
## Getting started
|
|
6
|
-
|
|
7
|
-
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
|
8
|
-
|
|
9
|
-
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
|
10
|
-
|
|
11
|
-
## Add your files
|
|
12
|
-
|
|
13
|
-
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
|
14
|
-
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
|
|
15
|
-
|
|
16
|
-
```
|
|
17
|
-
cd existing_repo
|
|
18
|
-
git remote add origin https://gitlab.atomsolution.vn/education-erp/edu-widget-ui.git
|
|
19
|
-
git branch -M main
|
|
20
|
-
git push -uf origin main
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
## Integrate with your tools
|
|
24
|
-
|
|
25
|
-
- [ ] [Set up project integrations](https://gitlab.atomsolution.vn/education-erp/edu-widget-ui/-/settings/integrations)
|
|
26
|
-
|
|
27
|
-
## Collaborate with your team
|
|
28
|
-
|
|
29
|
-
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
|
|
30
|
-
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
|
|
31
|
-
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
|
|
32
|
-
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
|
|
33
|
-
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
|
|
34
|
-
|
|
35
|
-
## Test and Deploy
|
|
36
|
-
|
|
37
|
-
Use the built-in continuous integration in GitLab.
|
|
38
|
-
|
|
39
|
-
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
|
|
40
|
-
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
|
|
41
|
-
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
|
|
42
|
-
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
|
|
43
|
-
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
|
|
44
|
-
|
|
45
|
-
***
|
|
46
|
-
|
|
47
|
-
# Editing this README
|
|
48
|
-
|
|
49
|
-
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
|
50
|
-
|
|
51
|
-
## Suggestions for a good README
|
|
52
|
-
|
|
53
|
-
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
|
54
|
-
|
|
55
|
-
## Name
|
|
56
|
-
Choose a self-explaining name for your project.
|
|
57
|
-
|
|
58
|
-
## Description
|
|
59
|
-
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
|
60
|
-
|
|
61
|
-
## Badges
|
|
62
|
-
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
|
63
|
-
|
|
64
|
-
## Visuals
|
|
65
|
-
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
|
66
|
-
|
|
67
|
-
## Installation
|
|
68
|
-
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
|
69
|
-
|
|
70
|
-
## Usage
|
|
71
|
-
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
|
72
|
-
|
|
73
|
-
## Support
|
|
74
|
-
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
|
75
|
-
|
|
76
|
-
## Roadmap
|
|
77
|
-
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
|
78
|
-
|
|
79
|
-
## Contributing
|
|
80
|
-
State if you are open to contributions and what your requirements are for accepting them.
|
|
81
|
-
|
|
82
|
-
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
|
83
|
-
|
|
84
|
-
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
|
85
|
-
|
|
86
|
-
## Authors and acknowledgment
|
|
87
|
-
Show your appreciation to those who have contributed to the project.
|
|
88
|
-
|
|
89
|
-
## License
|
|
90
|
-
For open source projects, say how it is licensed.
|
|
91
|
-
|
|
92
|
-
## Project status
|
|
93
|
-
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
|
1
|
+
# edu-widget-ui
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## Getting started
|
|
6
|
+
|
|
7
|
+
To make it easy for you to get started with GitLab, here's a list of recommended next steps.
|
|
8
|
+
|
|
9
|
+
Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
|
|
10
|
+
|
|
11
|
+
## Add your files
|
|
12
|
+
|
|
13
|
+
- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
|
|
14
|
+
- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
cd existing_repo
|
|
18
|
+
git remote add origin https://gitlab.atomsolution.vn/education-erp/edu-widget-ui.git
|
|
19
|
+
git branch -M main
|
|
20
|
+
git push -uf origin main
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Integrate with your tools
|
|
24
|
+
|
|
25
|
+
- [ ] [Set up project integrations](https://gitlab.atomsolution.vn/education-erp/edu-widget-ui/-/settings/integrations)
|
|
26
|
+
|
|
27
|
+
## Collaborate with your team
|
|
28
|
+
|
|
29
|
+
- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
|
|
30
|
+
- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
|
|
31
|
+
- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
|
|
32
|
+
- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
|
|
33
|
+
- [ ] [Set auto-merge](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
|
|
34
|
+
|
|
35
|
+
## Test and Deploy
|
|
36
|
+
|
|
37
|
+
Use the built-in continuous integration in GitLab.
|
|
38
|
+
|
|
39
|
+
- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
|
|
40
|
+
- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing (SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
|
|
41
|
+
- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
|
|
42
|
+
- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
|
|
43
|
+
- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
|
|
44
|
+
|
|
45
|
+
***
|
|
46
|
+
|
|
47
|
+
# Editing this README
|
|
48
|
+
|
|
49
|
+
When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thanks to [makeareadme.com](https://www.makeareadme.com/) for this template.
|
|
50
|
+
|
|
51
|
+
## Suggestions for a good README
|
|
52
|
+
|
|
53
|
+
Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
|
|
54
|
+
|
|
55
|
+
## Name
|
|
56
|
+
Choose a self-explaining name for your project.
|
|
57
|
+
|
|
58
|
+
## Description
|
|
59
|
+
Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
|
|
60
|
+
|
|
61
|
+
## Badges
|
|
62
|
+
On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
|
|
63
|
+
|
|
64
|
+
## Visuals
|
|
65
|
+
Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
|
|
66
|
+
|
|
67
|
+
## Installation
|
|
68
|
+
Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
|
|
69
|
+
|
|
70
|
+
## Usage
|
|
71
|
+
Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
|
|
72
|
+
|
|
73
|
+
## Support
|
|
74
|
+
Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
|
|
75
|
+
|
|
76
|
+
## Roadmap
|
|
77
|
+
If you have ideas for releases in the future, it is a good idea to list them in the README.
|
|
78
|
+
|
|
79
|
+
## Contributing
|
|
80
|
+
State if you are open to contributions and what your requirements are for accepting them.
|
|
81
|
+
|
|
82
|
+
For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
|
|
83
|
+
|
|
84
|
+
You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
|
|
85
|
+
|
|
86
|
+
## Authors and acknowledgment
|
|
87
|
+
Show your appreciation to those who have contributed to the project.
|
|
88
|
+
|
|
89
|
+
## License
|
|
90
|
+
For open source projects, say how it is licensed.
|
|
91
|
+
|
|
92
|
+
## Project status
|
|
93
|
+
If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
|
package/dist/index.js
CHANGED
|
@@ -32612,7 +32612,19 @@ var FeeField = (props) => {
|
|
|
32612
32612
|
var import_react54 = require("react");
|
|
32613
32613
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
32614
32614
|
var FileUploadField = (props) => {
|
|
32615
|
-
const {
|
|
32615
|
+
const {
|
|
32616
|
+
name: name2,
|
|
32617
|
+
methods,
|
|
32618
|
+
isForm,
|
|
32619
|
+
model,
|
|
32620
|
+
required,
|
|
32621
|
+
idForm,
|
|
32622
|
+
widget,
|
|
32623
|
+
useUploadImage,
|
|
32624
|
+
useUploadFile,
|
|
32625
|
+
useGetImage,
|
|
32626
|
+
isBase64File
|
|
32627
|
+
} = props;
|
|
32616
32628
|
const fileInputRef = (0, import_react54.useRef)(null);
|
|
32617
32629
|
const [selectedFiles, setSelectedFiles] = (0, import_react54.useState)([]);
|
|
32618
32630
|
const [uploadError, setUploadError] = (0, import_react54.useState)();
|
|
@@ -33948,12 +33960,14 @@ var Many2ManyField = (props) => {
|
|
|
33948
33960
|
page,
|
|
33949
33961
|
rows,
|
|
33950
33962
|
columns,
|
|
33963
|
+
typeTable,
|
|
33951
33964
|
renderField,
|
|
33952
33965
|
isDataLoading,
|
|
33953
33966
|
relation,
|
|
33954
33967
|
onToggleColumnOptional,
|
|
33955
33968
|
isDataFetched,
|
|
33956
33969
|
isPlaceholderData,
|
|
33970
|
+
isCheckBox,
|
|
33957
33971
|
optionsObject,
|
|
33958
33972
|
onChoose,
|
|
33959
33973
|
onAddNew,
|
|
@@ -33967,13 +33981,7 @@ var Many2ManyField = (props) => {
|
|
|
33967
33981
|
evalJSONContext,
|
|
33968
33982
|
searchController,
|
|
33969
33983
|
viewData,
|
|
33970
|
-
setDomain
|
|
33971
|
-
isDisplayCheckbox,
|
|
33972
|
-
checkedAll,
|
|
33973
|
-
handleCheckBoxAll,
|
|
33974
|
-
selectedRowKeysRef,
|
|
33975
|
-
typeTable,
|
|
33976
|
-
setSelectedRowKeys
|
|
33984
|
+
setDomain
|
|
33977
33985
|
} = props;
|
|
33978
33986
|
const {
|
|
33979
33987
|
context,
|
|
@@ -34013,6 +34021,8 @@ var Many2ManyField = (props) => {
|
|
|
34013
34021
|
groupBy,
|
|
34014
34022
|
showFiltersGroups: true,
|
|
34015
34023
|
setGroupBy,
|
|
34024
|
+
setSelectedRowKeys: (keys) => {
|
|
34025
|
+
},
|
|
34016
34026
|
setDomainList: setDomain,
|
|
34017
34027
|
setPage: (pages) => {
|
|
34018
34028
|
setPage?.(pages);
|
|
@@ -34022,7 +34032,6 @@ var Many2ManyField = (props) => {
|
|
|
34022
34032
|
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
34023
34033
|
)?.map((col) => ({ ...col.field })) ?? []
|
|
34024
34034
|
],
|
|
34025
|
-
setSelectedRowKeys,
|
|
34026
34035
|
viewData,
|
|
34027
34036
|
context,
|
|
34028
34037
|
selectedRowKeys,
|
|
@@ -34067,9 +34076,7 @@ var Many2ManyField = (props) => {
|
|
|
34067
34076
|
{
|
|
34068
34077
|
columns,
|
|
34069
34078
|
onToggleColumnOptional,
|
|
34070
|
-
isDisplayCheckbox
|
|
34071
|
-
checkedAll,
|
|
34072
|
-
handleCheckBoxAll
|
|
34079
|
+
isDisplayCheckbox: false
|
|
34073
34080
|
}
|
|
34074
34081
|
),
|
|
34075
34082
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
@@ -34078,7 +34085,7 @@ var Many2ManyField = (props) => {
|
|
|
34078
34085
|
columns,
|
|
34079
34086
|
rows,
|
|
34080
34087
|
rootField,
|
|
34081
|
-
isDisplayCheckbox,
|
|
34088
|
+
isDisplayCheckbox: false,
|
|
34082
34089
|
model: relation,
|
|
34083
34090
|
renderField: ({
|
|
34084
34091
|
row,
|
|
@@ -34099,11 +34106,7 @@ var Many2ManyField = (props) => {
|
|
|
34099
34106
|
},
|
|
34100
34107
|
onRemoveRow: null,
|
|
34101
34108
|
onAddRow,
|
|
34102
|
-
onClickRow
|
|
34103
|
-
typeTable,
|
|
34104
|
-
selectedRowKeysRef,
|
|
34105
|
-
selectedRowKeys,
|
|
34106
|
-
setSelectedRowKeys
|
|
34109
|
+
onClickRow
|
|
34107
34110
|
}
|
|
34108
34111
|
)
|
|
34109
34112
|
]
|
|
@@ -34114,7 +34117,7 @@ var Many2ManyField = (props) => {
|
|
|
34114
34117
|
}
|
|
34115
34118
|
) }) }) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(LayerLoading, {}),
|
|
34116
34119
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex items-center gap-2 mt-auto", children: [
|
|
34117
|
-
|
|
34120
|
+
isCheckBox && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
34118
34121
|
"button",
|
|
34119
34122
|
{
|
|
34120
34123
|
disabled: selectedRowKeys?.length === 0,
|
package/dist/index.mjs
CHANGED
|
@@ -32493,7 +32493,19 @@ var FeeField = (props) => {
|
|
|
32493
32493
|
import { useEffect as useEffect16, useRef as useRef14, useState as useState16 } from "react";
|
|
32494
32494
|
import { jsx as jsx84, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
32495
32495
|
var FileUploadField = (props) => {
|
|
32496
|
-
const {
|
|
32496
|
+
const {
|
|
32497
|
+
name: name2,
|
|
32498
|
+
methods,
|
|
32499
|
+
isForm,
|
|
32500
|
+
model,
|
|
32501
|
+
required,
|
|
32502
|
+
idForm,
|
|
32503
|
+
widget,
|
|
32504
|
+
useUploadImage,
|
|
32505
|
+
useUploadFile,
|
|
32506
|
+
useGetImage,
|
|
32507
|
+
isBase64File
|
|
32508
|
+
} = props;
|
|
32497
32509
|
const fileInputRef = useRef14(null);
|
|
32498
32510
|
const [selectedFiles, setSelectedFiles] = useState16([]);
|
|
32499
32511
|
const [uploadError, setUploadError] = useState16();
|
|
@@ -33829,12 +33841,14 @@ var Many2ManyField = (props) => {
|
|
|
33829
33841
|
page,
|
|
33830
33842
|
rows,
|
|
33831
33843
|
columns,
|
|
33844
|
+
typeTable,
|
|
33832
33845
|
renderField,
|
|
33833
33846
|
isDataLoading,
|
|
33834
33847
|
relation,
|
|
33835
33848
|
onToggleColumnOptional,
|
|
33836
33849
|
isDataFetched,
|
|
33837
33850
|
isPlaceholderData,
|
|
33851
|
+
isCheckBox,
|
|
33838
33852
|
optionsObject,
|
|
33839
33853
|
onChoose,
|
|
33840
33854
|
onAddNew,
|
|
@@ -33848,13 +33862,7 @@ var Many2ManyField = (props) => {
|
|
|
33848
33862
|
evalJSONContext,
|
|
33849
33863
|
searchController,
|
|
33850
33864
|
viewData,
|
|
33851
|
-
setDomain
|
|
33852
|
-
isDisplayCheckbox,
|
|
33853
|
-
checkedAll,
|
|
33854
|
-
handleCheckBoxAll,
|
|
33855
|
-
selectedRowKeysRef,
|
|
33856
|
-
typeTable,
|
|
33857
|
-
setSelectedRowKeys
|
|
33865
|
+
setDomain
|
|
33858
33866
|
} = props;
|
|
33859
33867
|
const {
|
|
33860
33868
|
context,
|
|
@@ -33894,6 +33902,8 @@ var Many2ManyField = (props) => {
|
|
|
33894
33902
|
groupBy,
|
|
33895
33903
|
showFiltersGroups: true,
|
|
33896
33904
|
setGroupBy,
|
|
33905
|
+
setSelectedRowKeys: (keys) => {
|
|
33906
|
+
},
|
|
33897
33907
|
setDomainList: setDomain,
|
|
33898
33908
|
setPage: (pages) => {
|
|
33899
33909
|
setPage?.(pages);
|
|
@@ -33903,7 +33913,6 @@ var Many2ManyField = (props) => {
|
|
|
33903
33913
|
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
33904
33914
|
)?.map((col) => ({ ...col.field })) ?? []
|
|
33905
33915
|
],
|
|
33906
|
-
setSelectedRowKeys,
|
|
33907
33916
|
viewData,
|
|
33908
33917
|
context,
|
|
33909
33918
|
selectedRowKeys,
|
|
@@ -33948,9 +33957,7 @@ var Many2ManyField = (props) => {
|
|
|
33948
33957
|
{
|
|
33949
33958
|
columns,
|
|
33950
33959
|
onToggleColumnOptional,
|
|
33951
|
-
isDisplayCheckbox
|
|
33952
|
-
checkedAll,
|
|
33953
|
-
handleCheckBoxAll
|
|
33960
|
+
isDisplayCheckbox: false
|
|
33954
33961
|
}
|
|
33955
33962
|
),
|
|
33956
33963
|
/* @__PURE__ */ jsx102(
|
|
@@ -33959,7 +33966,7 @@ var Many2ManyField = (props) => {
|
|
|
33959
33966
|
columns,
|
|
33960
33967
|
rows,
|
|
33961
33968
|
rootField,
|
|
33962
|
-
isDisplayCheckbox,
|
|
33969
|
+
isDisplayCheckbox: false,
|
|
33963
33970
|
model: relation,
|
|
33964
33971
|
renderField: ({
|
|
33965
33972
|
row,
|
|
@@ -33980,11 +33987,7 @@ var Many2ManyField = (props) => {
|
|
|
33980
33987
|
},
|
|
33981
33988
|
onRemoveRow: null,
|
|
33982
33989
|
onAddRow,
|
|
33983
|
-
onClickRow
|
|
33984
|
-
typeTable,
|
|
33985
|
-
selectedRowKeysRef,
|
|
33986
|
-
selectedRowKeys,
|
|
33987
|
-
setSelectedRowKeys
|
|
33990
|
+
onClickRow
|
|
33988
33991
|
}
|
|
33989
33992
|
)
|
|
33990
33993
|
]
|
|
@@ -33995,7 +33998,7 @@ var Many2ManyField = (props) => {
|
|
|
33995
33998
|
}
|
|
33996
33999
|
) }) }) : /* @__PURE__ */ jsx102(LayerLoading, {}),
|
|
33997
34000
|
/* @__PURE__ */ jsxs72("div", { className: "flex items-center gap-2 mt-auto", children: [
|
|
33998
|
-
|
|
34001
|
+
isCheckBox && /* @__PURE__ */ jsx102(
|
|
33999
34002
|
"button",
|
|
34000
34003
|
{
|
|
34001
34004
|
disabled: selectedRowKeys?.length === 0,
|
package/dist/widgets.d.mts
CHANGED
|
@@ -326,13 +326,13 @@ interface Many2ManyProps extends IInputFieldProps {
|
|
|
326
326
|
isDataLoading?: any;
|
|
327
327
|
isDataFetched?: any;
|
|
328
328
|
isPlaceholderData?: any;
|
|
329
|
-
|
|
329
|
+
isCheckBox?: boolean;
|
|
330
330
|
optionsObject?: any;
|
|
331
331
|
selectedRowKeys?: any;
|
|
332
332
|
handleCreateNewOnPage?: any;
|
|
333
|
-
typeTable?: any;
|
|
334
333
|
rows: any;
|
|
335
334
|
columns: any;
|
|
335
|
+
typeTable?: string;
|
|
336
336
|
page?: any;
|
|
337
337
|
totalRows?: number;
|
|
338
338
|
rootField?: any;
|
|
@@ -343,7 +343,6 @@ interface Many2ManyProps extends IInputFieldProps {
|
|
|
343
343
|
onAddRow?: Function;
|
|
344
344
|
onClickRow?: Function;
|
|
345
345
|
onToggleColumnOptional?: any;
|
|
346
|
-
setSelectedRowKeys?: any;
|
|
347
346
|
renderField?: ({ row, col, indexRow, onChangeData, rootField, }: {
|
|
348
347
|
row: any;
|
|
349
348
|
col: any;
|
|
@@ -355,9 +354,6 @@ interface Many2ManyProps extends IInputFieldProps {
|
|
|
355
354
|
setDomain?: Dispatch<SetStateAction<any>>;
|
|
356
355
|
searchController: SearchController;
|
|
357
356
|
evalJSONContext?: any;
|
|
358
|
-
checkedAll?: any;
|
|
359
|
-
handleCheckBoxAll?: any;
|
|
360
|
-
selectedRowKeysRef?: any;
|
|
361
357
|
}
|
|
362
358
|
|
|
363
359
|
declare const Many2ManyField: (props: Many2ManyProps) => React$1.ReactPortal;
|
package/dist/widgets.d.ts
CHANGED
|
@@ -326,13 +326,13 @@ interface Many2ManyProps extends IInputFieldProps {
|
|
|
326
326
|
isDataLoading?: any;
|
|
327
327
|
isDataFetched?: any;
|
|
328
328
|
isPlaceholderData?: any;
|
|
329
|
-
|
|
329
|
+
isCheckBox?: boolean;
|
|
330
330
|
optionsObject?: any;
|
|
331
331
|
selectedRowKeys?: any;
|
|
332
332
|
handleCreateNewOnPage?: any;
|
|
333
|
-
typeTable?: any;
|
|
334
333
|
rows: any;
|
|
335
334
|
columns: any;
|
|
335
|
+
typeTable?: string;
|
|
336
336
|
page?: any;
|
|
337
337
|
totalRows?: number;
|
|
338
338
|
rootField?: any;
|
|
@@ -343,7 +343,6 @@ interface Many2ManyProps extends IInputFieldProps {
|
|
|
343
343
|
onAddRow?: Function;
|
|
344
344
|
onClickRow?: Function;
|
|
345
345
|
onToggleColumnOptional?: any;
|
|
346
|
-
setSelectedRowKeys?: any;
|
|
347
346
|
renderField?: ({ row, col, indexRow, onChangeData, rootField, }: {
|
|
348
347
|
row: any;
|
|
349
348
|
col: any;
|
|
@@ -355,9 +354,6 @@ interface Many2ManyProps extends IInputFieldProps {
|
|
|
355
354
|
setDomain?: Dispatch<SetStateAction<any>>;
|
|
356
355
|
searchController: SearchController;
|
|
357
356
|
evalJSONContext?: any;
|
|
358
|
-
checkedAll?: any;
|
|
359
|
-
handleCheckBoxAll?: any;
|
|
360
|
-
selectedRowKeysRef?: any;
|
|
361
357
|
}
|
|
362
358
|
|
|
363
359
|
declare const Many2ManyField: (props: Many2ManyProps) => React$1.ReactPortal;
|
package/dist/widgets.js
CHANGED
|
@@ -32257,7 +32257,19 @@ var FeeField = (props) => {
|
|
|
32257
32257
|
var import_react54 = require("react");
|
|
32258
32258
|
var import_jsx_runtime82 = require("react/jsx-runtime");
|
|
32259
32259
|
var FileUploadField = (props) => {
|
|
32260
|
-
const {
|
|
32260
|
+
const {
|
|
32261
|
+
name: name2,
|
|
32262
|
+
methods,
|
|
32263
|
+
isForm,
|
|
32264
|
+
model,
|
|
32265
|
+
required,
|
|
32266
|
+
idForm,
|
|
32267
|
+
widget,
|
|
32268
|
+
useUploadImage,
|
|
32269
|
+
useUploadFile,
|
|
32270
|
+
useGetImage,
|
|
32271
|
+
isBase64File
|
|
32272
|
+
} = props;
|
|
32261
32273
|
const fileInputRef = (0, import_react54.useRef)(null);
|
|
32262
32274
|
const [selectedFiles, setSelectedFiles] = (0, import_react54.useState)([]);
|
|
32263
32275
|
const [uploadError, setUploadError] = (0, import_react54.useState)();
|
|
@@ -33593,12 +33605,14 @@ var Many2ManyField = (props) => {
|
|
|
33593
33605
|
page,
|
|
33594
33606
|
rows,
|
|
33595
33607
|
columns,
|
|
33608
|
+
typeTable,
|
|
33596
33609
|
renderField,
|
|
33597
33610
|
isDataLoading,
|
|
33598
33611
|
relation,
|
|
33599
33612
|
onToggleColumnOptional,
|
|
33600
33613
|
isDataFetched,
|
|
33601
33614
|
isPlaceholderData,
|
|
33615
|
+
isCheckBox,
|
|
33602
33616
|
optionsObject,
|
|
33603
33617
|
onChoose,
|
|
33604
33618
|
onAddNew,
|
|
@@ -33612,13 +33626,7 @@ var Many2ManyField = (props) => {
|
|
|
33612
33626
|
evalJSONContext,
|
|
33613
33627
|
searchController,
|
|
33614
33628
|
viewData,
|
|
33615
|
-
setDomain
|
|
33616
|
-
isDisplayCheckbox,
|
|
33617
|
-
checkedAll,
|
|
33618
|
-
handleCheckBoxAll,
|
|
33619
|
-
selectedRowKeysRef,
|
|
33620
|
-
typeTable,
|
|
33621
|
-
setSelectedRowKeys
|
|
33629
|
+
setDomain
|
|
33622
33630
|
} = props;
|
|
33623
33631
|
const {
|
|
33624
33632
|
context,
|
|
@@ -33658,6 +33666,8 @@ var Many2ManyField = (props) => {
|
|
|
33658
33666
|
groupBy,
|
|
33659
33667
|
showFiltersGroups: true,
|
|
33660
33668
|
setGroupBy,
|
|
33669
|
+
setSelectedRowKeys: (keys) => {
|
|
33670
|
+
},
|
|
33661
33671
|
setDomainList: setDomain,
|
|
33662
33672
|
setPage: (pages) => {
|
|
33663
33673
|
setPage?.(pages);
|
|
@@ -33667,7 +33677,6 @@ var Many2ManyField = (props) => {
|
|
|
33667
33677
|
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
33668
33678
|
)?.map((col) => ({ ...col.field })) ?? []
|
|
33669
33679
|
],
|
|
33670
|
-
setSelectedRowKeys,
|
|
33671
33680
|
viewData,
|
|
33672
33681
|
context,
|
|
33673
33682
|
selectedRowKeys,
|
|
@@ -33712,9 +33721,7 @@ var Many2ManyField = (props) => {
|
|
|
33712
33721
|
{
|
|
33713
33722
|
columns,
|
|
33714
33723
|
onToggleColumnOptional,
|
|
33715
|
-
isDisplayCheckbox
|
|
33716
|
-
checkedAll,
|
|
33717
|
-
handleCheckBoxAll
|
|
33724
|
+
isDisplayCheckbox: false
|
|
33718
33725
|
}
|
|
33719
33726
|
),
|
|
33720
33727
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
@@ -33723,7 +33730,7 @@ var Many2ManyField = (props) => {
|
|
|
33723
33730
|
columns,
|
|
33724
33731
|
rows,
|
|
33725
33732
|
rootField,
|
|
33726
|
-
isDisplayCheckbox,
|
|
33733
|
+
isDisplayCheckbox: false,
|
|
33727
33734
|
model: relation,
|
|
33728
33735
|
renderField: ({
|
|
33729
33736
|
row,
|
|
@@ -33744,11 +33751,7 @@ var Many2ManyField = (props) => {
|
|
|
33744
33751
|
},
|
|
33745
33752
|
onRemoveRow: null,
|
|
33746
33753
|
onAddRow,
|
|
33747
|
-
onClickRow
|
|
33748
|
-
typeTable,
|
|
33749
|
-
selectedRowKeysRef,
|
|
33750
|
-
selectedRowKeys,
|
|
33751
|
-
setSelectedRowKeys
|
|
33754
|
+
onClickRow
|
|
33752
33755
|
}
|
|
33753
33756
|
)
|
|
33754
33757
|
]
|
|
@@ -33759,7 +33762,7 @@ var Many2ManyField = (props) => {
|
|
|
33759
33762
|
}
|
|
33760
33763
|
) }) }) : /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(LayerLoading, {}),
|
|
33761
33764
|
/* @__PURE__ */ (0, import_jsx_runtime100.jsxs)("div", { className: "flex items-center gap-2 mt-auto", children: [
|
|
33762
|
-
|
|
33765
|
+
isCheckBox && /* @__PURE__ */ (0, import_jsx_runtime100.jsx)(
|
|
33763
33766
|
"button",
|
|
33764
33767
|
{
|
|
33765
33768
|
disabled: selectedRowKeys?.length === 0,
|
package/dist/widgets.mjs
CHANGED
|
@@ -32195,7 +32195,19 @@ var FeeField = (props) => {
|
|
|
32195
32195
|
import { useEffect as useEffect16, useRef as useRef14, useState as useState16 } from "react";
|
|
32196
32196
|
import { jsx as jsx84, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
32197
32197
|
var FileUploadField = (props) => {
|
|
32198
|
-
const {
|
|
32198
|
+
const {
|
|
32199
|
+
name: name2,
|
|
32200
|
+
methods,
|
|
32201
|
+
isForm,
|
|
32202
|
+
model,
|
|
32203
|
+
required,
|
|
32204
|
+
idForm,
|
|
32205
|
+
widget,
|
|
32206
|
+
useUploadImage,
|
|
32207
|
+
useUploadFile,
|
|
32208
|
+
useGetImage,
|
|
32209
|
+
isBase64File
|
|
32210
|
+
} = props;
|
|
32199
32211
|
const fileInputRef = useRef14(null);
|
|
32200
32212
|
const [selectedFiles, setSelectedFiles] = useState16([]);
|
|
32201
32213
|
const [uploadError, setUploadError] = useState16();
|
|
@@ -33531,12 +33543,14 @@ var Many2ManyField = (props) => {
|
|
|
33531
33543
|
page,
|
|
33532
33544
|
rows,
|
|
33533
33545
|
columns,
|
|
33546
|
+
typeTable,
|
|
33534
33547
|
renderField,
|
|
33535
33548
|
isDataLoading,
|
|
33536
33549
|
relation,
|
|
33537
33550
|
onToggleColumnOptional,
|
|
33538
33551
|
isDataFetched,
|
|
33539
33552
|
isPlaceholderData,
|
|
33553
|
+
isCheckBox,
|
|
33540
33554
|
optionsObject,
|
|
33541
33555
|
onChoose,
|
|
33542
33556
|
onAddNew,
|
|
@@ -33550,13 +33564,7 @@ var Many2ManyField = (props) => {
|
|
|
33550
33564
|
evalJSONContext,
|
|
33551
33565
|
searchController,
|
|
33552
33566
|
viewData,
|
|
33553
|
-
setDomain
|
|
33554
|
-
isDisplayCheckbox,
|
|
33555
|
-
checkedAll,
|
|
33556
|
-
handleCheckBoxAll,
|
|
33557
|
-
selectedRowKeysRef,
|
|
33558
|
-
typeTable,
|
|
33559
|
-
setSelectedRowKeys
|
|
33567
|
+
setDomain
|
|
33560
33568
|
} = props;
|
|
33561
33569
|
const {
|
|
33562
33570
|
context,
|
|
@@ -33596,6 +33604,8 @@ var Many2ManyField = (props) => {
|
|
|
33596
33604
|
groupBy,
|
|
33597
33605
|
showFiltersGroups: true,
|
|
33598
33606
|
setGroupBy,
|
|
33607
|
+
setSelectedRowKeys: (keys) => {
|
|
33608
|
+
},
|
|
33599
33609
|
setDomainList: setDomain,
|
|
33600
33610
|
setPage: (pages) => {
|
|
33601
33611
|
setPage?.(pages);
|
|
@@ -33605,7 +33615,6 @@ var Many2ManyField = (props) => {
|
|
|
33605
33615
|
(col) => col?.field?.type_co === "field" && col?.optional !== "hide"
|
|
33606
33616
|
)?.map((col) => ({ ...col.field })) ?? []
|
|
33607
33617
|
],
|
|
33608
|
-
setSelectedRowKeys,
|
|
33609
33618
|
viewData,
|
|
33610
33619
|
context,
|
|
33611
33620
|
selectedRowKeys,
|
|
@@ -33650,9 +33659,7 @@ var Many2ManyField = (props) => {
|
|
|
33650
33659
|
{
|
|
33651
33660
|
columns,
|
|
33652
33661
|
onToggleColumnOptional,
|
|
33653
|
-
isDisplayCheckbox
|
|
33654
|
-
checkedAll,
|
|
33655
|
-
handleCheckBoxAll
|
|
33662
|
+
isDisplayCheckbox: false
|
|
33656
33663
|
}
|
|
33657
33664
|
),
|
|
33658
33665
|
/* @__PURE__ */ jsx102(
|
|
@@ -33661,7 +33668,7 @@ var Many2ManyField = (props) => {
|
|
|
33661
33668
|
columns,
|
|
33662
33669
|
rows,
|
|
33663
33670
|
rootField,
|
|
33664
|
-
isDisplayCheckbox,
|
|
33671
|
+
isDisplayCheckbox: false,
|
|
33665
33672
|
model: relation,
|
|
33666
33673
|
renderField: ({
|
|
33667
33674
|
row,
|
|
@@ -33682,11 +33689,7 @@ var Many2ManyField = (props) => {
|
|
|
33682
33689
|
},
|
|
33683
33690
|
onRemoveRow: null,
|
|
33684
33691
|
onAddRow,
|
|
33685
|
-
onClickRow
|
|
33686
|
-
typeTable,
|
|
33687
|
-
selectedRowKeysRef,
|
|
33688
|
-
selectedRowKeys,
|
|
33689
|
-
setSelectedRowKeys
|
|
33692
|
+
onClickRow
|
|
33690
33693
|
}
|
|
33691
33694
|
)
|
|
33692
33695
|
]
|
|
@@ -33697,7 +33700,7 @@ var Many2ManyField = (props) => {
|
|
|
33697
33700
|
}
|
|
33698
33701
|
) }) }) : /* @__PURE__ */ jsx102(LayerLoading, {}),
|
|
33699
33702
|
/* @__PURE__ */ jsxs72("div", { className: "flex items-center gap-2 mt-auto", children: [
|
|
33700
|
-
|
|
33703
|
+
isCheckBox && /* @__PURE__ */ jsx102(
|
|
33701
33704
|
"button",
|
|
33702
33705
|
{
|
|
33703
33706
|
disabled: selectedRowKeys?.length === 0,
|
package/package.json
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@fctc/sme-widget-ui",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "dist/index.cjs",
|
|
5
|
-
"module": "dist/index.mjs",
|
|
6
|
-
"types": "dist/index.d.ts",
|
|
7
|
-
"exports": {
|
|
8
|
-
".": {
|
|
9
|
-
"types": "./dist/index.d.ts",
|
|
10
|
-
"import": "./dist/index.mjs",
|
|
11
|
-
"require": "./dist/index.cjs"
|
|
12
|
-
},
|
|
13
|
-
"./hooks": {
|
|
14
|
-
"types": "./dist/hooks.d.ts",
|
|
15
|
-
"import": "./dist/hooks.mjs",
|
|
16
|
-
"require": "./dist/hooks.cjs"
|
|
17
|
-
},
|
|
18
|
-
"./icons": {
|
|
19
|
-
"types": "./dist/icons.d.ts",
|
|
20
|
-
"import": "./dist/icons.mjs",
|
|
21
|
-
"require": "./dist/icons.cjs"
|
|
22
|
-
},
|
|
23
|
-
"./types": {
|
|
24
|
-
"types": "./dist/types.d.ts",
|
|
25
|
-
"import": "./dist/types.mjs",
|
|
26
|
-
"require": "./dist/types.cjs"
|
|
27
|
-
},
|
|
28
|
-
"./widgets": {
|
|
29
|
-
"types": "./dist/widgets.d.ts",
|
|
30
|
-
"import": "./dist/widgets.mjs",
|
|
31
|
-
"require": "./dist/widgets.cjs"
|
|
32
|
-
},
|
|
33
|
-
"./utils": {
|
|
34
|
-
"types": "./dist/utils.d.ts",
|
|
35
|
-
"import": "./dist/utils.mjs",
|
|
36
|
-
"require": "./dist/utils.cjs"
|
|
37
|
-
}
|
|
38
|
-
},
|
|
39
|
-
"files": [
|
|
40
|
-
"dist"
|
|
41
|
-
],
|
|
42
|
-
"scripts": {
|
|
43
|
-
"build": "tsup",
|
|
44
|
-
"test": "jest"
|
|
45
|
-
},
|
|
46
|
-
"dependencies": {
|
|
47
|
-
"@headlessui/react": "^2.2.7",
|
|
48
|
-
"@types/react-dom": "^19.1.7",
|
|
49
|
-
"react-dom": "18.0.0",
|
|
50
|
-
"zod": "^3.24.2"
|
|
51
|
-
},
|
|
52
|
-
"devDependencies": {
|
|
53
|
-
"@hookform/resolvers": "^4.1.3",
|
|
54
|
-
"@types/react": "18.0.0",
|
|
55
|
-
"i18next": "^24.2.3",
|
|
56
|
-
"i18next-browser-languagedetector": "^8.0.4",
|
|
57
|
-
"jest": "^29.7.0",
|
|
58
|
-
"moment": "^2.30.1",
|
|
59
|
-
"react": "18.0.0",
|
|
60
|
-
"react-datepicker": "^8.2.1",
|
|
61
|
-
"react-hook-form": "^7.54.2",
|
|
62
|
-
"react-i18next": "^15.4.1",
|
|
63
|
-
"react-redux": "^9.2.0",
|
|
64
|
-
"react-select": "^5.10.1",
|
|
65
|
-
"react-toastify": "^11.0.5",
|
|
66
|
-
"react-tooltip": "^5.28.0",
|
|
67
|
-
"tailwindcss": "3.4.3",
|
|
68
|
-
"tsup": "^8.0.0",
|
|
69
|
-
"typescript": "^5.8.2"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@fctc/sme-widget-ui",
|
|
3
|
+
"version": "1.0.4",
|
|
4
|
+
"main": "dist/index.cjs",
|
|
5
|
+
"module": "dist/index.mjs",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"import": "./dist/index.mjs",
|
|
11
|
+
"require": "./dist/index.cjs"
|
|
12
|
+
},
|
|
13
|
+
"./hooks": {
|
|
14
|
+
"types": "./dist/hooks.d.ts",
|
|
15
|
+
"import": "./dist/hooks.mjs",
|
|
16
|
+
"require": "./dist/hooks.cjs"
|
|
17
|
+
},
|
|
18
|
+
"./icons": {
|
|
19
|
+
"types": "./dist/icons.d.ts",
|
|
20
|
+
"import": "./dist/icons.mjs",
|
|
21
|
+
"require": "./dist/icons.cjs"
|
|
22
|
+
},
|
|
23
|
+
"./types": {
|
|
24
|
+
"types": "./dist/types.d.ts",
|
|
25
|
+
"import": "./dist/types.mjs",
|
|
26
|
+
"require": "./dist/types.cjs"
|
|
27
|
+
},
|
|
28
|
+
"./widgets": {
|
|
29
|
+
"types": "./dist/widgets.d.ts",
|
|
30
|
+
"import": "./dist/widgets.mjs",
|
|
31
|
+
"require": "./dist/widgets.cjs"
|
|
32
|
+
},
|
|
33
|
+
"./utils": {
|
|
34
|
+
"types": "./dist/utils.d.ts",
|
|
35
|
+
"import": "./dist/utils.mjs",
|
|
36
|
+
"require": "./dist/utils.cjs"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"files": [
|
|
40
|
+
"dist"
|
|
41
|
+
],
|
|
42
|
+
"scripts": {
|
|
43
|
+
"build": "tsup",
|
|
44
|
+
"test": "jest"
|
|
45
|
+
},
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"@headlessui/react": "^2.2.7",
|
|
48
|
+
"@types/react-dom": "^19.1.7",
|
|
49
|
+
"react-dom": "18.0.0",
|
|
50
|
+
"zod": "^3.24.2"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@hookform/resolvers": "^4.1.3",
|
|
54
|
+
"@types/react": "18.0.0",
|
|
55
|
+
"i18next": "^24.2.3",
|
|
56
|
+
"i18next-browser-languagedetector": "^8.0.4",
|
|
57
|
+
"jest": "^29.7.0",
|
|
58
|
+
"moment": "^2.30.1",
|
|
59
|
+
"react": "18.0.0",
|
|
60
|
+
"react-datepicker": "^8.2.1",
|
|
61
|
+
"react-hook-form": "^7.54.2",
|
|
62
|
+
"react-i18next": "^15.4.1",
|
|
63
|
+
"react-redux": "^9.2.0",
|
|
64
|
+
"react-select": "^5.10.1",
|
|
65
|
+
"react-toastify": "^11.0.5",
|
|
66
|
+
"react-tooltip": "^5.28.0",
|
|
67
|
+
"tailwindcss": "3.4.3",
|
|
68
|
+
"tsup": "^8.0.0",
|
|
69
|
+
"typescript": "^5.8.2"
|
|
70
|
+
}
|
|
71
|
+
}
|