diff --git a/package.json b/package.json index 05558619..4596c578 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openstack-uicore-foundation", - "version": "5.0.15-beta.2", + "version": "5.0.13-beta.3", "description": "ui reactjs components for openstack marketing site", "main": "lib/openstack-uicore-foundation.js", "scripts": { diff --git a/src/components/index.js b/src/components/index.js index 7c435f36..c6fc905c 100644 --- a/src/components/index.js +++ b/src/components/index.js @@ -72,7 +72,7 @@ export {default as MuiShowConfirmDialog} from './mui/showConfirmDialog' export {default as MuiSponsorAddonSelect} from './mui/sponsor-addon-select' export {default as MuiSummitAddonSelect} from './mui/summit-addon-select' export {default as MuiSummitsDropdown} from './mui/summits-dropdown' -export {default as MuiFormItemTable} from './mui/FormItemTable' +export {default as MuiFormItemTable, getCurrentApplicableRate, isItemAvailable, GlobalQuantityField, ItemTableField, UnderlyingAlertNote} from './mui/FormItemTable' export {default as MuiItemSettingsModal} from './mui/ItemSettingsModal' export {default as MuiNotesModal} from './mui/NotesModal' export {default as MuiSnackbarNotification} from './mui/SnackbarNotification' diff --git a/src/components/mui/FormItemTable/__tests__/FormItemTable.test.js b/src/components/mui/FormItemTable/__tests__/FormItemTable.test.js index 0683609b..19100866 100644 --- a/src/components/mui/FormItemTable/__tests__/FormItemTable.test.js +++ b/src/components/mui/FormItemTable/__tests__/FormItemTable.test.js @@ -232,6 +232,21 @@ jest.mock("../../formik-inputs/mui-formik-select", () => ({ ) })); +jest.mock("../../formik-inputs/mui-formik-select-v2", () => ({ + __esModule: true, + default: ({ name, label, options }) => ( + + ) +})); + jest.mock("../../formik-inputs/mui-formik-checkbox", () => ({ __esModule: true, default: ({ name, label }) => ( diff --git a/src/components/mui/FormItemTable/__tests__/ItemTableField.test.js b/src/components/mui/FormItemTable/__tests__/ItemTableField.test.js index 0eda325b..1b1c5af4 100644 --- a/src/components/mui/FormItemTable/__tests__/ItemTableField.test.js +++ b/src/components/mui/FormItemTable/__tests__/ItemTableField.test.js @@ -80,6 +80,14 @@ jest.mock("../../formik-inputs/mui-formik-select", () => { }; }); +jest.mock("../../formik-inputs/mui-formik-select-v2", () => { + const React = require("react"); + return { + __esModule: true, + default: ({ name }) =>
+ }; +}); + import React from "react"; import { render, screen } from "@testing-library/react"; import "@testing-library/jest-dom"; diff --git a/src/components/mui/FormItemTable/components/ItemTableField.js b/src/components/mui/FormItemTable/components/ItemTableField.js index 2f5cdea1..69cd5f40 100644 --- a/src/components/mui/FormItemTable/components/ItemTableField.js +++ b/src/components/mui/FormItemTable/components/ItemTableField.js @@ -12,14 +12,13 @@ * */ import React from "react"; -import { MenuItem } from "@mui/material"; import MuiFormikCheckbox from "../../formik-inputs/mui-formik-checkbox"; import MuiFormikDropdownCheckbox from "../../formik-inputs/mui-formik-dropdown-checkbox"; import MuiFormikDropdownRadio from "../../formik-inputs/mui-formik-dropdown-radio"; import MuiFormikDatepicker from "../../formik-inputs/mui-formik-datepicker"; import MuiFormikTimepicker from "../../formik-inputs/mui-formik-timepicker"; import MuiFormikTextField from "../../formik-inputs/mui-formik-textfield"; -import MuiFormikSelect from "../../formik-inputs/mui-formik-select"; +import MuiFormikSelectV2 from "../../formik-inputs/mui-formik-select-v2"; const ItemTableField = ({ rowId, @@ -33,7 +32,7 @@ const ItemTableField = ({ switch (field.type) { case "CheckBox": - return ; + return ; case "CheckBoxList": return ( - {field.values.map((v) => ( - - {v.value} - - ))} - + ({ value: v.id, label: v.value }))} + /> ); case "Text": return ; diff --git a/src/components/mui/FormItemTable/index.js b/src/components/mui/FormItemTable/index.js index e5855cfd..98f77f54 100644 --- a/src/components/mui/FormItemTable/index.js +++ b/src/components/mui/FormItemTable/index.js @@ -204,7 +204,10 @@ const FormItemTable = ({ {formatRate(row.rates.onsite)} {extraColumns.map((exc) => ( - + { }} /> {itemFields.map((exc) => ( - + - + ))} diff --git a/src/components/mui/formik-inputs/mui-formik-datepicker.js b/src/components/mui/formik-inputs/mui-formik-datepicker.js index c22c2e7f..4d94ea7a 100644 --- a/src/components/mui/formik-inputs/mui-formik-datepicker.js +++ b/src/components/mui/formik-inputs/mui-formik-datepicker.js @@ -40,7 +40,8 @@ const MuiFormikDatepicker = ({ error: meta.touched && Boolean(meta.error), helperText: meta.touched && meta.error, fullWidth: true, - disabled + disabled, + size: "small" }, day: { sx: { diff --git a/src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js b/src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js index 52c5d169..bfb45cde 100644 --- a/src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js +++ b/src/components/mui/formik-inputs/mui-formik-dropdown-checkbox.js @@ -16,6 +16,7 @@ import { Checkbox, Divider, FormControl, + InputLabel, ListItemText, MenuItem, Select @@ -23,8 +24,9 @@ import { import { useField } from "formik"; import T from "i18n-react/dist/i18n-react"; -const MuiFormikDropdownCheckbox = ({ name, options, ...rest }) => { +const MuiFormikDropdownCheckbox = ({ name, label, placeholder, options, ...rest }) => { const [field, meta, helpers] = useField(name); + const finalPlaceholder = placeholder || T.translate("general.select_an_option"); const allSelected = options.every(({ value }) => field.value?.includes(value) ); @@ -46,9 +48,16 @@ const MuiFormikDropdownCheckbox = ({ name, options, ...rest }) => { return ( + {label && ( + + {label} + + )} { + const [field, meta] = useField(name); + const finalPlaceholder = + placeholder || T.translate("general.select_an_option"); + + return ( + + {label && {label}} + + {meta.touched && meta.error && ( + {meta.error} + )} + + ); +}; + +MuiFormikSelectV2.propTypes = { + name: PropTypes.string.isRequired, + options: PropTypes.array.isRequired +}; + +export default MuiFormikSelectV2; diff --git a/src/components/mui/formik-inputs/mui-formik-timepicker.js b/src/components/mui/formik-inputs/mui-formik-timepicker.js index 5b98355b..d25caaba 100644 --- a/src/components/mui/formik-inputs/mui-formik-timepicker.js +++ b/src/components/mui/formik-inputs/mui-formik-timepicker.js @@ -21,6 +21,7 @@ import { useField } from "formik"; const MuiFormikTimepicker = ({ name, + label, minTime, maxTime, timeZone, @@ -41,6 +42,7 @@ const MuiFormikTimepicker = ({ slotProps={{ textField: { name, + label, error: meta.touched && Boolean(meta.error), helperText: meta.touched && meta.error, size: "small",