@kaspernj/api-maker 1.0.304 → 1.0.306
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/package.json +1 -1
- package/src/inputs/input-wrapper.jsx +1 -1
- package/src/super-admin/edit-page.jsx +100 -0
- package/src/super-admin/index-page.jsx +12 -19
- package/src/super-admin/index.jsx +67 -57
- package/src/super-admin/layout/header/index.jsx +40 -52
- package/src/super-admin/layout/index.jsx +75 -100
- package/src/super-admin/layout/menu/index.jsx +53 -68
- package/src/super-admin/layout/menu/menu-content.jsx +29 -33
- package/src/super-admin/layout/menu/menu-item/index.jsx +22 -24
- package/src/super-admin/layout/menu/style.scss +2 -0
- package/src/super-admin/layout/no-access.jsx +14 -13
- package/src/super-admin/model-class-table.jsx +40 -30
- package/src/super-admin/show-nav.jsx +25 -25
- package/src/super-admin/show-page/belongs-to-attribute-row.jsx +16 -18
- package/src/super-admin/show-page/index.jsx +31 -43
- package/src/super-admin/show-reflection-page.jsx +32 -43
- package/src/use-current-user.mjs +1 -1
- package/src/use-model.mjs +10 -6
|
@@ -1,51 +1,40 @@
|
|
|
1
|
-
import {digg
|
|
1
|
+
import {digg} from "diggerize"
|
|
2
2
|
import PropTypes from "prop-types"
|
|
3
|
-
import React from "react"
|
|
3
|
+
import React, {memo} from "react"
|
|
4
4
|
import ModelClassTable from "./model-class-table"
|
|
5
5
|
import ShowNav from "./show-nav"
|
|
6
|
+
import useQueryParams from "on-location-changed/src/use-query-params"
|
|
6
7
|
import withModel from "../with-model"
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
key={reflectionModelClass.modelName().human()}
|
|
35
|
-
modelClass={reflectionModelClass}
|
|
36
|
-
queryParams={queryParams}
|
|
37
|
-
/>
|
|
38
|
-
}
|
|
39
|
-
</div>
|
|
40
|
-
)
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
model() {
|
|
44
|
-
const {modelClass} = digs(this.props, "modelClass")
|
|
45
|
-
const camelizedLower = digg(modelClass.modelClassData(), "camelizedLower")
|
|
9
|
+
const ApiMakerSuperAdminShowReflectionPage = ({modelClass, restProps}) => {
|
|
10
|
+
const queryParams = useQueryParams()
|
|
11
|
+
const camelizedLower = digg(modelClass.modelClassData(), "camelizedLower")
|
|
12
|
+
const model = digg(restProps, camelizedLower)
|
|
13
|
+
const reflections = modelClass.reflections()
|
|
14
|
+
const reflection = reflections.find((reflectionI) => reflectionI.name() == queryParams.model_reflection)
|
|
15
|
+
const reflectionModelClass = reflection.modelClass()
|
|
16
|
+
let collection
|
|
17
|
+
|
|
18
|
+
if (model) collection = model[reflection.name()]()
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<div className="super-admin--show-page">
|
|
22
|
+
{model &&
|
|
23
|
+
<ShowNav model={model} modelClass={modelClass} />
|
|
24
|
+
}
|
|
25
|
+
{collection &&
|
|
26
|
+
<ModelClassTable
|
|
27
|
+
collection={collection}
|
|
28
|
+
key={reflectionModelClass.modelName().human()}
|
|
29
|
+
modelClass={reflectionModelClass}
|
|
30
|
+
/>
|
|
31
|
+
}
|
|
32
|
+
</div>
|
|
33
|
+
)
|
|
34
|
+
}
|
|
46
35
|
|
|
47
|
-
|
|
48
|
-
|
|
36
|
+
ApiMakerSuperAdminShowReflectionPage.propTypes = {
|
|
37
|
+
modelClass: PropTypes.func.isRequired
|
|
49
38
|
}
|
|
50
39
|
|
|
51
40
|
const modelClassResolver = {callback: ({queryParams}) => {
|
|
@@ -56,7 +45,7 @@ const modelClassResolver = {callback: ({queryParams}) => {
|
|
|
56
45
|
}}
|
|
57
46
|
|
|
58
47
|
export default withModel(
|
|
59
|
-
ApiMakerSuperAdminShowReflectionPage,
|
|
48
|
+
memo(ApiMakerSuperAdminShowReflectionPage),
|
|
60
49
|
modelClassResolver,
|
|
61
50
|
{
|
|
62
51
|
loadByQueryParam: ({props}) => props.queryParams.model_id
|
package/src/use-current-user.mjs
CHANGED
package/src/use-model.mjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
|
+
import * as inflection from "inflection"
|
|
1
2
|
import ModelEvents from "./model-events.mjs"
|
|
2
3
|
import useQueryParams from "on-location-changed/src/use-query-params.js"
|
|
4
|
+
import {useEffect, useState} from "react"
|
|
3
5
|
|
|
4
|
-
const useModel = (
|
|
6
|
+
const useModel = (modelClassArg, argsArg = {}) => {
|
|
5
7
|
const queryParams = useQueryParams()
|
|
6
8
|
let args, modelClass
|
|
7
9
|
|
|
@@ -24,7 +26,9 @@ const useModel = (match, modelClassArg, argsArg = {}) => {
|
|
|
24
26
|
return args.loadByQueryParam({queryParams})
|
|
25
27
|
}
|
|
26
28
|
|
|
27
|
-
|
|
29
|
+
if (!args.match) throw new Error("Both 'loadByQueryParam' and 'match' wasn't given")
|
|
30
|
+
|
|
31
|
+
return args.match.params[paramsVariableName] || args.match.params.id
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
const modelId = getModelId()
|
|
@@ -53,17 +57,17 @@ const useModel = (match, modelClassArg, argsArg = {}) => {
|
|
|
53
57
|
|
|
54
58
|
const loadNewModel = async () => {
|
|
55
59
|
const params = Params.parse()
|
|
56
|
-
const ModelClass =
|
|
60
|
+
const ModelClass = modelClass
|
|
57
61
|
const paramKey = ModelClass.modelName().paramKey()
|
|
58
62
|
const modelDataFromParams = params[paramKey] || {}
|
|
59
63
|
|
|
60
64
|
let defaults = {}
|
|
61
65
|
|
|
62
|
-
if (
|
|
63
|
-
defaults = await
|
|
66
|
+
if (args.newIfNoId?.defaults) {
|
|
67
|
+
defaults = await args.newIfNoId.defaults()
|
|
64
68
|
}
|
|
65
69
|
|
|
66
|
-
const modelData = Object.assign(defaults,
|
|
70
|
+
const modelData = Object.assign(defaults, args.newAttributes, modelDataFromParams)
|
|
67
71
|
const model = new ModelClass({
|
|
68
72
|
isNewRecord: true,
|
|
69
73
|
data: {a: modelData}
|