| @@ -63,7 +63,7 @@ | |||
| "import/no-extraneous-dependencies": "off", | |||
| "jsx-a11y/no-autofocus": "off", | |||
| "no-restricted-imports": [ | |||
| "error", | |||
| "off", | |||
| { | |||
| "patterns": ["@mui/*/*/*", "!@mui/material/test-utils/*"] | |||
| } | |||
| @@ -20,7 +20,6 @@ | |||
| "@mui/material": "^5.10.6", | |||
| "@mui/styles": "^5.15.14", | |||
| "@mui/x-data-grid": "^6.11.1", | |||
| "@mui/x-date-pickers": "^6.12.0", | |||
| "@reduxjs/toolkit": "^1.8.5", | |||
| "@testing-library/jest-dom": "^5.16.5", | |||
| "@testing-library/react": "^13.4.0", | |||
| @@ -69,7 +68,7 @@ | |||
| "@babel/core": "^7.21.4", | |||
| "@babel/eslint-parser": "^7.21.3", | |||
| "@babel/plugin-proposal-private-property-in-object": "^7.21.11", | |||
| "@mui/x-date-pickers": "^6.11.0", | |||
| "@mui/x-date-pickers": "^6.18.0", | |||
| "eslint": "^8.38.0", | |||
| "eslint-config-prettier": "^8.8.0", | |||
| "eslint-config-react-app": "^7.0.1", | |||
| @@ -2683,28 +2682,28 @@ | |||
| } | |||
| }, | |||
| "node_modules/@floating-ui/core": { | |||
| "version": "1.5.0", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz", | |||
| "integrity": "sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg==", | |||
| "version": "1.6.0", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", | |||
| "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", | |||
| "dependencies": { | |||
| "@floating-ui/utils": "^0.1.3" | |||
| "@floating-ui/utils": "^0.2.1" | |||
| } | |||
| }, | |||
| "node_modules/@floating-ui/dom": { | |||
| "version": "1.5.3", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz", | |||
| "integrity": "sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA==", | |||
| "version": "1.6.3", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz", | |||
| "integrity": "sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw==", | |||
| "dependencies": { | |||
| "@floating-ui/core": "^1.4.2", | |||
| "@floating-ui/utils": "^0.1.3" | |||
| "@floating-ui/core": "^1.0.0", | |||
| "@floating-ui/utils": "^0.2.0" | |||
| } | |||
| }, | |||
| "node_modules/@floating-ui/react-dom": { | |||
| "version": "2.0.2", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz", | |||
| "integrity": "sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ==", | |||
| "version": "2.0.8", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", | |||
| "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", | |||
| "dependencies": { | |||
| "@floating-ui/dom": "^1.5.1" | |||
| "@floating-ui/dom": "^1.6.1" | |||
| }, | |||
| "peerDependencies": { | |||
| "react": ">=16.8.0", | |||
| @@ -2712,9 +2711,9 @@ | |||
| } | |||
| }, | |||
| "node_modules/@floating-ui/utils": { | |||
| "version": "0.1.6", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz", | |||
| "integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==" | |||
| "version": "0.2.1", | |||
| "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", | |||
| "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" | |||
| }, | |||
| "node_modules/@formatjs/ecma402-abstract": { | |||
| "version": "1.18.0", | |||
| @@ -4968,15 +4967,15 @@ | |||
| } | |||
| }, | |||
| "node_modules/@mui/x-date-pickers": { | |||
| "version": "6.16.3", | |||
| "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.16.3.tgz", | |||
| "integrity": "sha512-CBwXrOJ5blqkAdF0d1dWF1RMeCS6ZYDq+53Yf/r+Izqj33+SCw+wAbdrxuIxE2GL3JY5NszEx8JFnCKZIzFZuA==", | |||
| "version": "6.19.9", | |||
| "resolved": "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.9.tgz", | |||
| "integrity": "sha512-B2m4Fv/fOme5qmV6zuE3QnWQSvj3zKtI2OvikPz5prpiCcIxqpeytkQ7VfrWH3/Aqd5yhG1Yr4IgbqG0ymIXGg==", | |||
| "dev": true, | |||
| "dependencies": { | |||
| "@babel/runtime": "^7.23.2", | |||
| "@mui/base": "^5.0.0-beta.20", | |||
| "@mui/utils": "^5.14.14", | |||
| "@types/react-transition-group": "^4.4.7", | |||
| "@mui/base": "^5.0.0-beta.22", | |||
| "@mui/utils": "^5.14.16", | |||
| "@types/react-transition-group": "^4.4.8", | |||
| "clsx": "^2.0.0", | |||
| "prop-types": "^15.8.1", | |||
| "react-transition-group": "^4.4.5" | |||
| @@ -4993,7 +4992,7 @@ | |||
| "@emotion/styled": "^11.8.1", | |||
| "@mui/material": "^5.8.6", | |||
| "@mui/system": "^5.8.0", | |||
| "date-fns": "^2.25.0", | |||
| "date-fns": "^2.25.0 || ^3.2.0", | |||
| "date-fns-jalali": "^2.13.0-0", | |||
| "dayjs": "^1.10.7", | |||
| "luxon": "^3.0.2", | |||
| @@ -5033,10 +5032,42 @@ | |||
| } | |||
| } | |||
| }, | |||
| "node_modules/@mui/x-date-pickers/node_modules/@mui/base": { | |||
| "version": "5.0.0-beta.40", | |||
| "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz", | |||
| "integrity": "sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==", | |||
| "dev": true, | |||
| "dependencies": { | |||
| "@babel/runtime": "^7.23.9", | |||
| "@floating-ui/react-dom": "^2.0.8", | |||
| "@mui/types": "^7.2.14", | |||
| "@mui/utils": "^5.15.14", | |||
| "@popperjs/core": "^2.11.8", | |||
| "clsx": "^2.1.0", | |||
| "prop-types": "^15.8.1" | |||
| }, | |||
| "engines": { | |||
| "node": ">=12.0.0" | |||
| }, | |||
| "funding": { | |||
| "type": "opencollective", | |||
| "url": "https://opencollective.com/mui-org" | |||
| }, | |||
| "peerDependencies": { | |||
| "@types/react": "^17.0.0 || ^18.0.0", | |||
| "react": "^17.0.0 || ^18.0.0", | |||
| "react-dom": "^17.0.0 || ^18.0.0" | |||
| }, | |||
| "peerDependenciesMeta": { | |||
| "@types/react": { | |||
| "optional": true | |||
| } | |||
| } | |||
| }, | |||
| "node_modules/@mui/x-date-pickers/node_modules/clsx": { | |||
| "version": "2.0.0", | |||
| "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", | |||
| "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", | |||
| "version": "2.1.1", | |||
| "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", | |||
| "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", | |||
| "dev": true, | |||
| "engines": { | |||
| "node": ">=6" | |||
| @@ -8562,9 +8593,9 @@ | |||
| } | |||
| }, | |||
| "node_modules/date-fns": { | |||
| "version": "3.0.6", | |||
| "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.0.6.tgz", | |||
| "integrity": "sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg==", | |||
| "version": "3.6.0", | |||
| "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", | |||
| "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", | |||
| "funding": { | |||
| "type": "github", | |||
| "url": "https://github.com/sponsors/kossnocorp" | |||
| @@ -16,7 +16,6 @@ | |||
| "@mui/material": "^5.10.6", | |||
| "@mui/styles": "^5.15.14", | |||
| "@mui/x-data-grid": "^6.11.1", | |||
| "@mui/x-date-pickers": "^6.12.0", | |||
| "@reduxjs/toolkit": "^1.8.5", | |||
| "@testing-library/jest-dom": "^5.16.5", | |||
| "@testing-library/react": "^13.4.0", | |||
| @@ -94,7 +93,7 @@ | |||
| "@babel/core": "^7.21.4", | |||
| "@babel/eslint-parser": "^7.21.3", | |||
| "@babel/plugin-proposal-private-property-in-object": "^7.21.11", | |||
| "@mui/x-date-pickers": "^6.11.0", | |||
| "@mui/x-date-pickers": "^6.18.0", | |||
| "eslint": "^8.38.0", | |||
| "eslint-config-prettier": "^8.8.0", | |||
| "eslint-config-react-app": "^7.0.1", | |||
| @@ -11,25 +11,13 @@ import * as DateUtils from "utils/DateUtils"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import { useNavigate } from "react-router-dom"; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center" | |||
| }, | |||
| })); | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const SearchPublicNoticeForm = ({ applySearch, searchCriteria}) => { | |||
| const navigate = useNavigate() | |||
| @@ -47,50 +35,6 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria}) => { | |||
| React.useEffect(() => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue)=="Invalid Date"? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max= {maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue)=="Invalid Date"? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min = {minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const marginBottom = 2.5; | |||
| const { reset, register, handleSubmit } = useForm() | |||
| @@ -151,49 +95,57 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria}) => { | |||
| <Grid item xs={12} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={"Submit Date (From)"} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Submit Date (From)"} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label={"Submit Date (To)"} | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Submit Date (To)"} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -12,25 +12,13 @@ import { ThemeProvider } from "@emotion/react"; | |||
| // import { useNavigate } from "react-router-dom"; | |||
| import { PNSPS_BUTTON_THEME } from "../../../themes/buttonConst"; | |||
| import { FormattedMessage, useIntl } from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center" | |||
| }, | |||
| })); | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| // const navigate = useNavigate() | |||
| @@ -50,50 +38,6 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| React.useEffect(() => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue)=="Invalid Date"? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max= {maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue)=="Invalid Date"? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min = {minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const marginBottom = 2.5; | |||
| const { reset, register, handleSubmit } = useForm() | |||
| @@ -150,56 +94,65 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| /> | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: marginBottom }}> | |||
| <Grid item xs={12} s={6} md={6} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <Grid container> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={intl.formatMessage({ id: 'dateFrom' }) + ":"} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'dateFrom'})} | |||
| label={intl.formatMessage({id: 'dateFrom'})} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{ mt: 0.8, display: 'flex', justifyContent: "center", alignItems: 'flex-start' }}> | |||
| <FormattedMessage id="to"></FormattedMessage> | |||
| <Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:1.3, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
| <FormattedMessage id="to" /> | |||
| </Grid> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| //label={"Submit Date(To)"} | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'dateTo'})} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -22,29 +22,14 @@ import * as DateUtils from "utils/DateUtils"; | |||
| import * as UrlUtils from "utils/ApiPathConst"; | |||
| import * as HttpUtils from "utils/HttpUtils"; | |||
| import Loadable from 'components/Loadable'; | |||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const AuditLogSearchForm = ({ applySearch, searchCriteria}) => { | |||
| // const navigate = useNavigate(); | |||
| @@ -66,51 +51,6 @@ const AuditLogSearchForm = ({ applySearch, searchCriteria}) => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| // console.log(minDate) | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const onSubmit = (data) => { | |||
| let sentDateFrom = ""; | |||
| let sentDateTo = ""; | |||
| @@ -177,27 +117,31 @@ const AuditLogSearchForm = ({ applySearch, searchCriteria}) => { | |||
| <Grid item xs={9} s={6} md={6} lg={6} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("modifiedFrom")} | |||
| id="modifiedFrom" | |||
| type="date" | |||
| label="Modified From" | |||
| defaultValue={searchCriteria.modifiedFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="modifiedFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Modified From" | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:0.8, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
| @@ -205,26 +149,30 @@ const AuditLogSearchForm = ({ applySearch, searchCriteria}) => { | |||
| </Grid> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("modifiedTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="modifiedTo" | |||
| type="date" | |||
| label="Modified To" | |||
| defaultValue={searchCriteria.modifiedTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="modifiedTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Modified To" | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -14,27 +14,13 @@ import * as FormatUtils from "utils/FormatUtils"; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import { useIntl } from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issueComboData | |||
| }) => { | |||
| @@ -47,13 +33,13 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
| const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | |||
| const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | |||
| const [fromDateValue, setFromDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [toDateValue, setToDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [fromDateValue, setFromDateValue] = React.useState(searchCriteria.dateFrom); | |||
| const [toDateValue, setToDateValue] = React.useState(searchCriteria.dateTo); | |||
| const [minDueDate, setMinDueDate] = React.useState(searchCriteria.dueDateFrom); | |||
| const [maxDueDate, setMaxDueDate] = React.useState(searchCriteria.dueDateTo); | |||
| const [fromDueDateValue, setFromDueDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [toDueDateValue, setToDueDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [minDueDate, setMinDueDate] = React.useState(null); | |||
| const [maxDueDate, setMaxDueDate] = React.useState(null); | |||
| const [fromDueDateValue, setFromDueDateValue] = React.useState(null); | |||
| const [toDueDateValue, setToDueDateValue] = React.useState(null); | |||
| const intl = useIntl(); | |||
| const { locale } = intl; | |||
| @@ -67,103 +53,13 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
| }, [maxDate]); | |||
| React.useEffect(() => { | |||
| setFromDueDateValue(minDueDate??"dd / mm / yyyy"); | |||
| setFromDueDateValue(minDueDate); | |||
| }, [minDueDate]); | |||
| React.useEffect(() => { | |||
| setToDueDateValue(maxDueDate??"dd / mm / yyyy"); | |||
| setToDueDateValue(maxDueDate); | |||
| }, [maxDueDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| console.log(minDate) | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function FormDueDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDueDateValue) == "Invalid Date" ? | |||
| fromDueDateValue | |||
| : | |||
| DateUtils.dateStr(fromDueDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDueDateValue} | |||
| max={maxDueDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDueDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDueDateValue) == "Invalid Date" ? | |||
| toDueDateValue | |||
| : | |||
| DateUtils.dateStr(toDueDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDueDateValue} | |||
| min={minDueDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const { reset, register, handleSubmit } = useForm() | |||
| const onSubmit = (data) => { | |||
| data.status = selectedStatus?.type; | |||
| @@ -219,8 +115,10 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
| setOrgSelected({}); | |||
| setIssueSelected({}); | |||
| setSelectedStatus(ComboData.denmandNoteStatus[0]); | |||
| setFromDueDateValue("dd / mm / yyyy"); | |||
| setToDueDateValue("dd / mm / yyyy"); | |||
| setMinDueDate(null); | |||
| setMaxDueDate(null); | |||
| setMinDate(searchCriteria.dateFrom); | |||
| setMaxDate(searchCriteria.dateTo); | |||
| reset(); | |||
| } | |||
| @@ -352,96 +250,114 @@ const SearchDemandNoteForm = ({ applySearch, orgComboData, searchCriteria, issue | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={"Issue Date (From)"} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Issue Date (From)"} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label={"Issue Date (To)"} | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={6}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Issue Date (To)"} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:3}}> | |||
| <Grid item xs={9} s={6} md={6} lg={3.5} sx={{ml:3, mr:2, mb:3}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dueDateFrom")} | |||
| id="dueDateFrom" | |||
| type="date" | |||
| label={"Due Date (From)"} | |||
| defaultValue={searchCriteria.dueDateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDueDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setMinDueDate(newValue.target.value); | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dueDateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Due Date (From)"} | |||
| value={minDueDate === null ? null : dayjs(minDueDate)} | |||
| maxDate={maxDueDate === null ? null : dayjs(maxDueDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setMinDueDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dueDateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDueDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setMaxDueDate(newValue.target.value); | |||
| }} | |||
| id="dueDateTo" | |||
| type="date" | |||
| label={"Due Date (To)"} | |||
| defaultValue={searchCriteria.dueDateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={6}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dueDateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Due Date (To)"} | |||
| value={maxDueDate === null ? null : dayjs(maxDueDate)} | |||
| minDate={minDueDate === null ? null : dayjs(minDueDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setMaxDueDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -15,26 +15,13 @@ import * as FormatUtils from "utils/FormatUtils"; | |||
| import { FormattedMessage, useIntl } from "react-intl"; | |||
| import { PNSPS_BUTTON_THEME } from "../../../themes/buttonConst"; | |||
| import { ThemeProvider } from "@emotion/react"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center" | |||
| }, | |||
| })); | |||
| const SearchDemandNoteForm = ({ applySearch, searchCriteria, issueComboData | |||
| }) => { | |||
| @@ -59,50 +46,6 @@ const SearchDemandNoteForm = ({ applySearch, searchCriteria, issueComboData | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const { reset, register, handleSubmit } = useForm() | |||
| const onSubmit = (data) => { | |||
| let typeArray = []; | |||
| @@ -244,48 +187,57 @@ const SearchDemandNoteForm = ({ applySearch, searchCriteria, issueComboData | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={intl.formatMessage({ id: 'sendDateFrom' })} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| // InputProps={{ inputProps: { max: maxDate } }} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({ id: 'sendDateFrom' })} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| /> | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label={intl.formatMessage({ id: 'sendDateTo' })} | |||
| defaultValue={searchCriteria.dateTo} | |||
| /> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({ id: 'sendDateTo' })} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| @@ -1,7 +1,8 @@ | |||
| // material-ui | |||
| import { | |||
| Button, | |||
| Grid, TextField, | |||
| Grid, | |||
| // TextField, | |||
| // Autocomplete, | |||
| Typography | |||
| } from '@mui/material'; | |||
| @@ -13,27 +14,13 @@ import {PNSPS_BUTTON_THEME} from "../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| // import * as ComboData from "utils/ComboData"; | |||
| import * as DateUtils from "utils/DateUtils"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria }) => { | |||
| // const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | |||
| @@ -42,34 +29,15 @@ const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria }) => | |||
| // const [status, setStatus] = React.useState(ComboData.paymentStatus[0]); | |||
| const [fromDateValue, setFromDateValue] = React.useState("dd / mm / yyyy"); | |||
| const { register, handleSubmit, } = useForm() | |||
| const { | |||
| // register, | |||
| handleSubmit, | |||
| } = useForm() | |||
| React.useEffect(() => { | |||
| setFromDateValue(minDate); | |||
| }, [minDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const onSubmit = () => { | |||
| let sentDateFrom = ""; | |||
| @@ -122,71 +90,77 @@ const SearchPublicNoticeForm = ({ applySearch, generateXML, searchCriteria }) => | |||
| {/*row 2*/} | |||
| <Grid container display="flex" alignItems={"center"}> | |||
| <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label="Credit Date" | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Credit Date" | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| {/* <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ inputProps: { min: minDate } }} | |||
| onChange={(newValue) => { | |||
| setMaxDate(DateUtils.dateValue(newValue)); | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label="To" | |||
| defaultValue={searchCriteria.dateTo} | |||
| /> */} | |||
| </Grid> | |||
| {/* <Grid item xs={9} s={6} md={4} lg={3}> | |||
| </Grid> */} | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={4} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| {/* <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ inputProps: { min: minDate } }} | |||
| onChange={(newValue) => { | |||
| setMaxDate(DateUtils.dateValue(newValue)); | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label="To" | |||
| defaultValue={searchCriteria.dateTo} | |||
| /> */} | |||
| <Grid container justifyContent="flex-end" direction="row" alignItems="center" spacing={3} sx={{ ml: 3, mr: 3, mb: 3, }}> | |||
| <ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
| <Grid item > | |||
| <Button | |||
| variant="contained" | |||
| type="submit" | |||
| > | |||
| Preview | |||
| </Button> | |||
| </Grid> | |||
| <Grid item > | |||
| <Button | |||
| variant="contained" | |||
| onClick={generateHandler} | |||
| > | |||
| Generate | |||
| </Button> | |||
| </Grid> | |||
| </ThemeProvider> | |||
| </Grid> | |||
| {/* <Grid item xs={9} s={6} md={4} lg={3}> | |||
| </Grid> */} | |||
| </Grid> | |||
| <Grid container justifyContent="flex-end" direction="row" alignItems="center" spacing={3} sx={{ ml: 3, mr: 3, mb: 3, }}> | |||
| <ThemeProvider theme={PNSPS_BUTTON_THEME}> | |||
| <Grid item > | |||
| <Button | |||
| variant="contained" | |||
| type="submit" | |||
| > | |||
| Preview | |||
| </Button> | |||
| </Grid> | |||
| <Grid item > | |||
| <Button | |||
| variant="contained" | |||
| onClick={generateHandler} | |||
| > | |||
| Generate | |||
| </Button> | |||
| </Grid> | |||
| </ThemeProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </form> | |||
| </MainCard> | |||
| @@ -12,6 +12,12 @@ import * as DateUtils from "utils/DateUtils"; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import {FormattedMessage, useIntl} from "react-intl"; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| @@ -20,6 +26,17 @@ const SearchForm = ({ applySearch, searchCriteria }) => { | |||
| const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | |||
| const [maxDate, setMaxDate] = React.useState(searchCriteria.dateTo); | |||
| const [fromDateValue, setFromDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [toDateValue, setToDateValue] = React.useState("dd / mm / yyyy"); | |||
| React.useEffect(() => { | |||
| setFromDateValue(minDate); | |||
| }, [minDate]); | |||
| React.useEffect(() => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| const _sx = { | |||
| padding: "4 2 4 2", | |||
| boxShadow: 1, | |||
| @@ -39,15 +56,24 @@ const SearchForm = ({ applySearch, searchCriteria }) => { | |||
| const { reset, register, handleSubmit } = useForm() | |||
| const onSubmit = (data) => { | |||
| let sentDateFrom = ""; | |||
| let sentDateTo = ""; | |||
| if (fromDateValue != "dd / mm / yyyy" && toDateValue != "dd / mm / yyyy") { | |||
| sentDateFrom = DateUtils.dateValue(fromDateValue) | |||
| sentDateTo = DateUtils.dateValue(toDateValue) | |||
| } | |||
| const temp = { | |||
| keywork: data.keywork, | |||
| dateFrom: data.dateFrom, | |||
| dateTo: data.dateTo, | |||
| dateFrom: sentDateFrom, | |||
| dateTo: sentDateTo, | |||
| }; | |||
| applySearch(temp); | |||
| }; | |||
| function resetForm() { | |||
| setMinDate(DateUtils.dateValue(new Date().setDate(new Date().getDate()-14))) | |||
| setMaxDate(DateUtils.dateValue(new Date())) | |||
| reset(); | |||
| } | |||
| @@ -86,25 +112,34 @@ const SearchForm = ({ applySearch, searchCriteria }) => { | |||
| /> | |||
| </Grid> | |||
| <Grid item xs={12} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <Grid item xs={12} s={6} md={6} lg={4} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <Grid container> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| aria-label={intl.formatMessage({id: 'dateFrom'})} | |||
| label={intl.formatMessage({id: 'dateFrom'})} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ inputProps: { max: maxDate } }} | |||
| onChange={(newValue) => { | |||
| setMinDate(DateUtils.dateValue(newValue)); | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'dateFrom'})} | |||
| label={intl.formatMessage({id: 'dateFrom'})} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={1.5} s={1.5} md={1.5} lg={1} sx={{mt:1.3, display: 'flex', justifyContent:"center", alignItems: 'flex-start'}}> | |||
| @@ -112,22 +147,30 @@ const SearchForm = ({ applySearch, searchCriteria }) => { | |||
| </Grid> | |||
| <Grid item xs={5.25} s={5.25} md={5.25} lg={5.5}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ inputProps: { min: minDate } }} | |||
| onChange={(newValue) => { | |||
| setMaxDate(DateUtils.dateValue(newValue)); | |||
| }} | |||
| aria-label={intl.formatMessage({id: 'dateTo'})} | |||
| id="dateTo" | |||
| type="date" | |||
| //label="付款日期(到)" | |||
| defaultValue={searchCriteria.dateTo} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'dateTo'})} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -12,27 +12,13 @@ import * as DateUtils from "utils/DateUtils"; | |||
| import * as ComboData from "utils/ComboData"; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | |||
| @@ -53,49 +39,6 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const onSubmit = (data) => { | |||
| let sentDateFrom = ""; | |||
| let sentDateTo = ""; | |||
| @@ -156,48 +99,56 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label="Transaction Date (From)" | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Transaction Date (From)" | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label="Transaction Date (To)" | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Transaction Date (To)" | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -14,25 +14,13 @@ import * as ComboData from "utils/ComboData"; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import {FormattedMessage, useIntl} from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center" | |||
| }, | |||
| })); | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| const intl = useIntl(); | |||
| const [minDate, setMinDate] = React.useState(searchCriteria.dateFrom); | |||
| @@ -51,50 +39,6 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue)=="Invalid Date"? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max= {maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue)=="Invalid Date"? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min = {minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const _sx = { | |||
| padding: "4 2 4 2", | |||
| boxShadow: 1, | |||
| @@ -173,49 +117,59 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| <Grid item xs={12} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={intl.formatMessage({id: 'payDateFrom'})} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({id: 'payDateFrom'})} | |||
| // defaultValue={searchCriteria.dateFrom} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label={intl.formatMessage({id: 'payDateTo'})} | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({id: 'payDateTo'})} | |||
| // defaultValue={searchCriteria.dateTo} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -14,27 +14,13 @@ import { Typography } from '../../../../node_modules/@mui/material/index'; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import { useIntl } from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, issueComboData | |||
| }) => { | |||
| @@ -59,50 +45,6 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const intl = useIntl(); | |||
| const { locale } = intl; | |||
| @@ -281,49 +223,57 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label="Proof Issue Date (From)" | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Proof Issue Date (From)" | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label="Proof Issue Date (To)" | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={6}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Proof Issue Date (To)" | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -15,25 +15,13 @@ import * as FormatUtils from "utils/FormatUtils"; | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import {FormattedMessage, useIntl} from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center" | |||
| }, | |||
| })); | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData | |||
| }) => { | |||
| const intl = useIntl(); | |||
| @@ -58,50 +46,6 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const _sx = { | |||
| padding: "4 2 4 2", | |||
| boxShadow: 1, | |||
| @@ -185,7 +129,7 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData | |||
| + " Vol. " + FormatUtils.zeroPad(volume, 3) | |||
| + ", No. " + FormatUtils.zeroPad(issueNo, 2) | |||
| + ", " + DateUtils.dateFormat(issueDate, "D MMM YYYY (ddd)"); | |||
| } | |||
| } | |||
| return ( | |||
| <MainCard xs={12} md={12} lg={12} | |||
| @@ -281,49 +225,57 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria, issueComboData | |||
| <Grid item xs={12} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={intl.formatMessage({id: 'proofDateFrom'})} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({id: 'proofDateFrom'})} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label={intl.formatMessage({id: 'proofDateTo'})} | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({id: 'proofDateTo'})} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -16,27 +16,14 @@ import { | |||
| import {PNSPS_BUTTON_THEME} from "../../../themes/buttonConst"; | |||
| import {ThemeProvider} from "@emotion/react"; | |||
| import {FormattedMessage, useIntl} from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| const intl = useIntl(); | |||
| const [type, setType] = React.useState([]); | |||
| @@ -59,50 +46,6 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const onSubmit = (data) => { | |||
| data.status = status.type; | |||
| let typeArray = []; | |||
| @@ -166,53 +109,58 @@ const SearchPublicNoticeForm = ({ applySearch, searchCriteria }) => { | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'submitDateFrom'})} | |||
| label={intl.formatMessage({id: 'submitDateFrom'})} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'submitDateFrom'})} | |||
| label={intl.formatMessage({id: 'submitDateFrom'})} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| id="dateTo" | |||
| type="date" | |||
| // format="DD/MM/YYYY" | |||
| aria-label={intl.formatMessage({id: 'submitDateTo'})} | |||
| label={intl.formatMessage({id: 'submitDateTo'})} | |||
| defaultValue={searchCriteria.dateTo} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={intl.formatMessage({id: 'submitDateTo'})} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| {isORGLoggedIn()? | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: 3 }}> | |||
| @@ -14,27 +14,13 @@ import * as FormatUtils from "utils/FormatUtils"; | |||
| import { ThemeProvider } from "@emotion/react"; | |||
| import { PNSPS_BUTTON_THEME } from "../../../themes/buttonConst"; | |||
| import { useIntl } from "react-intl"; | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, issueComboData | |||
| }) => { | |||
| @@ -59,50 +45,6 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss | |||
| setToDateValue(maxDate); | |||
| }, [maxDate]); | |||
| function FormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(fromDateValue) == "Invalid Date" ? | |||
| fromDateValue | |||
| : | |||
| DateUtils.dateStr(fromDateValue)} | |||
| </div> | |||
| <input | |||
| className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={fromDateValue} | |||
| max={maxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function ToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(toDateValue) == "Invalid Date" ? | |||
| toDateValue | |||
| : | |||
| DateUtils.dateStr(toDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={toDateValue} | |||
| min={minDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const intl = useIntl(); | |||
| const { locale } = intl; | |||
| @@ -216,49 +158,57 @@ const SearchPublicNoticeForm = ({ applySearch, orgComboData, searchCriteria, iss | |||
| <Grid item xs={9} s={6} md={5} lg={3} sx={{ ml: 3, mr: 3, mb: marginBottom }}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("dateFrom")} | |||
| id="dateFrom" | |||
| type="date" | |||
| label={"Submit Date (From)"} | |||
| defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: FormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMinDate(newValue.target.value); | |||
| } | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Submit Date (From)"} | |||
| value={minDate === null ? null : dayjs(minDate)} | |||
| maxDate={maxDate === null ? null : dayjs(maxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMinDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={6}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("dateTo")} | |||
| InputProps={{ | |||
| inputComponent: ToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| if(newValue.target.value!=""){ | |||
| setMaxDate(newValue.target.value); | |||
| } | |||
| }} | |||
| id="dateTo" | |||
| type="date" | |||
| label={"Submit Date (To)"} | |||
| defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="dateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| // textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| // }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label={"Submit Date (To)"} | |||
| value={maxDate === null ? null : dayjs(maxDate)} | |||
| minDate={minDate === null ? null : dayjs(minDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| if(newValue!=null){ | |||
| setMaxDate(newValue); | |||
| } | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -15,42 +15,28 @@ import * as ComboData from "utils/ComboData"; | |||
| import * as DateUtils from "utils/DateUtils"; | |||
| import Loadable from 'components/Loadable'; | |||
| const LoadingComponent = Loadable(React.lazy(() => import('pages/extra-pages/LoadingComponent'))); | |||
| import { makeStyles } from '@mui/styles'; | |||
| import {DatePicker} from "@mui/x-date-pickers/DatePicker"; | |||
| import dayjs from "dayjs"; | |||
| import {DemoItem} from "@mui/x-date-pickers/internals/demo"; | |||
| import {LocalizationProvider} from "@mui/x-date-pickers/LocalizationProvider"; | |||
| import {AdapterDayjs} from "@mui/x-date-pickers/AdapterDayjs"; | |||
| // ==============================|| DASHBOARD - DEFAULT ||============================== // | |||
| const useStyles = makeStyles(() => ({ | |||
| root: { | |||
| position: "relative" | |||
| }, | |||
| display: { | |||
| position: "absolute", | |||
| top: 2, | |||
| left: 12, | |||
| bottom: 2, | |||
| background: "white", | |||
| pointerEvents: "none", | |||
| right: 50, | |||
| display: "flex", | |||
| alignItems: "center", | |||
| width:"70%" | |||
| }, | |||
| })); | |||
| const SearchPublicNoticeForm = ({ applySearch, generateReport, searchCriteria, onLoad }) => { | |||
| const [sysTxnMinDate, setSysTxnMinDate] = React.useState(searchCriteria.dateFrom); | |||
| const [sysTxnMaxDate, setsysTxnMaxDate] = React.useState(searchCriteria.dateTo); | |||
| const [txnMinDate, setTxnMinDate] = React.useState(searchCriteria.dateFrom); | |||
| const [txnMaxDate, setTxnMaxDate] = React.useState(searchCriteria.dateTo); | |||
| const [collMinDate, setCollMinDate] = React.useState(searchCriteria.dateFrom); | |||
| const [collMaxDate, setCollMaxDate] = React.useState(searchCriteria.dateTo); | |||
| const [sysTxnFromDateValue, setSysTxnFromDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [sysTxnToDateValue, setSysTxnToDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [txnFromDateValue, setTxnFromDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [txnToDateValue, setTxnToDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [collFromDateValue, setCollFromDateValue] = React.useState("dd / mm / yyyy"); | |||
| const [collToDateValue, setCollToDateValue] = React.useState("dd / mm / yyyy"); | |||
| const SearchPublicNoticeForm = ({ applySearch, generateReport, onLoad }) => { | |||
| const [sysTxnMinDate, setSysTxnMinDate] = React.useState(null); | |||
| const [sysTxnMaxDate, setsysTxnMaxDate] = React.useState(null); | |||
| const [txnMinDate, setTxnMinDate] = React.useState(null); | |||
| const [txnMaxDate, setTxnMaxDate] = React.useState(null); | |||
| const [collMinDate, setCollMinDate] = React.useState(null); | |||
| const [collMaxDate, setCollMaxDate] = React.useState(null); | |||
| const [sysTxnFromDateValue, setSysTxnFromDateValue] = React.useState(null); | |||
| const [sysTxnToDateValue, setSysTxnToDateValue] = React.useState(null); | |||
| const [txnFromDateValue, setTxnFromDateValue] = React.useState(null); | |||
| const [txnToDateValue, setTxnToDateValue] = React.useState(null); | |||
| const [collFromDateValue, setCollFromDateValue] = React.useState(null); | |||
| const [collToDateValue, setCollToDateValue] = React.useState(null); | |||
| const [status, setStatus] = React.useState(ComboData.paymentStatus[0]); | |||
| const [method, setMethod] = React.useState(ComboData.paymentMethod[0]); | |||
| @@ -82,138 +68,6 @@ const SearchPublicNoticeForm = ({ applySearch, generateReport, searchCriteria, o | |||
| setCollToDateValue(collMaxDate); | |||
| }, [collMaxDate]); | |||
| function SysTxnFormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(sysTxnFromDateValue) == "Invalid Date" ? | |||
| sysTxnFromDateValue | |||
| : | |||
| DateUtils.dateStr(sysTxnFromDateValue)} | |||
| </div> | |||
| <input | |||
| className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={sysTxnFromDateValue} | |||
| max={sysTxnMaxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function SysTxnToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(sysTxnToDateValue) == "Invalid Date" ? | |||
| sysTxnToDateValue | |||
| : | |||
| DateUtils.dateStr(sysTxnToDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={sysTxnToDateValue} | |||
| min={sysTxnMinDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function TxnFormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(txnFromDateValue) == "Invalid Date" ? | |||
| txnFromDateValue | |||
| : | |||
| DateUtils.dateStr(txnFromDateValue)} | |||
| </div> | |||
| <input | |||
| className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={txnFromDateValue} | |||
| max={txnMaxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function TxnToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(txnToDateValue) == "Invalid Date" ? | |||
| txnToDateValue | |||
| : | |||
| DateUtils.dateStr(txnToDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={txnToDateValue} | |||
| min={txnMinDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function CollFormDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(collFromDateValue) == "Invalid Date" ? | |||
| collFromDateValue | |||
| : | |||
| DateUtils.dateStr(collFromDateValue)} | |||
| </div> | |||
| <input | |||
| className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={collFromDateValue} | |||
| max={collMaxDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| function CollToDateInputComponent({ inputRef, ...props }) { | |||
| const classes = useStyles(); | |||
| return ( | |||
| <> | |||
| <div className={classes.display}> | |||
| {DateUtils.dateStr(collToDateValue) == "Invalid Date" ? | |||
| collToDateValue | |||
| : | |||
| DateUtils.dateStr(collToDateValue)} | |||
| </div> | |||
| <input | |||
| // className={classes.input} | |||
| ref={inputRef} | |||
| {...props} | |||
| // onChange={handleChange} | |||
| value={collToDateValue} | |||
| min={collMinDate} | |||
| /> | |||
| </> | |||
| ); | |||
| } | |||
| const onSubmit = () => { | |||
| let sentSysTxnDateFrom = ""; | |||
| @@ -287,12 +141,12 @@ const SearchPublicNoticeForm = ({ applySearch, generateReport, searchCriteria, o | |||
| } | |||
| const clearHandler = () => () => { | |||
| setSysTxnMinDate(searchCriteria.dateFrom) | |||
| setsysTxnMaxDate(searchCriteria.dateTo) | |||
| setTxnMinDate(searchCriteria.dateFrom) | |||
| setTxnMaxDate(searchCriteria.dateTo) | |||
| setCollMinDate(searchCriteria.dateFrom) | |||
| setCollMaxDate(searchCriteria.dateTo) | |||
| setSysTxnMinDate(null) | |||
| setsysTxnMaxDate(null) | |||
| setTxnMinDate(null) | |||
| setTxnMaxDate(null) | |||
| setCollMinDate(null) | |||
| setCollMaxDate(null) | |||
| setSysTxnFromDateValue("") | |||
| setSysTxnToDateValue("") | |||
| setTxnFromDateValue("") | |||
| @@ -382,45 +236,54 @@ const SearchPublicNoticeForm = ({ applySearch, generateReport, searchCriteria, o | |||
| <Grid container display="flex" alignItems={"center"}> | |||
| <Grid item xs={12} s={12} md={12} lg={12} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={4}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("sysTxnDateFrom")} | |||
| id="sysTxnDateFrom" | |||
| type="date" | |||
| label="PNSPS Transaction Date (From)" | |||
| ////defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: SysTxnFormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setSysTxnMinDate(newValue.target.value); | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={4}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="sysTxnDateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="PNSPS Transaction Date (From)" | |||
| value={sysTxnMinDate === null ? null : dayjs(sysTxnMinDate)} | |||
| maxDate={sysTxnMaxDate === null ? null : dayjs(sysTxnMaxDate)} | |||
| onChange={(newValue) => { | |||
| setSysTxnMinDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={4}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("sysTxnDateTo")} | |||
| InputProps={{ | |||
| inputComponent: SysTxnToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setsysTxnMaxDate(newValue.target.value); | |||
| }} | |||
| id="sysTxnDateTo" | |||
| type="date" | |||
| label="PNSPS Transaction Date (To)" | |||
| ////defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="sysTxnDateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="PNSPS Transaction Date (To)" | |||
| value={sysTxnMaxDate === null ? null : dayjs(sysTxnMaxDate)} | |||
| minDate={sysTxnMinDate === null ? null : dayjs(sysTxnMinDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setsysTxnMaxDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -430,45 +293,55 @@ const SearchPublicNoticeForm = ({ applySearch, generateReport, searchCriteria, o | |||
| <Grid container display="flex" alignItems={"center"}> | |||
| <Grid item xs={12} s={12} md={12} lg={12} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={4}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("txnDateFrom")} | |||
| id="txnDateFrom" | |||
| type="date" | |||
| label="FI Transaction Date (From)" | |||
| //defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: TxnFormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setTxnMinDate(newValue.target.value); | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={4}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="txnDateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="FI Transaction Date (From)" | |||
| value={txnMinDate === null ? null : dayjs(txnMinDate)} | |||
| maxDate={txnMaxDate === null ? null : dayjs(txnMaxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setTxnMinDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={4}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("txnDateTo")} | |||
| InputProps={{ | |||
| inputComponent: TxnToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setTxnMaxDate(newValue.target.value); | |||
| }} | |||
| id="txnDateTo" | |||
| type="date" | |||
| label="FI Transaction Date (To)" | |||
| //defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="txnDateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="FI Transaction Date (To)" | |||
| value={txnMaxDate === null ? null : dayjs(txnMaxDate)} | |||
| minDate={txnMinDate === null ? null : dayjs(txnMinDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setTxnMaxDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -478,45 +351,55 @@ const SearchPublicNoticeForm = ({ applySearch, generateReport, searchCriteria, o | |||
| <Grid container display="flex" alignItems={"center"}> | |||
| <Grid item xs={12} s={12} md={12} lg={12} sx={{ml:3, mr:3, mb:marginBottom}}> | |||
| <Grid container spacing={1}> | |||
| <Grid item xs={4}> | |||
| <TextField | |||
| fullWidth | |||
| {...register("collDateFrom")} | |||
| id="collDateFrom" | |||
| type="date" | |||
| label="Bank Credit Date (From)" | |||
| //defaultValue={searchCriteria.dateFrom} | |||
| InputProps={{ | |||
| inputComponent: CollFormDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setCollMinDate(newValue.target.value); | |||
| }} | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <Grid item xs={4}> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="collDateFrom" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Bank Credit Date (From)" | |||
| value={collMinDate === null ? null : dayjs(collMinDate)} | |||
| maxDate={collMaxDate === null ? null : dayjs(collMaxDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setCollMinDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| <Grid item xs={4}> | |||
| <TextField | |||
| fullWidth | |||
| InputLabelProps={{ | |||
| shrink: true | |||
| }} | |||
| {...register("collDateTo")} | |||
| InputProps={{ | |||
| inputComponent: CollToDateInputComponent, | |||
| }} | |||
| onChange={(newValue) => { | |||
| setCollMaxDate(newValue.target.value); | |||
| }} | |||
| id="collDateTo" | |||
| type="date" | |||
| label="Bank Credit Date (To)" | |||
| //defaultValue={searchCriteria.dateTo} | |||
| sx={{ "& .MuiInputBase-input": {display:"block", textIndent: "-9999px"} }} | |||
| /> | |||
| <LocalizationProvider dateAdapter={AdapterDayjs}> | |||
| <DemoItem components={['DatePicker']}> | |||
| <DatePicker | |||
| id="collDateTo" | |||
| // onError={(newError) => setReceiptFromError(newError)} | |||
| slotProps={{ | |||
| field: { readOnly: true, }, | |||
| textField: { | |||
| // helperText: receiptFromErrorMessage, | |||
| InputLabelProps: { shrink: true } | |||
| }, | |||
| }} | |||
| format="DD/MM/YYYY" | |||
| label="Bank Credit Date (To)" | |||
| value={collMaxDate === null ? null : dayjs(collMaxDate)} | |||
| minDate={collMinDate === null ? null : dayjs(collMinDate)} | |||
| onChange={(newValue) => { | |||
| // console.log(newValue) | |||
| setCollMaxDate(newValue); | |||
| }} | |||
| /> | |||
| </DemoItem > | |||
| </LocalizationProvider> | |||
| </Grid> | |||
| </Grid> | |||
| </Grid> | |||
| @@ -1480,32 +1480,32 @@ | |||
| resolved "https://registry.npmjs.org/@eslint/js/-/js-8.52.0.tgz" | |||
| integrity sha512-mjZVbpaeMZludF2fsWLD0Z9gCref1Tk4i9+wddjRvpUNqqcndPkBD09N/Mapey0b3jaXbLm2kICwFv2E64QinA== | |||
| "@floating-ui/core@^1.4.2": | |||
| version "1.5.0" | |||
| resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.5.0.tgz" | |||
| integrity sha512-kK1h4m36DQ0UHGj5Ah4db7R0rHemTqqO0QLvUqi1/mUUp3LuAWbWxdxSIf/XsnH9VS6rRVPLJCncjRzUvyCLXg== | |||
| "@floating-ui/core@^1.0.0": | |||
| version "1.6.0" | |||
| resolved "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz" | |||
| integrity sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g== | |||
| dependencies: | |||
| "@floating-ui/utils" "^0.1.3" | |||
| "@floating-ui/utils" "^0.2.1" | |||
| "@floating-ui/dom@^1.5.1": | |||
| version "1.5.3" | |||
| resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.5.3.tgz" | |||
| integrity sha512-ClAbQnEqJAKCJOEbbLo5IUlZHkNszqhuxS4fHAVxRPXPya6Ysf2G8KypnYcOTpx6I8xcgF9bbHb6g/2KpbV8qA== | |||
| "@floating-ui/dom@^1.6.1": | |||
| version "1.6.3" | |||
| resolved "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.3.tgz" | |||
| integrity sha512-RnDthu3mzPlQ31Ss/BTwQ1zjzIhr3lk1gZB1OC56h/1vEtaXkESrOqL5fQVMfXpwGtRwX+YsZBdyHtJMQnkArw== | |||
| dependencies: | |||
| "@floating-ui/core" "^1.4.2" | |||
| "@floating-ui/utils" "^0.1.3" | |||
| "@floating-ui/core" "^1.0.0" | |||
| "@floating-ui/utils" "^0.2.0" | |||
| "@floating-ui/react-dom@^2.0.2": | |||
| version "2.0.2" | |||
| resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.2.tgz" | |||
| integrity sha512-5qhlDvjaLmAst/rKb3VdlCinwTF4EYMiVxuuc/HVUjs46W0zgtbMmAZ1UTsDrRTxRmUEzl92mOtWbeeXL26lSQ== | |||
| "@floating-ui/react-dom@^2.0.2", "@floating-ui/react-dom@^2.0.8": | |||
| version "2.0.8" | |||
| resolved "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz" | |||
| integrity sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw== | |||
| dependencies: | |||
| "@floating-ui/dom" "^1.5.1" | |||
| "@floating-ui/dom" "^1.6.1" | |||
| "@floating-ui/utils@^0.1.3": | |||
| version "0.1.6" | |||
| resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.1.6.tgz" | |||
| integrity sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A== | |||
| "@floating-ui/utils@^0.2.0", "@floating-ui/utils@^0.2.1": | |||
| version "0.2.1" | |||
| resolved "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz" | |||
| integrity sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q== | |||
| "@formatjs/[email protected]": | |||
| version "1.18.0" | |||
| @@ -2027,7 +2027,7 @@ | |||
| hey-listen "^1.0.8" | |||
| tslib "^2.3.1" | |||
| "@mui/base@^5.0.0-alpha.87", "@mui/base@^5.0.0-beta.20", "@mui/base@5.0.0-beta.20": | |||
| "@mui/base@^5.0.0-alpha.87", "@mui/[email protected]": | |||
| version "5.0.0-beta.20" | |||
| resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.20.tgz" | |||
| integrity sha512-CS2pUuqxST7ch9VNDCklRYDbJ3rru20Tx7na92QvVVKfu3RL4z/QLuVIc8jYGsdCnauMaeUSlFNLAJNb0yXe6w== | |||
| @@ -2040,6 +2040,19 @@ | |||
| clsx "^2.0.0" | |||
| prop-types "^15.8.1" | |||
| "@mui/base@^5.0.0-beta.22": | |||
| version "5.0.0-beta.40" | |||
| resolved "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.40.tgz" | |||
| integrity sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ== | |||
| dependencies: | |||
| "@babel/runtime" "^7.23.9" | |||
| "@floating-ui/react-dom" "^2.0.8" | |||
| "@mui/types" "^7.2.14" | |||
| "@mui/utils" "^5.15.14" | |||
| "@popperjs/core" "^2.11.8" | |||
| clsx "^2.1.0" | |||
| prop-types "^15.8.1" | |||
| "@mui/core-downloads-tracker@^5.14.14": | |||
| version "5.14.14" | |||
| resolved "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.14.tgz" | |||
| @@ -2145,7 +2158,7 @@ | |||
| resolved "https://registry.npmjs.org/@mui/types/-/types-7.2.14.tgz" | |||
| integrity sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ== | |||
| "@mui/utils@^5.14.13", "@mui/utils@^5.14.14", "@mui/utils@^5.14.3", "@mui/utils@^5.15.14": | |||
| "@mui/utils@^5.14.13", "@mui/utils@^5.14.14", "@mui/utils@^5.14.16", "@mui/utils@^5.14.3", "@mui/utils@^5.15.14": | |||
| version "5.15.14" | |||
| resolved "https://registry.npmjs.org/@mui/utils/-/utils-5.15.14.tgz" | |||
| integrity sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA== | |||
| @@ -2166,15 +2179,15 @@ | |||
| prop-types "^15.8.1" | |||
| reselect "^4.1.8" | |||
| "@mui/x-date-pickers@^6.11.0": | |||
| version "6.16.3" | |||
| resolved "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.16.3.tgz" | |||
| integrity sha512-CBwXrOJ5blqkAdF0d1dWF1RMeCS6ZYDq+53Yf/r+Izqj33+SCw+wAbdrxuIxE2GL3JY5NszEx8JFnCKZIzFZuA== | |||
| "@mui/x-date-pickers@^6.18.0": | |||
| version "6.19.9" | |||
| resolved "https://registry.npmjs.org/@mui/x-date-pickers/-/x-date-pickers-6.19.9.tgz" | |||
| integrity sha512-B2m4Fv/fOme5qmV6zuE3QnWQSvj3zKtI2OvikPz5prpiCcIxqpeytkQ7VfrWH3/Aqd5yhG1Yr4IgbqG0ymIXGg== | |||
| dependencies: | |||
| "@babel/runtime" "^7.23.2" | |||
| "@mui/base" "^5.0.0-beta.20" | |||
| "@mui/utils" "^5.14.14" | |||
| "@types/react-transition-group" "^4.4.7" | |||
| "@mui/base" "^5.0.0-beta.22" | |||
| "@mui/utils" "^5.14.16" | |||
| "@types/react-transition-group" "^4.4.8" | |||
| clsx "^2.0.0" | |||
| prop-types "^15.8.1" | |||
| react-transition-group "^4.4.5" | |||
| @@ -2737,7 +2750,7 @@ | |||
| dependencies: | |||
| "@types/react" "*" | |||
| "@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.6", "@types/react-transition-group@^4.4.7": | |||
| "@types/react-transition-group@^4.2.0", "@types/react-transition-group@^4.4.6", "@types/react-transition-group@^4.4.7", "@types/react-transition-group@^4.4.8": | |||
| version "4.4.8" | |||
| resolved "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.8.tgz" | |||
| integrity sha512-QmQ22q+Pb+HQSn04NL3HtrqHwYMf4h3QKArOy5F8U5nEVMaihBs3SR10WiOM1iwPz5jIo8x/u11al+iEGZZrvg== | |||
| @@ -4464,10 +4477,10 @@ data-urls@^2.0.0: | |||
| whatwg-mimetype "^2.3.0" | |||
| whatwg-url "^8.0.0" | |||
| date-fns@^2.25.0, date-fns@^3.0.6: | |||
| version "3.0.6" | |||
| resolved "https://registry.npmjs.org/date-fns/-/date-fns-3.0.6.tgz" | |||
| integrity sha512-W+G99rycpKMMF2/YD064b2lE7jJGUe+EjOES7Q8BIGY8sbNdbgcs9XFTZwvzc9Jx1f3k7LB7gZaZa7f8Agzljg== | |||
| "date-fns@^2.25.0 || ^3.2.0", date-fns@^3.0.6: | |||
| version "3.6.0" | |||
| resolved "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz" | |||
| integrity sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww== | |||
| dayjs@^1.10.7, dayjs@^1.11.9: | |||
| version "1.11.10" | |||