@narrative.io/jsonforms-provider-protocols 1.0.3 → 1.1.0-beta.1

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 (80) hide show
  1. package/dist/jsonforms-provider-protocols.css +10 -2
  2. package/dist/protocols/rest_api.d.ts.map +1 -1
  3. package/dist/protocols/rest_api.js +5 -1
  4. package/dist/protocols/rest_api.js.map +1 -1
  5. package/dist/vue/components/ProviderAutocomplete.vue.d.ts.map +1 -1
  6. package/dist/vue/components/ProviderAutocomplete.vue.js +36 -23
  7. package/dist/vue/components/ProviderAutocomplete.vue.js.map +1 -1
  8. package/dist/vue/components/ProviderMultiSelect.vue.d.ts +9 -0
  9. package/dist/vue/components/ProviderMultiSelect.vue.d.ts.map +1 -0
  10. package/dist/vue/components/ProviderMultiSelect.vue.js +8 -0
  11. package/dist/vue/components/ProviderMultiSelect.vue.js.map +1 -0
  12. package/dist/vue/components/ProviderMultiSelect.vue2.js +95 -0
  13. package/dist/vue/components/ProviderMultiSelect.vue2.js.map +1 -0
  14. package/dist/vue/components/ProviderSelect.vue.d.ts.map +1 -1
  15. package/dist/vue/components/ProviderSelect.vue.js +1 -1
  16. package/dist/vue/components/ProviderSelect.vue2.js +34 -28
  17. package/dist/vue/components/ProviderSelect.vue2.js.map +1 -1
  18. package/dist/vue/composables/useProvider.d.ts +10 -2
  19. package/dist/vue/composables/useProvider.d.ts.map +1 -1
  20. package/dist/vue/composables/useProvider.js +4 -2
  21. package/dist/vue/composables/useProvider.js.map +1 -1
  22. package/dist/vue/index.d.ts +4 -1
  23. package/dist/vue/index.d.ts.map +1 -1
  24. package/dist/vue/index.js +38 -4
  25. package/dist/vue/index.js.map +1 -1
  26. package/dist/vue/primevue/JfBoolean.vue.d.ts +75 -0
  27. package/dist/vue/primevue/JfBoolean.vue.d.ts.map +1 -0
  28. package/dist/vue/primevue/JfBoolean.vue.js +36 -0
  29. package/dist/vue/primevue/JfBoolean.vue.js.map +1 -0
  30. package/dist/vue/primevue/JfBoolean.vue2.js +5 -0
  31. package/dist/vue/primevue/JfBoolean.vue2.js.map +1 -0
  32. package/dist/vue/primevue/JfEnum.vue.d.ts +75 -0
  33. package/dist/vue/primevue/JfEnum.vue.d.ts.map +1 -0
  34. package/dist/vue/primevue/JfEnum.vue.js +8 -0
  35. package/dist/vue/primevue/JfEnum.vue.js.map +1 -0
  36. package/dist/vue/primevue/JfEnum.vue2.js +65 -0
  37. package/dist/vue/primevue/JfEnum.vue2.js.map +1 -0
  38. package/dist/vue/primevue/JfEnumArray.vue.d.ts +75 -0
  39. package/dist/vue/primevue/JfEnumArray.vue.d.ts.map +1 -0
  40. package/dist/vue/primevue/JfEnumArray.vue.js +84 -0
  41. package/dist/vue/primevue/JfEnumArray.vue.js.map +1 -0
  42. package/dist/vue/primevue/JfEnumArray.vue2.js +5 -0
  43. package/dist/vue/primevue/JfEnumArray.vue2.js.map +1 -0
  44. package/dist/vue/primevue/JfNumber.vue.d.ts +75 -0
  45. package/dist/vue/primevue/JfNumber.vue.d.ts.map +1 -0
  46. package/dist/vue/primevue/JfNumber.vue.js +50 -0
  47. package/dist/vue/primevue/JfNumber.vue.js.map +1 -0
  48. package/dist/vue/primevue/JfNumber.vue2.js +5 -0
  49. package/dist/vue/primevue/JfNumber.vue2.js.map +1 -0
  50. package/dist/vue/primevue/JfText.vue.d.ts +75 -0
  51. package/dist/vue/primevue/JfText.vue.d.ts.map +1 -0
  52. package/dist/vue/primevue/JfText.vue.js +56 -0
  53. package/dist/vue/primevue/JfText.vue.js.map +1 -0
  54. package/dist/vue/primevue/JfText.vue2.js +5 -0
  55. package/dist/vue/primevue/JfText.vue2.js.map +1 -0
  56. package/dist/vue/primevue/JfTextArea.vue.d.ts +75 -0
  57. package/dist/vue/primevue/JfTextArea.vue.d.ts.map +1 -0
  58. package/dist/vue/primevue/JfTextArea.vue.js +55 -0
  59. package/dist/vue/primevue/JfTextArea.vue.js.map +1 -0
  60. package/dist/vue/primevue/JfTextArea.vue2.js +5 -0
  61. package/dist/vue/primevue/JfTextArea.vue2.js.map +1 -0
  62. package/dist/vue/primevue/index.d.ts +83 -0
  63. package/dist/vue/primevue/index.d.ts.map +1 -0
  64. package/dist/vue/primevue/index.js +71 -0
  65. package/dist/vue/primevue/index.js.map +1 -0
  66. package/package.json +7 -2
  67. package/src/protocols/rest_api.ts +8 -1
  68. package/src/vue/components/ProviderAutocomplete.vue +31 -12
  69. package/src/vue/components/ProviderMultiSelect.vue +108 -0
  70. package/src/vue/components/ProviderSelect.vue +40 -21
  71. package/src/vue/composables/useProvider.ts +3 -2
  72. package/src/vue/index.ts +33 -4
  73. package/src/vue/primevue/JfBoolean.vue +26 -0
  74. package/src/vue/primevue/JfEnum.vue +67 -0
  75. package/src/vue/primevue/JfEnumArray.vue +85 -0
  76. package/src/vue/primevue/JfNumber.vue +42 -0
  77. package/src/vue/primevue/JfText.vue +47 -0
  78. package/src/vue/primevue/JfTextArea.vue +46 -0
  79. package/src/vue/primevue/index.ts +99 -0
  80. package/src/vue/styles.css +15 -0
@@ -0,0 +1,99 @@
1
+ import JfText from "./JfText.vue";
2
+ import JfTextArea from "./JfTextArea.vue";
3
+ import JfNumber from "./JfNumber.vue";
4
+ import JfEnum from "./JfEnum.vue";
5
+ import JfEnumArray from "./JfEnumArray.vue";
6
+ import JfBoolean from "./JfBoolean.vue";
7
+
8
+ // Auto-inject layout styles
9
+ const injectLayoutStyles = () => {
10
+ if (typeof window !== "undefined" && typeof document !== "undefined") {
11
+ if (!document.getElementById("jsonforms-primevue-styles")) {
12
+ const style = document.createElement("style");
13
+ style.id = "jsonforms-primevue-styles";
14
+ style.textContent = `
15
+ /* JSONForms PrimeVue Provider Protocols Layout Styles */
16
+ .vertical-layout {
17
+ display: flex;
18
+ flex-direction: column;
19
+ align-items: flex-start;
20
+ gap: 1rem;
21
+ width: 100%;
22
+ }
23
+
24
+ .vertical-layout-item {
25
+ width: 100%;
26
+ }
27
+ `;
28
+ document.head.appendChild(style);
29
+ }
30
+ }
31
+ };
32
+
33
+ // Inject styles when this module is imported
34
+ injectLayoutStyles();
35
+
36
+ import {
37
+ rankWith,
38
+ isStringControl,
39
+ or,
40
+ isNumberControl,
41
+ isIntegerControl,
42
+ and,
43
+ isControl,
44
+ schemaMatches,
45
+ isBooleanControl,
46
+ } from "@jsonforms/core";
47
+
48
+ // helpers for enum detection
49
+ const isScalarEnum = (s?: object) => {
50
+ const schema = s as { type?: string; enum?: unknown[]; oneOf?: unknown[] };
51
+ return (
52
+ schema &&
53
+ schema.type !== "array" &&
54
+ (Array.isArray(schema.enum) || Array.isArray(schema.oneOf))
55
+ );
56
+ };
57
+
58
+ const isEnumArray = (s?: object) => {
59
+ const schema = s as {
60
+ type?: string;
61
+ items?: { enum?: unknown[]; oneOf?: unknown[] };
62
+ };
63
+ return (
64
+ schema?.type === "array" &&
65
+ (Array.isArray(schema.items?.enum) || Array.isArray(schema.items?.oneOf))
66
+ );
67
+ };
68
+
69
+ // helper for multiline detection
70
+ const isMultilineString = (uischema: unknown, schema: unknown) => {
71
+ return (
72
+ isStringControl(uischema as never, schema as never, {} as never) &&
73
+ (uischema as { options?: { multi?: boolean } })?.options?.multi === true
74
+ );
75
+ };
76
+
77
+ // Give PrimeVue renderers a high base rank; vanilla commonly uses small ranks (2–5)
78
+ const PRIME = 100;
79
+
80
+ export const primevueRenderers = [
81
+ // Multiline text has higher priority than regular text
82
+ { tester: rankWith(PRIME + 4, isMultilineString), renderer: JfTextArea },
83
+ { tester: rankWith(PRIME + 3, isStringControl), renderer: JfText },
84
+ {
85
+ tester: rankWith(PRIME + 4, or(isNumberControl, isIntegerControl)),
86
+ renderer: JfNumber,
87
+ },
88
+ {
89
+ tester: rankWith(PRIME + 5, and(isControl, schemaMatches(isScalarEnum))),
90
+ renderer: JfEnum,
91
+ },
92
+ {
93
+ tester: rankWith(PRIME + 6, and(isControl, schemaMatches(isEnumArray))),
94
+ renderer: JfEnumArray,
95
+ },
96
+ { tester: rankWith(PRIME + 3, isBooleanControl), renderer: JfBoolean },
97
+ ];
98
+
99
+ export { JfText, JfTextArea, JfNumber, JfEnum, JfEnumArray, JfBoolean };
@@ -0,0 +1,15 @@
1
+ /* JSONForms PrimeVue Provider Protocols Layout Styles */
2
+
3
+ /* Style the vanilla VerticalLayout to be centered with gaps */
4
+ .vertical-layout {
5
+ display: flex;
6
+ flex-direction: column;
7
+ align-items: flex-start;
8
+ gap: 1rem;
9
+ width: 100%;
10
+ }
11
+
12
+ /* Style individual vertical layout items */
13
+ .vertical-layout-item {
14
+ width: 100%;
15
+ }