@kaspernj/api-maker 1.0.2054 → 1.0.2056

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 (386) hide show
  1. package/build/api.js +65 -213
  2. package/build/attribute-not-loaded-error.js +3 -26
  3. package/build/base-component.js +4 -27
  4. package/build/base-error.js +21 -46
  5. package/build/base-model/attribute.js +15 -22
  6. package/build/base-model/column.js +5 -9
  7. package/build/base-model/reflection.js +12 -52
  8. package/build/base-model/scope.js +9 -46
  9. package/build/base-model.js +584 -837
  10. package/build/bootstrap/attribute-row.js +88 -173
  11. package/build/bootstrap/attribute-rows.js +22 -51
  12. package/build/bootstrap/card.js +77 -160
  13. package/build/bootstrap/checkbox.js +54 -103
  14. package/build/bootstrap/checkboxes.js +117 -203
  15. package/build/bootstrap/index.js +1 -1
  16. package/build/bootstrap/input.js +81 -132
  17. package/build/bootstrap/invalid-feedback.js +19 -47
  18. package/build/bootstrap/paginate.js +100 -165
  19. package/build/bootstrap/radio-buttons.js +44 -81
  20. package/build/bootstrap/select.js +44 -91
  21. package/build/bootstrap/sort-link.js +69 -152
  22. package/build/cable-connection-pool.js +44 -66
  23. package/build/cable-subscription-pool.js +105 -162
  24. package/build/cable-subscription.js +10 -17
  25. package/build/cache-key-generator.js +28 -37
  26. package/build/can-can.js +81 -202
  27. package/build/channels-consumer.js +6 -11
  28. package/build/collection-loader.js +36 -54
  29. package/build/collection.d.ts.map +1 -1
  30. package/build/collection.js +160 -308
  31. package/build/command-submit-data.d.ts +1 -1
  32. package/build/command-submit-data.d.ts.map +1 -1
  33. package/build/command-submit-data.js +30 -39
  34. package/build/commands-pool.js +140 -216
  35. package/build/compose.js +4 -12
  36. package/build/config.js +21 -68
  37. package/build/custom-error.js +5 -30
  38. package/build/data-set-to-attributes.js +6 -42
  39. package/build/deserializer.js +27 -80
  40. package/build/destroy-error.js +5 -30
  41. package/build/devise.js +84 -188
  42. package/build/draggable-sort/controller.js +88 -111
  43. package/build/draggable-sort/index.js +68 -145
  44. package/build/draggable-sort/item.js +132 -198
  45. package/build/error-logger.js +79 -164
  46. package/build/error-messages.js +5 -8
  47. package/build/event-connection.js +24 -62
  48. package/build/event-emitter-listener.js +7 -24
  49. package/build/event-model-class.js +20 -47
  50. package/build/events.js +4 -9
  51. package/build/form.js +66 -154
  52. package/build/history-expo.js +13 -25
  53. package/build/history-react-native.js +15 -27
  54. package/build/history.js +3 -5
  55. package/build/index.js +3 -6
  56. package/build/inputs/attachment.js +72 -123
  57. package/build/inputs/auto-submit.js +16 -55
  58. package/build/inputs/checkbox.js +78 -167
  59. package/build/inputs/checkboxes.js +76 -159
  60. package/build/inputs/id-for-component.js +5 -41
  61. package/build/inputs/input-wrapper.js +8 -27
  62. package/build/inputs/input.js +159 -245
  63. package/build/inputs/money.js +124 -186
  64. package/build/inputs/name-for-component.js +5 -41
  65. package/build/inputs/select.js +69 -123
  66. package/build/instance-of-class-name.js +16 -21
  67. package/build/is-expo.js +9 -11
  68. package/build/key-value-store.js +52 -128
  69. package/build/link.js +52 -115
  70. package/build/logger.js +20 -26
  71. package/build/merge-styles.js +6 -10
  72. package/build/modal.js +15 -62
  73. package/build/model-class-require.js +9 -44
  74. package/build/model-events.js +25 -34
  75. package/build/model-name.js +16 -57
  76. package/build/model-prop-type.js +52 -63
  77. package/build/model-recipes-loader.js +17 -25
  78. package/build/model-recipes-model-loader.d.ts +1 -1
  79. package/build/model-recipes-model-loader.js +130 -208
  80. package/build/models-response-reader.js +25 -66
  81. package/build/models.js +6 -11
  82. package/build/money-formatter.d.ts +2 -2
  83. package/build/money-formatter.d.ts.map +1 -1
  84. package/build/money-formatter.js +46 -56
  85. package/build/not-loaded-error.js +3 -26
  86. package/build/params.js +32 -42
  87. package/build/preloaded.js +19 -59
  88. package/build/resize-observer.js +6 -12
  89. package/build/rest-props-validator.js +5 -7
  90. package/build/result.js +11 -15
  91. package/build/router/route.js +179 -312
  92. package/build/router/switch.js +56 -130
  93. package/build/router.js +34 -94
  94. package/build/routes-native.js +64 -148
  95. package/build/routes.js +26 -80
  96. package/build/run-last.js +20 -25
  97. package/build/serializer.js +29 -34
  98. package/build/services.js +10 -19
  99. package/build/session-status-updater.js +85 -184
  100. package/build/source-maps-loader.d.ts +37 -0
  101. package/build/source-maps-loader.d.ts.map +1 -0
  102. package/build/source-maps-loader.js +103 -225
  103. package/build/super-admin/config-reader.d.ts +2 -2
  104. package/build/super-admin/config-reader.js +42 -83
  105. package/build/super-admin/edit-page/edit-attribute-checkbox.js +53 -115
  106. package/build/super-admin/edit-page/edit-attribute-content.js +47 -77
  107. package/build/super-admin/edit-page/edit-attribute-input.js +57 -119
  108. package/build/super-admin/edit-page/edit-attribute.js +40 -104
  109. package/build/super-admin/edit-page.js +88 -201
  110. package/build/super-admin/has-edit-config.js +7 -13
  111. package/build/super-admin/index-page.js +17 -44
  112. package/build/super-admin/index.js +87 -210
  113. package/build/super-admin/layout/header/index.js +91 -152
  114. package/build/super-admin/layout/index.js +70 -153
  115. package/build/super-admin/layout/menu/index.js +85 -161
  116. package/build/super-admin/layout/menu/menu-content.js +25 -85
  117. package/build/super-admin/layout/menu/menu-item.js +52 -102
  118. package/build/super-admin/layout/no-access.js +19 -45
  119. package/build/super-admin/model-class-table.js +45 -129
  120. package/build/super-admin/models.js +6 -42
  121. package/build/super-admin/show-nav.js +27 -89
  122. package/build/super-admin/show-page/belongs-to-attribute-row.js +18 -76
  123. package/build/super-admin/show-page/index.js +101 -187
  124. package/build/super-admin/show-reflection-actions.js +39 -100
  125. package/build/super-admin/show-reflection-link.js +27 -99
  126. package/build/super-admin/show-reflection-page.js +34 -97
  127. package/build/table/column-content.js +77 -121
  128. package/build/table/column-identifier.js +7 -11
  129. package/build/table/column-visible.js +2 -5
  130. package/build/table/components/column.js +13 -60
  131. package/build/table/components/flat-list.js +13 -60
  132. package/build/table/components/header.js +15 -62
  133. package/build/table/components/row.js +16 -63
  134. package/build/table/filters/attribute-element.js +34 -62
  135. package/build/table/filters/filter-form.js +280 -483
  136. package/build/table/filters/filter.js +45 -73
  137. package/build/table/filters/index.js +95 -139
  138. package/build/table/filters/load-search-modal.js +64 -212
  139. package/build/table/filters/reflection-element.js +27 -55
  140. package/build/table/filters/save-search-modal.js +44 -140
  141. package/build/table/filters/scope-element.js +28 -56
  142. package/build/table/header-column-content.js +33 -71
  143. package/build/table/header-column.js +89 -218
  144. package/build/table/header-select.js +45 -77
  145. package/build/table/model-callback-args.js +5 -41
  146. package/build/table/model-column.js +59 -144
  147. package/build/table/model-row.js +75 -187
  148. package/build/table/select-calculator.js +27 -86
  149. package/build/table/settings/column-row.js +66 -186
  150. package/build/table/settings/download-action.js +38 -74
  151. package/build/table/settings/index.js +38 -102
  152. package/build/table/table-settings.js +185 -323
  153. package/build/table/table.js +583 -781
  154. package/build/table/use-sorting.js +16 -35
  155. package/build/table/widths.js +32 -38
  156. package/build/table/worker-plugins-check-all-checkbox.js +77 -225
  157. package/build/table/worker-plugins-checkbox.js +74 -185
  158. package/build/translated-attributes.js +6 -11
  159. package/build/translated-collections.js +11 -20
  160. package/build/updated-attribute.js +47 -120
  161. package/build/url-encode.js +6 -12
  162. package/build/use-breakpoint.js +43 -95
  163. package/build/use-can-can.js +30 -92
  164. package/build/use-collection.js +119 -229
  165. package/build/use-created-event.js +27 -44
  166. package/build/use-current-user-context.js +57 -151
  167. package/build/use-current-user.js +14 -32
  168. package/build/use-destroyed-event.js +22 -43
  169. package/build/use-event-emitter.d.ts +1 -2
  170. package/build/use-event-emitter.d.ts.map +1 -1
  171. package/build/use-event-emitter.js +10 -16
  172. package/build/use-event-listener.js +13 -22
  173. package/build/use-input.js +49 -69
  174. package/build/use-model-event.js +22 -43
  175. package/build/use-model.js +96 -199
  176. package/build/use-resize-observer.js +11 -21
  177. package/build/use-router.js +65 -107
  178. package/build/use-screen-layout.js +17 -19
  179. package/build/use-styles.js +24 -75
  180. package/build/use-updated-event.js +22 -44
  181. package/build/use-validation-errors.js +12 -18
  182. package/build/utils/button.js +86 -136
  183. package/build/utils/card.js +31 -106
  184. package/build/utils/checkbox.js +51 -112
  185. package/build/utils/checkboxes.js +109 -182
  186. package/build/utils/default-style.js +29 -103
  187. package/build/utils/header.js +8 -35
  188. package/build/utils/icon.js +36 -117
  189. package/build/utils/invalid-feedback.js +16 -43
  190. package/build/utils/modal.js +25 -108
  191. package/build/utils/text.js +10 -37
  192. package/build/validation-error.js +31 -89
  193. package/build/validation-errors.js +61 -111
  194. package/build/with-api-maker.js +15 -67
  195. package/build/with-collection.js +14 -64
  196. package/build/with-current-user.js +7 -23
  197. package/build/with-model.js +11 -27
  198. package/build/with-router.js +8 -35
  199. package/package.json +4 -3
  200. package/build/api.js.map +0 -1
  201. package/build/attribute-not-loaded-error.js.map +0 -1
  202. package/build/base-component.js.map +0 -1
  203. package/build/base-error.js.map +0 -1
  204. package/build/base-model/attribute.js.map +0 -1
  205. package/build/base-model/column.js.map +0 -1
  206. package/build/base-model/reflection.js.map +0 -1
  207. package/build/base-model/scope.js.map +0 -1
  208. package/build/base-model.js.map +0 -1
  209. package/build/bootstrap/attribute-row.js.map +0 -1
  210. package/build/bootstrap/attribute-rows.js.map +0 -1
  211. package/build/bootstrap/card.js.map +0 -1
  212. package/build/bootstrap/checkbox.js.map +0 -1
  213. package/build/bootstrap/checkboxes.js.map +0 -1
  214. package/build/bootstrap/index.js.map +0 -1
  215. package/build/bootstrap/input.js.map +0 -1
  216. package/build/bootstrap/invalid-feedback.js.map +0 -1
  217. package/build/bootstrap/paginate.js.map +0 -1
  218. package/build/bootstrap/radio-buttons.js.map +0 -1
  219. package/build/bootstrap/select.js.map +0 -1
  220. package/build/bootstrap/sort-link.js.map +0 -1
  221. package/build/cable-connection-pool.js.map +0 -1
  222. package/build/cable-subscription-pool.js.map +0 -1
  223. package/build/cable-subscription.js.map +0 -1
  224. package/build/cache-key-generator.js.map +0 -1
  225. package/build/can-can.js.map +0 -1
  226. package/build/channels-consumer.js.map +0 -1
  227. package/build/collection-loader.js.map +0 -1
  228. package/build/collection.js.map +0 -1
  229. package/build/command-submit-data.js.map +0 -1
  230. package/build/commands-pool.js.map +0 -1
  231. package/build/compose.js.map +0 -1
  232. package/build/config.js.map +0 -1
  233. package/build/custom-error.js.map +0 -1
  234. package/build/data-set-to-attributes.js.map +0 -1
  235. package/build/deserializer.js.map +0 -1
  236. package/build/destroy-error.js.map +0 -1
  237. package/build/devise.js.map +0 -1
  238. package/build/draggable-sort/controller.js.map +0 -1
  239. package/build/draggable-sort/index.js.map +0 -1
  240. package/build/draggable-sort/item.js.map +0 -1
  241. package/build/error-logger.js.map +0 -1
  242. package/build/error-messages.js.map +0 -1
  243. package/build/event-connection.js.map +0 -1
  244. package/build/event-emitter-listener.js.map +0 -1
  245. package/build/event-model-class.js.map +0 -1
  246. package/build/events.js.map +0 -1
  247. package/build/form.js.map +0 -1
  248. package/build/history-expo.js.map +0 -1
  249. package/build/history-react-native.js.map +0 -1
  250. package/build/history.js.map +0 -1
  251. package/build/index.js.map +0 -1
  252. package/build/inputs/attachment.js.map +0 -1
  253. package/build/inputs/auto-submit.js.map +0 -1
  254. package/build/inputs/checkbox.js.map +0 -1
  255. package/build/inputs/checkboxes.js.map +0 -1
  256. package/build/inputs/id-for-component.js.map +0 -1
  257. package/build/inputs/input-wrapper.js.map +0 -1
  258. package/build/inputs/input.js.map +0 -1
  259. package/build/inputs/money.js.map +0 -1
  260. package/build/inputs/name-for-component.js.map +0 -1
  261. package/build/inputs/select.js.map +0 -1
  262. package/build/instance-of-class-name.js.map +0 -1
  263. package/build/is-expo.js.map +0 -1
  264. package/build/key-value-store.js.map +0 -1
  265. package/build/link.js.map +0 -1
  266. package/build/logger.js.map +0 -1
  267. package/build/merge-styles.js.map +0 -1
  268. package/build/modal.js.map +0 -1
  269. package/build/model-class-require.js.map +0 -1
  270. package/build/model-events.js.map +0 -1
  271. package/build/model-name.js.map +0 -1
  272. package/build/model-prop-type.js.map +0 -1
  273. package/build/model-recipes-loader.js.map +0 -1
  274. package/build/model-recipes-model-loader.js.map +0 -1
  275. package/build/models-response-reader.js.map +0 -1
  276. package/build/models.js.map +0 -1
  277. package/build/money-formatter.js.map +0 -1
  278. package/build/not-loaded-error.js.map +0 -1
  279. package/build/params.js.map +0 -1
  280. package/build/preloaded.js.map +0 -1
  281. package/build/resize-observer.js.map +0 -1
  282. package/build/rest-props-validator.js.map +0 -1
  283. package/build/result.js.map +0 -1
  284. package/build/router/route.js.map +0 -1
  285. package/build/router/switch.js.map +0 -1
  286. package/build/router.js.map +0 -1
  287. package/build/routes-native.js.map +0 -1
  288. package/build/routes.js.map +0 -1
  289. package/build/run-last.js.map +0 -1
  290. package/build/serializer.js.map +0 -1
  291. package/build/services.js.map +0 -1
  292. package/build/session-status-updater.js.map +0 -1
  293. package/build/source-maps-loader.js.map +0 -1
  294. package/build/super-admin/config-reader.js.map +0 -1
  295. package/build/super-admin/edit-page/edit-attribute-checkbox.js.map +0 -1
  296. package/build/super-admin/edit-page/edit-attribute-content.js.map +0 -1
  297. package/build/super-admin/edit-page/edit-attribute-input.js.map +0 -1
  298. package/build/super-admin/edit-page/edit-attribute.js.map +0 -1
  299. package/build/super-admin/edit-page.js.map +0 -1
  300. package/build/super-admin/has-edit-config.js.map +0 -1
  301. package/build/super-admin/index-page.js.map +0 -1
  302. package/build/super-admin/index.js.map +0 -1
  303. package/build/super-admin/layout/header/index.js.map +0 -1
  304. package/build/super-admin/layout/index.js.map +0 -1
  305. package/build/super-admin/layout/menu/index.js.map +0 -1
  306. package/build/super-admin/layout/menu/menu-content.js.map +0 -1
  307. package/build/super-admin/layout/menu/menu-item.js.map +0 -1
  308. package/build/super-admin/layout/no-access.js.map +0 -1
  309. package/build/super-admin/model-class-table.js.map +0 -1
  310. package/build/super-admin/models.js.map +0 -1
  311. package/build/super-admin/show-nav.js.map +0 -1
  312. package/build/super-admin/show-page/belongs-to-attribute-row.js.map +0 -1
  313. package/build/super-admin/show-page/index.js.map +0 -1
  314. package/build/super-admin/show-reflection-actions.js.map +0 -1
  315. package/build/super-admin/show-reflection-link.js.map +0 -1
  316. package/build/super-admin/show-reflection-page.js.map +0 -1
  317. package/build/table/column-content.js.map +0 -1
  318. package/build/table/column-identifier.js.map +0 -1
  319. package/build/table/column-visible.js.map +0 -1
  320. package/build/table/components/column.js.map +0 -1
  321. package/build/table/components/flat-list.js.map +0 -1
  322. package/build/table/components/header.js.map +0 -1
  323. package/build/table/components/row.js.map +0 -1
  324. package/build/table/filters/attribute-element.js.map +0 -1
  325. package/build/table/filters/filter-form.js.map +0 -1
  326. package/build/table/filters/filter.js.map +0 -1
  327. package/build/table/filters/index.js.map +0 -1
  328. package/build/table/filters/load-search-modal.js.map +0 -1
  329. package/build/table/filters/reflection-element.js.map +0 -1
  330. package/build/table/filters/save-search-modal.js.map +0 -1
  331. package/build/table/filters/scope-element.js.map +0 -1
  332. package/build/table/header-column-content.js.map +0 -1
  333. package/build/table/header-column.js.map +0 -1
  334. package/build/table/header-select.js.map +0 -1
  335. package/build/table/model-callback-args.js.map +0 -1
  336. package/build/table/model-column.js.map +0 -1
  337. package/build/table/model-row.js.map +0 -1
  338. package/build/table/select-calculator.js.map +0 -1
  339. package/build/table/settings/column-row.js.map +0 -1
  340. package/build/table/settings/download-action.js.map +0 -1
  341. package/build/table/settings/index.js.map +0 -1
  342. package/build/table/table-settings.js.map +0 -1
  343. package/build/table/table.js.map +0 -1
  344. package/build/table/use-sorting.js.map +0 -1
  345. package/build/table/widths.js.map +0 -1
  346. package/build/table/worker-plugins-check-all-checkbox.js.map +0 -1
  347. package/build/table/worker-plugins-checkbox.js.map +0 -1
  348. package/build/translated-attributes.js.map +0 -1
  349. package/build/translated-collections.js.map +0 -1
  350. package/build/updated-attribute.js.map +0 -1
  351. package/build/url-encode.js.map +0 -1
  352. package/build/use-breakpoint.js.map +0 -1
  353. package/build/use-can-can.js.map +0 -1
  354. package/build/use-collection.js.map +0 -1
  355. package/build/use-created-event.js.map +0 -1
  356. package/build/use-current-user-context.js.map +0 -1
  357. package/build/use-current-user.js.map +0 -1
  358. package/build/use-destroyed-event.js.map +0 -1
  359. package/build/use-event-emitter.js.map +0 -1
  360. package/build/use-event-listener.js.map +0 -1
  361. package/build/use-input.js.map +0 -1
  362. package/build/use-model-event.js.map +0 -1
  363. package/build/use-model.js.map +0 -1
  364. package/build/use-resize-observer.js.map +0 -1
  365. package/build/use-router.js.map +0 -1
  366. package/build/use-screen-layout.js.map +0 -1
  367. package/build/use-styles.js.map +0 -1
  368. package/build/use-updated-event.js.map +0 -1
  369. package/build/use-validation-errors.js.map +0 -1
  370. package/build/utils/button.js.map +0 -1
  371. package/build/utils/card.js.map +0 -1
  372. package/build/utils/checkbox.js.map +0 -1
  373. package/build/utils/checkboxes.js.map +0 -1
  374. package/build/utils/default-style.js.map +0 -1
  375. package/build/utils/header.js.map +0 -1
  376. package/build/utils/icon.js.map +0 -1
  377. package/build/utils/invalid-feedback.js.map +0 -1
  378. package/build/utils/modal.js.map +0 -1
  379. package/build/utils/text.js.map +0 -1
  380. package/build/validation-error.js.map +0 -1
  381. package/build/validation-errors.js.map +0 -1
  382. package/build/with-api-maker.js.map +0 -1
  383. package/build/with-collection.js.map +0 -1
  384. package/build/with-current-user.js.map +0 -1
  385. package/build/with-model.js.map +0 -1
  386. package/build/with-router.js.map +0 -1
@@ -1,191 +1,129 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import React, { useRef } from "react";
3
+ import { shapeComponent, ShapeComponent } from "set-state-compare/build/shape-component.js";
4
+ import classNames from "classnames";
5
+ import Config from "../config.js";
6
+ import { digg } from "diggerize";
7
+ import idForComponent from "./id-for-component.js";
8
+ import * as inflection from "inflection";
9
+ import memo from "set-state-compare/build/memo.js";
10
+ import MoneyFormatter from "../money-formatter.js";
11
+ import PropTypes from "prop-types";
12
+ import PropTypesExact from "prop-types-exact";
13
+ export default memo(shapeComponent(class ApiMakerInputsMoney extends ShapeComponent {
14
+ static defaultProps = {
15
+ disabled: false,
16
+ showCurrencyOptions: true
15
17
  };
16
- })();
17
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
18
- if (k2 === undefined) k2 = k;
19
- var desc = Object.getOwnPropertyDescriptor(m, k);
20
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
21
- desc = { enumerable: true, get: function() { return m[k]; } };
18
+ static propTypes = PropTypesExact({
19
+ attribute: PropTypes.string,
20
+ centsInputName: PropTypes.string,
21
+ className: PropTypes.string,
22
+ currenciesCollection: PropTypes.array,
23
+ currencyName: PropTypes.string,
24
+ currencyRef: PropTypes.object,
25
+ defaultValue: PropTypes.object,
26
+ disabled: PropTypes.bool.isRequired,
27
+ id: PropTypes.string,
28
+ inputRef: PropTypes.object,
29
+ label: PropTypes.any,
30
+ model: PropTypes.object,
31
+ name: PropTypes.string,
32
+ onChange: PropTypes.func,
33
+ placeholder: PropTypes.any,
34
+ showCurrencyOptions: PropTypes.bool,
35
+ small: PropTypes.bool,
36
+ type: PropTypes.string,
37
+ wholeRef: PropTypes.object
38
+ });
39
+ setup() {
40
+ this.inputRef = useRef();
41
+ this.currencyRefBackup = useRef();
42
+ this.currencyRef = this.props.currencyRef || this.currencyRefBackup;
43
+ this.wholeRefBackup = useRef();
44
+ this.wholeRef = this.props.wholeRef || this.wholeRefBackup;
22
45
  }
23
- Object.defineProperty(o, k2, desc);
24
- }) : (function(o, m, k, k2) {
25
- if (k2 === undefined) k2 = k;
26
- o[k2] = m[k];
27
- }));
28
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
29
- Object.defineProperty(o, "default", { enumerable: true, value: v });
30
- }) : function(o, v) {
31
- o["default"] = v;
32
- });
33
- var __importStar = (this && this.__importStar) || (function () {
34
- var ownKeys = function(o) {
35
- ownKeys = Object.getOwnPropertyNames || function (o) {
36
- var ar = [];
37
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
38
- return ar;
39
- };
40
- return ownKeys(o);
46
+ getInputRef = () => this.props.inputRef || this.inputRef;
47
+ render() {
48
+ const { attribute, className, disabled, model, showCurrencyOptions } = this.props;
49
+ let { currenciesCollection } = this.props;
50
+ if (!currenciesCollection)
51
+ currenciesCollection = Config.getCurrenciesCollection();
52
+ return (_jsxs("div", { className: "api-maker-inputs-money", "data-attribute": attribute, "data-model-id": model?.id(), children: [_jsx("input", { defaultValue: this.inputDefaultCentsValue(), id: this.inputCentsId(), name: this.inputCentsName(), ref: this.getInputRef(), type: "hidden" }), _jsx("input", { className: classNames("money-cents", className), defaultValue: this.inputDefaultValue(), disabled: disabled, id: this.inputId(), onBlur: this.tt.setAmount, onChange: this.tt.setCents, onKeyUp: this.tt.setCents, placeholder: this.props.placeholder, ref: this.tt.wholeRef, type: "text" }), showCurrencyOptions &&
53
+ _jsxs("select", { className: "money-currency", defaultValue: this.inputCurrencyValue(), disabled: disabled, id: this.inputCurrencyId(), name: this.inputCurrencyName(), onChange: this.tt.onCurrencyChanged, ref: this.tt.currencyRef, children: [_jsx("option", {}), currenciesCollection.map((option) => (_jsxs("option", { value: option[1], children: [this.props.small && option[1], !this.props.small && option[0]] }, `select-option-${option[1]}`)))] })] }));
54
+ }
55
+ inputCurrencyId = () => `${this.inputId()}_currency`;
56
+ inputCurrencyName() {
57
+ if ("currencyName" in this.props)
58
+ return this.props.currencyName;
59
+ return `${this.props.model.modelClassData().paramKey}[${inflection.underscore(this.props.attribute)}_currency]`;
60
+ }
61
+ inputCurrencyValue() {
62
+ const { defaultValue } = this.props;
63
+ if (defaultValue) {
64
+ return MoneyFormatter.currencyFromMoney(defaultValue).code;
65
+ }
66
+ else {
67
+ return "DKK";
68
+ }
69
+ }
70
+ inputDefaultValue() {
71
+ const { defaultValue } = this.props;
72
+ if (defaultValue) {
73
+ return MoneyFormatter.fromMoney({ amount: defaultValue.amount, currency: this.inputCurrencyValue() }, { decimals: 2, excludeCurrency: true }).toString();
74
+ }
75
+ else {
76
+ return "";
77
+ }
78
+ }
79
+ inputDefaultCentsValue() {
80
+ const { defaultValue } = this.props;
81
+ if (this.getInputRef().current) {
82
+ return digg(this.getInputRef(), "current", "value");
83
+ }
84
+ else if (defaultValue) {
85
+ return MoneyFormatter.amountFromMoney(defaultValue);
86
+ }
87
+ }
88
+ inputCentsId = () => `${this.inputId()}_cents`;
89
+ inputCentsName() {
90
+ if ("name" in this.props)
91
+ return this.props.name;
92
+ return `${this.props.model.modelClassData().paramKey}[${inflection.underscore(this.props.attribute)}_cents]`;
93
+ }
94
+ inputId = () => idForComponent(this);
95
+ onCurrencyChanged = () => {
96
+ if (this.props.onChange)
97
+ this.props.onChange();
41
98
  };
42
- return function (mod) {
43
- if (mod && mod.__esModule) return mod;
44
- var result = {};
45
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
46
- __setModuleDefault(result, mod);
47
- return result;
99
+ setAmount = () => {
100
+ const inputElement = this.getInputRef().current;
101
+ if (!inputElement)
102
+ return;
103
+ if (!inputElement.value && inputElement.value == "") {
104
+ this.wholeRef.current.value = "";
105
+ }
106
+ else {
107
+ const cents = parseFloat(inputElement.value);
108
+ const formatted = MoneyFormatter.fromMoney({ amount: cents, currency: this.inputCurrencyValue() }, { decimals: 2, excludeCurrency: true }).toString();
109
+ this.wholeRef.current.value = formatted;
110
+ }
48
111
  };
49
- })();
50
- var __importDefault = (this && this.__importDefault) || function (mod) {
51
- return (mod && mod.__esModule) ? mod : { "default": mod };
52
- };
53
- var _a;
54
- Object.defineProperty(exports, "__esModule", { value: true });
55
- var jsx_runtime_1 = require("react/jsx-runtime");
56
- var react_1 = __importStar(require("react"));
57
- var shape_component_js_1 = require("set-state-compare/build/shape-component.js");
58
- var classnames_1 = __importDefault(require("classnames"));
59
- var config_js_1 = __importDefault(require("../config.js"));
60
- var diggerize_1 = require("diggerize");
61
- var id_for_component_js_1 = __importDefault(require("./id-for-component.js"));
62
- var inflection = __importStar(require("inflection"));
63
- var memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
64
- var money_formatter_js_1 = __importDefault(require("../money-formatter.js"));
65
- var prop_types_1 = __importDefault(require("prop-types"));
66
- var prop_types_exact_1 = __importDefault(require("prop-types-exact"));
67
- exports.default = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)((_a = /** @class */ (function (_super) {
68
- __extends(ApiMakerInputsMoney, _super);
69
- function ApiMakerInputsMoney() {
70
- var _this = _super !== null && _super.apply(this, arguments) || this;
71
- _this.getInputRef = function () { return _this.props.inputRef || _this.inputRef; };
72
- _this.inputCurrencyId = function () { return "".concat(_this.inputId(), "_currency"); };
73
- _this.inputCentsId = function () { return "".concat(_this.inputId(), "_cents"); };
74
- _this.inputId = function () { return (0, id_for_component_js_1.default)(_this); };
75
- _this.onCurrencyChanged = function () {
76
- if (_this.props.onChange)
77
- _this.props.onChange();
78
- };
79
- _this.setAmount = function () {
80
- var inputElement = _this.getInputRef().current;
81
- if (!inputElement)
82
- return;
83
- if (!inputElement.value && inputElement.value == "") {
84
- _this.wholeRef.current.value = "";
85
- }
86
- else {
87
- var cents = parseFloat(inputElement.value);
88
- var formatted = money_formatter_js_1.default.fromMoney({ amount: cents, currency: _this.inputCurrencyValue() }, { decimals: 2, excludeCurrency: true }).toString();
89
- _this.wholeRef.current.value = formatted;
90
- }
91
- };
92
- _this.setCents = function () {
93
- var inputElement = _this.getInputRef().current;
94
- if (!inputElement)
95
- return;
96
- var whole = money_formatter_js_1.default.stringToFloat(_this.wholeRef.current.value);
97
- var cents = parseInt(whole * 100, 10);
98
- var oldCents = parseInt(inputElement.value, 10);
99
- if (typeof cents == "number") {
100
- inputElement.value = cents;
101
- }
102
- else {
103
- inputElement.value = '';
104
- }
105
- if (_this.props.onChange && oldCents != cents)
106
- _this.props.onChange();
107
- };
108
- return _this;
112
+ setCents = () => {
113
+ const inputElement = this.getInputRef().current;
114
+ if (!inputElement)
115
+ return;
116
+ let whole = MoneyFormatter.stringToFloat(this.wholeRef.current.value);
117
+ let cents = parseInt(whole * 100, 10);
118
+ let oldCents = parseInt(inputElement.value, 10);
119
+ if (typeof cents == "number") {
120
+ inputElement.value = cents;
109
121
  }
110
- ApiMakerInputsMoney.prototype.setup = function () {
111
- this.inputRef = (0, react_1.useRef)();
112
- this.currencyRefBackup = (0, react_1.useRef)();
113
- this.currencyRef = this.props.currencyRef || this.currencyRefBackup;
114
- this.wholeRefBackup = (0, react_1.useRef)();
115
- this.wholeRef = this.props.wholeRef || this.wholeRefBackup;
116
- };
117
- ApiMakerInputsMoney.prototype.render = function () {
118
- var _this = this;
119
- var _b = this.props, attribute = _b.attribute, className = _b.className, disabled = _b.disabled, model = _b.model, showCurrencyOptions = _b.showCurrencyOptions;
120
- var currenciesCollection = this.props.currenciesCollection;
121
- if (!currenciesCollection)
122
- currenciesCollection = config_js_1.default.getCurrenciesCollection();
123
- return ((0, jsx_runtime_1.jsxs)("div", { className: "api-maker-inputs-money", "data-attribute": attribute, "data-model-id": model === null || model === void 0 ? void 0 : model.id(), children: [(0, jsx_runtime_1.jsx)("input", { defaultValue: this.inputDefaultCentsValue(), id: this.inputCentsId(), name: this.inputCentsName(), ref: this.getInputRef(), type: "hidden" }), (0, jsx_runtime_1.jsx)("input", { className: (0, classnames_1.default)("money-cents", className), defaultValue: this.inputDefaultValue(), disabled: disabled, id: this.inputId(), onBlur: this.tt.setAmount, onChange: this.tt.setCents, onKeyUp: this.tt.setCents, placeholder: this.props.placeholder, ref: this.tt.wholeRef, type: "text" }), showCurrencyOptions &&
124
- (0, jsx_runtime_1.jsxs)("select", { className: "money-currency", defaultValue: this.inputCurrencyValue(), disabled: disabled, id: this.inputCurrencyId(), name: this.inputCurrencyName(), onChange: this.tt.onCurrencyChanged, ref: this.tt.currencyRef, children: [(0, jsx_runtime_1.jsx)("option", {}), currenciesCollection.map(function (option) { return ((0, jsx_runtime_1.jsxs)("option", { value: option[1], children: [_this.props.small && option[1], !_this.props.small && option[0]] }, "select-option-".concat(option[1]))); })] })] }));
125
- };
126
- ApiMakerInputsMoney.prototype.inputCurrencyName = function () {
127
- if ("currencyName" in this.props)
128
- return this.props.currencyName;
129
- return "".concat(this.props.model.modelClassData().paramKey, "[").concat(inflection.underscore(this.props.attribute), "_currency]");
130
- };
131
- ApiMakerInputsMoney.prototype.inputCurrencyValue = function () {
132
- var defaultValue = this.props.defaultValue;
133
- if (defaultValue) {
134
- return money_formatter_js_1.default.currencyFromMoney(defaultValue).code;
135
- }
136
- else {
137
- return "DKK";
138
- }
139
- };
140
- ApiMakerInputsMoney.prototype.inputDefaultValue = function () {
141
- var defaultValue = this.props.defaultValue;
142
- if (defaultValue) {
143
- return money_formatter_js_1.default.fromMoney({ amount: defaultValue.amount, currency: this.inputCurrencyValue() }, { decimals: 2, excludeCurrency: true }).toString();
144
- }
145
- else {
146
- return "";
147
- }
148
- };
149
- ApiMakerInputsMoney.prototype.inputDefaultCentsValue = function () {
150
- var defaultValue = this.props.defaultValue;
151
- if (this.getInputRef().current) {
152
- return (0, diggerize_1.digg)(this.getInputRef(), "current", "value");
153
- }
154
- else if (defaultValue) {
155
- return money_formatter_js_1.default.amountFromMoney(defaultValue);
156
- }
157
- };
158
- ApiMakerInputsMoney.prototype.inputCentsName = function () {
159
- if ("name" in this.props)
160
- return this.props.name;
161
- return "".concat(this.props.model.modelClassData().paramKey, "[").concat(inflection.underscore(this.props.attribute), "_cents]");
162
- };
163
- return ApiMakerInputsMoney;
164
- }(shape_component_js_1.ShapeComponent)),
165
- _a.defaultProps = {
166
- disabled: false,
167
- showCurrencyOptions: true
168
- },
169
- _a.propTypes = (0, prop_types_exact_1.default)({
170
- attribute: prop_types_1.default.string,
171
- centsInputName: prop_types_1.default.string,
172
- className: prop_types_1.default.string,
173
- currenciesCollection: prop_types_1.default.array,
174
- currencyName: prop_types_1.default.string,
175
- currencyRef: prop_types_1.default.object,
176
- defaultValue: prop_types_1.default.object,
177
- disabled: prop_types_1.default.bool.isRequired,
178
- id: prop_types_1.default.string,
179
- inputRef: prop_types_1.default.object,
180
- label: prop_types_1.default.any,
181
- model: prop_types_1.default.object,
182
- name: prop_types_1.default.string,
183
- onChange: prop_types_1.default.func,
184
- placeholder: prop_types_1.default.any,
185
- showCurrencyOptions: prop_types_1.default.bool,
186
- small: prop_types_1.default.bool,
187
- type: prop_types_1.default.string,
188
- wholeRef: prop_types_1.default.object
189
- }),
190
- _a)));
191
- //# sourceMappingURL=money.js.map
122
+ else {
123
+ inputElement.value = '';
124
+ }
125
+ if (this.props.onChange && oldCents != cents)
126
+ this.props.onChange();
127
+ };
128
+ }));
129
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uZXkuanMiLCJzb3VyY2VSb290IjoiL3NyYy8iLCJzb3VyY2VzIjpbImlucHV0cy9tb25leS5qc3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sS0FBSyxFQUFFLEVBQUMsTUFBTSxFQUFDLE1BQU0sT0FBTyxDQUFBO0FBQ25DLE9BQU8sRUFBQyxjQUFjLEVBQUUsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekYsT0FBTyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ25DLE9BQU8sTUFBTSxNQUFNLGNBQWMsQ0FBQTtBQUNqQyxPQUFPLEVBQUMsSUFBSSxFQUFDLE1BQU0sV0FBVyxDQUFBO0FBQzlCLE9BQU8sY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ2xELE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBQ3hDLE9BQU8sSUFBSSxNQUFNLGlDQUFpQyxDQUFBO0FBQ2xELE9BQU8sY0FBYyxNQUFNLHVCQUF1QixDQUFBO0FBQ2xELE9BQU8sU0FBUyxNQUFNLFlBQVksQ0FBQTtBQUNsQyxPQUFPLGNBQWMsTUFBTSxrQkFBa0IsQ0FBQTtBQUU3QyxlQUFlLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxtQkFBb0IsU0FBUSxjQUFjO0lBQ2pGLE1BQU0sQ0FBQyxZQUFZLEdBQUc7UUFDcEIsUUFBUSxFQUFFLEtBQUs7UUFDZixtQkFBbUIsRUFBRSxJQUFJO0tBQzFCLENBQUE7SUFFRCxNQUFNLENBQUMsU0FBUyxHQUFHLGNBQWMsQ0FBQztRQUNoQyxTQUFTLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDM0IsY0FBYyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ2hDLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixvQkFBb0IsRUFBRSxTQUFTLENBQUMsS0FBSztRQUNyQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDOUIsV0FBVyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzdCLFlBQVksRUFBRSxTQUFTLENBQUMsTUFBTTtR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LGFBQWEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNyRSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUNyQyxJQUFJLFFBQVEsR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUUvQyxJQUFJLE9BQU8sS0FBSyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLFlBQVksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFBO1FBQzVCLENBQUM7YUFBTSxDQUFDO1lBQ04sWUFBWSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUE7UUFDekIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksUUFBUSxJQUFJLEtBQUs7WUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFBO0lBQ3JFLENBQUMsQ0FBQTtDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7dXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudCwgU2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSBcImNsYXNzbmFtZXNcIlxuaW1wb3J0IENvbmZpZyBmcm9tIFwiLi4vY29uZmlnLmpzXCJcbmltcG9ydCB7ZGlnZ30gZnJvbSBcImRpZ2dlcml6ZVwiXG5pbXBvcnQgaWRGb3JDb21wb25lbnQgZnJvbSBcIi4vaWQtZm9yLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcbmltcG9ydCBtZW1vIGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9tZW1vLmpzXCJcbmltcG9ydCBNb25leUZvcm1hdHRlciBmcm9tIFwiLi4vbW9uZXktZm9ybWF0dGVyLmpzXCJcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSBcInByb3AtdHlwZXNcIlxuaW1wb3J0IFByb3BUeXBlc0V4YWN0IGZyb20gXCJwcm9wLXR5cGVzLWV4YWN0XCJcblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBBcGlNYWtlcklucHV0c01vbmV5IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIGRpc2FibGVkOiBmYWxzZSxcbiAgICBzaG93Q3VycmVuY3lPcHRpb25zOiB0cnVlXG4gIH1cblxuICBzdGF0aWMgcHJvcFR5cGVzID0gUHJvcFR5cGVzRXhhY3Qoe1xuICAgIGF0dHJpYnV0ZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjZW50c0lucHV0TmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY3VycmVuY2llc0NvbGxlY3Rpb246IFByb3BUeXBlcy5hcnJheSxcbiAgICBjdXJyZW5jeU5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY3VycmVuY3lSZWY6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgZGVmYXVsdFZhbHVlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGlucHV0UmVmOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGxhYmVsOiBQcm9wVHlwZXMuYW55LFxuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAgIHBsYWNlaG9sZGVyOiBQcm9wVHlwZXMuYW55LFxuICAgIHNob3dDdXJyZW5jeU9wdGlvbnM6IFByb3BUeXBlcy5ib29sLFxuICAgIHNtYWxsOiBQcm9wVHlwZXMuYm9vbCxcbiAgICB0eXBlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHdob2xlUmVmOiBQcm9wVHlwZXMub2JqZWN0XG4gIH0pXG5cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy5pbnB1dFJlZiA9IHVzZVJlZigpXG4gICAgdGhpcy5jdXJyZW5jeVJlZkJhY2t1cCA9IHVzZVJlZigpXG4gICAgdGhpcy5jdXJyZW5jeVJlZiA9IHRoaXMucHJvcHMuY3VycmVuY3lSZWYgfHwgdGhpcy5jdXJyZW5jeVJlZkJhY2t1cFxuICAgIHRoaXMud2hvbGVSZWZCYWNrdXAgPSB1c2VSZWYoKVxuICAgIHRoaXMud2hvbGVSZWYgPSB0aGlzLnByb3BzLndob2xlUmVmIHx8IHRoaXMud2hvbGVSZWZCYWNrdXBcbiAgfVxuXG4gIGdldElucHV0UmVmID0gKCkgPT4gdGhpcy5wcm9wcy5pbnB1dFJlZiB8fCB0aGlzLmlucHV0UmVmXG5cbiAgcmVuZGVyICgpIHtcbiAgICBjb25zdCB7YXR0cmlidXRlLCBjbGFzc05hbWUsIGRpc2FibGVkLCBtb2RlbCwgc2hvd0N1cnJlbmN5T3B0aW9uc30gPSB0aGlzLnByb3BzXG4gICAgbGV0IHtjdXJyZW5jaWVzQ29sbGVjdGlvbn0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAoIWN1cnJlbmNpZXNDb2xsZWN0aW9uKSBjdXJyZW5jaWVzQ29sbGVjdGlvbiA9IENvbmZpZy5nZXRDdXJyZW5jaWVzQ29sbGVjdGlvbigpXG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJhcGktbWFrZXItaW5wdXRzLW1vbmV5XCIgZGF0YS1hdHRyaWJ1dGU9e2F0dHJpYnV0ZX0gZGF0YS1tb2RlbC1pZD17bW9kZWw/LmlkKCl9PlxuICAgICAgICA8aW5wdXQgZGVmYXVsdFZhbHVlPXt0aGlzLmlucHV0RGVmYXVsdENlbnRzVmFsdWUoKX0gaWQ9e3RoaXMuaW5wdXRDZW50c0lkKCl9IG5hbWU9e3RoaXMuaW5wdXRDZW50c05hbWUoKX0gcmVmPXt0aGlzLmdldElucHV0UmVmKCl9IHR5cGU9XCJoaWRkZW5cIiAvPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXCJtb25leS1jZW50c1wiLCBjbGFzc05hbWUpfVxuICAgICAgICAgIGRlZmF1bHRWYWx1ZT17dGhpcy5pbnB1dERlZmF1bHRWYWx1ZSgpfVxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICBpZD17dGhpcy5pbnB1dElkKCl9XG4gICAgICAgICAgb25CbHVyPXt0aGlzLnR0LnNldEFtb3VudH1cbiAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5zZXRDZW50c31cbiAgICAgICAgICBvbktleVVwPXt0aGlzLnR0LnNldENlbnRzfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0aGlzLnByb3BzLnBsYWNlaG9sZGVyfVxuICAgICAgICAgIHJlZj17dGhpcy50dC53aG9sZVJlZn1cbiAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgIC8+XG4gICAgICAgIHtzaG93Q3VycmVuY3lPcHRpb25zICYmXG4gICAgICAgICAgPHNlbGVjdFxuICAgICAgICAgICAgY2xhc3NOYW1lPVwibW9uZXktY3VycmVuY3lcIlxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlPXt0aGlzLmlucHV0Q3VycmVuY3lWYWx1ZSgpfVxuICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgaWQ9e3RoaXMuaW5wdXRDdXJyZW5jeUlkKCl9XG4gICAgICAgICAgICBuYW1lPXt0aGlzLmlucHV0Q3VycmVuY3lOYW1lKCl9XG4gICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5vbkN1cnJlbmN5Q2hhbmdlZH1cbiAgICAgICAgICAgIHJlZj17dGhpcy50dC5jdXJyZW5jeVJlZn1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8b3B0aW9uPjwvb3B0aW9uPlxuICAgICAgICAgICAge2N1cnJlbmNpZXNDb2xsZWN0aW9uLm1hcCgob3B0aW9uKSA9PiAoXG4gICAgICAgICAgICAgIDxvcHRpb24ga2V5PXtgc2VsZWN0LW9wdGlvbi0ke29wdGlvblsxXX1gfSB2YWx1ZT17b3B0aW9uWzFdfT5cbiAgICAgICAgICAgICAgICB7dGhpcy5wcm9wcy5zbWFsbCAmJiBvcHRpb25bMV19XG4gICAgICAgICAgICAgICAgeyF0aGlzLnByb3BzLnNtYWxsICYmIG9wdGlvblswXX1cbiAgICAgICAgICAgICAgPC9vcHRpb24+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L3NlbGVjdD5cbiAgICAgICAgfVxuICAgICAgPC9kaXY+XG4gICAgKVxuICB9XG5cbiAgaW5wdXRDdXJyZW5jeUlkID0gKCkgPT4gYCR7dGhpcy5pbnB1dElkKCl9X2N1cnJlbmN5YFxuXG4gIGlucHV0Q3VycmVuY3lOYW1lICgpIHtcbiAgICBpZiAoXCJjdXJyZW5jeU5hbWVcIiBpbiB0aGlzLnByb3BzKSByZXR1cm4gdGhpcy5wcm9wcy5jdXJyZW5jeU5hbWVcblxuICAgIHJldHVybiBgJHt0aGlzLnByb3BzLm1vZGVsLm1vZGVsQ2xhc3NEYXRhKCkucGFyYW1LZXl9WyR7aW5mbGVjdGlvbi51bmRlcnNjb3JlKHRoaXMucHJvcHMuYXR0cmlidXRlKX1fY3VycmVuY3ldYFxuICB9XG5cbiAgaW5wdXRDdXJyZW5jeVZhbHVlICgpIHtcbiAgICBjb25zdCB7ZGVmYXVsdFZhbHVlfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChkZWZhdWx0VmFsdWUpIHtcbiAgICAgIHJldHVybiBNb25leUZvcm1hdHRlci5jdXJyZW5jeUZyb21Nb25leShkZWZhdWx0VmFsdWUpLmNvZGVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFwiREtLXCJcbiAgICB9XG4gIH1cblxuICBpbnB1dERlZmF1bHRWYWx1ZSAoKSB7XG4gICAgY29uc3Qge2RlZmF1bHRWYWx1ZX0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAoZGVmYXVsdFZhbHVlKSB7XG4gICAgICByZXR1cm4gTW9uZXlGb3JtYXR0ZXIuZnJvbU1vbmV5KHthbW91bnQ6IGRlZmF1bHRWYWx1ZS5hbW91bnQsIGN1cnJlbmN5OiB0aGlzLmlucHV0Q3VycmVuY3lWYWx1ZSgpfSwge2RlY2ltYWxzOiAyLCBleGNsdWRlQ3VycmVuY3k6IHRydWV9KS50b1N0cmluZygpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBcIlwiXG4gICAgfVxuICB9XG5cbiAgaW5wdXREZWZhdWx0Q2VudHNWYWx1ZSAoKSB7XG4gICAgY29uc3Qge2RlZmF1bHRWYWx1ZX0gPSB0aGlzLnByb3BzXG5cbiAgICBpZiAodGhpcy5nZXRJbnB1dFJlZigpLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiBkaWdnKHRoaXMuZ2V0SW5wdXRSZWYoKSwgXCJjdXJyZW50XCIsIFwidmFsdWVcIilcbiAgICB9IGVsc2UgaWYgKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgcmV0dXJuIE1vbmV5Rm9ybWF0dGVyLmFtb3VudEZyb21Nb25leShkZWZhdWx0VmFsdWUpXG4gICAgfVxuICB9XG5cbiAgaW5wdXRDZW50c0lkID0gKCkgPT4gYCR7dGhpcy5pbnB1dElkKCl9X2NlbnRzYFxuXG4gIGlucHV0Q2VudHNOYW1lICgpIHtcbiAgICBpZiAoXCJuYW1lXCIgaW4gdGhpcy5wcm9wcykgcmV0dXJuIHRoaXMucHJvcHMubmFtZVxuXG4gICAgcmV0dXJuIGAke3RoaXMucHJvcHMubW9kZWwubW9kZWxDbGFzc0RhdGEoKS5wYXJhbUtleX1bJHtpbmZsZWN0aW9uLnVuZGVyc2NvcmUodGhpcy5wcm9wcy5hdHRyaWJ1dGUpfV9jZW50c11gXG4gIH1cblxuICBpbnB1dElkID0gKCkgPT4gaWRGb3JDb21wb25lbnQodGhpcylcblxuICBvbkN1cnJlbmN5Q2hhbmdlZCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSkgdGhpcy5wcm9wcy5vbkNoYW5nZSgpXG4gIH1cblxuICBzZXRBbW91bnQgPSAoKSA9PiB7XG4gICAgY29uc3QgaW5wdXRFbGVtZW50ID0gdGhpcy5nZXRJbnB1dFJlZigpLmN1cnJlbnRcblxuICAgIGlmICghaW5wdXRFbGVtZW50KSByZXR1cm5cblxuICAgIGlmICghaW5wdXRFbGVtZW50LnZhbHVlICYmIGlucHV0RWxlbWVudC52YWx1ZSA9PSBcIlwiKSB7XG4gICAgICB0aGlzLndob2xlUmVmLmN1cnJlbnQudmFsdWUgPSBcIlwiXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNlbnRzID0gcGFyc2VGbG9hdChpbnB1dEVsZW1lbnQudmFsdWUpXG4gICAgICBjb25zdCBmb3JtYXR0ZWQgPSBNb25leUZvcm1hdHRlci5mcm9tTW9uZXkoe2Ftb3VudDogY2VudHMsIGN1cnJlbmN5OiB0aGlzLmlucHV0Q3VycmVuY3lWYWx1ZSgpfSwge2RlY2ltYWxzOiAyLCBleGNsdWRlQ3VycmVuY3k6IHRydWV9KS50b1N0cmluZygpXG5cbiAgICAgIHRoaXMud2hvbGVSZWYuY3VycmVudC52YWx1ZSA9IGZvcm1hdHRlZFxuICAgIH1cbiAgfVxuXG4gIHNldENlbnRzID0gKCkgPT4ge1xuICAgIGNvbnN0IGlucHV0RWxlbWVudCA9IHRoaXMuZ2V0SW5wdXRSZWYoKS5jdXJyZW50XG5cbiAgICBpZiAoIWlucHV0RWxlbWVudCkgcmV0dXJuXG5cbiAgICBsZXQgd2hvbGUgPSBNb25leUZvcm1hdHRlci5zdHJpbmdUb0Zsb2F0KHRoaXMud2hvbGVSZWYuY3VycmVudC52YWx1ZSlcbiAgICBsZXQgY2VudHMgPSBwYXJzZUludCh3aG9sZSAqIDEwMCwgMTApXG4gICAgbGV0IG9sZENlbnRzID0gcGFyc2VJbnQoaW5wdXRFbGVtZW50LnZhbHVlLCAxMClcblxuICAgIGlmICh0eXBlb2YgY2VudHMgPT0gXCJudW1iZXJcIikge1xuICAgICAgaW5wdXRFbGVtZW50LnZhbHVlID0gY2VudHNcbiAgICB9IGVsc2Uge1xuICAgICAgaW5wdXRFbGVtZW50LnZhbHVlID0gJydcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wcm9wcy5vbkNoYW5nZSAmJiBvbGRDZW50cyAhPSBjZW50cykgdGhpcy5wcm9wcy5vbkNoYW5nZSgpXG4gIH1cbn0pKVxuIl19
@@ -1,50 +1,14 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.default = apiMakerNameForComponent;
37
- var inflection = __importStar(require("inflection"));
38
- function apiMakerNameForComponent(component) {
1
+ import * as inflection from "inflection";
2
+ export default function apiMakerNameForComponent(component) {
39
3
  if ("name" in component.props) {
40
4
  return component.props.name;
41
5
  }
42
6
  else if (component.props.attribute && component.props.model) {
43
- var attributeName = inflection.underscore(component.props.attribute);
7
+ let attributeName = inflection.underscore(component.props.attribute);
44
8
  if (component.props.type == "money") {
45
9
  attributeName += "_cents";
46
10
  }
47
- return "".concat(component.props.model.modelClassData().paramKey, "[").concat(attributeName, "]");
11
+ return `${component.props.model.modelClassData().paramKey}[${attributeName}]`;
48
12
  }
49
13
  }
50
- //# sourceMappingURL=name-for-component.js.map
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmFtZS1mb3ItY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJpbnB1dHMvbmFtZS1mb3ItY29tcG9uZW50LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxVQUFVLE1BQU0sWUFBWSxDQUFBO0FBRXhDLE1BQU0sQ0FBQyxPQUFPLFVBQVUsd0JBQXdCLENBQUUsU0FBUztJQUN6RCxJQUFJLE1BQU0sSUFBSSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDOUIsT0FBTyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQTtJQUM3QixDQUFDO1NBQU0sSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxDQUFDO1FBQzlELElBQUksYUFBYSxHQUFHLFVBQVUsQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQTtRQUVwRSxJQUFJLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3BDLGFBQWEsSUFBSSxRQUFRLENBQUE7UUFDM0IsQ0FBQztRQUVELE9BQU8sR0FBRyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLElBQUksYUFBYSxHQUFHLENBQUE7SUFDL0UsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBpbmZsZWN0aW9uIGZyb20gXCJpbmZsZWN0aW9uXCJcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gYXBpTWFrZXJOYW1lRm9yQ29tcG9uZW50IChjb21wb25lbnQpIHtcbiAgaWYgKFwibmFtZVwiIGluIGNvbXBvbmVudC5wcm9wcykge1xuICAgIHJldHVybiBjb21wb25lbnQucHJvcHMubmFtZVxuICB9IGVsc2UgaWYgKGNvbXBvbmVudC5wcm9wcy5hdHRyaWJ1dGUgJiYgY29tcG9uZW50LnByb3BzLm1vZGVsKSB7XG4gICAgbGV0IGF0dHJpYnV0ZU5hbWUgPSBpbmZsZWN0aW9uLnVuZGVyc2NvcmUoY29tcG9uZW50LnByb3BzLmF0dHJpYnV0ZSlcblxuICAgIGlmIChjb21wb25lbnQucHJvcHMudHlwZSA9PSBcIm1vbmV5XCIpIHtcbiAgICAgIGF0dHJpYnV0ZU5hbWUgKz0gXCJfY2VudHNcIlxuICAgIH1cblxuICAgIHJldHVybiBgJHtjb21wb25lbnQucHJvcHMubW9kZWwubW9kZWxDbGFzc0RhdGEoKS5wYXJhbUtleX1bJHthdHRyaWJ1dGVOYW1lfV1gXG4gIH1cbn1cbiJdfQ==
@@ -1,128 +1,74 @@
1
- "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import BaseComponent from "../base-component.js";
3
+ import inputWrapper from "./input-wrapper";
4
+ import memo from "set-state-compare/build/memo.js";
5
+ import PropTypes from "prop-types";
6
+ import React from "react";
7
+ import { shapeComponent } from "set-state-compare/build/shape-component.js";
8
+ import { useForm } from "../form";
9
+ const ApiMakerInputsSelect = memo(shapeComponent(class ApiMakerInputsSelect extends BaseComponent {
10
+ static propTypes = {
11
+ attribute: PropTypes.string,
12
+ children: PropTypes.any,
13
+ defaultValue: PropTypes.oneOfType([PropTypes.array, PropTypes.number, PropTypes.string]),
14
+ id: PropTypes.string,
15
+ includeBlank: PropTypes.oneOfType([PropTypes.bool, PropTypes.any]),
16
+ inputProps: PropTypes.object.isRequired,
17
+ model: PropTypes.object,
18
+ name: PropTypes.string,
19
+ onChange: PropTypes.func,
20
+ options: PropTypes.array,
21
+ wrapperOpts: PropTypes.object.isRequired
8
22
  };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
23
+ setup() {
24
+ this.form = useForm();
25
+ }
26
+ render() {
27
+ const { attribute, children, defaultValue, id, includeBlank, inputProps, inputRef, model, name, onChange, options, wrapperOpts, ...restProps } = this.props;
28
+ return (_jsxs("select", { onChange: this.tt.onChange, ...inputProps, ...restProps, children: [this.includeBlank() &&
29
+ _jsx("option", { "data-include-blank": "true", children: typeof includeBlank != "boolean" ? includeBlank : null }), options && options.map((option) => _jsx("option", { value: this.optionValue(option), children: this.optionLabel(option) }, this.optionKey(option))), children] }));
30
+ }
31
+ onChange = (e) => {
32
+ const { form } = this.tt;
33
+ const { name, onChange } = this.props;
34
+ if (form && name)
35
+ form.setValue(name, e.target.value);
36
+ if (onChange)
37
+ onChange(e);
15
38
  };
16
- })();
17
- var __assign = (this && this.__assign) || function () {
18
- __assign = Object.assign || function(t) {
19
- for (var s, i = 1, n = arguments.length; i < n; i++) {
20
- s = arguments[i];
21
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
22
- t[p] = s[p];
39
+ optionKey(option) {
40
+ if (Array.isArray(option)) {
41
+ return `select-option-${option[1]}`;
23
42
  }
24
- return t;
25
- };
26
- return __assign.apply(this, arguments);
27
- };
28
- var __rest = (this && this.__rest) || function (s, e) {
29
- var t = {};
30
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
31
- t[p] = s[p];
32
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
33
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
34
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
35
- t[p[i]] = s[p[i]];
43
+ else {
44
+ return `select-option-${option}`;
45
+ }
46
+ }
47
+ optionLabel(option) {
48
+ if (Array.isArray(option)) {
49
+ return option[0];
50
+ }
51
+ else {
52
+ return option;
53
+ }
54
+ }
55
+ optionValue(option) {
56
+ if (Array.isArray(option)) {
57
+ return option[1];
58
+ }
59
+ else {
60
+ return option;
61
+ }
62
+ }
63
+ includeBlank() {
64
+ if (this.props.includeBlank && !this.props.multiple) {
65
+ return true;
36
66
  }
37
- return t;
38
- };
39
- var __importDefault = (this && this.__importDefault) || function (mod) {
40
- return (mod && mod.__esModule) ? mod : { "default": mod };
41
- };
42
- var _a;
43
- Object.defineProperty(exports, "__esModule", { value: true });
44
- exports.Select = void 0;
45
- var jsx_runtime_1 = require("react/jsx-runtime");
46
- var base_component_js_1 = __importDefault(require("../base-component.js"));
47
- var input_wrapper_1 = __importDefault(require("./input-wrapper"));
48
- var memo_js_1 = __importDefault(require("set-state-compare/build/memo.js"));
49
- var prop_types_1 = __importDefault(require("prop-types"));
50
- var react_1 = __importDefault(require("react"));
51
- var shape_component_js_1 = require("set-state-compare/build/shape-component.js");
52
- var form_1 = require("../form");
53
- var ApiMakerInputsSelect = (0, memo_js_1.default)((0, shape_component_js_1.shapeComponent)((_a = /** @class */ (function (_super) {
54
- __extends(ApiMakerInputsSelect, _super);
55
- function ApiMakerInputsSelect() {
56
- var _this = _super !== null && _super.apply(this, arguments) || this;
57
- _this.onChange = function (e) {
58
- var form = _this.tt.form;
59
- var _b = _this.props, name = _b.name, onChange = _b.onChange;
60
- if (form && name)
61
- form.setValue(name, e.target.value);
62
- if (onChange)
63
- onChange(e);
64
- };
65
- return _this;
67
+ else {
68
+ return false;
66
69
  }
67
- ApiMakerInputsSelect.prototype.setup = function () {
68
- this.form = (0, form_1.useForm)();
69
- };
70
- ApiMakerInputsSelect.prototype.render = function () {
71
- var _this = this;
72
- var _b = this.props, attribute = _b.attribute, children = _b.children, defaultValue = _b.defaultValue, id = _b.id, includeBlank = _b.includeBlank, inputProps = _b.inputProps, inputRef = _b.inputRef, model = _b.model, name = _b.name, onChange = _b.onChange, options = _b.options, wrapperOpts = _b.wrapperOpts, restProps = __rest(_b, ["attribute", "children", "defaultValue", "id", "includeBlank", "inputProps", "inputRef", "model", "name", "onChange", "options", "wrapperOpts"]);
73
- return ((0, jsx_runtime_1.jsxs)("select", __assign({ onChange: this.tt.onChange }, inputProps, restProps, { children: [this.includeBlank() &&
74
- (0, jsx_runtime_1.jsx)("option", { "data-include-blank": "true", children: typeof includeBlank != "boolean" ? includeBlank : null }), options && options.map(function (option) {
75
- return (0, jsx_runtime_1.jsx)("option", { value: _this.optionValue(option), children: _this.optionLabel(option) }, _this.optionKey(option));
76
- }), children] })));
77
- };
78
- ApiMakerInputsSelect.prototype.optionKey = function (option) {
79
- if (Array.isArray(option)) {
80
- return "select-option-".concat(option[1]);
81
- }
82
- else {
83
- return "select-option-".concat(option);
84
- }
85
- };
86
- ApiMakerInputsSelect.prototype.optionLabel = function (option) {
87
- if (Array.isArray(option)) {
88
- return option[0];
89
- }
90
- else {
91
- return option;
92
- }
93
- };
94
- ApiMakerInputsSelect.prototype.optionValue = function (option) {
95
- if (Array.isArray(option)) {
96
- return option[1];
97
- }
98
- else {
99
- return option;
100
- }
101
- };
102
- ApiMakerInputsSelect.prototype.includeBlank = function () {
103
- if (this.props.includeBlank && !this.props.multiple) {
104
- return true;
105
- }
106
- else {
107
- return false;
108
- }
109
- };
110
- return ApiMakerInputsSelect;
111
- }(base_component_js_1.default)),
112
- _a.propTypes = {
113
- attribute: prop_types_1.default.string,
114
- children: prop_types_1.default.any,
115
- defaultValue: prop_types_1.default.oneOfType([prop_types_1.default.array, prop_types_1.default.number, prop_types_1.default.string]),
116
- id: prop_types_1.default.string,
117
- includeBlank: prop_types_1.default.oneOfType([prop_types_1.default.bool, prop_types_1.default.any]),
118
- inputProps: prop_types_1.default.object.isRequired,
119
- model: prop_types_1.default.object,
120
- name: prop_types_1.default.string,
121
- onChange: prop_types_1.default.func,
122
- options: prop_types_1.default.array,
123
- wrapperOpts: prop_types_1.default.object.isRequired
124
- },
125
- _a)));
126
- exports.Select = ApiMakerInputsSelect;
127
- exports.default = (0, input_wrapper_1.default)(ApiMakerInputsSelect);
128
- //# sourceMappingURL=select.js.map
70
+ }
71
+ }));
72
+ export { ApiMakerInputsSelect as Select };
73
+ export default inputWrapper(ApiMakerInputsSelect);
74
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LmpzIiwic291cmNlUm9vdCI6Ii9zcmMvIiwic291cmNlcyI6WyJpbnB1dHMvc2VsZWN0LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUEsT0FBTyxhQUFhLE1BQU0sc0JBQXNCLENBQUE7QUFDaEQsT0FBTyxZQUFZLE1BQU0saUJBQWlCLENBQUE7QUFDMUMsT0FBTyxJQUFJLE1BQU0saUNBQWlDLENBQUE7QUFDbEQsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxNQUFNLE9BQU8sQ0FBQTtBQUN6QixPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sNENBQTRDLENBQUE7QUFDekUsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLFNBQVMsQ0FBQTtBQUUvQixNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxvQkFBcUIsU0FBUSxhQUFhO0lBQy9GLE1BQU0sQ0FBQyxTQUFTLEdBQUc7UUFDakIsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLFFBQVEsRUFBRSxTQUFTLENBQUMsR0FBRztRQUN2QixZQUFZLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDeEYsRUFBRSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3BCLFlBQVksRUFBRSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbEUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtRQUN2QyxLQUFLLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDdkIsSUFBSSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQ3RCLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN4QixPQUFPLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDeEIs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b0IsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IEJhc2VDb21wb25lbnQgZnJvbSBcIi4uL2Jhc2UtY29tcG9uZW50LmpzXCJcbmltcG9ydCBpbnB1dFdyYXBwZXIgZnJvbSBcIi4vaW5wdXQtd3JhcHBlclwiXG5pbXBvcnQgbWVtbyBmcm9tIFwic2V0LXN0YXRlLWNvbXBhcmUvYnVpbGQvbWVtby5qc1wiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQge3VzZUZvcm19IGZyb20gXCIuLi9mb3JtXCJcblxuY29uc3QgQXBpTWFrZXJJbnB1dHNTZWxlY3QgPSBtZW1vKHNoYXBlQ29tcG9uZW50KGNsYXNzIEFwaU1ha2VySW5wdXRzU2VsZWN0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgYXR0cmlidXRlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMuYW55LFxuICAgIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5LCBQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gICAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgaW5jbHVkZUJsYW5rOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYm9vbCwgUHJvcFR5cGVzLmFueV0pLFxuICAgIGlucHV0UHJvcHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgICBtb2RlbDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgd3JhcHBlck9wdHM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuICB9XG5cbiAgc2V0dXAoKSB7XG4gICAgdGhpcy5mb3JtID0gdXNlRm9ybSgpXG4gIH1cblxuICByZW5kZXIgKCkge1xuICAgIGNvbnN0IHtcbiAgICAgIGF0dHJpYnV0ZSxcbiAgICAgIGNoaWxkcmVuLFxuICAgICAgZGVmYXVsdFZhbHVlLFxuICAgICAgaWQsXG4gICAgICBpbmNsdWRlQmxhbmssXG4gICAgICBpbnB1dFByb3BzLFxuICAgICAgaW5wdXRSZWYsXG4gICAgICBtb2RlbCxcbiAgICAgIG5hbWUsXG4gICAgICBvbkNoYW5nZSxcbiAgICAgIG9wdGlvbnMsXG4gICAgICB3cmFwcGVyT3B0cyxcbiAgICAgIC4uLnJlc3RQcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgPHNlbGVjdCBvbkNoYW5nZT17dGhpcy50dC5vbkNoYW5nZX0gey4uLmlucHV0UHJvcHN9IHsuLi5yZXN0UHJvcHN9PlxuICAgICAgICB7dGhpcy5pbmNsdWRlQmxhbmsoKSAmJlxuICAgICAgICAgIDxvcHRpb24gZGF0YS1pbmNsdWRlLWJsYW5rPVwidHJ1ZVwiPlxuICAgICAgICAgICAge3R5cGVvZiBpbmNsdWRlQmxhbmsgIT0gXCJib29sZWFuXCIgPyBpbmNsdWRlQmxhbmsgOiBudWxsfVxuICAgICAgICAgIDwvb3B0aW9uPlxuICAgICAgICB9XG4gICAgICAgIHtvcHRpb25zICYmIG9wdGlvbnMubWFwKChvcHRpb24pID0+XG4gICAgICAgICAgPG9wdGlvbiBrZXk9e3RoaXMub3B0aW9uS2V5KG9wdGlvbil9IHZhbHVlPXt0aGlzLm9wdGlvblZhbHVlKG9wdGlvbil9PlxuICAgICAgICAgICAge3RoaXMub3B0aW9uTGFiZWwob3B0aW9uKX1cbiAgICAgICAgICA8L29wdGlvbj5cbiAgICAgICAgKX1cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgPC9zZWxlY3Q+XG4gICAgKVxuICB9XG5cbiAgb25DaGFuZ2UgPSAoZSkgPT4ge1xuICAgIGNvbnN0IHtmb3JtfSA9IHRoaXMudHRcbiAgICBjb25zdCB7bmFtZSwgb25DaGFuZ2V9ID0gdGhpcy5wcm9wc1xuXG4gICAgaWYgKGZvcm0gJiYgbmFtZSkgZm9ybS5zZXRWYWx1ZShuYW1lLCBlLnRhcmdldC52YWx1ZSlcbiAgICBpZiAob25DaGFuZ2UpIG9uQ2hhbmdlKGUpXG4gIH1cblxuICBvcHRpb25LZXkgKG9wdGlvbikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbikpIHtcbiAgICAgIHJldHVybiBgc2VsZWN0LW9wdGlvbi0ke29wdGlvblsxXX1gXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBgc2VsZWN0LW9wdGlvbi0ke29wdGlvbn1gXG4gICAgfVxuICB9XG5cbiAgb3B0aW9uTGFiZWwgKG9wdGlvbikge1xuICAgIGlmIChBcnJheS5pc0FycmF5KG9wdGlvbikpIHtcbiAgICAgIHJldHVybiBvcHRpb25bMF1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvblxuICAgIH1cbiAgfVxuXG4gIG9wdGlvblZhbHVlIChvcHRpb24pIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb24pKSB7XG4gICAgICByZXR1cm4gb3B0aW9uWzFdXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBvcHRpb25cbiAgICB9XG4gIH1cblxuICBpbmNsdWRlQmxhbmsgKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmluY2x1ZGVCbGFuayAmJiAhdGhpcy5wcm9wcy5tdWx0aXBsZSkge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG59KSlcblxuZXhwb3J0IHtBcGlNYWtlcklucHV0c1NlbGVjdCBhcyBTZWxlY3R9XG5leHBvcnQgZGVmYXVsdCBpbnB1dFdyYXBwZXIoQXBpTWFrZXJJbnB1dHNTZWxlY3QpXG4iXX0=