react-admin-base-bootstrap 0.8.22 → 0.9.0
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/bun.lockb +0 -0
- package/lib/esm/Components/CRUD.js +19 -3
- package/lib/esm/i18n/de.json +2 -1
- package/lib/esm/i18n/en.json +2 -1
- package/lib/esm/i18n/tr.json +2 -1
- package/package.json +12 -16
- package/src/Components/CRUD.tsx +20 -3
- package/src/i18n/de.json +2 -1
- package/src/i18n/en.json +2 -1
- package/src/i18n/tr.json +2 -1
- package/build.js +0 -24
- package/watch.js +0 -58
package/bun.lockb
CHANGED
|
Binary file
|
|
@@ -20,7 +20,7 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
20
20
|
};
|
|
21
21
|
import React, { useCallback, useContext, useRef, useState } from 'react';
|
|
22
22
|
import { ValidatorProvider } from "react-admin-base";
|
|
23
|
-
import { FormattedMessage } from 'react-intl';
|
|
23
|
+
import { FormattedMessage, useIntl } from 'react-intl';
|
|
24
24
|
import { Navigate, Routes, useParams, Route } from 'react-router-dom';
|
|
25
25
|
import { Alert, Button, Col, Form, ModalFooter, ModalHeader, Row } from "reactstrap";
|
|
26
26
|
import LoadingButton from '../Components/LoadingButton';
|
|
@@ -60,11 +60,27 @@ export function ModalEntityEditor({ entity, title, size, url, onReload, disabled
|
|
|
60
60
|
}
|
|
61
61
|
});
|
|
62
62
|
}, [save, saved, error, onReload, url]);
|
|
63
|
+
const check = bsOptions.noCloseOnSave && dirty;
|
|
64
|
+
const intl = useIntl();
|
|
65
|
+
const checkConfirmText = intl.formatMessage({ id: 'CANCEL_ENTITY_SAVE' });
|
|
66
|
+
const onClose = useCallback(function () {
|
|
67
|
+
if (check) {
|
|
68
|
+
const ok = confirm(checkConfirmText);
|
|
69
|
+
if (!ok)
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (url) {
|
|
73
|
+
setOpen(false);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
onReload(null);
|
|
77
|
+
}
|
|
78
|
+
}, [setOpen, onReload, url, check, checkConfirmText]);
|
|
63
79
|
return React.createElement(React.Fragment, null,
|
|
64
80
|
((!bsOptions.noCloseOnSave && saved) || !open) && url && React.createElement(Navigate, { to: url, replace: true }),
|
|
65
81
|
bsOptions.noCloseOnSave && saved && open && url && React.createElement(Navigate, { to: url + "/" + data.id + "/edit", replace: true }),
|
|
66
|
-
React.createElement(BootstrapModal, { isOpen: true, size: size, toggle:
|
|
67
|
-
title && React.createElement(ModalHeader, { toggle:
|
|
82
|
+
React.createElement(BootstrapModal, { isOpen: true, size: size, toggle: onClose, fade: false },
|
|
83
|
+
title && React.createElement(ModalHeader, { toggle: onClose },
|
|
68
84
|
React.createElement("b", null, title)),
|
|
69
85
|
React.createElement(ValidatorProvider, null,
|
|
70
86
|
React.createElement(Form, { onSubmit: onSubmit, disabled: !!loading || disabled },
|
package/lib/esm/i18n/de.json
CHANGED
|
@@ -38,5 +38,6 @@
|
|
|
38
38
|
"ACTIONS.DELETE.CONFIRM": "Ja, löschen!",
|
|
39
39
|
"PLEASE_WAIT": "Warten Sie mal.",
|
|
40
40
|
"AUTHORIZATION_CODE": "Zugangscode",
|
|
41
|
-
"RECORDS": "{count, plural, =0 {kein eintrag} one {# datensatz} other {# datensätze}}"
|
|
41
|
+
"RECORDS": "{count, plural, =0 {kein eintrag} one {# datensatz} other {# datensätze}}",
|
|
42
|
+
"CANCEL_ENTITY_SAVE": "Es sind noch nicht gespeicherte Änderungen vorhanden. Möchten Sie den Vorgang wirklich abbrechen?"
|
|
42
43
|
}
|
package/lib/esm/i18n/en.json
CHANGED
|
@@ -40,5 +40,6 @@
|
|
|
40
40
|
"ACTIONS.DELETE.CONFIRM": "Yes, delete it!",
|
|
41
41
|
"PLEASE_WAIT": "Please wait.",
|
|
42
42
|
"AUTHORIZATION_CODE": "Authorization Code",
|
|
43
|
-
"RECORDS": "{count, plural, =0 {no records} one {# record} other {# records}}"
|
|
43
|
+
"RECORDS": "{count, plural, =0 {no records} one {# record} other {# records}}",
|
|
44
|
+
"CANCEL_ENTITY_SAVE": "There are unsaved changes, are you sure to cancel?"
|
|
44
45
|
}
|
package/lib/esm/i18n/tr.json
CHANGED
|
@@ -39,5 +39,6 @@
|
|
|
39
39
|
"ACTIONS.DELETE.CONFIRM": "Evet, sil!",
|
|
40
40
|
"PLEASE_WAIT": "Lütfen bekleyiniz.",
|
|
41
41
|
"AUTHORIZATION_CODE": "Yetki Kodu",
|
|
42
|
-
"RECORDS": "{count, plural, =0 {Kayıt yok} one {# kayıt} other {# kayıt}}"
|
|
42
|
+
"RECORDS": "{count, plural, =0 {Kayıt yok} one {# kayıt} other {# kayıt}}",
|
|
43
|
+
"CANCEL_ENTITY_SAVE": "Kaydedilmemiş değişiklikler var, iptal etmek istediğinizden emin misiniz?"
|
|
43
44
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-admin-base-bootstrap",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
@@ -27,32 +27,28 @@
|
|
|
27
27
|
"peerDependencies": {
|
|
28
28
|
"react": "^18.2.0",
|
|
29
29
|
"react-dom": "^18.2.0",
|
|
30
|
-
"react-intl": "^6.
|
|
31
|
-
"react-router-dom": "^6.
|
|
30
|
+
"react-intl": "^6.6.1",
|
|
31
|
+
"react-router-dom": "^6.21.3"
|
|
32
32
|
},
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@emotion/react": "^11.11.
|
|
35
|
-
"@fortawesome/fontawesome-free": "^6.
|
|
36
|
-
"bootstrap": "^5.3.
|
|
34
|
+
"@emotion/react": "^11.11.3",
|
|
35
|
+
"@fortawesome/fontawesome-free": "^6.5.1",
|
|
36
|
+
"bootstrap": "^5.3.2",
|
|
37
37
|
"file-dialog": "^0.0.8",
|
|
38
38
|
"modal-cropper": "^1.2.3",
|
|
39
39
|
"nprogress": "^0.2.0",
|
|
40
40
|
"prettysize": "^2.0.0",
|
|
41
|
-
"react-admin-base": "^0.
|
|
41
|
+
"react-admin-base": "^0.9.0",
|
|
42
42
|
"react-dnd": "^16.0.1",
|
|
43
43
|
"react-dnd-html5-backend": "^16.0.1",
|
|
44
44
|
"react-password-strength-bar": "^0.4.1",
|
|
45
45
|
"react-responsive": "^9.0.2",
|
|
46
|
-
"react-select": "^5.
|
|
47
|
-
"reactstrap": "^9.2.
|
|
48
|
-
"
|
|
49
|
-
"sweetalert2": "^11.7.12"
|
|
46
|
+
"react-select": "^5.8.0",
|
|
47
|
+
"reactstrap": "^9.2.2",
|
|
48
|
+
"sweetalert2": "^11.10.4"
|
|
50
49
|
},
|
|
51
50
|
"devDependencies": {
|
|
52
|
-
"
|
|
53
|
-
"
|
|
54
|
-
"nodemon": "^2.0.22",
|
|
55
|
-
"react-intl": "^6.4.4",
|
|
56
|
-
"typescript": "^5.1.3"
|
|
51
|
+
"nodemon": "^3.0.3",
|
|
52
|
+
"typescript": "^5.3.3"
|
|
57
53
|
}
|
|
58
54
|
}
|
package/src/Components/CRUD.tsx
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import React, { useCallback, useContext, useRef, useState } from 'react';
|
|
2
2
|
import { ValidatorProvider } from "react-admin-base";
|
|
3
|
-
import { FormattedMessage } from 'react-intl';
|
|
3
|
+
import { FormattedMessage, useIntl } from 'react-intl';
|
|
4
4
|
import { Navigate, Routes, useParams, Route } from 'react-router-dom';
|
|
5
5
|
import { Alert, Button, Col, Form, Modal, ModalFooter, ModalHeader, Row } from "reactstrap";
|
|
6
6
|
import LoadingButton from '../Components/LoadingButton';
|
|
@@ -58,11 +58,28 @@ export function ModalEntityEditor({ entity, title, size, url, onReload, disabled
|
|
|
58
58
|
}
|
|
59
59
|
}, [save, saved, error, onReload, url]);
|
|
60
60
|
|
|
61
|
+
const check = bsOptions.noCloseOnSave && dirty;
|
|
62
|
+
const intl = useIntl();
|
|
63
|
+
const checkConfirmText = intl.formatMessage({ id: 'CANCEL_ENTITY_SAVE' });
|
|
64
|
+
const onClose = useCallback(function() {
|
|
65
|
+
if (check) {
|
|
66
|
+
const ok = confirm(checkConfirmText);
|
|
67
|
+
if (!ok)
|
|
68
|
+
return ;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (url) {
|
|
72
|
+
setOpen(false);
|
|
73
|
+
} else {
|
|
74
|
+
onReload(null);
|
|
75
|
+
}
|
|
76
|
+
}, [ setOpen, onReload, url, check, checkConfirmText ]);
|
|
77
|
+
|
|
61
78
|
return <>
|
|
62
79
|
{ ((!bsOptions.noCloseOnSave && saved) || !open) && url && <Navigate to={url} replace />}
|
|
63
80
|
{ bsOptions.noCloseOnSave && saved && open && url && <Navigate to={url + "/" + data.id + "/edit"} replace />}
|
|
64
|
-
<BootstrapModal isOpen size={size} toggle={
|
|
65
|
-
{ title && <ModalHeader toggle={
|
|
81
|
+
<BootstrapModal isOpen size={size} toggle={onClose} fade={false}>
|
|
82
|
+
{ title && <ModalHeader toggle={onClose}>
|
|
66
83
|
<b>{ title }</b>
|
|
67
84
|
</ModalHeader> }
|
|
68
85
|
<ValidatorProvider>
|
package/src/i18n/de.json
CHANGED
|
@@ -38,5 +38,6 @@
|
|
|
38
38
|
"ACTIONS.DELETE.CONFIRM": "Ja, löschen!",
|
|
39
39
|
"PLEASE_WAIT": "Warten Sie mal.",
|
|
40
40
|
"AUTHORIZATION_CODE": "Zugangscode",
|
|
41
|
-
"RECORDS": "{count, plural, =0 {kein eintrag} one {# datensatz} other {# datensätze}}"
|
|
41
|
+
"RECORDS": "{count, plural, =0 {kein eintrag} one {# datensatz} other {# datensätze}}",
|
|
42
|
+
"CANCEL_ENTITY_SAVE": "Es sind noch nicht gespeicherte Änderungen vorhanden. Möchten Sie den Vorgang wirklich abbrechen?"
|
|
42
43
|
}
|
package/src/i18n/en.json
CHANGED
|
@@ -40,5 +40,6 @@
|
|
|
40
40
|
"ACTIONS.DELETE.CONFIRM": "Yes, delete it!",
|
|
41
41
|
"PLEASE_WAIT": "Please wait.",
|
|
42
42
|
"AUTHORIZATION_CODE": "Authorization Code",
|
|
43
|
-
"RECORDS": "{count, plural, =0 {no records} one {# record} other {# records}}"
|
|
43
|
+
"RECORDS": "{count, plural, =0 {no records} one {# record} other {# records}}",
|
|
44
|
+
"CANCEL_ENTITY_SAVE": "There are unsaved changes, are you sure to cancel?"
|
|
44
45
|
}
|
package/src/i18n/tr.json
CHANGED
|
@@ -39,5 +39,6 @@
|
|
|
39
39
|
"ACTIONS.DELETE.CONFIRM": "Evet, sil!",
|
|
40
40
|
"PLEASE_WAIT": "Lütfen bekleyiniz.",
|
|
41
41
|
"AUTHORIZATION_CODE": "Yetki Kodu",
|
|
42
|
-
"RECORDS": "{count, plural, =0 {Kayıt yok} one {# kayıt} other {# kayıt}}"
|
|
42
|
+
"RECORDS": "{count, plural, =0 {Kayıt yok} one {# kayıt} other {# kayıt}}",
|
|
43
|
+
"CANCEL_ENTITY_SAVE": "Kaydedilmemiş değişiklikler var, iptal etmek istediğinizden emin misiniz?"
|
|
43
44
|
}
|
package/build.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const rewire = require('rewire');
|
|
3
|
-
const webpackConfig = rewire('react-scripts/scripts/build');
|
|
4
|
-
const config = webpackConfig.__get__('config');
|
|
5
|
-
|
|
6
|
-
addLazyLoadingStyleLoader(config.module);
|
|
7
|
-
|
|
8
|
-
function addLazyLoadingStyleLoader(config) {
|
|
9
|
-
const cssLoader = config.rules[1].oneOf[5];
|
|
10
|
-
|
|
11
|
-
config.rules[1].oneOf.splice(5, 2, {
|
|
12
|
-
...cssLoader,
|
|
13
|
-
use: [
|
|
14
|
-
{
|
|
15
|
-
loader: require.resolve('style-loader'),
|
|
16
|
-
options: {
|
|
17
|
-
injectType: 'lazyStyleTag'
|
|
18
|
-
}
|
|
19
|
-
},
|
|
20
|
-
cssLoader.use[1],
|
|
21
|
-
cssLoader.use[2]
|
|
22
|
-
]
|
|
23
|
-
});
|
|
24
|
-
}
|
package/watch.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
const rewire = require('rewire');
|
|
3
|
-
const webpackConfig = rewire('react-scripts/scripts/start');
|
|
4
|
-
const oldConfigFactory = webpackConfig.__get__('configFactory');
|
|
5
|
-
const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
|
|
6
|
-
const fs = require('fs');
|
|
7
|
-
const path = require('path');
|
|
8
|
-
|
|
9
|
-
webpackConfig.__set__('configFactory', function(env) {
|
|
10
|
-
const config = oldConfigFactory(env);
|
|
11
|
-
|
|
12
|
-
// disable use modules outside of src
|
|
13
|
-
config.resolve.plugins = config.resolve.plugins.filter(plugin => !(plugin instanceof ModuleScopePlugin));
|
|
14
|
-
|
|
15
|
-
// disable local node_modules/ path
|
|
16
|
-
config.resolve.modules.shift();
|
|
17
|
-
|
|
18
|
-
// add aliased packages from /opt/packages
|
|
19
|
-
for (const alias of find_custom_packages('/opt/packages')){
|
|
20
|
-
config.resolve.alias[alias.name] = alias.path;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
addLazyLoadingStyleLoader(config.module);
|
|
24
|
-
|
|
25
|
-
console.log(config);
|
|
26
|
-
//process.exit(0);
|
|
27
|
-
|
|
28
|
-
return config;
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
function* find_custom_packages(location) {
|
|
32
|
-
const dir = fs.opendirSync(location, { withFileTypes: true });
|
|
33
|
-
let dirent;
|
|
34
|
-
while ((dirent = dir.readSync()) !== null) {
|
|
35
|
-
if (dirent.isSymbolicLink()) {
|
|
36
|
-
yield {name: dirent.name, path: fs.realpathSync(path.join(location, dirent.name))};
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
dir.closeSync();
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function addLazyLoadingStyleLoader(config) {
|
|
43
|
-
const cssLoader = config.rules[1].oneOf[5];
|
|
44
|
-
|
|
45
|
-
config.rules[1].oneOf.splice(5, 2, {
|
|
46
|
-
...cssLoader,
|
|
47
|
-
use: [
|
|
48
|
-
{
|
|
49
|
-
loader: cssLoader.use[0],
|
|
50
|
-
options: {
|
|
51
|
-
injectType: 'lazyStyleTag'
|
|
52
|
-
}
|
|
53
|
-
},
|
|
54
|
-
cssLoader.use[1],
|
|
55
|
-
cssLoader.use[2]
|
|
56
|
-
]
|
|
57
|
-
});
|
|
58
|
-
}
|