diff --git a/actions/index.js b/actions/index.js index 43c39593..5d5af174 100644 --- a/actions/index.js +++ b/actions/index.js @@ -947,6 +947,7 @@ export const createNewCaseBlob = ( var data = createBody; data.pinswg_lpaname = lpaName; + data.createdon = new Date(); var queryUrl = "/api/file/createcase_api?appealTypeId=" + diff --git a/components/account/personaldetails.js b/components/account/personaldetails.js index 85fd9da6..e776ac70 100644 --- a/components/account/personaldetails.js +++ b/components/account/personaldetails.js @@ -112,6 +112,17 @@ let PersonalDetails = (props) => { About you +
+ + Role:{" "} + { + props.props.accountDetails + .accountDetails[ + "pinswg_typeofinvolvement@OData.Community.Display.V1.FormattedValue" + ] + } + +
{ @@ -354,7 +356,20 @@ const Breadcrumbs = (props) => {
  • - {currentView.viewName} + {currentView.viewKey == + "awaitingSubmissionDetails" && + t( + "myportal:awatitingsubmission-card-title" + )} + {currentView.viewKey == "watchedCases" && + t("myportal:watchedcases-card-title")} + {currentView.viewKey == "myCases" && + t("myportal:mycases-card-title")} + {currentView.viewKey == + "myRepresentations" && + t( + "myportal:myrepresentations-card-title" + )}
  • ) : ( diff --git a/components/case/summary.js b/components/case/summary.js index a1ec4d86..e31cb51c 100644 --- a/components/case/summary.js +++ b/components/case/summary.js @@ -707,7 +707,7 @@ const CaseSummary = (props) => { } const { data: session, status } = useSession(); - console.log("session status:", status, session); + //console.log("session status:", status, session); return ( <> {showDetailsBlock} diff --git a/components/myportal.js b/components/myportal.js index 1703c185..907ff43b 100644 --- a/components/myportal.js +++ b/components/myportal.js @@ -66,6 +66,12 @@ const MyPortal = (props) => { props.accountDetails.accountDetails .lastname } + {" - "} + { + props.accountDetails.accountDetails[ + "pinswg_typeofinvolvement@OData.Community.Display.V1.FormattedValue" + ] + } diff --git a/components/myportal/awaitingsubmissionfromblob.js b/components/myportal/awaitingsubmissionfromblob.js index cdd48f31..13fab0f4 100644 --- a/components/myportal/awaitingsubmissionfromblob.js +++ b/components/myportal/awaitingsubmissionfromblob.js @@ -43,12 +43,11 @@ const AwaitingSubmissionFromBlob = (props) => { }); }; - let topThreeOnlyArr = showTopThreeArr; - console.log(showTopThreeArr); + let topThreeOnlyArr = showTopThreeArr.slice(0, 3); + //console.log(showTopThreeArr); Object.keys(topThreeOnlyArr).map((key, index) => { - console.log(key, showTopThreeArr[key].pinswg_appealcasetype); - - console.log("subsssss:", showTopThreeArr[key]); + //console.log(key, showTopThreeArr[key].pinswg_appealcasetype); + //console.log("subsssss:", showTopThreeArr[key]); let urlname = getFormCollectionByID( showTopThreeArr[key].pinswg_appealcasetype ).UrlName; @@ -103,7 +102,7 @@ const AwaitingSubmissionFromBlob = (props) => {
    - Appeal type:{" "} + {t("myportal:appeal-type-label")}:{" "} { getFormCollectionByID( showTopThreeArr[key].pinswg_appealcasetype @@ -141,7 +140,9 @@ const AwaitingSubmissionFromBlob = (props) => { {showTopThreeArrDets[key].pinswg_appellantagent != null && (
    {showTopThreeArrDets[key].pinswg_appellantagent != - 846040000 && Raised by: } + 846040000 && ( + {t("myportal:raised-by-label")}: + )} {showTopThreeArrDets[key].pinswg_appellantagent != 846040000 && (showTopThreeArrDets[key] @@ -158,7 +159,7 @@ const AwaitingSubmissionFromBlob = (props) => { {showTopThreeArrDets[key].pinswg_appellantfirstname != null && (
    - On behalf of: + {t("myportal:on-behalf-of-label")}: {showTopThreeArrDets[key] .pinswg_appellantfirstname + " " + @@ -220,7 +221,7 @@ const AwaitingSubmissionFromBlob = (props) => { onClick={() => { setCurrentView({ "viewName": "Awaiting Submission", - "viewKey": "awaitingSubmission", + "viewKey": "awaitingSubmissionDetails", }); }} > diff --git a/components/myportal/topthree.js b/components/myportal/topthree.js index ad5efc92..7a103719 100644 --- a/components/myportal/topthree.js +++ b/components/myportal/topthree.js @@ -213,7 +213,7 @@ const TopThree = (props) => { {/* {(topThreeType == "awaitingSubmission" || topThreeType == "watchedCases") && ( */}
    - Appeal type:{" "} + {t("myportal:appeal-type-label")}:{" "} { showTopThreeArr[key][ "pinswg_appealcasetype@OData.Community.Display.V1.FormattedValue" @@ -258,7 +258,9 @@ const TopThree = (props) => { {showTopThreeArr[key].pinswg_appellantagent != null && (
    {showTopThreeArr[key].pinswg_appellantagent != - 846040000 && Raised by: } + 846040000 && ( + {t("myportal:raised-by-label")} + )} {showTopThreeArr[key].pinswg_appellantagent != 846040000 && (showTopThreeArr[key].pinswg_agentcompanyname != @@ -272,7 +274,7 @@ const TopThree = (props) => { )} {showTopThreeArr[key].pinswg_appellantfirstname != null && (
    - On behalf of: + {t("myportal:on-behalf-of-label")}: {showTopThreeArr[key].pinswg_appellantfirstname + " " + showTopThreeArr[key].pinswg_appellantlastname} diff --git a/components/myportal/viewall.js b/components/myportal/viewall.js index a59bf55f..078d73f5 100644 --- a/components/myportal/viewall.js +++ b/components/myportal/viewall.js @@ -21,9 +21,10 @@ const ViewAllResults = (props) => { const router = useRouter(); const { locale } = router; - var resultsArr = props[currentView.viewKey][currentView.viewKey].value || [ - {}, - ]; + var resultsArr = + currentView.viewKey == "awaitingSubmissionDetails" + ? props["awaitingSubmission"].awaitingSubmissionDetails.case + : props[currentView.viewKey][currentView.viewKey].value || []; function formatDates(dateObj) { var dateObj = new Date(dateObj); @@ -34,14 +35,17 @@ const ViewAllResults = (props) => { return dd + "/" + mm + "/" + yyyy; } - console.log( - currentView.viewKey, - props[currentView.viewKey], - props[currentView.viewKey][currentView.viewKey].value - ); + // console.log( + // currentView.viewKey, + // props[currentView.viewKey], + // props[currentView.viewKey][currentView.viewKey].value + // ); var searchDetailsObj = - props[currentView.viewKey][currentView.viewKey + "Details"] || {}; + currentView.viewKey == "awaitingSubmissionDetails" + ? props["awaitingSubmission"].awaitingSubmissionDetails.value + : props[currentView.viewKey][currentView.viewKey + "Details"] || []; + let resultsRowArr = []; resultsArr.map((item, key) => { let detailsObj = jsonpath.query( @@ -55,7 +59,7 @@ const ViewAllResults = (props) => {
    { "&apt=" + resultsArr[key].pinswg_appealcasetype + "&casereference=" + - resultsArr[key].pinswg_title + + resultsArr[key].title + "&inid=" + resultsArr[key].incidentid : router.locale == "cy" @@ -135,45 +139,103 @@ const ViewAllResults = (props) => { )[0] : "" : ""} */} + + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has(searchDetailsObj[key], "pinswg_siteaddressline1") + ? searchDetailsObj[key].pinswg_siteaddressline1 + : ""} + {_.has(detailsObj, "pinswg_siteaddressline1") ? detailsObj.pinswg_siteaddressline1 : ""} - {/* {detailsObj.pinswg_siteaddressline1 != - null &&
    } */} + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has( + searchDetailsObj[key], + "pinswg_siteaddressline1" + ) && + searchDetailsObj[key].pinswg_siteaddressline1 != + null &&
    } {_.has(detailsObj, "pinswg_siteaddressline1") && detailsObj.pinswg_siteaddressline1 != null &&
    } + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has(searchDetailsObj[key], "pinswg_siteaddressline1") + ? searchDetailsObj[key].pinswg_siteaddressline2 + : ""} + {_.has(detailsObj, "pinswg_siteaddressline1") ? detailsObj.pinswg_siteaddressline2 : ""} + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has( + searchDetailsObj[key], + "pinswg_siteaddressline2" + ) && + searchDetailsObj[key].pinswg_siteaddressline2 != + null &&
    } {_.has(detailsObj, "pinswg_siteaddressline2") && detailsObj.pinswg_siteaddressline2 != null &&
    } + + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has(searchDetailsObj[key], "pinswg_siteaddresstown") + ? searchDetailsObj[key].pinswg_siteaddresstown + : ""} + {_.has(detailsObj, "pinswg_siteaddresstown") ? detailsObj.pinswg_siteaddresstown : ""} + + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has( + searchDetailsObj[key], + "pinswg_siteaddresstown" + ) && + searchDetailsObj[key].pinswg_siteaddresstown != + null &&
    } + {_.has(detailsObj, "pinswg_siteaddresstown") && detailsObj.pinswg_siteaddresstown != null &&
    } + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has(searchDetailsObj[key], "pinswg_siteaddresscounty") + ? searchDetailsObj[key].pinswg_siteaddresscounty + : ""} + {_.has(detailsObj, "pinswg_siteaddresscounty") ? detailsObj.pinswg_siteaddresscounty : ""} + + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has( + searchDetailsObj[key], + "pinswg_siteaddresscounty" + ) && + searchDetailsObj[key].pinswg_siteaddresscounty != + null &&
    } + {_.has(detailsObj, "pinswg_siteaddresscounty") && detailsObj.pinswg_siteaddresscounty != null &&
    } + + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has(searchDetailsObj[key], "pinswg_siteaddresspostcode") + ? searchDetailsObj[key].pinswg_siteaddresspostcode + : ""} + {_.has(detailsObj, "pinswg_siteaddresspostcode") ? detailsObj.pinswg_siteaddresspostcode : ""}
    - {currentView.viewKey == "awaitingSubmission" - ? "Created on" + {currentView.viewKey == "awaitingSubmissionDetails" + ? t("search:searchresults-created-on-label") : t("search:searchresults-applicant-label")} - {currentView.viewKey == "awaitingSubmission" + {currentView.viewKey == "awaitingSubmissionDetails" ? formatDates(item.createdon) : _.has(detailsObj, [ "_pinswg_appellant_value@OData.Community.Display.V1.FormattedValue", @@ -189,19 +251,32 @@ const ViewAllResults = (props) => { {t("search:searchresults-authority-label")}: - {_.has(detailsObj, [ + + {currentView.viewKey == "awaitingSubmissionDetails" && + _.has(resultsArr[key], "pinswg_lpaname") + ? router.locale == "cy" + ? jsonpath.query( + transLookup, + '$..[?(@.value=="' + + resultsArr[key].pinswg_lpaname + + '")].value_cy' + ) + : resultsArr[key].pinswg_lpaname || "N/A" + : ""} + + {_.has(resultsArr[key], [ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue", ]) ? router.locale == "cy" ? jsonpath.query( transLookup, '$..[?(@.value=="' + - item[ + resultsArr[key][ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" ] + '")].value_cy' ) - : detailsObj[ + : resultsArr[key][ "_pinswg_associatedlpa_value@OData.Community.Display.V1.FormattedValue" ] || "N/A" : ""} @@ -210,7 +285,20 @@ const ViewAllResults = (props) => { {t("search:searchresults-case-type-label")}: - {router.locale == "cy" + + {currentView.viewKey == "awaitingSubmissionDetails" + ? router.locale == "cy" + ? jsonpath.query( + transLookup, + '$..[?(@.value=="' + + getFormCollectionByID( + item.pinswg_appealcasetype + ).value + + '")].value_cy' + ) + : getFormCollectionByID(item.pinswg_appealcasetype) + .value || "N/A" + : router.locale == "cy" ? jsonpath.query( transLookup, '$..[?(@.value=="' + @@ -227,7 +315,22 @@ const ViewAllResults = (props) => { {t("search:searchresults-status-label")}: - {router.locale == "cy" + + {currentView.viewKey == "awaitingSubmissionDetails" + ? router.locale == "cy" + ? jsonpath.query( + transLookup, + '$..[?(@.statuscode=="' + + item.statuscode + + '")].value_cy' + ) + : jsonpath.query( + transLookup, + '$..[?(@.statuscode=="' + + item.statuscode + + '")].value' + ) || "N/A" + : router.locale == "cy" ? jsonpath.query( transLookup, '$..[?(@.value=="' + @@ -249,7 +352,14 @@ const ViewAllResults = (props) => {

    - {currentView.viewName} + {currentView.viewKey == "awaitingSubmissionDetails" && + t("myportal:awatitingsubmission-card-title")} + {currentView.viewKey == "watchedCases" && + t("myportal:watchedcases-card-title")} + {currentView.viewKey == "myCases" && + t("myportal:mycases-card-title")} + {currentView.viewKey == "myRepresentations" && + t("myportal:myrepresentations-card-title")}

    @@ -260,9 +370,10 @@ const ViewAllResults = (props) => {
    {t("search:searchresults-site-address-label")}
    - {currentView.viewKey == "awaitingSubmission" ? ( + {currentView.viewKey == + "awaitingSubmissionDetails" ? (
    - Created on + {t("search:searchresults-created-on-label")}{" "}
    ) : (
    diff --git a/components/newappeal/buildsection.js b/components/newappeal/buildsection.js index d7ff67f8..e4f8ed73 100644 --- a/components/newappeal/buildsection.js +++ b/components/newappeal/buildsection.js @@ -25,6 +25,8 @@ let BuildSection = (props) => { const [currentSectionSelected, setCurrentSectionSelected] = useState(1); const [pickupWhereLeftOff, setPickupWhereLeftOff] = useState(true); + const [savingStatus, setSavingStatus] = useState(false); + useEffect(() => { progObj = getProgressObj( formXML, @@ -69,6 +71,7 @@ let BuildSection = (props) => { const documentListObj = props.appealType.documentList; const currentSection = props.appealType.currentSection; + const parser = new DOMParser(); var doc = parser.parseFromString(props.formXML, "text/xml"); var titles = xpath.select( @@ -97,6 +100,16 @@ let BuildSection = (props) => { props ); + const isProgressComplete = (progObj) => { + const progressCount = 0; + + for (let key in progObj) { + progObj[key].allFieldsComplete === true && progressCount++; + } + + return progObj.length == progressCount; + }; + const lastIndex = progObj .map((whichIsLast) => whichIsLast.allFieldsComplete == true) .lastIndexOf(true); @@ -134,10 +147,11 @@ let BuildSection = (props) => { }); }; - const updateCaseProgress = (values, sendSavedEmail) => { + const updateCaseProgress = (values, sendSavedEmail, useSaveStatus) => { let incidentId = props.appealType.caseReference.incidentid; let updateBody = values || {}; + setSavingStatus(useSaveStatus); uploadAppealFiles(values); props.setNewAppealProgress( getProgressObj(formXML, titleList, mandatoryFieldsData, props) @@ -206,6 +220,13 @@ let BuildSection = (props) => { props.appealType.caseReference.incidentid + "'> from here " ); + + useSaveStatus && + router.replace( + router.locale != "en" + ? router.locale + "/myportal" + : "/myportal" + ); }; const onHandleSubmit = (values) => { @@ -214,7 +235,7 @@ let BuildSection = (props) => { delete valuesObj["_pinswg_appellant_value"]; console.log("has errors:", props.invalid); - props.invalid == false && updateCaseProgress(valuesObj, false); + props.invalid == false && updateCaseProgress(valuesObj, false, false); setCurrentSection(currentSection + 1); }; @@ -330,7 +351,7 @@ let BuildSection = (props) => { delete valuesObj["_pinswg_appellant_value"]; //console.log("on save:", valuesObj); - updateCaseProgress(valuesObj, false); + updateCaseProgress(valuesObj, false, false); }} > {t("common:continue-button")} @@ -340,6 +361,7 @@ let BuildSection = (props) => { )} {props.sectionCount == currentSection ? ( + delete valuesObj["_pinswg_appellant_value"]; + + console.log("on save:", valuesObj); + updateCaseProgress(valuesObj, true, true); + }} + > + {t("common:save-exit-button")} + + )}
    diff --git a/components/search/searchresults.js b/components/search/searchresults.js index 3c80e59d..5d0f90d4 100644 --- a/components/search/searchresults.js +++ b/components/search/searchresults.js @@ -510,11 +510,11 @@ const SearchResults = (props) => { }} title="Stop watching this case" > - − + ) : ( { selectWatchedCase( cookies.pinsUser, @@ -528,7 +528,7 @@ const SearchResults = (props) => { }} title="Watch this case" > - + + )} @@ -536,7 +536,7 @@ const SearchResults = (props) => { {!session && (
    { signIn("email"); // selectWatchedCase( @@ -551,7 +551,7 @@ const SearchResults = (props) => { }} title="Watch this case" > - + +
    )} diff --git a/components/utils/index.js b/components/utils/index.js index fb314ce5..b6ccd460 100644 --- a/components/utils/index.js +++ b/components/utils/index.js @@ -218,7 +218,11 @@ export const getProgressObj = ( "title": titleList[key].value, rowCount, "totalFields": formObj[key].fieldsTotal, - "allFieldsComplete": rowCount == formObj[key].fieldsTotal, + "allFieldsComplete": + titleList[key].value == "Upload documents" + ? _.has(props.props.appealType.fileList, "files") && + props.props.appealType.fileList.files.length > 0 + : rowCount == formObj[key].fieldsTotal, }; }); diff --git a/i18n.js b/i18n.js index d90f7d71..ed1cfc49 100644 --- a/i18n.js +++ b/i18n.js @@ -13,7 +13,7 @@ module.exports = { "/": ["common", "home"], "/error": ["common", "home", "myportal"], "/myportal": ["myportal", "common", "home"], - "/myportal/viewall": ["search"], + "/myportal/viewall": ["search", "myportal"], "/myportal/advancedsearch": ["search", "myportal"], "/myportal/advancedsearchresults": ["search", "myportal"], "/myportal/searchresults": ["search", "myportal"], diff --git a/locales/cy/myportal.json b/locales/cy/myportal.json index 1d0d8912..d83271ee 100644 --- a/locales/cy/myportal.json +++ b/locales/cy/myportal.json @@ -30,5 +30,8 @@ "norecords-cases": "Nid oes gennych unrhyw achosion", "norecords-representations": "Nid oes gennych unrhyw sylwadau", "norecords-watched-cases": "Nid ydych yn gwylio unrhyw achosion", - "norecords-awaiting-submissions": "Nid oes gennych unrhyw gyflwyniadau sy'n aros" + "norecords-awaiting-submissions": "Nid oes gennych unrhyw gyflwyniadau sy'n aros", + "on-behalf-of-label": "Ar ran", + "appeal-type-label": "Math o apêl", + "raised-by-label": "Codwyd gan" } \ No newline at end of file diff --git a/locales/cy/search.json b/locales/cy/search.json index 68a9043c..6ffd9cfc 100644 --- a/locales/cy/search.json +++ b/locales/cy/search.json @@ -62,5 +62,6 @@ "searchresults-new-search-button-label": "Chwiliad newydd", "searchresults-no-records-label": "Nid oes unrhyw gofnodion", "searchresults-show-records-label-a": "Dangoswch", - "searchresults-show-records-label-b": "cofnod" + "searchresults-show-records-label-b": "cofnod", + "searchresults-created-on-label": "Creu ymlaen" } \ No newline at end of file diff --git a/locales/en/myportal.json b/locales/en/myportal.json index d621cd73..6ccc0ff5 100644 --- a/locales/en/myportal.json +++ b/locales/en/myportal.json @@ -30,5 +30,8 @@ "norecords-cases": "You have no cases", "norecords-representations": "You have no representations", "norecords-watched-cases": "You are not watching any cases", - "norecords-awaiting-submissions": "You have no awaiting submissions" + "norecords-awaiting-submissions": "You have no awaiting submissions", + "on-behalf-of-label": "On behalf of", + "appeal-type-label": "Appeal type", + "raised-by-label": "Raised by" } \ No newline at end of file diff --git a/locales/en/search.json b/locales/en/search.json index 8b8cf6b1..600d20ac 100644 --- a/locales/en/search.json +++ b/locales/en/search.json @@ -62,5 +62,6 @@ "searchresults-new-search-button-label": "New Search", "searchresults-no-records-label": "There are no records", "searchresults-show-records-label-a": "Show", - "searchresults-show-records-label-b": "records" + "searchresults-show-records-label-b": "records", + "searchresults-created-on-label": "Created on" } \ No newline at end of file diff --git a/pages/api/endpoint/getmycases_api.js b/pages/api/endpoint/getmycases_api.js index 7213d8f2..35212e7e 100644 --- a/pages/api/endpoint/getmycases_api.js +++ b/pages/api/endpoint/getmycases_api.js @@ -24,7 +24,7 @@ export default async function ApiProxy(req, res) { var queryUrl = "incidents?$select=description,numberofchildincidents,_accountid_value,_customerid_value,_pinswg_associatedlpa_value,_ownerid_value,pinswg_appealcasetype,statuscode,ticketnumber,title, _primarycontactid_value,pinswg_appellantlastname,pinswg_appellantfirstname,pinswg_appellantagent,pinswg_agentfirstname,pinswg_agentlastname,pinswg_agentcompanyname&$expand=primarycontactid($select=fullname)&$filter=_customerid_value eq " + loggedInUserId + - " and servicestage eq 0 and pinswg_appealcasetype ne null&$orderby=createdon desc&$count=true&$top=3"; + " and servicestage eq 0 and pinswg_appealcasetype ne null&$orderby=createdon desc&$count=true"; //console.log("///////////\nPortal query: ", queryUrl, "<<< 0 diff --git a/pages/api/endpoint/getsearchdocumentdetailspaged_api.js b/pages/api/endpoint/getsearchdocumentdetailspaged_api.js index bd221ffd..6b3e4de2 100644 --- a/pages/api/endpoint/getsearchdocumentdetailspaged_api.js +++ b/pages/api/endpoint/getsearchdocumentdetailspaged_api.js @@ -44,7 +44,7 @@ export default async function ApiProxy(req, res) { var showNumberOfRecords = req.query.showNumberOfRecords; var documentType = req.query.documentType || "all"; - console.log("has this passed docuemntType:", documentType); + //console.log("has this passed docuemntType:", documentType); //(documentType !="all" && " pinswg_pinswg_isharedocumentlocations eq " + ) var queryUrl = diff --git a/pages/index.js b/pages/index.js index 59e451cc..69d0d051 100644 --- a/pages/index.js +++ b/pages/index.js @@ -56,7 +56,7 @@ const Home = (props) => { //console.log("has LoginCode", hasLoginCode); hasLoginCode == false - ? console.log("no session") + ? "" //console.log("no session") : _.has(loggedInUserId, "value") ? _.isEmpty(loggedInUserId.value) ? router.replace({ diff --git a/styles/sass/welshgov/_application.scss b/styles/sass/welshgov/_application.scss index e5cc4e6d..00e3f39c 100644 --- a/styles/sass/welshgov/_application.scss +++ b/styles/sass/welshgov/_application.scss @@ -1048,6 +1048,20 @@ textarea, } } + +.progress-save-active { + padding: 0px 10px 15px !important; + font-size: 16px; + float: right; + + color: $midgrey !important; + + + +} + + + .results .govuk-summary-list__row { @media screen and (max-width: 900px) { padding: 20px 10px; @@ -2012,6 +2026,49 @@ ul#sharePageLinks.active { &.watched_link { color: $black !important; background-color: $white; + width: 13px; + display: block; + + .eye { + background-color: #aa1111; + } + + .eye:before { + background: #fff; + + } + } + + + &.watchLink { + width: 13px; + display: block; + } + + .eye { + /* margin: 90px; */ + width: 13px; + height: 13px; + /* border: solid 1px #000; */ + border-radius: 75% 15%; + position: relative; + transform: rotate(45deg); + display: block; + top: 3.5px; + background-color: white; + } + + .eye:before { + content: ''; + display: block; + position: absolute; + width: 5px; + height: 5px; + border: solid 1px #aa1111; + border-radius: 50%; + left: 3px; + top: 3px; + background-color: #aa1111; } }