@wavemaker/react-runtime 11.14.2-rc.6311 → 12.0.0-next.28533

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 (244) hide show
  1. package/actions/base-action.js +5 -7
  2. package/actions/login-action.js +7 -8
  3. package/actions/logout-action.js +5 -7
  4. package/actions/navigation-action.js +32 -10
  5. package/actions/notification-action.js +22 -8
  6. package/actions/timer-action.js +13 -15
  7. package/actions/toast.js +4 -2
  8. package/actions/toast.service.js +1 -2
  9. package/components/advanced/carousel/index.js +1 -1
  10. package/components/advanced/carousel/template.js +1 -1
  11. package/components/basic/anchor/index.js +26 -9
  12. package/components/basic/html/index.js +115 -24
  13. package/components/basic/icon/index.js +2 -1
  14. package/components/basic/iframe/index.js +2 -1
  15. package/components/basic/label/index.js +12 -9
  16. package/components/basic/message/index.js +12 -3
  17. package/components/basic/picture/index.js +11 -4
  18. package/components/basic/progress-bar/index.js +1 -1
  19. package/components/basic/progress-circle/index.js +34 -28
  20. package/components/basic/progress-circle/props.js +10 -2
  21. package/components/basic/richtexteditor/index.js +95 -94
  22. package/components/basic/search/index.js +401 -156
  23. package/components/basic/search/providers.js +126 -61
  24. package/components/basic/spinner/index.js +2 -1
  25. package/components/basic/tree/index.js +34 -34
  26. package/components/basic/tree/utils.js +10 -4
  27. package/components/chart/components/barColumnChart/index.js +36 -33
  28. package/components/chart/components/bubbleChart/index.js +35 -25
  29. package/components/chart/components/chartLegend/utils.js +2 -1
  30. package/components/chart/components/cumulativeLineChart/index.js +30 -26
  31. package/components/chart/components/lineAreaChart/index.js +50 -32
  32. package/components/chart/components/pieDonutChart/index.js +13 -4
  33. package/components/chart/hooks/useXAxisConfig.js +15 -8
  34. package/components/chart/index.js +223 -53
  35. package/components/chart/utils.js +12 -1
  36. package/components/constants.js +5 -2
  37. package/components/container/accordion/accordion-pane/index.js +17 -12
  38. package/components/container/accordion/index.js +9 -4
  39. package/components/container/alignment-utils.js +56 -1
  40. package/components/container/index.js +49 -20
  41. package/components/container/panel/components/panel-header/index.js +3 -4
  42. package/components/container/panel/index.js +15 -10
  43. package/components/container/tabs/index.js +92 -14
  44. package/components/container/tabs/tab-pane/index.js +15 -8
  45. package/components/container/tabs/utils.js +51 -0
  46. package/components/container/wizard/components/StepComponents.js +2 -1
  47. package/components/container/wizard/components/WizardStep.js +2 -1
  48. package/components/container/wizard/index.js +64 -35
  49. package/components/container/wizard/utils.js +46 -1
  50. package/components/container/wizard/wizard-step/index.js +11 -1
  51. package/components/data/card/card-content/index.js +1 -1
  52. package/components/data/form/base-form/index.js +991 -180
  53. package/components/data/form/base-form/props.js +3 -1
  54. package/components/data/form/base-form/utils.js +159 -1
  55. package/components/data/form/dynamic-fields/constant.js +53 -0
  56. package/components/data/form/dynamic-fields/index.js +10 -45
  57. package/components/data/form/dynamic-fields/utils.js +37 -2
  58. package/components/data/form/form-action/index.js +5 -4
  59. package/components/data/form/form-context.js +5 -1
  60. package/components/data/form/form-controller/utils.js +84 -0
  61. package/components/data/form/form-controller/validation-contrustor.js +402 -189
  62. package/components/data/form/form-controller/withFormController.js +191 -52
  63. package/components/data/form/form-field/base-field.js +54 -33
  64. package/components/data/form/form-field/index.js +28 -5
  65. package/components/data/form/form-header/index.js +3 -4
  66. package/components/data/form/index.js +20 -1
  67. package/components/data/list/components/ListDND.js +2 -1
  68. package/components/data/list/components/ListItem.js +6 -2
  69. package/components/data/list/components/ListItemWithTemplate.js +46 -2
  70. package/components/data/list/components/ListItems.js +17 -26
  71. package/components/data/list/components/ListPagination.js +3 -3
  72. package/components/data/list/components/StandardListItems.js +3 -4
  73. package/components/data/list/hooks/useListEffects.js +55 -14
  74. package/components/data/list/hooks/useListEventHandlers.js +3 -1
  75. package/components/data/list/hooks/useListState.js +3 -1
  76. package/components/data/list/hooks/usePaginatedGroupedData.js +18 -5
  77. package/components/data/list/index.js +74 -55
  78. package/components/data/list/utils/list-helpers.js +73 -35
  79. package/components/data/list/utils/list-widget-methods.js +138 -95
  80. package/components/data/live-filter/index.js +26 -15
  81. package/components/data/live-form/index.js +23 -7
  82. package/components/data/live-form/props.js +1 -1
  83. package/components/data/pagination/components/BasicPagination.js +71 -16
  84. package/components/data/pagination/components/PageSizeSelector.js +8 -3
  85. package/components/data/pagination/components/TotalRecords.js +1 -5
  86. package/components/data/pagination/hooks/usePagination.js +349 -66
  87. package/components/data/pagination/index.js +137 -19
  88. package/components/data/table/components/AddNewRow.js +5 -1
  89. package/components/data/table/components/EditableCell.js +2 -2
  90. package/components/data/table/components/RowCells.js +64 -0
  91. package/components/data/table/components/RowExpansionButton.js +2 -2
  92. package/components/data/table/components/SummaryCell.js +111 -0
  93. package/components/data/table/components/SummaryRow.js +54 -0
  94. package/components/data/table/components/SummaryRowFooter.js +46 -0
  95. package/components/data/table/components/TableBody.js +61 -59
  96. package/components/data/table/components/TableDataRow.js +109 -0
  97. package/components/data/table/components/TableFilters.js +225 -121
  98. package/components/data/table/components/TableHeader.js +291 -23
  99. package/components/data/table/components/TablePanelHeading.js +139 -8
  100. package/components/data/table/components/index.js +22 -1
  101. package/components/data/table/hooks/use-edited-rows.js +141 -0
  102. package/components/data/table/hooks/useCellState.js +5 -12
  103. package/components/data/table/hooks/useFormWidget.js +58 -51
  104. package/components/data/table/hooks/usePaginationState.js +45 -24
  105. package/components/data/table/hooks/usePanelStructure.js +4 -4
  106. package/components/data/table/hooks/useRowHandlers.js +39 -5
  107. package/components/data/table/hooks/useRowSelection.js +244 -50
  108. package/components/data/table/hooks/useServerSideSorting.js +81 -37
  109. package/components/data/table/hooks/useTableColumns.js +211 -118
  110. package/components/data/table/hooks/useTableData.js +54 -9
  111. package/components/data/table/hooks/useTableEdit.js +272 -97
  112. package/components/data/table/hooks/useTableEffects.js +31 -13
  113. package/components/data/table/hooks/useTableFilter.js +1 -1
  114. package/components/data/table/hooks/useTableInitialization.js +23 -22
  115. package/components/data/table/hooks/useTableState.js +11 -5
  116. package/components/data/table/hooks/useTableStateManager.js +140 -65
  117. package/components/data/table/index.js +637 -274
  118. package/components/data/table/live-table/index.js +54 -22
  119. package/components/data/table/table-action/index.js +1 -1
  120. package/components/data/table/table-group/index.js +26 -0
  121. package/components/data/table/table-row-action/index.js +32 -18
  122. package/components/data/table/utils/buildSelectionColumns.js +12 -21
  123. package/components/data/table/utils/columnBuilder.js +29 -14
  124. package/components/data/table/utils/columnProxy.js +68 -1
  125. package/components/data/table/utils/constants.js +6 -2
  126. package/components/data/table/utils/crud-handlers.js +68 -63
  127. package/components/data/table/utils/groupHeaderUtils.js +102 -0
  128. package/components/data/table/utils/index.js +210 -21
  129. package/components/data/table/utils/renderDisplayCell.js +6 -6
  130. package/components/data/table/utils/selectionUtils.js +25 -26
  131. package/components/data/table/utils/validation.js +1 -0
  132. package/components/data/utils/filter-field-util.js +3 -3
  133. package/components/dialogs/alert-dialog/index.js +1 -1
  134. package/components/dialogs/confirm-dialog/index.js +1 -1
  135. package/components/dialogs/dialog/index.js +4 -1
  136. package/components/dialogs/dialog-content/index.js +3 -1
  137. package/components/dialogs/dialog-header/index.js +2 -2
  138. package/components/dialogs/iframe-dialog/index.js +11 -5
  139. package/components/dialogs/index.js +1 -1
  140. package/components/dialogs/login-dialog/index.js +1 -1
  141. package/components/dialogs/page-dialog/index.js +1 -1
  142. package/components/form/button/index.js +33 -7
  143. package/components/input/calendar/index.js +18 -6
  144. package/components/input/chips/index.js +99 -28
  145. package/components/input/chips/utils.js +34 -4
  146. package/components/input/color-picker/index.js +74 -25
  147. package/components/input/composite/index.js +3 -3
  148. package/components/input/currency/index.js +35 -49
  149. package/components/input/default/checkbox/index.js +23 -28
  150. package/components/input/default/checkboxset/index.js +38 -18
  151. package/components/input/default/checkboxset/utils.js +30 -0
  152. package/components/input/default/radioset/index.js +36 -39
  153. package/components/input/default/switch/index.js +30 -13
  154. package/components/input/epoch/date/index.js +130 -69
  155. package/components/input/epoch/date/utils.js +94 -1
  156. package/components/input/epoch/datetime/index.js +72 -22
  157. package/components/input/epoch/datetime/utils.js +49 -10
  158. package/components/input/epoch/time/index.js +68 -19
  159. package/components/input/epoch/time/utils.js +62 -14
  160. package/components/input/fileupload/Utils.js +12 -7
  161. package/components/input/fileupload/components/MultiUpload.js +2 -6
  162. package/components/input/fileupload/components/SingleUpload.js +3 -7
  163. package/components/input/fileupload/index.js +6 -10
  164. package/components/input/fileupload/useFileUpload.js +16 -5
  165. package/components/input/number/index.js +158 -43
  166. package/components/input/rating/index.js +90 -7
  167. package/components/input/select/index.js +147 -70
  168. package/components/input/slider/index.js +84 -26
  169. package/components/input/text/index.js +38 -18
  170. package/components/input/text/util.js +283 -130
  171. package/components/input/textarea/index.js +13 -10
  172. package/components/input/upload/index.js +124 -0
  173. package/components/input/upload/props.js +5 -0
  174. package/components/input/util/index.js +11 -0
  175. package/components/navbar/index.js +51 -3
  176. package/components/navbar/nav/index.js +46 -16
  177. package/components/navbar/nav-item/index.js +11 -5
  178. package/components/navigation/menu/components/ListItems.js +3 -0
  179. package/components/navigation/menu/constants.js +2 -1
  180. package/components/navigation/menu/hooks/useHoverState.hook.js +48 -0
  181. package/components/navigation/menu/hooks/useKeyboardMovements.hook.js +37 -0
  182. package/components/navigation/menu/hooks/useTransformedDataset.hook.js +15 -0
  183. package/components/navigation/menu/index.js +326 -188
  184. package/components/navigation/menu/utils/action-task.js +14 -0
  185. package/components/navigation/menu/utils/role-filter.js +76 -0
  186. package/components/navigation/popover/index.js +99 -26
  187. package/components/page/partial-container/index.js +34 -5
  188. package/components/prefab/index.js +2 -4
  189. package/context/PrefabContext.js +10 -6
  190. package/context/WidgetProvider.js +30 -31
  191. package/core/app.service.js +1 -1
  192. package/core/constants/events.js +57 -1
  193. package/core/dialog.service.js +1 -2
  194. package/core/event-notifier.js +1 -2
  195. package/core/formatter/array-formatters.js +33 -0
  196. package/core/formatter/date-formatters.js +2 -4
  197. package/core/formatter/index.js +2 -1
  198. package/core/formatter/number-formatters.js +5 -10
  199. package/core/formatter/security-formatters.js +2 -4
  200. package/core/formatter/string-formatters.js +3 -6
  201. package/core/proxy-service.js +84 -13
  202. package/core/script-registry.js +108 -48
  203. package/core/util/common.js +4 -4
  204. package/core/util/compare.js +30 -0
  205. package/core/util/dom.js +8 -8
  206. package/core/util/index.js +16 -6
  207. package/core/util/safe-is-equal.js +156 -0
  208. package/core/util/security.js +1 -2
  209. package/core/util/utils.js +16 -7
  210. package/higherOrder/BaseApp.js +108 -65
  211. package/higherOrder/BaseDateTime.js +31 -13
  212. package/higherOrder/BasePage.js +268 -144
  213. package/higherOrder/BasePartial.js +1 -1
  214. package/higherOrder/BasePrefab.js +33 -15
  215. package/higherOrder/DataNav.js +99 -16
  216. package/higherOrder/helper.js +5 -0
  217. package/higherOrder/withBaseWrapper.js +41 -28
  218. package/hooks/useAuth.js +11 -5
  219. package/hooks/useHttp.js +280 -94
  220. package/mui-config/theme-provider.js +1 -1
  221. package/mui-config/theme.js +1 -1
  222. package/package-lock.json +824 -724
  223. package/package.json +8 -8
  224. package/store/bindActions/i18nActions.js +18 -0
  225. package/store/index.js +3 -1
  226. package/store/slices/appConfigSlice.js +2 -2
  227. package/store/slices/authSlice.js +31 -28
  228. package/store/slices/i18nSlice.js +2 -2
  229. package/store/slices/navigationSlice.js +35 -0
  230. package/store/viewport.service.js +255 -0
  231. package/utils/attr.js +35 -0
  232. package/utils/dataset-util.js +1 -2
  233. package/utils/form-state.util.js +43 -12
  234. package/utils/form-utils.js +47 -2
  235. package/utils/format-util.js +28 -13
  236. package/utils/page-params-util.js +33 -1
  237. package/utils/state-persistance.js +72 -13
  238. package/utils/transformedDataset-utils.js +35 -24
  239. package/variables/base-variable.js +12 -14
  240. package/variables/crud-variable.js +225 -0
  241. package/variables/live-variable.js +56 -20
  242. package/variables/metadata.service.js +123 -0
  243. package/variables/model-variable.js +21 -15
  244. package/variables/service-variable.js +88 -83
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  value: true
6
6
  });
7
7
  exports.TIME_PICKER_STYLES = exports.READONLY_STYLES = exports.DEFAULT_TIMEPATTERN = exports.DEFAULT_OUTPUT_FORMAT = exports.DEFAULT_CLASS = void 0;
8
+ exports.createWidgetEvent = createWidgetEvent;
8
9
  exports.formatDisplayTimeValue = formatDisplayTimeValue;
9
10
  exports.getSupportedTimeFormats = getSupportedTimeFormats;
10
11
  exports.parseTimeFormat = parseTimeFormat;
@@ -14,6 +15,7 @@ exports.updateListener = updateListener;
14
15
  exports.validateTimeFormat = validateTimeFormat;
15
16
  exports.validateTimeRange = validateTimeRange;
16
17
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
18
+ var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
17
19
  var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
18
20
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19
21
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
@@ -84,7 +86,24 @@ function formatDisplayTimeValue(value, pattern) {
84
86
  return "";
85
87
  }
86
88
  }
89
+
90
+ // Get validator error message (similar to datetime widget)
91
+ function getValidatorErrorMessage(validators, validatorType) {
92
+ if (!validators || validators.length === 0) return undefined;
93
+ var validator = validators.find(function (v) {
94
+ return (0, _typeof2["default"])(v) === "object" && v !== null && "type" in v && v.type === validatorType;
95
+ });
96
+ if (validator && (0, _typeof2["default"])(validator) === "object" && "errorMessage" in validator) {
97
+ var errorMessage = validator.errorMessage;
98
+ if (typeof errorMessage === "string") {
99
+ return errorMessage;
100
+ }
101
+ }
102
+ return undefined;
103
+ }
87
104
  function validateTimeRange(timeValue, minTime, maxTime) {
105
+ var validators = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];
106
+ var validationmessage = arguments.length > 4 ? arguments[4] : undefined;
88
107
  if (!timeValue) return {
89
108
  isValid: true
90
109
  };
@@ -94,32 +113,34 @@ function validateTimeRange(timeValue, minTime, maxTime) {
94
113
  return {
95
114
  isValid: false,
96
115
  errorType: "format",
97
- message: "Invalid time format"
116
+ message: validationmessage || "Invalid time format"
98
117
  };
99
118
  }
100
119
  var timeToCheckMinutes = timeToCheck.hours() * 60 + timeToCheck.minutes();
101
120
  if (minTime) {
102
- var minMoment = typeof minTime === "string" ? (0, _momentTimezone["default"])(minTime, ["HH:mm", "H:mm", "hh:mm a", "h:mm a"], true) : (0, _momentTimezone["default"])(minTime);
121
+ var minMoment = typeof minTime === "string" ? (0, _momentTimezone["default"])(minTime, getSupportedTimeFormats(), true) : (0, _momentTimezone["default"])(minTime);
103
122
  if (minMoment.isValid()) {
104
123
  var minMinutes = minMoment.hours() * 60 + minMoment.minutes();
105
124
  if (timeToCheckMinutes < minMinutes) {
125
+ var errorMessage = getValidatorErrorMessage(validators, "mintime") || validationmessage || "Time must be later than ".concat(minMoment.format("HH:mm"));
106
126
  return {
107
127
  isValid: false,
108
128
  errorType: "mintime",
109
- message: "Time must be later than ".concat(minMoment.format("HH:mm"))
129
+ message: errorMessage
110
130
  };
111
131
  }
112
132
  }
113
133
  }
114
134
  if (maxTime) {
115
- var maxMoment = typeof maxTime === "string" ? (0, _momentTimezone["default"])(maxTime, ["HH:mm", "H:mm", "hh:mm a", "h:mm a"], true) : (0, _momentTimezone["default"])(maxTime);
135
+ var maxMoment = typeof maxTime === "string" ? (0, _momentTimezone["default"])(maxTime, getSupportedTimeFormats(), true) : (0, _momentTimezone["default"])(maxTime);
116
136
  if (maxMoment.isValid()) {
117
137
  var maxMinutes = maxMoment.hours() * 60 + maxMoment.minutes();
118
138
  if (timeToCheckMinutes > maxMinutes) {
139
+ var _errorMessage = getValidatorErrorMessage(validators, "maxtime") || validationmessage || "Time must be earlier than ".concat(maxMoment.format("HH:mm"));
119
140
  return {
120
141
  isValid: false,
121
142
  errorType: "maxtime",
122
- message: "Time must be earlier than ".concat(maxMoment.format("HH:mm"))
143
+ message: _errorMessage
123
144
  };
124
145
  }
125
146
  }
@@ -132,22 +153,25 @@ function validateTimeRange(timeValue, minTime, maxTime) {
132
153
  return {
133
154
  isValid: false,
134
155
  errorType: "format",
135
- message: "Validation error"
156
+ message: validationmessage || "Validation error"
136
157
  };
137
158
  }
138
159
  }
139
- function validateTimeFormat(inputValue, pattern, required) {
160
+ function validateTimeFormat(inputValue, pattern, required, validationmessage) {
140
161
  if (!inputValue.trim()) return {
141
162
  isValid: true
142
163
  };
143
164
  try {
144
165
  var parsed = (0, _momentTimezone["default"])(inputValue, pattern, true);
145
- if (!parsed.isValid() && required) {
146
- return {
166
+ if (!parsed.isValid()) {
167
+ var error = {
147
168
  isValid: false,
148
- errorType: "format",
149
- message: "Invalid time format. Expected: ".concat(pattern)
169
+ errorType: "format"
150
170
  };
171
+ if (required) {
172
+ error.message = validationmessage || "Invalid time format. Expected: ".concat(pattern);
173
+ }
174
+ return error;
151
175
  }
152
176
  return {
153
177
  isValid: true
@@ -156,7 +180,7 @@ function validateTimeFormat(inputValue, pattern, required) {
156
180
  return {
157
181
  isValid: false,
158
182
  errorType: "format",
159
- message: "Invalid time format"
183
+ message: validationmessage || "Invalid time format"
160
184
  };
161
185
  }
162
186
  }
@@ -172,7 +196,7 @@ function parseTimeObj(timeValue) {
172
196
 
173
197
  // Constants
174
198
  var DEFAULT_CLASS = exports.DEFAULT_CLASS = "input-group app-timeinput";
175
- var DEFAULT_TIMEPATTERN = exports.DEFAULT_TIMEPATTERN = "h:mm:ss a";
199
+ var DEFAULT_TIMEPATTERN = exports.DEFAULT_TIMEPATTERN = "h:mm:ss A";
176
200
  var DEFAULT_OUTPUT_FORMAT = exports.DEFAULT_OUTPUT_FORMAT = "HH:mm:ss";
177
201
 
178
202
  // Styling constants
@@ -200,10 +224,34 @@ function updateListener(name, listener, props, displayValue, timestamp, datavalu
200
224
  // Update listener widget display value
201
225
 
202
226
  if (listener !== null && listener !== void 0 && listener.onChange) {
203
- listener.onChange(name || "", _objectSpread(_objectSpread({}, props), {}, {
227
+ listener.onChange(props.fieldName || name, _objectSpread(_objectSpread({}, props), {}, {
204
228
  displayValue: displayValue,
205
229
  timestamp: timestamp,
206
230
  datavalue: datavalue
207
231
  }));
208
232
  }
233
+ }
234
+ function createWidgetEvent(args) {
235
+ var type = args.type,
236
+ name = args.name,
237
+ value = args.value,
238
+ anchor = args.anchor,
239
+ originalEvent = args.originalEvent;
240
+ var base = originalEvent && (0, _typeof2["default"])(originalEvent) === "object" ? _objectSpread({}, originalEvent) : {};
241
+ var evt = base;
242
+ if (!evt.type) {
243
+ evt.type = type;
244
+ }
245
+ if (!evt.target && anchor) {
246
+ evt.target = anchor;
247
+ }
248
+ if (!evt.currentTarget && anchor) {
249
+ evt.currentTarget = anchor;
250
+ }
251
+ if (name !== undefined) evt.name = name;
252
+ if (value !== undefined) evt.value = value;
253
+ if (originalEvent) {
254
+ evt.originalEvent = originalEvent;
255
+ }
256
+ return evt;
209
257
  }
@@ -40,13 +40,16 @@ var isValidFile = exports.isValidFile = function isValidFile(filename, contentty
40
40
  if (!contenttype) {
41
41
  return true;
42
42
  }
43
- var contentTypes = contenttype.toLowerCase().split(" ").map(function (type) {
43
+ var ext = extensionName.toLowerCase();
44
+
45
+ // Split by comma or space (handles ".doc, .docx" and ".doc .docx" formats)
46
+ var contentTypes = contenttype.toLowerCase().split(/[\s,]+/).map(function (type) {
44
47
  return type.trim();
45
- });
48
+ }).filter(Boolean);
46
49
 
47
50
  // Check for direct extension match (e.g., ".csv", ".pdf")
48
51
  if (contentTypes.some(function (type) {
49
- return type === ".".concat(extensionName.toLowerCase());
52
+ return type === ".".concat(ext) || type === ext;
50
53
  })) {
51
54
  return true;
52
55
  }
@@ -57,16 +60,18 @@ var isValidFile = exports.isValidFile = function isValidFile(filename, contentty
57
60
  try {
58
61
  for (_iterator.s(); !(_step = _iterator.n()).done;) {
59
62
  var type = _step.value;
60
- if (type === "image/*" || type === "image") {
63
+ // Normalize type for comparison (remove leading dot if present)
64
+ var normalizedType = type.startsWith(".") ? type.slice(1) : type;
65
+ if (type === "image/*" || normalizedType === "image") {
61
66
  if ((0, _constants.isImageFile)(filename)) return true;
62
67
  }
63
- if (type === "audio/*" || type === "audio") {
68
+ if (type === "audio/*" || normalizedType === "audio") {
64
69
  if ((0, _constants.isAudioFile)(filename)) return true;
65
70
  }
66
- if (type === "video/*" || type === "video") {
71
+ if (type === "video/*" || normalizedType === "video") {
67
72
  if ((0, _constants.isVideoFile)(filename)) return true;
68
73
  }
69
- if (type === "document" || type === "pdf" || type === "doc") {
74
+ if (normalizedType === "document" || normalizedType === "pdf" || normalizedType === "doc") {
70
75
  if ((0, _constants.isDocumentFile)(filename)) return true;
71
76
  }
72
77
  }
@@ -33,9 +33,6 @@ var MultipleFileUpload = function MultipleFileUpload(_ref) {
33
33
  setHighlightDropArea = _ref.setHighlightDropArea,
34
34
  onBeforeselect = _ref.onBeforeselect,
35
35
  styles = _ref.styles;
36
- var handleClick = function handleClick(e) {
37
- onBeforeselect === null || onBeforeselect === void 0 || onBeforeselect(e);
38
- };
39
36
  return __jsx("div", {
40
37
  className: "app-multi-file-upload"
41
38
  }, __jsx("div", {
@@ -64,7 +61,7 @@ var MultipleFileUpload = function MultipleFileUpload(_ref) {
64
61
  name: "files",
65
62
  multiple: multiple,
66
63
  accept: chooseFilter,
67
- disabled: disabled || readonly,
64
+ disabled: disabled,
68
65
  required: required,
69
66
  "aria-label": arialabel || displayname || "File selection field",
70
67
  onChange: onFileSelect,
@@ -72,8 +69,7 @@ var MultipleFileUpload = function MultipleFileUpload(_ref) {
72
69
  tabIndex: tabindex,
73
70
  style: {
74
71
  display: "none"
75
- },
76
- onClick: handleClick
72
+ }
77
73
  }), __jsx("a", {
78
74
  className: "app-anchor upload-label",
79
75
  onClick: disabled || readonly ? undefined : triggerFileSelect
@@ -26,9 +26,6 @@ var SingleFileUpload = function SingleFileUpload(_ref) {
26
26
  triggerFileSelect = _ref.triggerFileSelect,
27
27
  onFileSelect = _ref.onFileSelect,
28
28
  onBeforeselect = _ref.onBeforeselect;
29
- var handleClick = function handleClick(e) {
30
- onBeforeselect === null || onBeforeselect === void 0 || onBeforeselect(e);
31
- };
32
29
  return __jsx("div", {
33
30
  className: "app-single-file-upload"
34
31
  }, __jsx("div", {
@@ -41,7 +38,7 @@ var SingleFileUpload = function SingleFileUpload(_ref) {
41
38
  type: "file",
42
39
  name: "files",
43
40
  accept: chooseFilter,
44
- disabled: disabled || readonly,
41
+ disabled: disabled,
45
42
  required: required,
46
43
  "aria-label": arialabel || displayname || "File selection field",
47
44
  onChange: onFileSelect,
@@ -49,14 +46,13 @@ var SingleFileUpload = function SingleFileUpload(_ref) {
49
46
  tabIndex: tabindex,
50
47
  style: {
51
48
  display: "none"
52
- },
53
- onClick: handleClick
49
+ }
54
50
  }), __jsx("button", {
55
51
  id: "dropzone",
56
52
  type: "button",
57
53
  className: "app-button btn btn-default",
58
54
  onClick: disabled || readonly ? undefined : triggerFileSelect,
59
- disabled: disabled || readonly,
55
+ disabled: disabled,
60
56
  style: styles
61
57
  }, __jsx("i", {
62
58
  className: iconclass
@@ -7,7 +7,6 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
10
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
10
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
12
11
  var _react = _interopRequireWildcard(require("react"));
13
12
  var _clsx = _interopRequireDefault(require("clsx"));
@@ -22,8 +21,6 @@ var _confirmDialog = _interopRequireDefault(require("@wavemaker/react-runtime/co
22
21
  var _excluded = ["fileInputRef", "chooseFilter", "highlightDropArea", "uploadedFiles", "selectedFolders", "setSelectedFolders", "dragOverHandler", "onFileSelect", "onFileDrop", "setHighlightDropArea", "clearSelectedFile", "triggerFileSelect", "onFileDelete", "confirmDialogOpen", "confirmDialogProps", "closeConfirmDialog"];
23
22
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t2 in e) "default" !== _t2 && {}.hasOwnProperty.call(e, _t2) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t2)) && (i.get || i.set) ? o(f, _t2, i) : f[_t2] = e[_t2]); return f; })(e, t); }
24
23
  var __jsx = _react["default"].createElement;
25
- function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26
- function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27
24
  var WmFileUpload = /*#__PURE__*/(0, _react.memo)(function (props) {
28
25
  var _props$caption = props.caption,
29
26
  caption = _props$caption === void 0 ? _constants.fileUploadConstants.DEFAULT_CLASSES.DEFAULT_CAPTIONS.SELECT : _props$caption,
@@ -74,16 +71,15 @@ var WmFileUpload = /*#__PURE__*/(0, _react.memo)(function (props) {
74
71
  confirmDialogProps = _useFileUpload.confirmDialogProps,
75
72
  closeConfirmDialog = _useFileUpload.closeConfirmDialog,
76
73
  events = (0, _objectWithoutProperties2["default"])(_useFileUpload, _excluded);
77
- var containerStyle = _objectSpread(_objectSpread({}, styles), {}, {
78
- width: width !== "auto" ? width : undefined,
79
- height: height || undefined
80
- });
81
74
  return __jsx(_Box["default"], {
82
75
  component: "div",
83
76
  className: (0, _clsx["default"])("app-fileupload", className),
84
77
  id: id,
85
- sx: containerStyle,
86
- title: hint
78
+ title: hint,
79
+ hidden: props.hidden,
80
+ style: {
81
+ width: "100%"
82
+ }
87
83
  }, !multiple ? __jsx(_SingleUpload["default"], (0, _extends2["default"])({
88
84
  fileInputRef: fileInputRef,
89
85
  caption: caption,
@@ -155,7 +151,7 @@ var WmFileUpload = /*#__PURE__*/(0, _react.memo)(function (props) {
155
151
  listener: {}
156
152
  }));
157
153
  }, function (prevProps, nextProps) {
158
- var keysToCheck = ["caption", "name", "hint", "arialabel", "tabindex", "multiple", "fileuploadmessage", "show", "disabled", "contenttype", "maxfilesize", "iconclass", "cleariconclass", "cleariconhint", "uploadpath", "datasource", "selectedFiles", "destination", "filelistheight", "width", "showprogressbar", "showprogressbarpercentage", "deleteiconhint", "extensions", "filetype", "readonly", "required", "deletedatasource", "displayname", "height", "onBeforeselect", "onSelect", "onDelete", "onBeforedelete", "onError"];
154
+ var keysToCheck = ["caption", "name", "hint", "arialabel", "tabindex", "multiple", "fileuploadmessage", "show", "disabled", "contenttype", "maxfilesize", "iconclass", "cleariconclass", "cleariconhint", "uploadpath", "datasource", "selectedFiles", "destination", "filelistheight", "width", "showprogressbar", "showprogressbarpercentage", "deleteiconhint", "extensions", "filetype", "readonly", "required", "deletedatasource", "displayname", "height", "onBeforeselect", "onSelect", "onDelete", "onBeforedelete", "onError", "hidden"];
159
155
 
160
156
  // Check if any props that affect rendering have changed
161
157
  var propsChanged = keysToCheck.some(function (key) {
@@ -181,7 +181,7 @@ var useFileUpload = exports.useFileUpload = function useFileUpload(props) {
181
181
  // Add event listeners for drag and drop
182
182
  if (disabled || readonly) {
183
183
  setHighlightDropArea(false);
184
- window.removeEventListener("focus", disableDropZone);
184
+ window.removeEventListener("focus", _disableDropZone);
185
185
  } else {
186
186
  document.addEventListener("dragover", dragOverCb);
187
187
  document.addEventListener("drop", dropCb);
@@ -212,9 +212,9 @@ var useFileUpload = exports.useFileUpload = function useFileUpload(props) {
212
212
  e.stopPropagation();
213
213
  setHighlightDropArea(true);
214
214
  };
215
- var disableDropZone = function disableDropZone() {
215
+ var _disableDropZone = function disableDropZone() {
216
216
  setHighlightDropArea(false);
217
- window.removeEventListener("focus", disableDropZone);
217
+ window.removeEventListener("focus", _disableDropZone);
218
218
  };
219
219
  var onBeforeSelectEventCall = function onBeforeSelectEventCall($event, $files) {
220
220
  var files = (0, _Utils.getValidFiles)($files, contenttype, extensions || "", filetype || "", chooseFilter, maxfilesize || "10", onError, listener);
@@ -233,6 +233,14 @@ var useFileUpload = exports.useFileUpload = function useFileUpload(props) {
233
233
  }),
234
234
  files: files.validFiles
235
235
  });
236
+ if (onBeforeselect) {
237
+ var _listener$Widgets2;
238
+ var event = _objectSpread(_objectSpread({}, $event), {}, {
239
+ _reactName: "onBeforeselect"
240
+ });
241
+ onBeforeselect(event, listener === null || listener === void 0 || (_listener$Widgets2 = listener.Widgets) === null || _listener$Widgets2 === void 0 ? void 0 : _listener$Widgets2[name], files.validFiles);
242
+ }
243
+ // Proceed only if neither callback returns false
236
244
  if (beforeSelectVal !== false) {
237
245
  var _fileInputRef$current;
238
246
  var filesWithIds = files.validFiles.map(function (file) {
@@ -345,12 +353,15 @@ var useFileUpload = exports.useFileUpload = function useFileUpload(props) {
345
353
  onOk: function onOk() {
346
354
  try {
347
355
  if (deletedatasource) {
348
- var _file$_response, _fileInputRef$current2, _listener$App3;
356
+ var _file$_response, _listener$Widgets3, _listener$App3;
349
357
  deletedatasource._deleteFileObservable = (0, _eventNotifier.eventObserver)();
350
358
  deleteFileProgress(file);
351
359
  var fileName = ((_file$_response = file._response) === null || _file$_response === void 0 || (_file$_response = _file$_response[0]) === null || _file$_response === void 0 ? void 0 : _file$_response.fileName) || file.name;
352
360
  deletedatasource.setInput("file", fileName);
353
- onDelete === null || onDelete === void 0 || onDelete(e, (_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 || (_fileInputRef$current2 = _fileInputRef$current2.files) === null || _fileInputRef$current2 === void 0 ? void 0 : _fileInputRef$current2[0], fileName);
361
+ var event = _objectSpread(_objectSpread({}, e), {}, {
362
+ _reactName: "onDelete"
363
+ });
364
+ onDelete === null || onDelete === void 0 || onDelete(event, listener === null || listener === void 0 || (_listener$Widgets3 = listener.Widgets) === null || _listener$Widgets3 === void 0 ? void 0 : _listener$Widgets3[name]);
354
365
  listener && (listener === null || listener === void 0 || (_listener$App3 = listener.App) === null || _listener$App3 === void 0 ? void 0 : _listener$App3.notifyApp("File deleted successfully", "Success"));
355
366
  }
356
367
  } catch (error) {