openstack-uicore-foundation 5.0.2 → 5.0.3-beta.2
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.
- package/.claude/settings.local.json +12 -0
- package/lib/components/ajaxloader.js.map +1 -1
- package/lib/components/attendance-tracker.js +1 -1
- package/lib/components/attendance-tracker.js.map +1 -1
- package/lib/components/bulk-actions-selector.js.map +1 -1
- package/lib/components/circle-button.js.map +1 -1
- package/lib/components/clock.js +1 -1
- package/lib/components/clock.js.map +1 -1
- package/lib/components/exclusive-wrapper.js.map +1 -1
- package/lib/components/extra-questions-mui.js.map +1 -1
- package/lib/components/extra-questions.js +1 -1
- package/lib/components/extra-questions.js.map +1 -1
- package/lib/components/form-validation.js.map +1 -1
- package/lib/components/forms/rsvp-form.js.map +1 -1
- package/lib/components/forms/simple-form.js +1 -1
- package/lib/components/forms/simple-form.js.map +1 -1
- package/lib/components/free-text-search.js +1 -1
- package/lib/components/free-text-search.js.map +1 -1
- package/lib/components/google-map.js +1 -1
- package/lib/components/google-map.js.map +1 -1
- package/lib/components/index.js +1 -1
- package/lib/components/index.js.map +1 -1
- package/lib/components/inputs/access-levels-input.js +1 -1
- package/lib/components/inputs/access-levels-input.js.map +1 -1
- package/lib/components/inputs/action-dropdown.js.map +1 -1
- package/lib/components/inputs/attendee-input.js +1 -1
- package/lib/components/inputs/attendee-input.js.map +1 -1
- package/lib/components/inputs/checkbox-list.js.map +1 -1
- package/lib/components/inputs/company-input-v2.js +1 -1
- package/lib/components/inputs/company-input-v2.js.map +1 -1
- package/lib/components/inputs/company-input.js +1 -1
- package/lib/components/inputs/company-input.js.map +1 -1
- package/lib/components/inputs/country-dropdown.js +1 -1
- package/lib/components/inputs/country-dropdown.js.map +1 -1
- package/lib/components/inputs/country-input.js +1 -1
- package/lib/components/inputs/country-input.js.map +1 -1
- package/lib/components/inputs/datetimepicker.js.map +1 -1
- package/lib/components/inputs/dropdown.js.map +1 -1
- package/lib/components/inputs/editor-input-v2.js.map +1 -1
- package/lib/components/inputs/editor-input-v3.js.map +1 -1
- package/lib/components/inputs/editor-input.js.map +1 -1
- package/lib/components/inputs/event-input.js +1 -1
- package/lib/components/inputs/event-input.js.map +1 -1
- package/lib/components/inputs/free-multi-text-input.js.map +1 -1
- package/lib/components/inputs/group-input.js +1 -1
- package/lib/components/inputs/group-input.js.map +1 -1
- package/lib/components/inputs/grouped-dropdown.js.map +1 -1
- package/lib/components/inputs/language-input.js +1 -1
- package/lib/components/inputs/language-input.js.map +1 -1
- package/lib/components/inputs/member-input.js +1 -1
- package/lib/components/inputs/member-input.js.map +1 -1
- package/lib/components/inputs/operator-input.js.map +1 -1
- package/lib/components/inputs/organization-input.js +1 -1
- package/lib/components/inputs/organization-input.js.map +1 -1
- package/lib/components/inputs/promocode-input.js +1 -1
- package/lib/components/inputs/promocode-input.js.map +1 -1
- package/lib/components/inputs/radio-list.js.map +1 -1
- package/lib/components/inputs/registration-company-input.js +1 -1
- package/lib/components/inputs/registration-company-input.js.map +1 -1
- package/lib/components/inputs/speaker-input.js +1 -1
- package/lib/components/inputs/speaker-input.js.map +1 -1
- package/lib/components/inputs/sponsor-input.js +1 -1
- package/lib/components/inputs/sponsor-input.js.map +1 -1
- package/lib/components/inputs/stepped-select.js.map +1 -1
- package/lib/components/inputs/summit-days-select.js.map +1 -1
- package/lib/components/inputs/summit-input.js +1 -1
- package/lib/components/inputs/summit-input.js.map +1 -1
- package/lib/components/inputs/summit-venues-select.js.map +1 -1
- package/lib/components/inputs/tag-input.js +1 -1
- package/lib/components/inputs/tag-input.js.map +1 -1
- package/lib/components/inputs/text-input.js.map +1 -1
- package/lib/components/inputs/textarea-input.js.map +1 -1
- package/lib/components/inputs/ticket-types-input.js +1 -1
- package/lib/components/inputs/ticket-types-input.js.map +1 -1
- package/lib/components/inputs/upload-input-v2.js +1 -1
- package/lib/components/inputs/upload-input-v2.js.map +1 -1
- package/lib/components/inputs/upload-input-v3.js +1 -1
- package/lib/components/inputs/upload-input-v3.js.map +1 -1
- package/lib/components/inputs/upload-input.js.map +1 -1
- package/lib/components/mui/alert-button.js +2 -0
- package/lib/components/mui/alert-button.js.map +1 -0
- package/lib/components/mui/alert-modal.js +2 -0
- package/lib/components/mui/alert-modal.js.map +1 -0
- package/lib/components/mui/auth-button.js +2 -0
- package/lib/components/mui/auth-button.js.map +1 -0
- package/lib/components/mui/cart-button.js +2 -0
- package/lib/components/mui/cart-button.js.map +1 -0
- package/lib/components/mui/checkbox-list.js.map +1 -1
- package/lib/components/mui/chip-list.js.map +1 -1
- package/lib/components/mui/chip-notify.js +1 -1
- package/lib/components/mui/chip-notify.js.map +1 -1
- package/lib/components/mui/chip-select-input.js.map +1 -1
- package/lib/components/mui/confirm-delete-dialog.js +2 -0
- package/lib/components/mui/confirm-delete-dialog.js.map +1 -0
- package/lib/components/mui/confirm-dialog.js.map +1 -1
- package/lib/components/mui/custom-alert.js.map +1 -1
- package/lib/components/mui/dashboard-card.js +2 -0
- package/lib/components/mui/dashboard-card.js.map +1 -0
- package/lib/components/mui/dnd-list.js.map +1 -1
- package/lib/components/mui/download-btn.js +2 -0
- package/lib/components/mui/download-btn.js.map +1 -0
- package/lib/components/mui/dropdown-checkbox.js.map +1 -1
- package/lib/components/mui/editable-table.js.map +1 -1
- package/lib/components/mui/form-item-table.js +1 -1
- package/lib/components/mui/form-item-table.js.map +1 -1
- package/lib/components/mui/formik-inputs/additional-input-list.js.map +1 -1
- package/lib/components/mui/formik-inputs/additional-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/async-select.js.map +1 -1
- package/lib/components/mui/formik-inputs/checkbox-group.js.map +1 -1
- package/lib/components/mui/formik-inputs/checkbox.js.map +1 -1
- package/lib/components/mui/formik-inputs/company-input.js +1 -1
- package/lib/components/mui/formik-inputs/company-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/datepicker.js.map +1 -1
- package/lib/components/mui/formik-inputs/discount-field.js.map +1 -1
- package/lib/components/mui/formik-inputs/dropdown-checkbox.js.map +1 -1
- package/lib/components/mui/formik-inputs/dropdown-radio.js.map +1 -1
- package/lib/components/mui/formik-inputs/file-size-field.js.map +1 -1
- package/lib/components/mui/formik-inputs/item-price-tiers.js +1 -1
- package/lib/components/mui/formik-inputs/item-price-tiers.js.map +1 -1
- package/lib/components/mui/formik-inputs/price-field.js.map +1 -1
- package/lib/components/mui/formik-inputs/quantity-field.js.map +1 -1
- package/lib/components/mui/formik-inputs/radio-group.js.map +1 -1
- package/lib/components/mui/formik-inputs/select-group.js.map +1 -1
- package/lib/components/mui/formik-inputs/select.js.map +1 -1
- package/lib/components/mui/formik-inputs/sponsor-input.js +1 -1
- package/lib/components/mui/formik-inputs/sponsor-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-input.js +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-input.js.map +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-summit-select.js +1 -1
- package/lib/components/mui/formik-inputs/sponsorship-summit-select.js.map +1 -1
- package/lib/components/mui/formik-inputs/summit-addon-select.js +1 -1
- package/lib/components/mui/formik-inputs/summit-addon-select.js.map +1 -1
- package/lib/components/mui/formik-inputs/switch.js.map +1 -1
- package/lib/components/mui/formik-inputs/textfield.js.map +1 -1
- package/lib/components/mui/formik-inputs/timepicker.js.map +1 -1
- package/lib/components/mui/formik-inputs/upload.js +1 -1
- package/lib/components/mui/formik-inputs/upload.js.map +1 -1
- package/lib/components/mui/infinite-table.js.map +1 -1
- package/lib/components/mui/item-settings-modal.js +1 -1
- package/lib/components/mui/item-settings-modal.js.map +1 -1
- package/lib/components/mui/loading-overlay.js +2 -0
- package/lib/components/mui/loading-overlay.js.map +1 -0
- package/lib/components/mui/menu-button.js.map +1 -1
- package/lib/components/mui/nav-bar.js +2 -0
- package/lib/components/mui/nav-bar.js.map +1 -0
- package/lib/components/mui/notes-modal.js +1 -1
- package/lib/components/mui/notes-modal.js.map +1 -1
- package/lib/components/mui/order-summary.js +2 -0
- package/lib/components/mui/order-summary.js.map +1 -0
- package/lib/components/mui/search-input.js +1 -1
- package/lib/components/mui/search-input.js.map +1 -1
- package/lib/components/mui/show-confirm-dialog.js.map +1 -1
- package/lib/components/mui/snackbar-notification.js +1 -1
- package/lib/components/mui/snackbar-notification.js.map +1 -1
- package/lib/components/mui/sortable-table.js.map +1 -1
- package/lib/components/mui/sponsor-addon-select.js +1 -1
- package/lib/components/mui/sponsor-addon-select.js.map +1 -1
- package/lib/components/mui/status-chip.js +2 -0
- package/lib/components/mui/status-chip.js.map +1 -0
- package/lib/components/mui/stripe-payment.js +2 -0
- package/lib/components/mui/stripe-payment.js.map +1 -0
- package/lib/components/mui/summit-addon-select.js +1 -1
- package/lib/components/mui/summit-addon-select.js.map +1 -1
- package/lib/components/mui/summits-dropdown.js +1 -1
- package/lib/components/mui/summits-dropdown.js.map +1 -1
- package/lib/components/mui/table.js +1 -1
- package/lib/components/mui/table.js.map +1 -1
- package/lib/components/mui/upload-btn.js +2 -0
- package/lib/components/mui/upload-btn.js.map +1 -0
- package/lib/components/mui/upload-dialog.js +2 -0
- package/lib/components/mui/upload-dialog.js.map +1 -0
- package/lib/components/progressive-img.js.map +1 -1
- package/lib/components/raw-html.js.map +1 -1
- package/lib/components/schedule-builder-view.js +1 -1
- package/lib/components/schedule-builder-view.js.map +1 -1
- package/lib/components/sections/panel.js.map +1 -1
- package/lib/components/simple-link-list.js.map +1 -1
- package/lib/components/sponsored-project-input.js +1 -1
- package/lib/components/sponsored-project-input.js.map +1 -1
- package/lib/components/summit-dropdown.js.map +1 -1
- package/lib/components/table-editable.js +1 -1
- package/lib/components/table-editable.js.map +1 -1
- package/lib/components/table-selectable.js.map +1 -1
- package/lib/components/table-sortable.js.map +1 -1
- package/lib/components/table.js.map +1 -1
- package/lib/components/video-stream.js.map +1 -1
- package/lib/css/components/index.css +1 -1
- package/lib/css/components/index.css.map +1 -1
- package/lib/css/components/mui/auth-button.css +1 -0
- package/lib/css/components/mui/nav-bar.css +1 -0
- package/lib/css/components/mui/upload-dialog.css +2 -0
- package/lib/css/components/mui/upload-dialog.css.map +1 -0
- package/lib/i18n.js +1 -1
- package/lib/i18n.js.map +1 -1
- package/lib/models/index.js.map +1 -1
- package/lib/models/summit-event.js.map +1 -1
- package/lib/security/abstract-auth-callback-route-v2.js +1 -1
- package/lib/security/abstract-auth-callback-route-v2.js.map +1 -1
- package/lib/security/abstract-auth-callback-route.js +1 -1
- package/lib/security/abstract-auth-callback-route.js.map +1 -1
- package/lib/security/actions.js +1 -1
- package/lib/security/actions.js.map +1 -1
- package/lib/security/methods.js +1 -1
- package/lib/security/methods.js.map +1 -1
- package/lib/security/reducers.js +1 -1
- package/lib/security/reducers.js.map +1 -1
- package/lib/security/session-checker.js +1 -1
- package/lib/security/session-checker.js.map +1 -1
- package/lib/utils/actions.js +1 -1
- package/lib/utils/actions.js.map +1 -1
- package/lib/utils/fragment-parser.js.map +1 -1
- package/lib/utils/methods.js +1 -1
- package/lib/utils/methods.js.map +1 -1
- package/lib/utils/money.js.map +1 -1
- package/lib/utils/query-actions.js +1 -1
- package/lib/utils/query-actions.js.map +1 -1
- package/lib/utils/questions-set.js +1 -1
- package/lib/utils/questions-set.js.map +1 -1
- package/lib/utils/reducers.js +1 -1
- package/lib/utils/reducers.js.map +1 -1
- package/lib/utils/use-fit-text.js.map +1 -1
- package/package.json +9 -1
- package/.codegraph/config.json +0 -140
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components/mui/form-item-table.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/ItemTableField.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/DatePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-datepicker.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-discountfield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-radio.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-pricefield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-textfield.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/TimePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-timepicker.js","webpack://openstack-uicore-foundation/./src/utils/constants.js","webpack://openstack-uicore-foundation/./src/utils/money.js","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Clear\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Edit\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/AdapterMoment\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/LocalizationProvider\"","webpack://openstack-uicore-foundation/external commonjs \"formik\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Settings\"","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/GlobalQuantityField.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/UnderlyingAlertNote.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport { MenuItem } from \"@mui/material\";\nimport MuiFormikCheckbox from \"../../formik-inputs/mui-formik-checkbox\";\nimport MuiFormikDropdownCheckbox from \"../../formik-inputs/mui-formik-dropdown-checkbox\";\nimport MuiFormikDropdownRadio from \"../../formik-inputs/mui-formik-dropdown-radio\";\nimport MuiFormikDatepicker from \"../../formik-inputs/mui-formik-datepicker\";\nimport MuiFormikTimepicker from \"../../formik-inputs/mui-formik-timepicker\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\nimport MuiFormikSelect from \"../../formik-inputs/mui-formik-select\";\n\nconst ItemTableField = ({\n rowId,\n field,\n timeZone,\n label = \"\",\n disabled = false\n}) => {\n const name = `i-${rowId}-c-${field.class_field}-f-${field.type_id}`;\n const commonProps = { name, label, disabled };\n\n switch (field.type) {\n case \"CheckBox\":\n return <MuiFormikCheckbox {...commonProps} />;\n case \"CheckBoxList\":\n return (\n <MuiFormikDropdownCheckbox\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"RadioButtonList\":\n return (\n <MuiFormikDropdownRadio\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"DateTime\":\n return <MuiFormikDatepicker {...commonProps} />;\n case \"Time\":\n return <MuiFormikTimepicker {...commonProps} timeZone={timeZone} />;\n case \"Quantity\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n type=\"number\"\n slotProps={{\n htmlInput: {\n min: field.minimum_quantity,\n ...(field.maximum_quantity > 0\n ? { max: field.maximum_quantity }\n : {})\n }\n }}\n />\n );\n case \"ComboBox\":\n return (\n <MuiFormikSelect {...commonProps} size=\"small\">\n {field.values.map((v) => (\n <MenuItem key={`ddopt-${v.id}`} value={v.id}>\n {v.value}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n );\n case \"Text\":\n return <MuiFormikTextField {...commonProps} fullWidth size=\"small\" />;\n case \"TextArea\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n multiline\n rows={3}\n />\n );\n }\n};\n\nexport default ItemTableField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikCheckbox = ({ name, label, ...props }) => {\n const [field, meta] = useField({ name, type: \"checkbox\" });\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Checkbox\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckbox.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikCheckbox;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/DatePicker\");","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { useField } from \"formik\";\n\nconst MuiFormikDatepicker = ({\n name,\n label,\n required,\n disabled = false,\n ...props\n}) => {\n const [field, meta, helpers] = useField(name);\n const requiredLabel = `${label} *`;\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DatePicker\n value={field.value}\n onChange={helpers.setValue}\n slotProps={{\n textField: {\n name,\n label: required ? requiredLabel : label,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n fullWidth: true,\n disabled\n },\n day: {\n sx: {\n fontSize: \"1.2rem\",\n fontWeight: 600\n }\n },\n layout: {\n sx: {\n \"& .MuiDayCalendar-weekDayLabel\": {\n fontSize: \"1rem\"\n }\n }\n }\n }}\n margin=\"normal\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikDatepicker.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool\n};\n\nexport default MuiFormikDatepicker;","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { InputAdornment } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikDiscountField = ({\n name,\n label,\n discountType,\n inCents = false,\n disabled = false,\n ...props\n}) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const emptyValue = meta.initialValue === null ? null : 0;\n\n const getDisplayValue = () => {\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n return inCents ? field.value / ONE_HUNDRED : field.value;\n };\n\n const adornment =\n discountType === DISCOUNT_TYPES.RATE\n ? {\n endAdornment: <InputAdornment position=\"end\">%</InputAdornment>\n }\n : {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n };\n\n const inputProps =\n discountType === DISCOUNT_TYPES.RATE\n ? { max: 100, inputMode: \"numeric\", step: 1 }\n : { inputMode: \"decimal\", step: 1 };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newDiscount = inCents ? numericValue * ONE_HUNDRED : numericValue;\n\n helpers.setValue(newDiscount);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n value={getDisplayValue()}\n onChange={handleChange}\n type=\"number\"\n disabled={disabled}\n slotProps={{\n input: {\n ...adornment\n },\n htmlInput: {\n min: 0,\n ...inputProps\n }\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikDiscountField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikDiscountField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport {\n Checkbox,\n Divider,\n FormControl,\n ListItemText,\n MenuItem,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownCheckbox = ({ name, options, ...rest }) => {\n const [field, meta, helpers] = useField(name);\n const allSelected = options.every(({ value }) =>\n field.value?.includes(value)\n );\n\n const handleChange = (event) => {\n const { value } = event.target;\n\n // If \"all\" was clicked\n if (value.includes(\"all\")) {\n if (allSelected) {\n helpers.setValue([]);\n } else {\n helpers.setValue(options.map((opt) => opt.value));\n }\n } else {\n helpers.setValue(value);\n }\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n multiple\n value={field.value || []}\n onChange={handleChange}\n onBlur={field.onBlur}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected?.length) {\n return rest.placeholder || \"\";\n }\n if (allSelected) {\n return T.translate(\"general.all\");\n }\n const selectedNames = options\n .filter(({ value }) => selected?.includes(value))\n .map(({ label }) => label);\n return selectedNames.join(\", \");\n }}\n >\n <MenuItem key=\"all\" value=\"all\">\n <Checkbox checked={allSelected} />\n <ListItemText primary={T.translate(\"general.all\")} />\n </MenuItem>\n <Divider />\n {options.map(({ label, value }) => (\n <MenuItem key={`ckbx-ddl-${value}`} value={value}>\n <Checkbox checked={field.value?.includes(value)} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownCheckbox;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport {\n FormControl,\n ListItemText,\n MenuItem,\n Radio,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownRadio = ({ name, options, placeholder, ...rest }) => {\n const finalPlaceholder =\n placeholder || T.translate(\"general.select_an_option\");\n const [field, meta, helpers] = useField(name);\n\n const handleChange = (event) => {\n helpers.setValue(event.target.value);\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n value={field.value || \"\"}\n onChange={handleChange}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected) {\n return <em>{finalPlaceholder}</em>;\n }\n const selectedOption = options.find(\n ({ value }) => value === selected\n );\n return selectedOption ? selectedOption.label : \"\";\n }}\n >\n {options.map(({ label, value }) => (\n <MenuItem key={`radio-ddl-${value}`} value={value}>\n <Radio checked={field.value === value} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownRadio;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, {useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {InputAdornment} from \"@mui/material\";\nimport {useField} from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport {DECIMAL_DIGITS, ONE_HUNDRED} from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikPriceField = ({\n name,\n label,\n inCents = false,\n inputProps = {step: 0.01},\n ...props\n }) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [focusedValue, setFocusedValue] = useState(\"\");\n\n // emptyValue is always 0 when editing this field, null is handled by N/A checkbox\n const emptyValue = 0;\n\n const getRawString = () => {\n if (cleared || field.value == null) return \"\";\n if (field.value === 0) return \"0\";\n const raw = inCents ? field.value / ONE_HUNDRED : field.value;\n return String(Number(raw.toFixed(DECIMAL_DIGITS)));\n };\n\n const getDisplayValue = () => {\n if (isFocused) return focusedValue;\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n const str = getRawString();\n const dotIdx = str.indexOf(\".\");\n if (dotIdx === -1) return `${str}.00`;\n if (str.length - dotIdx - 1 === 1) return `${str}0`;\n return str;\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n setFocusedValue(getRawString());\n };\n\n const handleBlur = (e) => {\n setIsFocused(false);\n if (props.onBlur) props.onBlur(e);\n };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n setFocusedValue(newVal);\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newPrice = inCents\n ? Math.round(numericValue * ONE_HUNDRED)\n : numericValue;\n\n helpers.setValue(newPrice);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n type=\"number\"\n value={getDisplayValue()}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n slotProps={{\n input: {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n }\n }}\n inputProps={{\n min: 0,\n inputMode: \"decimal\",\n ...inputProps\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikPriceField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikPriceField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Select,\n FormHelperText,\n FormControl,\n InputAdornment,\n IconButton,\n InputLabel\n} from \"@mui/material\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSelect = ({\n name,\n label,\n placeholder,\n children,\n isClearable,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const handleClear = (ev) => {\n ev.stopPropagation();\n helpers.setValue(\"\");\n };\n\n const hasValue = field?.value && field.value !== \"\";\n const shouldShrink = hasValue || Boolean(placeholder);\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n {label && (\n <InputLabel htmlFor={name} id={`${name}-label`} shrink={shouldShrink}>\n {label}\n </InputLabel>\n )}\n <Select\n name={name}\n id={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n labelId={`${name}-label`}\n label={label}\n notched={shouldShrink}\n displayEmpty\n renderValue={(selected) => {\n if (!selected || selected === \"\") {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return selected;\n }}\n endAdornment={\n isClearable && field.value ? (\n <InputAdornment position=\"end\" sx={{ mr: 2 }}>\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {children}\n </Select>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSelect.propTypes = {\n name: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n placeholder: PropTypes.string,\n isClearable: PropTypes.bool\n};\n\nexport default MuiFormikSelect;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, TextField, Typography } from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikTextField = ({\n name,\n label,\n maxLength,\n required = false,\n ...props\n}) => {\n const [field, meta] = useField(name);\n const currentLength = field.value?.length || 0;\n\n let finalLabel = \"\";\n\n if (label) {\n finalLabel = required ? `${label} *` : label;\n }\n\n return (\n <Box>\n <TextField\n name={name}\n label={finalLabel}\n {...field}\n onBlur={field.onBlur}\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n helperText={meta.touched && meta.error}\n slotProps={{\n htmlInput: {\n maxLength\n }\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n {maxLength && (\n <Typography sx={{ fontSize: \"1.2rem\", color: \"#00000099\", pl: 2 }}>\n {`${maxLength - currentLength} characters left`}\n </Typography>\n )}\n </Box>\n );\n};\n\nMuiFormikTextField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n maxLength: PropTypes.number,\n required: PropTypes.bool\n};\n\nexport default MuiFormikTextField;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/TimePicker\");","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { TimePicker } from \"@mui/x-date-pickers/TimePicker\";\n\nimport { useField } from \"formik\";\n\nconst MuiFormikTimepicker = ({\n name,\n minTime,\n maxTime,\n timeZone,\n disabled = false\n}) => {\n const [field, meta, helpers] = useField(name);\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <TimePicker\n value={field.value}\n onChange={helpers.setValue}\n minTime={minTime}\n maxTime={maxTime}\n timezone={timeZone}\n label={timeZone}\n views={[\"hours\", \"minutes\"]}\n slotProps={{\n textField: {\n name,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n size: \"small\",\n fullWidth: true,\n disabled,\n sx: {\n \"& .MuiPickersSectionList-root\": {\n width: \"100%\"\n },\n \"& .MuiFormHelperText-root\": {\n marginLeft: \"4px\",\n marginRight: \"4px\"\n }\n }\n }\n }}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikTimepicker.propTypes = {\n name: PropTypes.string.isRequired\n};\n\nexport default MuiFormikTimepicker;\n","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\n","/**\n * Copyright 2025 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport {\n CENTS_FACTOR,\n THREE_DECIMAL_PLACES,\n TWO_DECIMAL_PLACES,\n ZERO_INT,\n ONE_CENT\n} from \"./constants\";\n\nconst CURRENCY_SYMBOL = {\n USD: \"$\",\n EUR: \"€\",\n GBP: \"£\",\n CAD: \"C$\",\n AUD: \"A$\",\n NZD: \"NZ$\",\n CHF: \"CHF\",\n ARS: \"AR$\",\n BRL: \"R$\",\n MXN: \"MX$\",\n};\n\n/**\n * Convert a decimal money amount to integer cents safely (no floating point math).\n *\n * Why this exists:\n * - `Math.round(parseFloat(x) * 100)` can be wrong due to IEEE-754 floating point errors\n * (e.g. 1.005 * 100 may become 100.499999..., rounding down unexpectedly).\n *\n * Input:\n * - number or string (recommended: string from API/UI)\n * - Examples: \"12.34\", \"1,234.56\", \"1234,56\", 12.34\n *\n * Output:\n * - Number cents (exact), e.g. \"12.34\" -> 1234\n *\n * Rounding:\n * - Half-up to 2 decimals (>= 0.005 USD rounds up by 1 cent).\n *\n * Notes:\n * - Amounts are assumed to be NON-negative (per your requirement).\n * - Throws on invalid formats (does not silently return 0).\n */\nexport function amountToCents(amount) {\n if (amount == null) throw new Error(\"amount is required\");\n\n let s = String(amount).trim();\n\n // Normalize common separators:\n // - \"1,234.56\" => \"1234.56\" (remove thousands separators)\n // - \"1234,56\" => \"1234.56\" (convert decimal comma to dot)\n if (s.includes(\",\") && s.includes(\".\")) {\n s = s.replace(/,/g, \"\");\n } else if (s.includes(\",\") && !s.includes(\".\")) {\n s = s.replace(\",\", \".\");\n }\n\n // Validate: digits optionally followed by '.' and more digits\n if (!/^\\d+(\\.\\d+)?$/.test(s)) {\n throw new Error(`Invalid money format: \"${amount}\"`);\n }\n\n const [intPart, fracRaw = \"\"] = s.split(\".\");\n\n // Pad at least 3 fractional digits so we can:\n // - take 2 digits for cents\n // - take the 3rd digit to decide rounding\n const fracPadded = (`${fracRaw }000`);\n\n const tenths = fracPadded[0] ?? \"0\"; // 1st decimal digit\n const hundredths = fracPadded[1] ?? \"0\"; // 2nd decimal digit (cents)\n const thousandths = fracPadded[2] ?? \"0\"; // 3rd decimal digit (rounding decision)\n\n // If there are more than 3 decimals, we track if any non-zero exists after the 3rd.\n // This can matter for policies like bankers rounding; here it's mainly informational.\n const trailing =\n fracRaw.length > THREE_DECIMAL_PLACES\n ? fracRaw.slice(THREE_DECIMAL_PLACES)\n : \"\";\n const hasTrailingNonZero = /[1-9]/.test(trailing);\n\n // Build cents as integer: (dollars * 100) + (first two decimal digits)\n let cents = BigInt(intPart) * CENTS_FACTOR + BigInt(tenths + hundredths);\n\n // Half-up rounding:\n // - If the 3rd digit is >= 5, round up by 1 cent.\n // - If there are more digits beyond the 3rd, \"5xxx\" should also round up.\n const roundUp = thousandths > \"5\" || thousandths === \"5\" || (thousandths === \"5\" && hasTrailingNonZero);\n\n if (roundUp) cents += ONE_CENT;\n\n return Number(cents);\n}\n\n/**\n * Convert an amount in cents to a decimal string (e.g. 1234 -> \"12.34\") safely.\n *\n * Why:\n * - Avoids floating point math (cents / 100) which can lose precision for large integers\n * or if cents is already imprecise as a JS Number.\n *\n * Input:\n * - Accepts: bigint | number | string (digits)\n * - Assumes NON-negative cents (per your requirement).\n *\n * Output:\n * - Always returns a string with exactly 2 decimal places.\n */\nexport function amountFromCents(cents) {\n let c;\n\n // Normalize input to BigInt safely\n if (typeof cents === \"bigint\") {\n c = cents;\n } else if (typeof cents === \"number\") {\n // Ensure it's a safe integer before converting to BigInt\n if (!Number.isSafeInteger(cents)) {\n throw new Error(\"cents must be a safe integer Number (or pass BigInt/string).\");\n }\n c = BigInt(cents);\n } else if (typeof cents === \"string\") {\n const s = cents.trim();\n if (!/^\\d+$/.test(s)) {\n throw new Error(\"cents string must contain digits only (e.g., '1234').\");\n }\n c = BigInt(s);\n } else {\n throw new Error(\"cents must be a bigint, number, or numeric string.\");\n }\n\n if (c < ZERO_INT) {\n throw new Error(\"cents must be non-negative.\");\n }\n\n const amount = c / CENTS_FACTOR;\n const remainder = c % CENTS_FACTOR;\n\n // Always pad remainder to 2 digits\n return `${amount.toString()}.${remainder.toString().padStart(TWO_DECIMAL_PLACES, \"0\")}`;\n}\n\n/**\n * @param cents\n * @param currency\n * @returns {string}\n */\nexport function currencyAmountFromCents(cents, currency = \"USD\"){\n if (typeof cents !== \"number\" || !Number.isInteger(cents)) {\n throw new Error(\"cents must be an integer number\");\n }\n\n const amount = amountFromCents(cents); // \"12.34\"\n const symbol = CURRENCY_SYMBOL[currency] ?? \"$\";\n return `${symbol}${amount}`;\n}\n\n/**\n * Converts a price string into cents.\n * @param {string} priceString - The price (e.g., $0.30).\n * @returns {number} - The amount converted to cents (e.g., 30).\n */\nexport const parsePrice = (priceString) => {\n if (priceString == null) throw new Error(\"priceString is required\");\n\n let s = String(priceString).trim();\n\n // Reject negatives explicitly (per your requirement).\n if (s.includes(\"-\")) throw new Error(\"Negative amounts are not allowed\");\n\n // Keep only digits and separators. Remove currency symbols/letters/spaces.\n s = s.replace(/[^\\d.,]/g, \"\");\n if (!s) throw new Error(`Invalid price: \"${priceString}\"`);\n\n // Delegate exact cents conversion (no floats)\n return amountToCents(s); // <- your safe BigInt cents converter\n};\n","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"@mui/icons-material/Clear\");","module.exports = require(\"@mui/icons-material/Edit\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/material\");","module.exports = require(\"@mui/x-date-pickers/AdapterMoment\");","module.exports = require(\"@mui/x-date-pickers/LocalizationProvider\");","module.exports = require(\"formik\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Settings\");","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, { useEffect } from \"react\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\n\nconst GlobalQuantityField = ({\n row,\n extraColumns,\n value,\n disabled = false\n}) => {\n const name = `i-${row.form_item_id}-c-global-f-quantity`;\n // eslint-disable-next-line\n const [field, meta, helpers] = useField(name);\n\n // using readOnly since formik won't validate disabled fields\n const isReadOnly =\n extraColumns.filter((eq) => eq.type === \"Quantity\").length > 0;\n\n useEffect(() => {\n helpers.setValue(value);\n helpers.setTouched(true);\n }, [value]);\n\n return (\n <MuiFormikTextField\n name={name}\n fullWidth\n size=\"small\"\n type=\"number\"\n disabled={disabled}\n slotProps={{\n htmlInput: {\n readOnly: isReadOnly,\n min: 0,\n ...(row.quantity_limit_per_sponsor\n ? { max: row.quantity_limit_per_sponsor }\n : {})\n }\n }}\n sx={\n isReadOnly\n ? {\n \"& .MuiInputBase-root\": {\n backgroundColor: \"action.disabledBackground\",\n color: \"text.disabled\",\n pointerEvents: \"none\"\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"action.disabled\"\n }\n }\n : {}\n }\n />\n );\n};\n\nexport default GlobalQuantityField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport { Typography } from \"@mui/material\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst UnderlyingAlertNote = ({ showAdditionalItems }) => {\n if (!showAdditionalItems) return null;\n\n return (\n <Typography\n variant=\"body2\"\n component=\"p\"\n sx={{ color: \"error.warning\", fontSize: \"0.8rem\" }}\n >\n <ErrorIcon\n color=\"error\"\n sx={{\n fontSize: \"1rem\",\n top: \"0.2rem\",\n position: \"relative\"\n }}\n />{\" \"}\n {T.translate(\"sponsor_edit_form.additional_info\")}\n </Typography>\n );\n};\n\nexport default UnderlyingAlertNote;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, { useCallback, useMemo } from \"react\";\nimport {\n IconButton,\n MenuItem,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { currencyAmountFromCents } from \"../../../utils/money\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\nimport GlobalQuantityField from \"./components/GlobalQuantityField\";\nimport ItemTableField from \"./components/ItemTableField\";\nimport MuiFormikSelect from \"../formik-inputs/mui-formik-select\";\nimport MuiFormikPriceField from \"../formik-inputs/mui-formik-pricefield\";\nimport MuiFormikDiscountField from \"../formik-inputs/mui-formik-discountfield\";\nimport UnderlyingAlertNote from \"./components/UnderlyingAlertNote\";\n\nconst FormItemTable = ({\n data,\n currentApplicableRate,\n timeZone,\n values,\n onNotesClick,\n onSettingsClick\n}) => {\n const valuesStr = JSON.stringify(values);\n const extraColumns =\n data[0]?.meta_fields?.filter((mf) => mf.class_field === \"Form\") || [];\n const fixedColumns = 10;\n const totalColumns = extraColumns.length + fixedColumns;\n\n const calculateQuantity = useCallback(\n (row) => {\n const qtyEXC = extraColumns.filter((exc) => exc.type === \"Quantity\");\n const globalQty = values[`i-${row.form_item_id}-c-global-f-quantity`];\n const itemLevelQty = qtyEXC.reduce((res, exc) => {\n const start = res > 0 ? res : 1;\n return (\n start *\n (values?.[\n `i-${row.form_item_id}-c-${exc.class_field}-f-${exc.type_id}`\n ] || 0)\n );\n }, 0);\n\n return qtyEXC.length > 0 ? itemLevelQty : globalQty;\n },\n [valuesStr, extraColumns]\n );\n\n const calculateRowTotal = (row) => {\n const qty =\n values[`i-${row.form_item_id}-c-global-f-quantity`] ||\n calculateQuantity(row);\n\n if (currentApplicableRate === \"expired\") return 0;\n\n const customRate = values[`i-${row.form_item_id}-c-global-f-custom_rate`];\n const rate = customRate || row.rates[currentApplicableRate];\n\n if (rate == null || qty == null) return 0;\n\n return qty * rate;\n };\n\n const hasItemFields = (row) =>\n row.meta_fields.filter((mf) => mf.class_field === \"Item\").length > 0;\n\n const itemFieldsIncomplete = (row) => {\n const requiredFields = row.meta_fields.filter(\n (mf) => mf.class_field === \"Item\" && mf.is_required\n );\n const hasMissingFields = requiredFields.some((mf) => {\n const value = values[`i-${row.form_item_id}-c-item-f-${mf.type_id}`];\n return value === undefined || value === null || value === \"\";\n });\n\n return requiredFields.length > 0 && hasMissingFields;\n };\n\n const formatRate = (rate) => {\n if (rate == null) return T.translate(\"general.n_a\");\n return currencyAmountFromCents(rate);\n };\n\n const totalAmount = useMemo(() => {\n const subtotal = data.reduce((acc, row) => acc + calculateRowTotal(row), 0);\n const discount =\n values.discount_type === DISCOUNT_TYPES.AMOUNT\n ? values.discount_amount\n : subtotal * (values.discount_amount / ONE_HUNDRED / ONE_HUNDRED); // bps to fraction\n\n return subtotal - Math.round(discount);\n }, [data, valuesStr, currentApplicableRate]);\n\n const handleEdit = (row) => {\n onNotesClick(row);\n };\n\n const handleEditItemFields = (row) => {\n onSettingsClick(row);\n };\n\n return (\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n <TableRow sx={{ backgroundColor: \"#EAEDF4\" }}>\n <TableCell>\n {T.translate(\"sponsor_edit_form.code\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.description\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.custom_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.early_bird_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.standard_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.onsite_rate\")}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`colhead-${exc.type_id}`}>{exc.name}</TableCell>\n ))}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.qty\")}\n </TableCell>\n <TableCell sx={{ minWidth: 40 }} />\n {/* item level extra field */}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.total\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.notes\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.map((row) => (\n <TableRow key={`datarow-${row.form_item_id}`}>\n <TableCell>{row.code}</TableCell>\n <TableCell sx={{ position: \"relative\" }}>\n <div>{row.name}</div>\n <UnderlyingAlertNote\n showAdditionalItems={\n hasItemFields(row) && itemFieldsIncomplete(row)\n }\n />\n </TableCell>\n <TableCell>\n <MuiFormikPriceField\n name={`i-${row.form_item_id}-c-global-f-custom_rate`}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n inputProps={{ step: 0.01 }}\n />\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"early_bird\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.early_bird)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"standard\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.standard)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"onsite\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.onsite)}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`datacell-${row.form_item_id}-${exc.type_id}`}>\n <ItemTableField\n field={exc}\n rowId={row.form_item_id}\n timeZone={timeZone}\n />\n </TableCell>\n ))}\n <TableCell>\n <GlobalQuantityField\n row={row}\n extraColumns={extraColumns}\n value={calculateQuantity(row)}\n />\n </TableCell>\n <TableCell align=\"center\">\n {hasItemFields(row) && (\n <IconButton\n size=\"small\"\n aria-label=\"settings\"\n onClick={() => handleEditItemFields(row)}\n >\n <SettingsIcon fontSize=\"large\" color=\"warning\" />\n </IconButton>\n )}\n </TableCell>\n <TableCell>\n {currencyAmountFromCents(calculateRowTotal(row))}\n </TableCell>\n <TableCell align=\"center\">\n <IconButton\n size=\"large\"\n aria-label=\"edit\"\n onClick={() => handleEdit(row)}\n >\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.discount\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 5).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-discountcell`}\n />\n ))}\n <TableCell>\n <MuiFormikSelect name=\"discount_type\" label=\"\" size=\"small\">\n {Object.values(DISCOUNT_TYPES).map((p) => (\n <MenuItem key={`ddopt-${p}`} value={p}>\n {p}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </TableCell>\n <TableCell />\n <TableCell>\n <MuiFormikDiscountField\n name=\"discount_amount\"\n discountType={values.discount_type}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n />\n </TableCell>\n <TableCell />\n </TableRow>\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.total_on_caps\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 3).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-totalcell`}\n />\n ))}\n <TableCell sx={{ fontWeight: 500 }}>\n {currencyAmountFromCents(totalAmount)}\n </TableCell>\n <TableCell />\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n );\n};\n\nexport default FormItemTable;\n"],"names":["root","factory","exports","module","define","amd","this","rowId","field","timeZone","label","disabled","commonProps","name","class_field","type_id","type","size","options","values","map","v","value","id","fullWidth","slotProps","htmlInput","min","minimum_quantity","maximum_quantity","max","MenuItem","key","multiline","rows","MuiFormikCheckbox","props","meta","useField","FormControl","margin","error","touched","Boolean","FormControlLabel","control","Checkbox","checked","FormHelperText","propTypes","PropTypes","isRequired","require","MuiFormikDatepicker","required","helpers","requiredLabel","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","onChange","setValue","textField","helperText","day","sx","fontSize","fontWeight","layout","BLOCKED_KEYS","MuiFormikDiscountField","discountType","inCents","cleared","setCleared","useState","emptyValue","initialValue","adornment","DISCOUNT_TYPES","RATE","endAdornment","InputAdornment","position","startAdornment","inputProps","inputMode","step","ONE_HUNDRED","getDisplayValue","e","newVal","target","numericValue","Number","newDiscount","input","onKeyDown","includes","preventDefault","stopPropagation","rest","allSelected","every","Select","variant","multiple","event","opt","onBlur","displayEmpty","renderValue","selected","length","placeholder","T","filter","join","ListItemText","primary","Divider","finalPlaceholder","selectedOption","find","Radio","MuiFormikPriceField","isFocused","setIsFocused","focusedValue","setFocusedValue","getRawString","raw","String","toFixed","DECIMAL_DIGITS","str","dotIdx","indexOf","newPrice","Math","round","onFocus","MuiFormikSelect","children","isClearable","shouldShrink","InputLabel","htmlFor","shrink","labelId","notched","style","color","mr","IconButton","onClick","ev","MuiFormikTextField","maxLength","currentLength","finalLabel","Box","TextField","Typography","pl","MuiFormikTimepicker","minTime","maxTime","TimePicker","timezone","views","width","marginLeft","marginRight","CENTS_FACTOR","TWO_DECIMAL_PLACES","ZERO_INT","AMOUNT","CURRENCY_SYMBOL","USD","EUR","GBP","CAD","AUD","NZD","CHF","ARS","BRL","MXN","currencyAmountFromCents","cents","currency","isInteger","Error","amount","c","isSafeInteger","BigInt","s","trim","test","remainder","toString","padStart","amountFromCents","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","row","extraColumns","form_item_id","isReadOnly","eq","useEffect","setTouched","readOnly","quantity_limit_per_sponsor","backgroundColor","pointerEvents","borderColor","showAdditionalItems","component","top","data","currentApplicableRate","onNotesClick","onSettingsClick","valuesStr","JSON","stringify","meta_fields","mf","totalColumns","calculateQuantity","useCallback","qtyEXC","exc","globalQty","itemLevelQty","reduce","res","calculateRowTotal","qty","rate","rates","hasItemFields","itemFieldsIncomplete","requiredFields","is_required","hasMissingFields","some","formatRate","totalAmount","useMemo","subtotal","acc","discount","discount_type","discount_amount","TableContainer","Paper","Table","TableHead","TableRow","TableCell","minWidth","TableBody","code","opacity","early_bird","standard","onsite","ItemTableField","align","handleEditItemFields","handleEdit","Array","fill","_","i","p"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"file":"components/mui/form-item-table.js","mappings":"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","sources":["webpack://openstack-uicore-foundation/webpack/universalModuleDefinition","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/ItemTableField.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-checkbox.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/DatePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-datepicker.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-discountfield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-dropdown-radio.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-pricefield.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-select.js","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-textfield.js","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/TimePicker\"","webpack://openstack-uicore-foundation/./src/components/mui/formik-inputs/mui-formik-timepicker.js","webpack://openstack-uicore-foundation/./src/utils/constants.js","webpack://openstack-uicore-foundation/./src/utils/money.js","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/defineProperty\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/extends\"","webpack://openstack-uicore-foundation/external commonjs \"@babel/runtime/helpers/objectWithoutProperties\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Clear\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Edit\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Error\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/material\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/AdapterMoment\"","webpack://openstack-uicore-foundation/external commonjs \"@mui/x-date-pickers/LocalizationProvider\"","webpack://openstack-uicore-foundation/external commonjs \"formik\"","webpack://openstack-uicore-foundation/external commonjs \"i18n-react/dist/i18n-react\"","webpack://openstack-uicore-foundation/external commonjs \"prop-types\"","webpack://openstack-uicore-foundation/external commonjs \"react\"","webpack://openstack-uicore-foundation/webpack/bootstrap","webpack://openstack-uicore-foundation/webpack/runtime/compat get default export","webpack://openstack-uicore-foundation/webpack/runtime/define property getters","webpack://openstack-uicore-foundation/webpack/runtime/hasOwnProperty shorthand","webpack://openstack-uicore-foundation/webpack/runtime/make namespace object","webpack://openstack-uicore-foundation/external commonjs \"@mui/icons-material/Settings\"","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/GlobalQuantityField.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/components/UnderlyingAlertNote.js","webpack://openstack-uicore-foundation/./src/components/mui/FormItemTable/index.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"openstack-uicore-foundation\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"openstack-uicore-foundation\"] = factory();\n\telse\n\t\troot[\"openstack-uicore-foundation\"] = factory();\n})(this, () => {\nreturn ","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport { MenuItem } from \"@mui/material\";\nimport MuiFormikCheckbox from \"../../formik-inputs/mui-formik-checkbox\";\nimport MuiFormikDropdownCheckbox from \"../../formik-inputs/mui-formik-dropdown-checkbox\";\nimport MuiFormikDropdownRadio from \"../../formik-inputs/mui-formik-dropdown-radio\";\nimport MuiFormikDatepicker from \"../../formik-inputs/mui-formik-datepicker\";\nimport MuiFormikTimepicker from \"../../formik-inputs/mui-formik-timepicker\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\nimport MuiFormikSelect from \"../../formik-inputs/mui-formik-select\";\n\nconst ItemTableField = ({\n rowId,\n field,\n timeZone,\n label = \"\",\n disabled = false\n}) => {\n const name = `i-${rowId}-c-${field.class_field}-f-${field.type_id}`;\n const commonProps = { name, label, disabled };\n\n switch (field.type) {\n case \"CheckBox\":\n return <MuiFormikCheckbox {...commonProps} />;\n case \"CheckBoxList\":\n return (\n <MuiFormikDropdownCheckbox\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"RadioButtonList\":\n return (\n <MuiFormikDropdownRadio\n {...commonProps}\n size=\"small\"\n options={field.values.map((v) => ({ value: v.id, label: v.value }))}\n />\n );\n case \"DateTime\":\n return <MuiFormikDatepicker {...commonProps} />;\n case \"Time\":\n return <MuiFormikTimepicker {...commonProps} timeZone={timeZone} />;\n case \"Quantity\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n type=\"number\"\n slotProps={{\n htmlInput: {\n min: field.minimum_quantity,\n ...(field.maximum_quantity > 0\n ? { max: field.maximum_quantity }\n : {})\n }\n }}\n />\n );\n case \"ComboBox\":\n return (\n <MuiFormikSelect {...commonProps} size=\"small\">\n {field.values.map((v) => (\n <MenuItem key={`ddopt-${v.id}`} value={v.id}>\n {v.value}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n );\n case \"Text\":\n return <MuiFormikTextField {...commonProps} fullWidth size=\"small\" />;\n case \"TextArea\":\n return (\n <MuiFormikTextField\n {...commonProps}\n fullWidth\n size=\"small\"\n multiline\n rows={3}\n />\n );\n }\n};\n\nexport default ItemTableField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Checkbox,\n FormControl,\n FormControlLabel,\n FormHelperText\n} from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikCheckbox = ({ name, label, ...props }) => {\n const [field, meta] = useField({ name, type: \"checkbox\" });\n\n return (\n <FormControl\n fullWidth\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n >\n <FormControlLabel\n control={\n <Checkbox\n name={name}\n {...field}\n checked={field.value}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n }\n label={label}\n />\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikCheckbox.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string.isRequired\n};\n\nexport default MuiFormikCheckbox;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/DatePicker\");","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { DatePicker } from \"@mui/x-date-pickers/DatePicker\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { useField } from \"formik\";\n\nconst MuiFormikDatepicker = ({\n name,\n label,\n required,\n disabled = false,\n ...props\n}) => {\n const [field, meta, helpers] = useField(name);\n const requiredLabel = `${label} *`;\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <DatePicker\n value={field.value}\n onChange={helpers.setValue}\n slotProps={{\n textField: {\n name,\n label: required ? requiredLabel : label,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n fullWidth: true,\n disabled\n },\n day: {\n sx: {\n fontSize: \"1.2rem\",\n fontWeight: 600\n }\n },\n layout: {\n sx: {\n \"& .MuiDayCalendar-weekDayLabel\": {\n fontSize: \"1rem\"\n }\n }\n }\n }}\n margin=\"normal\"\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikDatepicker.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool\n};\n\nexport default MuiFormikDatepicker;","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, { useState } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { InputAdornment } from \"@mui/material\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikDiscountField = ({\n name,\n label,\n discountType,\n inCents = false,\n disabled = false,\n ...props\n}) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const emptyValue = meta.initialValue === null ? null : 0;\n\n const getDisplayValue = () => {\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n return inCents ? field.value / ONE_HUNDRED : field.value;\n };\n\n const adornment =\n discountType === DISCOUNT_TYPES.RATE\n ? {\n endAdornment: <InputAdornment position=\"end\">%</InputAdornment>\n }\n : {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n };\n\n const inputProps =\n discountType === DISCOUNT_TYPES.RATE\n ? { max: 100, inputMode: \"numeric\", step: 1 }\n : { inputMode: \"decimal\", step: 1 };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newDiscount = inCents ? numericValue * ONE_HUNDRED : numericValue;\n\n helpers.setValue(newDiscount);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n value={getDisplayValue()}\n onChange={handleChange}\n type=\"number\"\n disabled={disabled}\n slotProps={{\n input: {\n ...adornment\n },\n htmlInput: {\n min: 0,\n ...inputProps\n }\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikDiscountField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikDiscountField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport {\n Checkbox,\n Divider,\n FormControl,\n ListItemText,\n MenuItem,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownCheckbox = ({ name, options, ...rest }) => {\n const [field, meta, helpers] = useField(name);\n const allSelected = options.every(({ value }) =>\n field.value?.includes(value)\n );\n\n const handleChange = (event) => {\n const { value } = event.target;\n\n // If \"all\" was clicked\n if (value.includes(\"all\")) {\n if (allSelected) {\n helpers.setValue([]);\n } else {\n helpers.setValue(options.map((opt) => opt.value));\n }\n } else {\n helpers.setValue(value);\n }\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n multiple\n value={field.value || []}\n onChange={handleChange}\n onBlur={field.onBlur}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected?.length) {\n return rest.placeholder || \"\";\n }\n if (allSelected) {\n return T.translate(\"general.all\");\n }\n const selectedNames = options\n .filter(({ value }) => selected?.includes(value))\n .map(({ label }) => label);\n return selectedNames.join(\", \");\n }}\n >\n <MenuItem key=\"all\" value=\"all\">\n <Checkbox checked={allSelected} />\n <ListItemText primary={T.translate(\"general.all\")} />\n </MenuItem>\n <Divider />\n {options.map(({ label, value }) => (\n <MenuItem key={`ckbx-ddl-${value}`} value={value}>\n <Checkbox checked={field.value?.includes(value)} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownCheckbox;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport {\n FormControl,\n ListItemText,\n MenuItem,\n Radio,\n Select\n} from \"@mui/material\";\nimport { useField } from \"formik\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst MuiFormikDropdownRadio = ({ name, options, placeholder, ...rest }) => {\n const finalPlaceholder =\n placeholder || T.translate(\"general.select_an_option\");\n const [field, meta, helpers] = useField(name);\n\n const handleChange = (event) => {\n helpers.setValue(event.target.value);\n };\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n <Select\n variant=\"outlined\"\n name={name}\n value={field.value || \"\"}\n onChange={handleChange}\n displayEmpty\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n renderValue={(selected) => {\n if (!selected) {\n return <em>{finalPlaceholder}</em>;\n }\n const selectedOption = options.find(\n ({ value }) => value === selected\n );\n return selectedOption ? selectedOption.label : \"\";\n }}\n >\n {options.map(({ label, value }) => (\n <MenuItem key={`radio-ddl-${value}`} value={value}>\n <Radio checked={field.value === value} />\n <ListItemText primary={label} />\n </MenuItem>\n ))}\n </Select>\n </FormControl>\n );\n};\n\nexport default MuiFormikDropdownRadio;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, {useState} from \"react\";\nimport PropTypes from \"prop-types\";\nimport {InputAdornment} from \"@mui/material\";\nimport {useField} from \"formik\";\nimport MuiFormikTextField from \"./mui-formik-textfield\";\nimport {DECIMAL_DIGITS, ONE_HUNDRED} from \"../../../utils/constants\";\n\nconst BLOCKED_KEYS = [\"e\", \"E\", \"+\", \"-\"];\n\nconst MuiFormikPriceField = ({\n name,\n label,\n inCents = false,\n inputProps = {step: 0.01},\n ...props\n }) => {\n // eslint-disable-next-line no-unused-vars\n const [field, meta, helpers] = useField(name);\n const [cleared, setCleared] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [focusedValue, setFocusedValue] = useState(\"\");\n\n // emptyValue is always 0 when editing this field, null is handled by N/A checkbox\n const emptyValue = 0;\n\n const getRawString = () => {\n if (cleared || field.value == null) return \"\";\n if (field.value === 0) return \"0\";\n const raw = inCents ? field.value / ONE_HUNDRED : field.value;\n return String(Number(raw.toFixed(DECIMAL_DIGITS)));\n };\n\n const getDisplayValue = () => {\n if (isFocused) return focusedValue;\n if (cleared) return \"\";\n if (field.value == null || field.value === 0) {\n return field.value === 0 ? 0 : \"\";\n }\n const str = getRawString();\n const dotIdx = str.indexOf(\".\");\n if (dotIdx === -1) return `${str}.00`;\n if (str.length - dotIdx - 1 === 1) return `${str}0`;\n return str;\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n setFocusedValue(getRawString());\n };\n\n const handleBlur = (e) => {\n setIsFocused(false);\n if (props.onBlur) props.onBlur(e);\n };\n\n const handleChange = (e) => {\n const newVal = e.target.value;\n setFocusedValue(newVal);\n\n if (newVal === \"\") {\n setCleared(true);\n helpers.setValue(emptyValue);\n return;\n }\n\n setCleared(false);\n const numericValue = Number(newVal);\n const newPrice = inCents\n ? Math.round(numericValue * ONE_HUNDRED)\n : numericValue;\n\n helpers.setValue(newPrice);\n };\n\n const handleKeyDown = (e) => {\n if (BLOCKED_KEYS.includes(e.key)) {\n e.preventDefault();\n e.stopPropagation();\n }\n };\n\n return (\n <MuiFormikTextField\n name={name}\n label={label}\n type=\"number\"\n value={getDisplayValue()}\n onChange={handleChange}\n onFocus={handleFocus}\n onBlur={handleBlur}\n slotProps={{\n input: {\n startAdornment: <InputAdornment position=\"start\">$</InputAdornment>\n }\n }}\n inputProps={{\n min: 0,\n inputMode: \"decimal\",\n ...inputProps\n }}\n onKeyDown={handleKeyDown}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n );\n};\n\nMuiFormikPriceField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string\n};\n\nexport default MuiFormikPriceField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport {\n Select,\n FormHelperText,\n FormControl,\n InputAdornment,\n IconButton,\n InputLabel\n} from \"@mui/material\";\nimport ClearIcon from \"@mui/icons-material/Clear\";\nimport { useField } from \"formik\";\n\nconst MuiFormikSelect = ({\n name,\n label,\n placeholder,\n children,\n isClearable,\n ...rest\n}) => {\n const [field, meta, helpers] = useField(name);\n\n const handleClear = (ev) => {\n ev.stopPropagation();\n helpers.setValue(\"\");\n };\n\n const hasValue = field?.value && field.value !== \"\";\n const shouldShrink = hasValue || Boolean(placeholder);\n\n return (\n <FormControl fullWidth error={meta.touched && Boolean(meta.error)}>\n {label && (\n <InputLabel htmlFor={name} id={`${name}-label`} shrink={shouldShrink}>\n {label}\n </InputLabel>\n )}\n <Select\n name={name}\n id={name}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...field}\n labelId={`${name}-label`}\n label={label}\n notched={shouldShrink}\n displayEmpty\n renderValue={(selected) => {\n if (!selected || selected === \"\") {\n return <span style={{ color: \"#aaa\" }}>{placeholder}</span>;\n }\n return selected;\n }}\n endAdornment={\n isClearable && field.value ? (\n <InputAdornment position=\"end\" sx={{ mr: 2 }}>\n <IconButton size=\"small\" onClick={handleClear}>\n <ClearIcon fontSize=\"small\" />\n </IconButton>\n </InputAdornment>\n ) : null\n }\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...rest}\n >\n {children}\n </Select>\n {meta.touched && meta.error && (\n <FormHelperText>{meta.error}</FormHelperText>\n )}\n </FormControl>\n );\n};\n\nMuiFormikSelect.propTypes = {\n name: PropTypes.string.isRequired,\n children: PropTypes.node.isRequired,\n placeholder: PropTypes.string,\n isClearable: PropTypes.bool\n};\n\nexport default MuiFormikSelect;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Box, TextField, Typography } from \"@mui/material\";\nimport { useField } from \"formik\";\n\nconst MuiFormikTextField = ({\n name,\n label,\n maxLength,\n required = false,\n ...props\n}) => {\n const [field, meta] = useField(name);\n const currentLength = field.value?.length || 0;\n\n let finalLabel = \"\";\n\n if (label) {\n finalLabel = required ? `${label} *` : label;\n }\n\n return (\n <Box>\n <TextField\n name={name}\n label={finalLabel}\n {...field}\n onBlur={field.onBlur}\n margin=\"normal\"\n error={meta.touched && Boolean(meta.error)}\n helperText={meta.touched && meta.error}\n slotProps={{\n htmlInput: {\n maxLength\n }\n }}\n // eslint-disable-next-line react/jsx-props-no-spreading\n {...props}\n />\n {maxLength && (\n <Typography sx={{ fontSize: \"1.2rem\", color: \"#00000099\", pl: 2 }}>\n {`${maxLength - currentLength} characters left`}\n </Typography>\n )}\n </Box>\n );\n};\n\nMuiFormikTextField.propTypes = {\n name: PropTypes.string.isRequired,\n label: PropTypes.string,\n maxLength: PropTypes.number,\n required: PropTypes.bool\n};\n\nexport default MuiFormikTextField;\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/x-date-pickers/TimePicker\");","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { LocalizationProvider } from \"@mui/x-date-pickers/LocalizationProvider\";\nimport { AdapterMoment } from \"@mui/x-date-pickers/AdapterMoment\";\nimport { TimePicker } from \"@mui/x-date-pickers/TimePicker\";\n\nimport { useField } from \"formik\";\n\nconst MuiFormikTimepicker = ({\n name,\n minTime,\n maxTime,\n timeZone,\n disabled = false\n}) => {\n const [field, meta, helpers] = useField(name);\n\n return (\n <LocalizationProvider dateAdapter={AdapterMoment}>\n <TimePicker\n value={field.value}\n onChange={helpers.setValue}\n minTime={minTime}\n maxTime={maxTime}\n timezone={timeZone}\n label={timeZone}\n views={[\"hours\", \"minutes\"]}\n slotProps={{\n textField: {\n name,\n error: meta.touched && Boolean(meta.error),\n helperText: meta.touched && meta.error,\n size: \"small\",\n fullWidth: true,\n disabled,\n sx: {\n \"& .MuiPickersSectionList-root\": {\n width: \"100%\"\n },\n \"& .MuiFormHelperText-root\": {\n marginLeft: \"4px\",\n marginRight: \"4px\"\n }\n }\n }\n }}\n />\n </LocalizationProvider>\n );\n};\n\nMuiFormikTimepicker.propTypes = {\n name: PropTypes.string.isRequired\n};\n\nexport default MuiFormikTimepicker;\n","export const CENTS_FACTOR = 100n;\nexport const TWO_DECIMAL_PLACES = 2;\nexport const THREE_DECIMAL_PLACES = 3;\nexport const ONE_CENT = 1n;\nexport const ZERO_INT = 0;\n\nexport const CODE_200 = 200;\n\nexport const DEBOUNCE_WAIT_250 = 250;\nexport const DEBOUNCE_WAIT = 500;\n\nexport const NOTIFICATION_TIMEOUT = 2000;\nexport const DEFAULT_PER_PAGE = 10;\nexport const TWENTY_PER_PAGE = 20;\nexport const FIFTY_PER_PAGE = 50;\nexport const MAX_PER_PAGE = 100;\n\nexport const INT_BASE = 10;\n\nexport const ONE_HUNDRED = 100;\nexport const MILLISECONDS_IN_SECOND = 1000;\n\nexport const MILLISECONDS_TO_SECONDS = 1000;\n\nexport const BYTES_PER_MB = 1_048_576; // 1024 * 1024\n\nexport const MAX_INVENTORY_IMAGE_UPLOAD_SIZE = 512000;\nexport const MAX_INVENTORY_IMAGES_UPLOAD_QTY = 5;\nexport const ALLOWED_INVENTORY_IMAGE_FORMATS = [\"jpg\", \"jpeg\", \"png\"];\n\nexport const METAFIELD_TYPES_WITH_OPTIONS = [\n \"CheckBoxList\",\n \"ComboBox\",\n \"RadioButtonList\"\n];\n\nexport const METAFIELD_TYPES = [\n \"CheckBox\",\n ...METAFIELD_TYPES_WITH_OPTIONS,\n \"Text\",\n \"TextArea\",\n \"Quantity\",\n \"DateTime\",\n \"Time\"\n];\n\nexport const DISCOUNT_TYPES = {\n AMOUNT: \"Amount\",\n RATE: \"Rate\"\n};\n\nexport const RATE_FIELDS = {\n EARLY_BIRD: \"early_bird_rate\",\n STANDARD: \"standard_rate\",\n ONSITE: \"onsite_rate\"\n};\n\nexport const DECIMAL_DIGITS = 2;\n\nexport const FILE_UPLOAD_STATUS = {\n PENDING: \"PENDING\",\n DEADLINE_ALERT: \"DEADLINE ALERT\",\n DEADLINE_MISSED: \"DEADLINE MISSED\",\n COMPLETE: \"COMPLETE\"\n};\n\nexport const FILE_UPLOAD_STATUS_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"success.light\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"error\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"warning.light\",\n [FILE_UPLOAD_STATUS.PENDING]: \"default\"\n};\n\nexport const FILE_UPLOAD_STATUS_BKGR_COLOR = {\n [FILE_UPLOAD_STATUS.COMPLETE]: \"white\",\n [FILE_UPLOAD_STATUS.DEADLINE_MISSED]: \"#D32F2F0A\",\n [FILE_UPLOAD_STATUS.DEADLINE_ALERT]: \"#EF6C000A\",\n [FILE_UPLOAD_STATUS.PENDING]: \"white\"\n};","/**\n * Copyright 2025 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport {\n CENTS_FACTOR,\n THREE_DECIMAL_PLACES,\n TWO_DECIMAL_PLACES,\n ZERO_INT,\n ONE_CENT\n} from \"./constants\";\n\nconst CURRENCY_SYMBOL = {\n USD: \"$\",\n EUR: \"€\",\n GBP: \"£\",\n CAD: \"C$\",\n AUD: \"A$\",\n NZD: \"NZ$\",\n CHF: \"CHF\",\n ARS: \"AR$\",\n BRL: \"R$\",\n MXN: \"MX$\",\n};\n\n/**\n * Convert a decimal money amount to integer cents safely (no floating point math).\n *\n * Why this exists:\n * - `Math.round(parseFloat(x) * 100)` can be wrong due to IEEE-754 floating point errors\n * (e.g. 1.005 * 100 may become 100.499999..., rounding down unexpectedly).\n *\n * Input:\n * - number or string (recommended: string from API/UI)\n * - Examples: \"12.34\", \"1,234.56\", \"1234,56\", 12.34\n *\n * Output:\n * - Number cents (exact), e.g. \"12.34\" -> 1234\n *\n * Rounding:\n * - Half-up to 2 decimals (>= 0.005 USD rounds up by 1 cent).\n *\n * Notes:\n * - Amounts are assumed to be NON-negative (per your requirement).\n * - Throws on invalid formats (does not silently return 0).\n */\nexport function amountToCents(amount) {\n if (amount == null) throw new Error(\"amount is required\");\n\n let s = String(amount).trim();\n\n // Normalize common separators:\n // - \"1,234.56\" => \"1234.56\" (remove thousands separators)\n // - \"1234,56\" => \"1234.56\" (convert decimal comma to dot)\n if (s.includes(\",\") && s.includes(\".\")) {\n s = s.replace(/,/g, \"\");\n } else if (s.includes(\",\") && !s.includes(\".\")) {\n s = s.replace(\",\", \".\");\n }\n\n // Validate: digits optionally followed by '.' and more digits\n if (!/^\\d+(\\.\\d+)?$/.test(s)) {\n throw new Error(`Invalid money format: \"${amount}\"`);\n }\n\n const [intPart, fracRaw = \"\"] = s.split(\".\");\n\n // Pad at least 3 fractional digits so we can:\n // - take 2 digits for cents\n // - take the 3rd digit to decide rounding\n const fracPadded = (`${fracRaw }000`);\n\n const tenths = fracPadded[0] ?? \"0\"; // 1st decimal digit\n const hundredths = fracPadded[1] ?? \"0\"; // 2nd decimal digit (cents)\n const thousandths = fracPadded[2] ?? \"0\"; // 3rd decimal digit (rounding decision)\n\n // If there are more than 3 decimals, we track if any non-zero exists after the 3rd.\n // This can matter for policies like bankers rounding; here it's mainly informational.\n const trailing =\n fracRaw.length > THREE_DECIMAL_PLACES\n ? fracRaw.slice(THREE_DECIMAL_PLACES)\n : \"\";\n const hasTrailingNonZero = /[1-9]/.test(trailing);\n\n // Build cents as integer: (dollars * 100) + (first two decimal digits)\n let cents = BigInt(intPart) * CENTS_FACTOR + BigInt(tenths + hundredths);\n\n // Half-up rounding:\n // - If the 3rd digit is >= 5, round up by 1 cent.\n // - If there are more digits beyond the 3rd, \"5xxx\" should also round up.\n const roundUp = thousandths > \"5\" || thousandths === \"5\" || (thousandths === \"5\" && hasTrailingNonZero);\n\n if (roundUp) cents += ONE_CENT;\n\n return Number(cents);\n}\n\n/**\n * Convert an amount in cents to a decimal string (e.g. 1234 -> \"12.34\") safely.\n *\n * Why:\n * - Avoids floating point math (cents / 100) which can lose precision for large integers\n * or if cents is already imprecise as a JS Number.\n *\n * Input:\n * - Accepts: bigint | number | string (digits)\n * - Assumes NON-negative cents (per your requirement).\n *\n * Output:\n * - Always returns a string with exactly 2 decimal places.\n */\nexport function amountFromCents(cents) {\n let c;\n\n // Normalize input to BigInt safely\n if (typeof cents === \"bigint\") {\n c = cents;\n } else if (typeof cents === \"number\") {\n // Ensure it's a safe integer before converting to BigInt\n if (!Number.isSafeInteger(cents)) {\n throw new Error(\"cents must be a safe integer Number (or pass BigInt/string).\");\n }\n c = BigInt(cents);\n } else if (typeof cents === \"string\") {\n const s = cents.trim();\n if (!/^\\d+$/.test(s)) {\n throw new Error(\"cents string must contain digits only (e.g., '1234').\");\n }\n c = BigInt(s);\n } else {\n throw new Error(\"cents must be a bigint, number, or numeric string.\");\n }\n\n if (c < ZERO_INT) {\n throw new Error(\"cents must be non-negative.\");\n }\n\n const amount = c / CENTS_FACTOR;\n const remainder = c % CENTS_FACTOR;\n\n // Always pad remainder to 2 digits\n return `${amount.toString()}.${remainder.toString().padStart(TWO_DECIMAL_PLACES, \"0\")}`;\n}\n\n/**\n * @param cents\n * @param currency\n * @returns {string}\n */\nexport function currencyAmountFromCents(cents, currency = \"USD\"){\n if (typeof cents !== \"number\" || !Number.isInteger(cents)) {\n throw new Error(\"cents must be an integer number\");\n }\n\n const amount = amountFromCents(cents); // \"12.34\"\n const symbol = CURRENCY_SYMBOL[currency] ?? \"$\";\n return `${symbol}${amount}`;\n}\n\n/**\n * Converts a price string into cents.\n * @param {string} priceString - The price (e.g., $0.30).\n * @returns {number} - The amount converted to cents (e.g., 30).\n */\nexport const parsePrice = (priceString) => {\n if (priceString == null) throw new Error(\"priceString is required\");\n\n let s = String(priceString).trim();\n\n // Reject negatives explicitly (per your requirement).\n if (s.includes(\"-\")) throw new Error(\"Negative amounts are not allowed\");\n\n // Keep only digits and separators. Remove currency symbols/letters/spaces.\n s = s.replace(/[^\\d.,]/g, \"\");\n if (!s) throw new Error(`Invalid price: \"${priceString}\"`);\n\n // Delegate exact cents conversion (no floats)\n return amountToCents(s); // <- your safe BigInt cents converter\n};\n","module.exports = require(\"@babel/runtime/helpers/defineProperty\");","module.exports = require(\"@babel/runtime/helpers/extends\");","module.exports = require(\"@babel/runtime/helpers/objectWithoutProperties\");","module.exports = require(\"@mui/icons-material/Clear\");","module.exports = require(\"@mui/icons-material/Edit\");","module.exports = require(\"@mui/icons-material/Error\");","module.exports = require(\"@mui/material\");","module.exports = require(\"@mui/x-date-pickers/AdapterMoment\");","module.exports = require(\"@mui/x-date-pickers/LocalizationProvider\");","module.exports = require(\"formik\");","module.exports = require(\"i18n-react/dist/i18n-react\");","module.exports = require(\"prop-types\");","module.exports = require(\"react\");","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@mui/icons-material/Settings\");","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, { useEffect } from \"react\";\nimport { useField } from \"formik\";\nimport MuiFormikTextField from \"../../formik-inputs/mui-formik-textfield\";\n\nconst GlobalQuantityField = ({\n row,\n extraColumns,\n value,\n disabled = false\n}) => {\n const name = `i-${row.form_item_id}-c-global-f-quantity`;\n // eslint-disable-next-line\n const [field, meta, helpers] = useField(name);\n\n // using readOnly since formik won't validate disabled fields\n const isReadOnly =\n extraColumns.filter((eq) => eq.type === \"Quantity\").length > 0;\n\n useEffect(() => {\n helpers.setValue(value);\n helpers.setTouched(true);\n }, [value]);\n\n return (\n <MuiFormikTextField\n name={name}\n fullWidth\n size=\"small\"\n type=\"number\"\n disabled={disabled}\n slotProps={{\n htmlInput: {\n readOnly: isReadOnly,\n min: 0,\n ...(row.quantity_limit_per_sponsor\n ? { max: row.quantity_limit_per_sponsor }\n : {})\n }\n }}\n sx={\n isReadOnly\n ? {\n \"& .MuiInputBase-root\": {\n backgroundColor: \"action.disabledBackground\",\n color: \"text.disabled\",\n pointerEvents: \"none\"\n },\n \"& .MuiOutlinedInput-notchedOutline\": {\n borderColor: \"action.disabled\"\n }\n }\n : {}\n }\n />\n );\n};\n\nexport default GlobalQuantityField;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React from \"react\";\nimport { Typography } from \"@mui/material\";\nimport ErrorIcon from \"@mui/icons-material/Error\";\nimport T from \"i18n-react/dist/i18n-react\";\n\nconst UnderlyingAlertNote = ({ showAdditionalItems }) => {\n if (!showAdditionalItems) return null;\n\n return (\n <Typography\n variant=\"body2\"\n component=\"p\"\n sx={{ color: \"error.warning\", fontSize: \"0.8rem\" }}\n >\n <ErrorIcon\n color=\"error\"\n sx={{\n fontSize: \"1rem\",\n top: \"0.2rem\",\n position: \"relative\"\n }}\n />{\" \"}\n {T.translate(\"sponsor_edit_form.additional_info\")}\n </Typography>\n );\n};\n\nexport default UnderlyingAlertNote;\n","/**\n * Copyright 2026 OpenStack Foundation\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n * http://www.apache.org/licenses/LICENSE-2.0\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n * */\n\nimport React, { useCallback, useMemo } from \"react\";\nimport {\n IconButton,\n MenuItem,\n Paper,\n Table,\n TableBody,\n TableCell,\n TableContainer,\n TableHead,\n TableRow\n} from \"@mui/material\";\nimport EditIcon from \"@mui/icons-material/Edit\";\nimport SettingsIcon from \"@mui/icons-material/Settings\";\nimport T from \"i18n-react/dist/i18n-react\";\nimport { currencyAmountFromCents } from \"../../../utils/money\";\nimport { DISCOUNT_TYPES, ONE_HUNDRED } from \"../../../utils/constants\";\nimport GlobalQuantityField from \"./components/GlobalQuantityField\";\nimport ItemTableField from \"./components/ItemTableField\";\nimport MuiFormikSelect from \"../formik-inputs/mui-formik-select\";\nimport MuiFormikPriceField from \"../formik-inputs/mui-formik-pricefield\";\nimport MuiFormikDiscountField from \"../formik-inputs/mui-formik-discountfield\";\nimport UnderlyingAlertNote from \"./components/UnderlyingAlertNote\";\n\nconst FormItemTable = ({\n data,\n currentApplicableRate,\n timeZone,\n values,\n onNotesClick,\n onSettingsClick\n}) => {\n const valuesStr = JSON.stringify(values);\n const extraColumns =\n data[0]?.meta_fields?.filter((mf) => mf.class_field === \"Form\") || [];\n const fixedColumns = 10;\n const totalColumns = extraColumns.length + fixedColumns;\n\n const calculateQuantity = useCallback(\n (row) => {\n const qtyEXC = extraColumns.filter((exc) => exc.type === \"Quantity\");\n const globalQty = values[`i-${row.form_item_id}-c-global-f-quantity`];\n const itemLevelQty = qtyEXC.reduce((res, exc) => {\n const start = res > 0 ? res : 1;\n return (\n start *\n (values?.[\n `i-${row.form_item_id}-c-${exc.class_field}-f-${exc.type_id}`\n ] || 0)\n );\n }, 0);\n\n return qtyEXC.length > 0 ? itemLevelQty : globalQty;\n },\n [valuesStr, extraColumns]\n );\n\n const calculateRowTotal = (row) => {\n const qty =\n values[`i-${row.form_item_id}-c-global-f-quantity`] ||\n calculateQuantity(row);\n\n if (currentApplicableRate === \"expired\") return 0;\n\n const customRate = values[`i-${row.form_item_id}-c-global-f-custom_rate`];\n const rate = customRate || row.rates[currentApplicableRate];\n\n if (rate == null || qty == null) return 0;\n\n return qty * rate;\n };\n\n const hasItemFields = (row) =>\n row.meta_fields.filter((mf) => mf.class_field === \"Item\").length > 0;\n\n const itemFieldsIncomplete = (row) => {\n const requiredFields = row.meta_fields.filter(\n (mf) => mf.class_field === \"Item\" && mf.is_required\n );\n const hasMissingFields = requiredFields.some((mf) => {\n const value = values[`i-${row.form_item_id}-c-item-f-${mf.type_id}`];\n return value === undefined || value === null || value === \"\";\n });\n\n return requiredFields.length > 0 && hasMissingFields;\n };\n\n const formatRate = (rate) => {\n if (rate == null) return T.translate(\"general.n_a\");\n return currencyAmountFromCents(rate);\n };\n\n const totalAmount = useMemo(() => {\n const subtotal = data.reduce((acc, row) => acc + calculateRowTotal(row), 0);\n const discount =\n values.discount_type === DISCOUNT_TYPES.AMOUNT\n ? values.discount_amount\n : subtotal * (values.discount_amount / ONE_HUNDRED / ONE_HUNDRED); // bps to fraction\n\n return subtotal - Math.round(discount);\n }, [data, valuesStr, currentApplicableRate]);\n\n const handleEdit = (row) => {\n onNotesClick(row);\n };\n\n const handleEditItemFields = (row) => {\n onSettingsClick(row);\n };\n\n return (\n <TableContainer component={Paper}>\n <Table>\n <TableHead>\n <TableRow sx={{ backgroundColor: \"#EAEDF4\" }}>\n <TableCell>\n {T.translate(\"sponsor_edit_form.code\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.description\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.custom_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.early_bird_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.standard_rate\")}\n </TableCell>\n <TableCell>\n {T.translate(\"sponsor_edit_form.onsite_rate\")}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`colhead-${exc.type_id}`}>{exc.name}</TableCell>\n ))}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.qty\")}\n </TableCell>\n <TableCell sx={{ minWidth: 40 }} />\n {/* item level extra field */}\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.total\")}\n </TableCell>\n <TableCell sx={{ minWidth: 120 }}>\n {T.translate(\"sponsor_edit_form.notes\")}\n </TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {data.map((row) => (\n <TableRow key={`datarow-${row.form_item_id}`}>\n <TableCell>{row.code}</TableCell>\n <TableCell sx={{ position: \"relative\" }}>\n <div>{row.name}</div>\n <UnderlyingAlertNote\n showAdditionalItems={\n hasItemFields(row) && itemFieldsIncomplete(row)\n }\n />\n </TableCell>\n <TableCell>\n <MuiFormikPriceField\n name={`i-${row.form_item_id}-c-global-f-custom_rate`}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n inputProps={{ step: 0.01 }}\n />\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"early_bird\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.early_bird)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"standard\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.standard)}\n </TableCell>\n <TableCell\n sx={{\n opacity: currentApplicableRate === \"onsite\" ? 1 : \"38%\"\n }}\n >\n {formatRate(row.rates.onsite)}\n </TableCell>\n {extraColumns.map((exc) => (\n <TableCell key={`datacell-${row.form_item_id}-${exc.type_id}`}>\n <ItemTableField\n field={exc}\n rowId={row.form_item_id}\n timeZone={timeZone}\n />\n </TableCell>\n ))}\n <TableCell>\n <GlobalQuantityField\n row={row}\n extraColumns={extraColumns}\n value={calculateQuantity(row)}\n />\n </TableCell>\n <TableCell align=\"center\">\n {hasItemFields(row) && (\n <IconButton\n size=\"small\"\n aria-label=\"settings\"\n onClick={() => handleEditItemFields(row)}\n >\n <SettingsIcon fontSize=\"large\" color=\"warning\" />\n </IconButton>\n )}\n </TableCell>\n <TableCell>\n {currencyAmountFromCents(calculateRowTotal(row))}\n </TableCell>\n <TableCell align=\"center\">\n <IconButton\n size=\"large\"\n aria-label=\"edit\"\n onClick={() => handleEdit(row)}\n >\n <EditIcon fontSize=\"large\" />\n </IconButton>\n </TableCell>\n </TableRow>\n ))}\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.discount\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 5).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-discountcell`}\n />\n ))}\n <TableCell>\n <MuiFormikSelect name=\"discount_type\" label=\"\" size=\"small\">\n {Object.values(DISCOUNT_TYPES).map((p) => (\n <MenuItem key={`ddopt-${p}`} value={p}>\n {p}\n </MenuItem>\n ))}\n </MuiFormikSelect>\n </TableCell>\n <TableCell />\n <TableCell>\n <MuiFormikDiscountField\n name=\"discount_amount\"\n discountType={values.discount_type}\n fullWidth\n label=\"\"\n size=\"small\"\n inCents\n />\n </TableCell>\n <TableCell />\n </TableRow>\n <TableRow>\n <TableCell sx={{ fontWeight: 500 }}>\n {T.translate(\"sponsor_edit_form.total_on_caps\")}\n </TableCell>\n {/* eslint-disable-next-line */}\n {new Array(totalColumns - 3).fill(0).map((_, i) => (\n <TableCell\n // eslint-disable-next-line\n key={`${i}-totalcell`}\n />\n ))}\n <TableCell sx={{ fontWeight: 500 }}>\n {currencyAmountFromCents(totalAmount)}\n </TableCell>\n <TableCell />\n </TableRow>\n </TableBody>\n </Table>\n </TableContainer>\n );\n};\n\nexport default FormItemTable;\n"],"names":["root","factory","exports","module","define","amd","this","ItemTableField","rowId","field","timeZone","label","disabled","commonProps","name","class_field","type_id","type","React","MuiFormikCheckbox","MuiFormikDropdownCheckbox","_extends","size","options","values","map","v","value","id","MuiFormikDropdownRadio","MuiFormikDatepicker","MuiFormikTimepicker","MuiFormikTextField","fullWidth","slotProps","htmlInput","_objectSpread","min","minimum_quantity","maximum_quantity","max","MuiFormikSelect","MenuItem","key","multiline","rows","_ref","props","_objectWithoutProperties","_excluded","meta","useField","FormControl","margin","error","touched","Boolean","FormControlLabel","control","Checkbox","checked","FormHelperText","propTypes","PropTypes","isRequired","require","required","helpers","requiredLabel","LocalizationProvider","dateAdapter","AdapterMoment","DatePicker","onChange","setValue","textField","helperText","day","sx","fontSize","fontWeight","layout","BLOCKED_KEYS","MuiFormikDiscountField","discountType","inCents","cleared","setCleared","useState","emptyValue","initialValue","adornment","DISCOUNT_TYPES","RATE","endAdornment","InputAdornment","position","startAdornment","inputProps","inputMode","step","getDisplayValue","ONE_HUNDRED","e","newVal","target","numericValue","Number","newDiscount","input","onKeyDown","includes","preventDefault","stopPropagation","rest","allSelected","every","_field$value","Select","variant","multiple","event","opt","onBlur","displayEmpty","renderValue","selected","length","placeholder","T","filter","join","ListItemText","primary","Divider","_field$value2","finalPlaceholder","selectedOption","find","Radio","MuiFormikPriceField","isFocused","setIsFocused","focusedValue","setFocusedValue","getRawString","raw","String","toFixed","DECIMAL_DIGITS","str","dotIdx","indexOf","newPrice","Math","round","onFocus","handleFocus","children","isClearable","shouldShrink","InputLabel","htmlFor","shrink","labelId","notched","style","color","mr","IconButton","onClick","ev","ClearIcon","maxLength","currentLength","finalLabel","Box","TextField","Typography","pl","minTime","maxTime","TimePicker","timezone","views","width","marginLeft","marginRight","CENTS_FACTOR","TWO_DECIMAL_PLACES","ZERO_INT","AMOUNT","CURRENCY_SYMBOL","USD","EUR","GBP","CAD","AUD","NZD","CHF","ARS","BRL","MXN","currencyAmountFromCents","cents","currency","isInteger","Error","amount","c","isSafeInteger","BigInt","s","trim","test","remainder","toString","padStart","amountFromCents","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","r","Symbol","toStringTag","GlobalQuantityField","row","extraColumns","form_item_id","isReadOnly","eq","useEffect","setTouched","readOnly","quantity_limit_per_sponsor","backgroundColor","pointerEvents","borderColor","UnderlyingAlertNote","showAdditionalItems","component","ErrorIcon","top","FormItemTable","data","currentApplicableRate","onNotesClick","onSettingsClick","_data$","_data$$meta_fields","valuesStr","JSON","stringify","meta_fields","mf","totalColumns","calculateQuantity","useCallback","qtyEXC","exc","globalQty","itemLevelQty","reduce","res","calculateRowTotal","qty","rate","rates","hasItemFields","itemFieldsIncomplete","requiredFields","is_required","hasMissingFields","some","formatRate","totalAmount","useMemo","subtotal","acc","discount","discount_type","discount_amount","TableContainer","Paper","Table","TableHead","TableRow","TableCell","minWidth","TableBody","code","opacity","early_bird","standard","onsite","align","handleEditItemFields","SettingsIcon","handleEdit","EditIcon","Array","fill","_","i","p"],"sourceRoot":""}
|