@ketvietlab/ketsuite 0.1.20 → 0.1.24

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 (245) hide show
  1. package/dist/cli.js +9 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/demo/crm.d.ts +3 -0
  4. package/dist/demo/crm.d.ts.map +1 -0
  5. package/dist/demo/crm.js +418 -0
  6. package/dist/demo/crm.js.map +1 -0
  7. package/dist/demo/partner.d.ts +8 -0
  8. package/dist/demo/partner.d.ts.map +1 -0
  9. package/dist/demo/partner.js +179 -0
  10. package/dist/demo/partner.js.map +1 -0
  11. package/dist/demo/product.d.ts +25 -0
  12. package/dist/demo/product.d.ts.map +1 -0
  13. package/dist/demo/product.js +579 -0
  14. package/dist/demo/product.js.map +1 -0
  15. package/dist/demo/purchase.d.ts +4 -0
  16. package/dist/demo/purchase.d.ts.map +1 -0
  17. package/dist/demo/purchase.js +58 -0
  18. package/dist/demo/purchase.js.map +1 -0
  19. package/dist/demo/sale.d.ts +4 -0
  20. package/dist/demo/sale.d.ts.map +1 -0
  21. package/dist/demo/sale.js +52 -0
  22. package/dist/demo/sale.js.map +1 -0
  23. package/dist/demo/seed.d.ts +14 -0
  24. package/dist/demo/seed.d.ts.map +1 -0
  25. package/dist/demo/seed.js +88 -0
  26. package/dist/demo/seed.js.map +1 -0
  27. package/dist/demo/stock.d.ts +7 -0
  28. package/dist/demo/stock.d.ts.map +1 -0
  29. package/dist/demo/stock.js +26 -0
  30. package/dist/demo/stock.js.map +1 -0
  31. package/dist/demo/user.d.ts +4 -0
  32. package/dist/demo/user.d.ts.map +1 -0
  33. package/dist/demo/user.js +41 -0
  34. package/dist/demo/user.js.map +1 -0
  35. package/dist/demo/util.d.ts +7 -0
  36. package/dist/demo/util.d.ts.map +1 -0
  37. package/dist/demo/util.js +19 -0
  38. package/dist/demo/util.js.map +1 -0
  39. package/dist/modules/backend/design/client/backend-shell.d.mts +2 -2
  40. package/dist/modules/backend/design/client/backend-shell.d.mts.map +1 -1
  41. package/dist/modules/backend/design/client/backend-shell.mjs +1 -1
  42. package/dist/modules/backend/design/client/backend-shell.mjs.map +3 -3
  43. package/dist/modules/backend/design/content.css +9 -9
  44. package/dist/modules/backend/design/controls.css +5 -5
  45. package/dist/modules/backend/design/forms.css +12 -5
  46. package/dist/modules/backend/design/foundation.css +3 -3
  47. package/dist/modules/backend/design/lists.css +23 -24
  48. package/dist/modules/backend/design/user-workflow.css +2 -2
  49. package/dist/modules/backend/screen.d.ts.map +1 -1
  50. package/dist/modules/backend/screen.js +11 -2
  51. package/dist/modules/backend/screen.js.map +1 -1
  52. package/dist/modules/crm/functions/access.d.ts +3 -0
  53. package/dist/modules/crm/functions/access.d.ts.map +1 -0
  54. package/dist/modules/crm/functions/access.js +89 -0
  55. package/dist/modules/crm/functions/access.js.map +1 -0
  56. package/dist/modules/crm/functions/activities.d.ts +3 -0
  57. package/dist/modules/crm/functions/activities.d.ts.map +1 -0
  58. package/dist/modules/crm/functions/activities.js +174 -0
  59. package/dist/modules/crm/functions/activities.js.map +1 -0
  60. package/dist/modules/crm/functions/cases.d.ts +3 -0
  61. package/dist/modules/crm/functions/cases.d.ts.map +1 -0
  62. package/dist/modules/crm/functions/cases.js +585 -0
  63. package/dist/modules/crm/functions/cases.js.map +1 -0
  64. package/dist/modules/crm/functions/configuration.d.ts +3 -0
  65. package/dist/modules/crm/functions/configuration.d.ts.map +1 -0
  66. package/dist/modules/crm/functions/configuration.js +331 -0
  67. package/dist/modules/crm/functions/configuration.js.map +1 -0
  68. package/dist/modules/crm/functions/gamification.d.ts +3 -0
  69. package/dist/modules/crm/functions/gamification.d.ts.map +1 -0
  70. package/dist/modules/crm/functions/gamification.js +58 -0
  71. package/dist/modules/crm/functions/gamification.js.map +1 -0
  72. package/dist/modules/crm/functions/index.d.ts +4 -0
  73. package/dist/modules/crm/functions/index.d.ts.map +1 -0
  74. package/dist/modules/crm/functions/index.js +33 -0
  75. package/dist/modules/crm/functions/index.js.map +1 -0
  76. package/dist/modules/crm/functions/modal-context.d.ts +3 -0
  77. package/dist/modules/crm/functions/modal-context.d.ts.map +1 -0
  78. package/dist/modules/crm/functions/modal-context.js +248 -0
  79. package/dist/modules/crm/functions/modal-context.js.map +1 -0
  80. package/dist/modules/crm/functions/previews.d.ts +3 -0
  81. package/dist/modules/crm/functions/previews.d.ts.map +1 -0
  82. package/dist/modules/crm/functions/previews.js +20 -0
  83. package/dist/modules/crm/functions/previews.js.map +1 -0
  84. package/dist/modules/crm/functions/shared.d.ts +31 -0
  85. package/dist/modules/crm/functions/shared.d.ts.map +1 -0
  86. package/dist/modules/crm/functions/shared.js +194 -0
  87. package/dist/modules/crm/functions/shared.js.map +1 -0
  88. package/dist/modules/crm/index.d.ts +1 -1
  89. package/dist/modules/crm/index.d.ts.map +1 -1
  90. package/dist/modules/crm/index.js +2 -2
  91. package/dist/modules/crm/index.js.map +1 -1
  92. package/dist/modules/crm/messages.d.ts +4 -1
  93. package/dist/modules/crm/messages.d.ts.map +1 -1
  94. package/dist/modules/crm/messages.js +6 -0
  95. package/dist/modules/crm/messages.js.map +1 -1
  96. package/dist/modules/crm/record-modal-labels.d.ts +9 -0
  97. package/dist/modules/crm/record-modal-labels.d.ts.map +1 -0
  98. package/dist/modules/crm/record-modal-labels.js +36 -0
  99. package/dist/modules/crm/record-modal-labels.js.map +1 -0
  100. package/dist/modules/crm/types.d.ts +5 -0
  101. package/dist/modules/crm/types.d.ts.map +1 -1
  102. package/dist/modules/crm/types.js +9 -0
  103. package/dist/modules/crm/types.js.map +1 -1
  104. package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts +352 -0
  105. package/dist/modules/crm_backend/client/crm-configuration-modal.d.mts.map +1 -0
  106. package/dist/modules/crm_backend/client/crm-configuration-modal.mjs +2 -0
  107. package/dist/modules/crm_backend/client/crm-configuration-modal.mjs.map +7 -0
  108. package/dist/modules/crm_backend/index.d.ts.map +1 -1
  109. package/dist/modules/crm_backend/index.js +5 -1
  110. package/dist/modules/crm_backend/index.js.map +1 -1
  111. package/dist/modules/crm_backend/islands.d.ts +27 -0
  112. package/dist/modules/crm_backend/islands.d.ts.map +1 -1
  113. package/dist/modules/crm_backend/islands.js +22 -0
  114. package/dist/modules/crm_backend/islands.js.map +1 -1
  115. package/dist/modules/crm_backend/messages.d.ts +30 -0
  116. package/dist/modules/crm_backend/messages.d.ts.map +1 -1
  117. package/dist/modules/crm_backend/messages.js +30 -0
  118. package/dist/modules/crm_backend/messages.js.map +1 -1
  119. package/dist/modules/crm_backend/modal/configuration-modal-view.d.ts +55 -0
  120. package/dist/modules/crm_backend/modal/configuration-modal-view.d.ts.map +1 -0
  121. package/dist/modules/crm_backend/modal/configuration-modal-view.js +601 -0
  122. package/dist/modules/crm_backend/modal/configuration-modal-view.js.map +1 -0
  123. package/dist/modules/crm_backend/routes.d.ts.map +1 -1
  124. package/dist/modules/crm_backend/routes.js +107 -368
  125. package/dist/modules/crm_backend/routes.js.map +1 -1
  126. package/dist/modules/crm_backend/screens/configuration.d.ts +24 -32
  127. package/dist/modules/crm_backend/screens/configuration.d.ts.map +1 -1
  128. package/dist/modules/crm_backend/screens/configuration.js +183 -274
  129. package/dist/modules/crm_backend/screens/configuration.js.map +1 -1
  130. package/dist/modules/crm_backend/screens/index.d.ts +2 -2
  131. package/dist/modules/crm_backend/screens/index.d.ts.map +1 -1
  132. package/dist/modules/crm_backend/screens/index.js +1 -1
  133. package/dist/modules/crm_backend/screens/index.js.map +1 -1
  134. package/dist/modules/product/functions.d.ts +14 -1
  135. package/dist/modules/product/functions.d.ts.map +1 -1
  136. package/dist/modules/product/functions.js +36 -31
  137. package/dist/modules/product/functions.js.map +1 -1
  138. package/dist/modules/product/product-modal-context.d.ts +3 -0
  139. package/dist/modules/product/product-modal-context.d.ts.map +1 -0
  140. package/dist/modules/product/product-modal-context.js +171 -0
  141. package/dist/modules/product/product-modal-context.js.map +1 -0
  142. package/dist/modules/product_backend/client/product-modal.d.mts +143 -0
  143. package/dist/modules/product_backend/client/product-modal.d.mts.map +1 -0
  144. package/dist/modules/product_backend/client/product-modal.mjs +2 -0
  145. package/dist/modules/product_backend/client/product-modal.mjs.map +7 -0
  146. package/dist/modules/product_backend/index.d.ts.map +1 -1
  147. package/dist/modules/product_backend/index.js +16 -0
  148. package/dist/modules/product_backend/index.js.map +1 -1
  149. package/dist/modules/product_backend/islands.d.ts +1 -0
  150. package/dist/modules/product_backend/islands.d.ts.map +1 -1
  151. package/dist/modules/product_backend/islands.js +9 -0
  152. package/dist/modules/product_backend/islands.js.map +1 -1
  153. package/dist/modules/product_backend/modal/product-modal-view.d.ts +43 -0
  154. package/dist/modules/product_backend/modal/product-modal-view.d.ts.map +1 -0
  155. package/dist/modules/product_backend/modal/product-modal-view.js +602 -0
  156. package/dist/modules/product_backend/modal/product-modal-view.js.map +1 -0
  157. package/dist/modules/product_backend/routes.d.ts.map +1 -1
  158. package/dist/modules/product_backend/routes.js +44 -330
  159. package/dist/modules/product_backend/routes.js.map +1 -1
  160. package/dist/modules/product_backend/screens/detail.d.ts.map +1 -1
  161. package/dist/modules/product_backend/screens/detail.js +6 -108
  162. package/dist/modules/product_backend/screens/detail.js.map +1 -1
  163. package/dist/modules/product_backend/screens/index.d.ts +0 -1
  164. package/dist/modules/product_backend/screens/index.d.ts.map +1 -1
  165. package/dist/modules/product_backend/screens/index.js +0 -1
  166. package/dist/modules/product_backend/screens/index.js.map +1 -1
  167. package/dist/modules/product_backend/screens/list.d.ts +3 -1
  168. package/dist/modules/product_backend/screens/list.d.ts.map +1 -1
  169. package/dist/modules/product_backend/screens/list.js +6 -5
  170. package/dist/modules/product_backend/screens/list.js.map +1 -1
  171. package/dist/modules/user/authorization.d.ts.map +1 -1
  172. package/dist/modules/user/authorization.js +114 -0
  173. package/dist/modules/user/authorization.js.map +1 -1
  174. package/dist/modules/user/functions.d.ts.map +1 -1
  175. package/dist/modules/user/functions.js +2 -0
  176. package/dist/modules/user/functions.js.map +1 -1
  177. package/dist/modules/user/user-modal-context.d.ts +3 -0
  178. package/dist/modules/user/user-modal-context.d.ts.map +1 -0
  179. package/dist/modules/user/user-modal-context.js +151 -0
  180. package/dist/modules/user/user-modal-context.js.map +1 -0
  181. package/dist/modules/user_backend/client/user-modal.d.mts +72 -0
  182. package/dist/modules/user_backend/client/user-modal.d.mts.map +1 -0
  183. package/dist/modules/user_backend/client/user-modal.mjs +2 -0
  184. package/dist/modules/user_backend/client/user-modal.mjs.map +7 -0
  185. package/dist/modules/user_backend/index.d.ts.map +1 -1
  186. package/dist/modules/user_backend/index.js +9 -0
  187. package/dist/modules/user_backend/index.js.map +1 -1
  188. package/dist/modules/user_backend/islands.d.ts +15 -0
  189. package/dist/modules/user_backend/islands.d.ts.map +1 -0
  190. package/dist/modules/user_backend/islands.js +14 -0
  191. package/dist/modules/user_backend/islands.js.map +1 -0
  192. package/dist/modules/user_backend/messages.d.ts +30 -0
  193. package/dist/modules/user_backend/messages.d.ts.map +1 -1
  194. package/dist/modules/user_backend/messages.js +30 -0
  195. package/dist/modules/user_backend/messages.js.map +1 -1
  196. package/dist/modules/user_backend/modal/user-modal-view.d.ts +26 -0
  197. package/dist/modules/user_backend/modal/user-modal-view.d.ts.map +1 -0
  198. package/dist/modules/user_backend/modal/user-modal-view.js +320 -0
  199. package/dist/modules/user_backend/modal/user-modal-view.js.map +1 -0
  200. package/dist/modules/user_backend/routes.d.ts.map +1 -1
  201. package/dist/modules/user_backend/routes.js +15 -3
  202. package/dist/modules/user_backend/routes.js.map +1 -1
  203. package/dist/permission-catalogue.d.ts.map +1 -1
  204. package/dist/permission-catalogue.js +8 -0
  205. package/dist/permission-catalogue.js.map +1 -1
  206. package/dist/scaffold/index.js +1 -1
  207. package/dist/ui/client/activity.css +6 -6
  208. package/dist/ui/client/calendar.css +6 -6
  209. package/dist/ui/client/flow-app.css +1 -1
  210. package/dist/ui/client/mail.css +6 -6
  211. package/dist/ui/client/record-modal-form.d.ts +67 -0
  212. package/dist/ui/client/record-modal-form.d.ts.map +1 -0
  213. package/dist/ui/client/record-modal-form.js +45 -0
  214. package/dist/ui/client/record-modal-form.js.map +1 -0
  215. package/dist/ui/client/record-modal.d.ts +97 -6
  216. package/dist/ui/client/record-modal.d.ts.map +1 -1
  217. package/dist/ui/client/record-modal.js +330 -64
  218. package/dist/ui/client/record-modal.js.map +1 -1
  219. package/dist/ui/index.d.ts +2 -1
  220. package/dist/ui/index.d.ts.map +1 -1
  221. package/dist/ui/index.js +2 -1
  222. package/dist/ui/index.js.map +1 -1
  223. package/dist/ui/layout.d.ts.map +1 -1
  224. package/dist/ui/layout.js +5 -3
  225. package/dist/ui/layout.js.map +1 -1
  226. package/dist/ui/nav.d.ts +7 -0
  227. package/dist/ui/nav.d.ts.map +1 -1
  228. package/dist/ui/nav.js +1 -1
  229. package/dist/ui/nav.js.map +1 -1
  230. package/dist/ui/record-modal.d.ts +15 -0
  231. package/dist/ui/record-modal.d.ts.map +1 -1
  232. package/dist/ui/record-modal.js +12 -0
  233. package/dist/ui/record-modal.js.map +1 -1
  234. package/dist/ui/table.d.ts.map +1 -1
  235. package/dist/ui/table.js +1 -1
  236. package/dist/ui/table.js.map +1 -1
  237. package/package.json +4 -4
  238. package/dist/modules/crm/functions.d.ts +0 -10
  239. package/dist/modules/crm/functions.d.ts.map +0 -1
  240. package/dist/modules/crm/functions.js +0 -1394
  241. package/dist/modules/crm/functions.js.map +0 -1
  242. package/dist/modules/product_backend/screens/create.d.ts +0 -16
  243. package/dist/modules/product_backend/screens/create.d.ts.map +0 -1
  244. package/dist/modules/product_backend/screens/create.js +0 -86
  245. package/dist/modules/product_backend/screens/create.js.map +0 -1
@@ -33,7 +33,7 @@
33
33
 
34
34
  [data-ui="activity-title"] {
35
35
  margin: 0;
36
- font-size: 0.875rem;
36
+ font-size: 0.9375rem;
37
37
  }
38
38
  [data-ui="activity-schedule-trigger"] {
39
39
  flex: 0 0 auto;
@@ -57,7 +57,7 @@
57
57
  align-items: center;
58
58
  gap: var(--admin-gap-sm);
59
59
  color: var(--admin-ink-secondary);
60
- font-size: 0.8125rem;
60
+ font-size: 0.875rem;
61
61
  }
62
62
  [data-ui="activity-field"] > :is(input, select, textarea) {
63
63
  grid-column: 2;
@@ -73,7 +73,7 @@
73
73
  align-items: center;
74
74
  gap: var(--admin-gap-xs);
75
75
  color: var(--admin-ink-secondary);
76
- font-size: 0.8125rem;
76
+ font-size: 0.875rem;
77
77
  }
78
78
  [data-ui="activity-submit"] {
79
79
  flex: 0 0 auto;
@@ -124,14 +124,14 @@
124
124
  [data-ui="activity-loading"],
125
125
  [data-ui="activity-empty"] {
126
126
  color: var(--admin-ink-muted);
127
- font-size: 0.75rem;
127
+ font-size: 0.8125rem;
128
128
  }
129
129
  [data-ui="activity-state"] {
130
130
  padding: 0.2rem 0.5rem;
131
131
  border-radius: 999px;
132
132
  background: var(--admin-neutral-soft);
133
133
  color: var(--admin-status-fixed-ink);
134
- font-size: 0.75rem;
134
+ font-size: 0.8125rem;
135
135
  font-weight: 700;
136
136
  }
137
137
  [data-ui="activity-item-note"] {
@@ -144,7 +144,7 @@
144
144
  [data-ui="activity-attachments"] {
145
145
  margin: var(--admin-gap-sm) 0;
146
146
  padding-inline-start: 1.25rem;
147
- font-size: 0.8125rem;
147
+ font-size: 0.875rem;
148
148
  }
149
149
  [data-ui="activity-complete"],
150
150
  [data-ui="activity-reschedule"] {
@@ -17,7 +17,7 @@
17
17
  }
18
18
  [data-ui="calendar-range"] {
19
19
  color: var(--admin-ink-muted);
20
- font-size: 0.8125rem;
20
+ font-size: 0.875rem;
21
21
  }
22
22
  [data-ui="calendar-navigation"],
23
23
  [data-ui="calendar-views"] {
@@ -47,7 +47,7 @@
47
47
  [data-ui="calendar-create-title"] {
48
48
  grid-column: 1 / -1;
49
49
  margin: 0;
50
- font-size: 0.875rem;
50
+ font-size: 0.9375rem;
51
51
  }
52
52
  [data-ui="calendar-field"] {
53
53
  display: grid;
@@ -55,7 +55,7 @@
55
55
  align-items: center;
56
56
  gap: var(--admin-gap-sm);
57
57
  color: var(--admin-ink-secondary);
58
- font-size: 0.8125rem;
58
+ font-size: 0.875rem;
59
59
  }
60
60
  /* Only the placement; the control itself is `form-control`, which is where the
61
61
  focus ring, the disabled state and the invalid state live. */
@@ -111,7 +111,7 @@
111
111
  }
112
112
  [data-ui="calendar-day-label"] {
113
113
  color: var(--admin-ink-muted);
114
- font-size: 0.75rem;
114
+ font-size: 0.8125rem;
115
115
  }
116
116
  [data-ui="calendar-day-events"] {
117
117
  display: grid;
@@ -129,7 +129,7 @@
129
129
  [data-ui="calendar-week"] [data-ui="calendar-event"],
130
130
  [data-ui="calendar-month"] [data-ui="calendar-event"] {
131
131
  padding: 0.35rem;
132
- font-size: 0.75rem;
132
+ font-size: 0.8125rem;
133
133
  }
134
134
  [data-ui="calendar-event-title"] {
135
135
  min-inline-size: 0;
@@ -139,7 +139,7 @@
139
139
  [data-ui="calendar-event-location"],
140
140
  [data-ui="calendar-event-organizer"] {
141
141
  color: var(--admin-ink-muted);
142
- font-size: 0.75rem;
142
+ font-size: 0.8125rem;
143
143
  }
144
144
  @media (max-width: 63.9375rem) {
145
145
  [data-ui="calendar-head"] {
@@ -184,7 +184,7 @@
184
184
  padding-block-end: var(--admin-gap-sm);
185
185
  border-block-end: 1px solid var(--admin-line);
186
186
  color: var(--admin-ink-muted);
187
- font-size: 0.75rem;
187
+ font-size: 0.8125rem;
188
188
  }
189
189
 
190
190
  [data-ui="flow-map-legend"] span {
@@ -22,7 +22,7 @@
22
22
 
23
23
  [data-ui="chatter-title"] {
24
24
  margin: 0;
25
- font-size: 0.875rem;
25
+ font-size: 0.9375rem;
26
26
  }
27
27
 
28
28
  [data-ui="chatter-heading"],
@@ -36,7 +36,7 @@
36
36
  [data-ui="chatter-followers"],
37
37
  [data-ui="chatter-time"] {
38
38
  color: var(--admin-ink-muted);
39
- font-size: 0.75rem;
39
+ font-size: 0.8125rem;
40
40
  }
41
41
 
42
42
  [data-ui="chatter-follow"],
@@ -78,7 +78,7 @@
78
78
  align-items: center;
79
79
  gap: var(--admin-gap-xs);
80
80
  color: var(--admin-ink-secondary);
81
- font-size: 0.8125rem;
81
+ font-size: 0.875rem;
82
82
  }
83
83
 
84
84
  [data-ui="chatter-body"] {
@@ -90,7 +90,7 @@
90
90
  background: var(--admin-surface);
91
91
  color: var(--admin-ink);
92
92
  font: inherit;
93
- font-size: 0.8125rem;
93
+ font-size: 0.875rem;
94
94
  }
95
95
 
96
96
  [data-ui="chatter-compose-actions"] > div {
@@ -133,7 +133,7 @@
133
133
  [data-ui="chatter-attachments"] {
134
134
  margin: var(--admin-gap-sm) 0 0;
135
135
  padding-inline-start: 1.25rem;
136
- font-size: 0.8125rem;
136
+ font-size: 0.875rem;
137
137
  }
138
138
 
139
139
  [data-ui="chatter-deliveries"] {
@@ -153,7 +153,7 @@
153
153
  border-radius: 999px;
154
154
  background: var(--admin-surface);
155
155
  color: var(--admin-ink-secondary);
156
- font-size: 0.75rem;
156
+ font-size: 0.8125rem;
157
157
  font-weight: 600;
158
158
  }
159
159
 
@@ -0,0 +1,67 @@
1
+ import type { FieldOption, FieldProps } from '@ketvietlab/design-system';
2
+ import type { JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
3
+ /**
4
+ * The form a record modal's runtime submits. A `command` becomes the hidden
5
+ * `__command` field; without one, the submitting button names it.
6
+ */
7
+ export declare const RecordModalForm: (props: {
8
+ kind: string;
9
+ fields: readonly FieldProps[];
10
+ actions?: readonly JSXChild[];
11
+ command?: string | null;
12
+ /** Lets a button outside this form submit it via the HTML `form` attribute. */
13
+ id?: string;
14
+ }) => TemplateResult;
15
+ /**
16
+ * The control of a select whose choice changes what the rest of the form offers.
17
+ * Use it as a design-system field's `control`; `data-record-state` makes the
18
+ * runtime re-render the view with the new choice.
19
+ */
20
+ export declare const recordStateSelectControl: (props: {
21
+ id: string;
22
+ name: string;
23
+ state: string;
24
+ value: string;
25
+ options: readonly FieldOption[];
26
+ required?: boolean;
27
+ disabled?: boolean;
28
+ invalid?: boolean;
29
+ }) => TemplateResult;
30
+ /**
31
+ * Opens a dialog of the open record. `id` reaches the dialog as `params.id`;
32
+ * without it the dialog opens for a new child (for example a new team member).
33
+ */
34
+ export declare const RecordDialogTrigger: (props: {
35
+ dialog: string;
36
+ id?: string | null;
37
+ children: JSXChild;
38
+ }) => TemplateResult;
39
+ /**
40
+ * A bare form for an action that names no field of its own — generate, remove.
41
+ * `data-layout="actions"` opts the form out of the record-form grid (built for a
42
+ * field/label pair), which would otherwise stretch a lone submit button to fill it.
43
+ */
44
+ export declare const RecordActionForm: (props: {
45
+ kind: string;
46
+ command: string;
47
+ hidden?: Record<string, string>;
48
+ children: JSXChild;
49
+ }) => TemplateResult;
50
+ /**
51
+ * A form with no field or button of its own, submitted only through the HTML
52
+ * `form` attribute on buttons placed elsewhere — a menu whose every item names
53
+ * its own command on itself, so one empty form serves the whole menu.
54
+ */
55
+ export declare const RecordCommandForm: (props: {
56
+ kind: string;
57
+ id: string;
58
+ }) => TemplateResult;
59
+ /**
60
+ * Marks its child as a labeled close control the runtime's own click handler
61
+ * recognizes from anywhere in the record's body — distinct from
62
+ * `data-ui="modal-close"`, the icon-only corner control's own styling hook.
63
+ */
64
+ export declare const RecordCloseTrigger: (props: {
65
+ children: JSXChild;
66
+ }) => TemplateResult;
67
+ //# sourceMappingURL=record-modal-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-modal-form.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal-form.tsx"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAA;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAGtE;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAW;IACrC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,SAAS,UAAU,EAAE,CAAA;IAC7B,OAAO,CAAC,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,+EAA+E;IAC/E,EAAE,CAAC,EAAE,MAAM,CAAA;CACZ,KAAG,cAaH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,UAAW;IAC9C,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,SAAS,WAAW,EAAE,CAAA;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,OAAO,CAAA;CAClB,KAAG,cAgBH,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAAW;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,QAAQ,EAAE,QAAQ,CAAA;CACnB,KAAG,cAIH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,UAAW;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,QAAQ,EAAE,QAAQ,CAAA;CACnB,KAAG,cAQH,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,UAAW;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,KAAG,cAEvE,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,UAAW;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,KAAG,cAElE,CAAA"}
@@ -0,0 +1,45 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "@ketvietlab/ketjs-view/jsx-runtime";
2
+ // Record-modal form markup, owned by the kit.
3
+ //
4
+ // A record modal's views are module code; markup belongs to `ketsuite/ui`. These
5
+ // are the pieces a view needs beyond the design system's fields and buttons: the
6
+ // form the runtime submits (optionally naming its command), a select whose choice
7
+ // feeds view state before anything is submitted, and a trigger that opens a dialog
8
+ // of the same record.
9
+ import { ActionGroup, Field } from '@ketvietlab/design-system';
10
+ import { RECORD_COMMAND_FIELD } from './record-modal.js';
11
+ /**
12
+ * The form a record modal's runtime submits. A `command` becomes the hidden
13
+ * `__command` field; without one, the submitting button names it.
14
+ */
15
+ export const RecordModalForm = (props) => (_jsxs("form", { "data-ui": "record-form", method: "post", action: "", "data-record-kind": props.kind, id: props.id, children: [props.command ? (_jsx("input", { type: "hidden", name: RECORD_COMMAND_FIELD, value: props.command, autocomplete: "off" })) : (''), _jsx("div", { "data-ui": "form-grid", children: props.fields.map((item) => Field(item)) }), props.actions?.length ? _jsx("div", { "data-ui": "form-actions", children: ActionGroup({ actions: props.actions }) }) : ''] }));
16
+ /**
17
+ * The control of a select whose choice changes what the rest of the form offers.
18
+ * Use it as a design-system field's `control`; `data-record-state` makes the
19
+ * runtime re-render the view with the new choice.
20
+ */
21
+ export const recordStateSelectControl = (props) => (_jsx("select", { "data-ui": "field-control", "data-record-state": props.state, id: props.id, name: props.name, required: props.required === true, disabled: props.disabled === true, "aria-invalid": props.invalid ? 'true' : null, children: props.options.map((option) => (_jsx("option", { value: option.value, selected: option.value === props.value, children: option.label }))) }));
22
+ /**
23
+ * Opens a dialog of the open record. `id` reaches the dialog as `params.id`;
24
+ * without it the dialog opens for a new child (for example a new team member).
25
+ */
26
+ export const RecordDialogTrigger = (props) => (_jsx("span", { "data-record-dialog": props.dialog, "data-record-param-id": props.id ?? null, children: props.children }));
27
+ /**
28
+ * A bare form for an action that names no field of its own — generate, remove.
29
+ * `data-layout="actions"` opts the form out of the record-form grid (built for a
30
+ * field/label pair), which would otherwise stretch a lone submit button to fill it.
31
+ */
32
+ export const RecordActionForm = (props) => (_jsxs("form", { "data-ui": "record-form", "data-layout": "actions", method: "post", action: "", "data-record-kind": props.kind, children: [_jsx("input", { type: "hidden", name: RECORD_COMMAND_FIELD, value: props.command, autocomplete: "off" }), Object.entries(props.hidden ?? {}).map(([name, value]) => (_jsx("input", { type: "hidden", name: name, value: value, autocomplete: "off" }))), props.children] }));
33
+ /**
34
+ * A form with no field or button of its own, submitted only through the HTML
35
+ * `form` attribute on buttons placed elsewhere — a menu whose every item names
36
+ * its own command on itself, so one empty form serves the whole menu.
37
+ */
38
+ export const RecordCommandForm = (props) => (_jsx("form", { id: props.id, "data-record-kind": props.kind, method: "post", action: "", hidden: true }));
39
+ /**
40
+ * Marks its child as a labeled close control the runtime's own click handler
41
+ * recognizes from anywhere in the record's body — distinct from
42
+ * `data-ui="modal-close"`, the icon-only corner control's own styling hook.
43
+ */
44
+ export const RecordCloseTrigger = (props) => (_jsx("span", { "data-record-close": "true", children: props.children }));
45
+ //# sourceMappingURL=record-modal-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record-modal-form.js","sourceRoot":"","sources":["../../../../../../../packages/ketsuite/src/ui/client/record-modal-form.tsx"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { IslandController, JSXChild, TemplateResult } from '@ketvietlab/ketjs-view';
2
- import { RECORD_PARAM, RECORD_TAB_PARAM, readRecordModalTarget, recordModalClosedHref, recordModalHref } from '../record-modal.tsx';
2
+ import { RECORD_NEW_ID, RECORD_PARAM, RECORD_TAB_PARAM, readRecordModalTarget, recordModalClosedHref, recordModalCreateHref, recordModalHref } from '../record-modal.tsx';
3
3
  export type RecordIssue = {
4
4
  field: string | null;
5
5
  code: string;
@@ -35,6 +35,8 @@ export type RecordContextEnvelope<Data> = {
35
35
  export type RecordModalContext<Data> = {
36
36
  kind: string;
37
37
  id: string;
38
+ /** The modal was opened by a create action (`record=<kind>:new`); there is no record yet. */
39
+ creating: boolean;
38
40
  tab: string;
39
41
  data: Data;
40
42
  /** Translate a key the context shipped, interpolating `{name}` params. */
@@ -43,7 +45,13 @@ export type RecordModalContext<Data> = {
43
45
  fieldError: (name: string) => string | null;
44
46
  /** What was typed into a field before a refused submit, or the fallback. */
45
47
  draft: (name: string, fallback?: string) => string;
46
- /** A submit is in flight. */
48
+ /** Whether a checkbox/radio value was selected before the view re-rendered. */
49
+ draftChecked: (name: string, value?: string, fallback?: boolean) => boolean;
50
+ /**
51
+ * A submit has been in flight long enough to be worth saying so. A command the
52
+ * server answers at once never sets it, so a button bound to it does not flash
53
+ * its spinner; the runtime stops a second submit either way.
54
+ */
47
55
  busy: boolean;
48
56
  dialog: {
49
57
  name: string;
@@ -58,26 +66,51 @@ export type RecordUploads = Record<string, {
58
66
  id: string;
59
67
  name: string | null;
60
68
  }>;
69
+ /** One extra call of a multi-step command — see `RecordModalCommand.also`. */
70
+ export type RecordModalCommandStep<Data> = {
71
+ fn: string;
72
+ input: (form: FormData, context: RecordModalContext<Data>, uploads: RecordUploads) => Record<string, unknown>;
73
+ /** Skip this step — a module not installed, a permission the viewer lacks. */
74
+ when?: (context: RecordModalContext<Data>) => boolean;
75
+ };
61
76
  export type RecordModalCommand<Data> = {
62
77
  fn: string;
63
78
  /** Map the submitted form to the function's input. */
64
79
  input: (form: FormData, context: RecordModalContext<Data>, uploads: RecordUploads) => Record<string, unknown>;
80
+ /**
81
+ * Further calls made right after `fn`/`input` succeeds, in order, as part of
82
+ * the same user-facing action — one busy state, one success notice, one set
83
+ * of field refusals — stopping at the first one that fails. For an edit that
84
+ * spans functions in different modules that cannot call one another (a
85
+ * single `product.saveTemplate` cannot also configure stock tracking or
86
+ * tax), this is what lets one "Save" button still read as one save.
87
+ */
88
+ also?: readonly RecordModalCommandStep<Data>[];
65
89
  /**
66
90
  * File fields stored through `/files` before the function runs, each mapped to
67
91
  * the attachment's metadata (`resModel`, `resId`, `resField`, `public`). The
68
92
  * stored attachment ids reach `input` as its third argument.
69
93
  */
70
94
  upload?: Record<string, (form: FormData, context: RecordModalContext<Data>) => Record<string, string>>;
95
+ /** A destructive command asks first; declining leaves the record untouched. */
96
+ confirm?: (context: RecordModalContext<Data>) => string | null;
71
97
  /**
72
98
  * What happens after success. Defaults to `close`. `reload` reads the record
73
99
  * again behind a loading state and closes a dialog; `refresh` reads it again in
74
100
  * place, keeping the tab, the open dialog and any islands mounted in them.
101
+ * `open` is for a create command: the modal switches to the record it created
102
+ * (the id from `created`, else the function value's `id`) on the tab named by
103
+ * `openTab`, replacing the `:new` history entry.
75
104
  */
76
- after?: 'close' | 'reload' | 'refresh' | 'stay' | {
105
+ after?: 'close' | 'reload' | 'refresh' | 'stay' | 'open' | {
77
106
  tab: string;
78
107
  } | {
79
108
  dialog: string | null;
80
109
  };
110
+ /** The id of the record a create command made, read from the function's value. */
111
+ created?: (value: unknown) => string | null;
112
+ /** Tab to open on the created record when `after` is `open`. */
113
+ openTab?: string;
81
114
  };
82
115
  export type RecordModalTab<Data> = {
83
116
  id: string;
@@ -93,14 +126,40 @@ export type RecordModalDialog<Data> = {
93
126
  export type RecordModalDefinition<Data> = {
94
127
  kind: string;
95
128
  size?: 'default' | 'large';
96
- /** A permission-checked read returning `{ data, messages }`. */
129
+ /**
130
+ * Caps a tabbed record's fixed height (a CSS length or `min()`/`calc()`
131
+ * expression) below the viewport-filling default, for a record whose own
132
+ * content is shorter than that — see `ModalSheet.fixedHeight`. Ignored for a
133
+ * record with one tab or none, since those never turn on `height: 'fixed'`.
134
+ */
135
+ fixedHeight?: string;
136
+ /**
137
+ * A permission-checked read returning `{ data, messages }`. For a create action
138
+ * the default input is `{}` (no id): the read returns the empty record's defaults,
139
+ * the choices its form needs and the viewer's permissions.
140
+ */
97
141
  context: {
98
142
  fn: string;
99
- input?: (id: string) => Record<string, unknown>;
143
+ input?: (id: string, creating: boolean) => Record<string, unknown>;
100
144
  };
101
145
  title: (context: RecordModalContext<Data>) => string;
102
146
  description?: (context: RecordModalContext<Data>) => string | null;
147
+ /**
148
+ * What state this record is in, beside the modal's title: a badge, not a
149
+ * strip. It stays put while the body scrolls, and a reader looking at the
150
+ * title learns the state without reading down into the form.
151
+ */
152
+ status?: (context: RecordModalContext<Data>) => JSXChild;
153
+ /** A strip above the body — a customer, a summary — for what a badge cannot hold. */
103
154
  header?: (context: RecordModalContext<Data>) => JSXChild;
155
+ /**
156
+ * A footer strip below the body, outside the scrolling area and the same on
157
+ * every tab — the natural home for a record's primary actions (save, close,
158
+ * more) so they stay reachable without hunting through the tab that happens
159
+ * to hold the save button. Return `undefined` (not `''`) to render no footer
160
+ * at all, e.g. while creating, when the create form owns its own submit.
161
+ */
162
+ actions?: (context: RecordModalContext<Data>) => JSXChild | undefined;
104
163
  tabs?: readonly RecordModalTab<Data>[];
105
164
  /** The body of a record without tabs. */
106
165
  body?: (context: RecordModalContext<Data>) => JSXChild;
@@ -112,7 +171,15 @@ export type RecordModalDefinition<Data> = {
112
171
  * built-in English defaults, because `messages` arrive with the context.
113
172
  */
114
173
  labels?: Record<string, string> | (() => Record<string, string>);
174
+ /**
175
+ * Keep read contexts in memory so reopening a record shows at once and is read
176
+ * again quietly (stale-while-revalidate). On by default; set `false` for a kind
177
+ * whose context must never be shown before a fresh read.
178
+ */
179
+ cache?: boolean;
115
180
  };
181
+ /** How many record contexts one island keeps for instant reopening. */
182
+ export declare const RECORD_MODAL_CACHE_SIZE = 30;
116
183
  /**
117
184
  * English defaults for every label the runtime itself shows. A module passes its
118
185
  * own language through `labels`; these only guarantee a reader never sees a key.
@@ -134,6 +201,30 @@ export declare const RECORD_COMMAND_FIELD = "__command";
134
201
  export declare const RECORD_DIALOG_ATTRIBUTE = "data-record-dialog";
135
202
  /** Whether anything in a layer was typed into since it rendered. Same rule as route modals. */
136
203
  export declare const recordLayerHasDraft: (layer: HTMLElement) => boolean;
204
+ /**
205
+ * How long a command may run before its button says so. Below this the answer
206
+ * arrives while the reader is still lifting their finger, and a spinner shown
207
+ * and withdrawn inside that window is noise; above it, silence would read as a
208
+ * click that did nothing.
209
+ */
210
+ export declare const BUSY_AFTER_MS = 400;
211
+ /**
212
+ * A flag that turns on late and off at once. Work that finishes inside the
213
+ * window never raises it, so a progress indicator bound to it appears only when
214
+ * there is progress to report, and never flashes on its way back out.
215
+ */
216
+ export declare const delayedFlag: (show: (value: boolean) => void, after?: number) => {
217
+ set: (running: boolean) => void;
218
+ stop: () => void;
219
+ };
220
+ /**
221
+ * Where a click is asking to go: the link it landed on, or the row it landed
222
+ * in. A table row carries its destination on the row itself (`rowLink: false`),
223
+ * so the whole row is one target rather than a link around the first cell. The
224
+ * shell would navigate such a row through the navigation layer, which fetches
225
+ * the collection again and leaves the modal unopened, so this reads it first.
226
+ */
227
+ export declare const openerHref: (element: Element | null) => string | null;
137
228
  /**
138
229
  * Create the island controller for one record kind.
139
230
  *
@@ -146,5 +237,5 @@ export declare const createRecordModal: <Data>(definition: RecordModalDefinition
146
237
  * appears and disposes it when the host leaves; props must be JSON.
147
238
  */
148
239
  export declare const recordIsland: (name: string, props: Record<string, unknown>) => TemplateResult;
149
- export { RECORD_PARAM, RECORD_TAB_PARAM, recordModalHref, recordModalClosedHref, readRecordModalTarget };
240
+ export { RECORD_NEW_ID, RECORD_PARAM, RECORD_TAB_PARAM, recordModalHref, recordModalCreateHref, recordModalClosedHref, readRecordModalTarget, };
150
241
  //# sourceMappingURL=record-modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-modal.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-modal.d.ts","sourceRoot":"","sources":["../../../../../../packages/ketsuite/src/ui/client/record-modal.tsx"],"names":[],"mappings":"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"}