@contember/interface 1.3.0-alpha.17 → 1.3.0-alpha.20

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.
Files changed (41) hide show
  1. package/dist/development/components/binding/DisconnectEntityTrigger.cjs +52 -0
  2. package/dist/development/components/binding/DisconnectEntityTrigger.cjs.map +1 -0
  3. package/dist/development/components/binding/DisconnectEntityTrigger.js +52 -0
  4. package/dist/development/components/binding/DisconnectEntityTrigger.js.map +1 -0
  5. package/dist/development/index.cjs +7 -2
  6. package/dist/development/index.cjs.map +1 -1
  7. package/dist/development/index.js +4 -2
  8. package/dist/development/index.js.map +1 -1
  9. package/dist/production/components/binding/DisconnectEntityTrigger.cjs +44 -0
  10. package/dist/production/components/binding/DisconnectEntityTrigger.cjs.map +1 -0
  11. package/dist/production/components/binding/DisconnectEntityTrigger.js +44 -0
  12. package/dist/production/components/binding/DisconnectEntityTrigger.js.map +1 -0
  13. package/dist/production/index.cjs +7 -2
  14. package/dist/production/index.cjs.map +1 -1
  15. package/dist/production/index.js +4 -2
  16. package/dist/production/index.js.map +1 -1
  17. package/dist/types/bootstrap/index.d.ts +0 -1
  18. package/dist/types/bootstrap/index.d.ts.map +1 -1
  19. package/dist/types/components/binding/DisconnectEntityTrigger.d.ts +11 -0
  20. package/dist/types/components/binding/DisconnectEntityTrigger.d.ts.map +1 -0
  21. package/dist/types/components/binding/index.d.ts +1 -0
  22. package/dist/types/components/binding/index.d.ts.map +1 -1
  23. package/dist/types/index.d.ts +1 -0
  24. package/dist/types/index.d.ts.map +1 -1
  25. package/dist/types/tsconfig.tsbuildinfo +1 -1
  26. package/package.json +8 -8
  27. package/src/bootstrap/index.ts +0 -1
  28. package/src/components/binding/DisconnectEntityTrigger.tsx +53 -0
  29. package/src/components/binding/index.ts +1 -0
  30. package/src/index.ts +3 -0
  31. package/dist/development/bootstrap/runReactApp.cjs +0 -11
  32. package/dist/development/bootstrap/runReactApp.cjs.map +0 -1
  33. package/dist/development/bootstrap/runReactApp.js +0 -11
  34. package/dist/development/bootstrap/runReactApp.js.map +0 -1
  35. package/dist/production/bootstrap/runReactApp.cjs +0 -11
  36. package/dist/production/bootstrap/runReactApp.cjs.map +0 -1
  37. package/dist/production/bootstrap/runReactApp.js +0 -11
  38. package/dist/production/bootstrap/runReactApp.js.map +0 -1
  39. package/dist/types/bootstrap/runReactApp.d.ts +0 -5
  40. package/dist/types/bootstrap/runReactApp.d.ts.map +0 -1
  41. package/src/bootstrap/runReactApp.tsx +0 -16
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@contember/interface",
3
3
  "license": "Apache-2.0",
4
- "version": "1.3.0-alpha.17",
4
+ "version": "1.3.0-alpha.20",
5
5
  "type": "module",
6
6
  "sideEffects": false,
7
7
  "main": "./dist/production/index.js",
@@ -35,13 +35,13 @@
35
35
  "test": "vitest"
36
36
  },
37
37
  "dependencies": {
38
- "@contember/react-binding": "1.3.0-alpha.17",
39
- "@contember/react-client": "1.3.0-alpha.17",
40
- "@contember/react-dataview": "1.3.0-alpha.17",
41
- "@contember/react-devbar": "1.3.0-alpha.17",
42
- "@contember/react-identity": "1.3.0-alpha.17",
43
- "@contember/react-routing": "1.3.0-alpha.17",
44
- "@contember/utilities": "1.3.0-alpha.17",
38
+ "@contember/react-binding": "1.3.0-alpha.20",
39
+ "@contember/react-client": "1.3.0-alpha.20",
40
+ "@contember/react-dataview": "1.3.0-alpha.20",
41
+ "@contember/react-devbar": "1.3.0-alpha.20",
42
+ "@contember/react-identity": "1.3.0-alpha.20",
43
+ "@contember/react-routing": "1.3.0-alpha.20",
44
+ "@contember/utilities": "1.3.0-alpha.20",
45
45
  "@radix-ui/react-slot": "^1.0.2"
46
46
  },
47
47
  "peerDependencies": {
@@ -1,2 +1 @@
1
1
  export * from './ApplicationEntrypoint'
2
- export * from './runReactApp'
@@ -0,0 +1,53 @@
1
+ import { ComponentType, ReactNode, useCallback } from 'react'
2
+ import { Slot } from '@radix-ui/react-slot'
3
+ import { BindingError, EntityListAccessor, ErrorPersistResult, SuccessfulPersistResult, SugaredRelativeSingleEntity, useEntity, useMutationState, usePersist } from '@contember/react-binding'
4
+
5
+
6
+ const SlotButton = Slot as ComponentType<React.ButtonHTMLAttributes<HTMLButtonElement>>
7
+
8
+ export interface DisconnectEntityTriggerProps {
9
+ immediatePersist?: true
10
+ children: ReactNode
11
+ onPersistSuccess?: (result: SuccessfulPersistResult) => void
12
+ onPersistError?: (result: ErrorPersistResult) => void
13
+ field?: SugaredRelativeSingleEntity['field']
14
+ }
15
+
16
+ export const DisconnectEntityTrigger = ({ immediatePersist, onPersistError, onPersistSuccess, field, ...props }: DisconnectEntityTriggerProps) => {
17
+ const entity = useEntity()
18
+ const triggerPersist = usePersist()
19
+ const isMutating = useMutationState()
20
+ const onClick = useCallback(() => {
21
+ if (field) {
22
+ entity.disconnectEntityAtField({ field })
23
+ } else {
24
+ const parent = entity.getParent()
25
+ if (!parent) {
26
+ throw new BindingError('Cannot disconnect root entity')
27
+ }
28
+ if (parent instanceof EntityListAccessor) {
29
+ parent.disconnectEntity(entity)
30
+ } else {
31
+ const subTreeNode = entity.environment.getSubTreeNode()
32
+ if (subTreeNode.type !== 'entity') {
33
+ throw new BindingError('Cannot disconnect root entity')
34
+ }
35
+ parent.disconnectEntityAtField({ field: subTreeNode.field.name })
36
+ }
37
+ }
38
+
39
+ if (immediatePersist) {
40
+ triggerPersist()
41
+ .then(onPersistSuccess)
42
+ .catch(onPersistError)
43
+ }
44
+ }, [field, immediatePersist, entity, triggerPersist, onPersistSuccess, onPersistError])
45
+
46
+ return (
47
+ <SlotButton
48
+ onClick={onClick}
49
+ disabled={isMutating ? true : undefined}
50
+ {...props}
51
+ />
52
+ )
53
+ }
@@ -1,5 +1,6 @@
1
1
  export * from './ClearFieldTrigger'
2
2
  export * from './DeleteEntityTrigger'
3
+ export * from './DisconnectEntityTrigger'
3
4
  export * from './PersistTrigger'
4
5
  export * from './EntityBeforePersist'
5
6
  export * from './RedirectOnPersist'
package/src/index.ts CHANGED
@@ -3,3 +3,6 @@ export * from './components'
3
3
  export * from '@contember/react-routing'
4
4
  export * from '@contember/react-binding'
5
5
  export * from '@contember/react-identity'
6
+ export {
7
+ createErrorHandler,
8
+ } from '@contember/react-devbar'
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const reactDevbar = require("@contember/react-devbar");
4
- const client = require("react-dom/client");
5
- const runReactApp = (reactElement, { domRoot } = {}) => {
6
- const rootEl = domRoot ?? document.body.appendChild(document.createElement("div"));
7
- const errorHandler = reactDevbar.createErrorHandler((dom, react, onRecoverableError) => client.createRoot(dom, { onRecoverableError }).render(react));
8
- errorHandler((onRecoverableError) => client.createRoot(rootEl, { onRecoverableError }).render(reactElement));
9
- };
10
- exports.runReactApp = runReactApp;
11
- //# sourceMappingURL=runReactApp.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runReactApp.cjs","sources":["../../../src/bootstrap/runReactApp.tsx"],"sourcesContent":["import { ReactElement } from 'react'\nimport { createErrorHandler } from '@contember/react-devbar'\nimport { createRoot } from 'react-dom/client'\n\nexport const runReactApp = (\n\treactElement: ReactElement,\n\t{ domRoot }: {\n\t\tdomRoot?: HTMLElement,\n\t} = {},\n) => {\n\tconst rootEl = domRoot ?? document.body.appendChild(document.createElement('div'))\n\n\tconst errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react))\n\n\terrorHandler(onRecoverableError => createRoot(rootEl, { onRecoverableError }).render(reactElement))\n}\n"],"names":["createErrorHandler","createRoot"],"mappings":";;;;AAIO,MAAM,cAAc,CAC1B,cACA,EAAE,QAAQ,IAEN,CAAA,MACA;AACE,QAAA,SAAS,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAEjF,QAAM,eAAeA,YAAA,mBAAmB,CAAC,KAAK,OAAO,uBAAuBC,OAAAA,WAAW,KAAK,EAAE,mBAAoB,CAAA,EAAE,OAAO,KAAK,CAAC;AAEpH,eAAA,CAAA,uBAAsBA,OAAAA,WAAW,QAAQ,EAAE,oBAAoB,EAAE,OAAO,YAAY,CAAC;AACnG;;"}
@@ -1,11 +0,0 @@
1
- import { createErrorHandler } from "@contember/react-devbar";
2
- import { createRoot } from "react-dom/client";
3
- const runReactApp = (reactElement, { domRoot } = {}) => {
4
- const rootEl = domRoot ?? document.body.appendChild(document.createElement("div"));
5
- const errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react));
6
- errorHandler((onRecoverableError) => createRoot(rootEl, { onRecoverableError }).render(reactElement));
7
- };
8
- export {
9
- runReactApp
10
- };
11
- //# sourceMappingURL=runReactApp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runReactApp.js","sources":["../../../src/bootstrap/runReactApp.tsx"],"sourcesContent":["import { ReactElement } from 'react'\nimport { createErrorHandler } from '@contember/react-devbar'\nimport { createRoot } from 'react-dom/client'\n\nexport const runReactApp = (\n\treactElement: ReactElement,\n\t{ domRoot }: {\n\t\tdomRoot?: HTMLElement,\n\t} = {},\n) => {\n\tconst rootEl = domRoot ?? document.body.appendChild(document.createElement('div'))\n\n\tconst errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react))\n\n\terrorHandler(onRecoverableError => createRoot(rootEl, { onRecoverableError }).render(reactElement))\n}\n"],"names":[],"mappings":";;AAIO,MAAM,cAAc,CAC1B,cACA,EAAE,QAAQ,IAEN,CAAA,MACA;AACE,QAAA,SAAS,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAEjF,QAAM,eAAe,mBAAmB,CAAC,KAAK,OAAO,uBAAuB,WAAW,KAAK,EAAE,mBAAoB,CAAA,EAAE,OAAO,KAAK,CAAC;AAEpH,eAAA,CAAA,uBAAsB,WAAW,QAAQ,EAAE,oBAAoB,EAAE,OAAO,YAAY,CAAC;AACnG;"}
@@ -1,11 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const reactDevbar = require("@contember/react-devbar");
4
- const client = require("react-dom/client");
5
- const runReactApp = (reactElement, { domRoot } = {}) => {
6
- const rootEl = domRoot ?? document.body.appendChild(document.createElement("div"));
7
- const errorHandler = reactDevbar.createErrorHandler((dom, react, onRecoverableError) => client.createRoot(dom, { onRecoverableError }).render(react));
8
- errorHandler((onRecoverableError) => client.createRoot(rootEl, { onRecoverableError }).render(reactElement));
9
- };
10
- exports.runReactApp = runReactApp;
11
- //# sourceMappingURL=runReactApp.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runReactApp.cjs","sources":["../../../src/bootstrap/runReactApp.tsx"],"sourcesContent":["import { ReactElement } from 'react'\nimport { createErrorHandler } from '@contember/react-devbar'\nimport { createRoot } from 'react-dom/client'\n\nexport const runReactApp = (\n\treactElement: ReactElement,\n\t{ domRoot }: {\n\t\tdomRoot?: HTMLElement,\n\t} = {},\n) => {\n\tconst rootEl = domRoot ?? document.body.appendChild(document.createElement('div'))\n\n\tconst errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react))\n\n\terrorHandler(onRecoverableError => createRoot(rootEl, { onRecoverableError }).render(reactElement))\n}\n"],"names":["createErrorHandler","createRoot"],"mappings":";;;;AAIO,MAAM,cAAc,CAC1B,cACA,EAAE,QAAQ,IAEN,CAAA,MACA;AACE,QAAA,SAAS,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAEjF,QAAM,eAAeA,YAAA,mBAAmB,CAAC,KAAK,OAAO,uBAAuBC,OAAAA,WAAW,KAAK,EAAE,mBAAoB,CAAA,EAAE,OAAO,KAAK,CAAC;AAEpH,eAAA,CAAA,uBAAsBA,OAAAA,WAAW,QAAQ,EAAE,oBAAoB,EAAE,OAAO,YAAY,CAAC;AACnG;;"}
@@ -1,11 +0,0 @@
1
- import { createErrorHandler } from "@contember/react-devbar";
2
- import { createRoot } from "react-dom/client";
3
- const runReactApp = (reactElement, { domRoot } = {}) => {
4
- const rootEl = domRoot ?? document.body.appendChild(document.createElement("div"));
5
- const errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react));
6
- errorHandler((onRecoverableError) => createRoot(rootEl, { onRecoverableError }).render(reactElement));
7
- };
8
- export {
9
- runReactApp
10
- };
11
- //# sourceMappingURL=runReactApp.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runReactApp.js","sources":["../../../src/bootstrap/runReactApp.tsx"],"sourcesContent":["import { ReactElement } from 'react'\nimport { createErrorHandler } from '@contember/react-devbar'\nimport { createRoot } from 'react-dom/client'\n\nexport const runReactApp = (\n\treactElement: ReactElement,\n\t{ domRoot }: {\n\t\tdomRoot?: HTMLElement,\n\t} = {},\n) => {\n\tconst rootEl = domRoot ?? document.body.appendChild(document.createElement('div'))\n\n\tconst errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react))\n\n\terrorHandler(onRecoverableError => createRoot(rootEl, { onRecoverableError }).render(reactElement))\n}\n"],"names":[],"mappings":";;AAIO,MAAM,cAAc,CAC1B,cACA,EAAE,QAAQ,IAEN,CAAA,MACA;AACE,QAAA,SAAS,WAAW,SAAS,KAAK,YAAY,SAAS,cAAc,KAAK,CAAC;AAEjF,QAAM,eAAe,mBAAmB,CAAC,KAAK,OAAO,uBAAuB,WAAW,KAAK,EAAE,mBAAoB,CAAA,EAAE,OAAO,KAAK,CAAC;AAEpH,eAAA,CAAA,uBAAsB,WAAW,QAAQ,EAAE,oBAAoB,EAAE,OAAO,YAAY,CAAC;AACnG;"}
@@ -1,5 +0,0 @@
1
- import { ReactElement } from 'react';
2
- export declare const runReactApp: (reactElement: ReactElement, { domRoot }?: {
3
- domRoot?: HTMLElement | undefined;
4
- }) => void;
5
- //# sourceMappingURL=runReactApp.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runReactApp.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/runReactApp.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAA;AAIpC,eAAO,MAAM,WAAW,iBACT,YAAY;;UAU1B,CAAA"}
@@ -1,16 +0,0 @@
1
- import { ReactElement } from 'react'
2
- import { createErrorHandler } from '@contember/react-devbar'
3
- import { createRoot } from 'react-dom/client'
4
-
5
- export const runReactApp = (
6
- reactElement: ReactElement,
7
- { domRoot }: {
8
- domRoot?: HTMLElement,
9
- } = {},
10
- ) => {
11
- const rootEl = domRoot ?? document.body.appendChild(document.createElement('div'))
12
-
13
- const errorHandler = createErrorHandler((dom, react, onRecoverableError) => createRoot(dom, { onRecoverableError }).render(react))
14
-
15
- errorHandler(onRecoverableError => createRoot(rootEl, { onRecoverableError }).render(reactElement))
16
- }