diff --git a/src/components/AssetsLibrary/FilesGridView.jsx b/src/components/AssetsLibrary/FilesGridView.jsx index 1ab6924a4..57be21ee5 100644 --- a/src/components/AssetsLibrary/FilesGridView.jsx +++ b/src/components/AssetsLibrary/FilesGridView.jsx @@ -11,6 +11,7 @@ import EditFileAttachment from '../LinksMenu/EditFileAttachment' import SubFolder from './SubFolder' import ItemOperations from './ItemOperations' import UserTooltip from '../User/UserTooltip' +import FileIcon from '../../components/FileIcon' import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg' @@ -163,16 +164,10 @@ const FilesGridView = ({ /> ) } else { - let iconPath - try { - iconPath = require('../../assets/icons/' + link.title.split('.')[1] +'.svg') - } catch(err) { - iconPath = require('../../assets/icons/default.svg') - } return (
  • - +

    {renderLink(link)}

    diff --git a/src/components/AssetsLibrary/SubFolder.jsx b/src/components/AssetsLibrary/SubFolder.jsx index 0b0576b91..169e0c056 100644 --- a/src/components/AssetsLibrary/SubFolder.jsx +++ b/src/components/AssetsLibrary/SubFolder.jsx @@ -7,6 +7,7 @@ import DeleteFileLinkModal from '../LinksMenu/DeleteFileLinkModal' import ItemOperations from './ItemOperations' import UserTooltip from '../User/UserTooltip' import FolderIcon from '../../assets/icons/v.2.5/icon-folder-small.svg' +import FileIcon from '../../components/FileIcon' import './GridView.scss' class SubFolder extends React.Component { @@ -92,19 +93,17 @@ class SubFolder extends React.Component {
  • ) } - let iconPath - try { - if (isLinkSubFolder) { - //Link Icon here - iconPath = require('../../assets/icons/link-12.svg') - } else { - iconPath = require('../../assets/icons/' + childLink.title.split('.')[1] +'.svg') - } - } catch(err) { - iconPath = require('../../assets/icons/default.svg') + let iconKey + if (isLinkSubFolder) { + // Key Icon here + iconKey = 'link-12' + } else { + iconKey = childLink.title.split('.')[1] } return (
  • -
    +
    + +

    {renderLink(childLink)}

    {!owner && childLink.createdBy !== 'CoderBot' && (
    Unknown
    )} diff --git a/src/components/FileIcon.jsx b/src/components/FileIcon.jsx new file mode 100644 index 000000000..6f3829f01 --- /dev/null +++ b/src/components/FileIcon.jsx @@ -0,0 +1,230 @@ +/** + * FileIcon component + * + * Renders file icon depend on the file type + */ +import React from 'react' +import PT from 'prop-types' + +import IconDefault from '../assets/icons/default.svg' +import IconAac from '../assets/icons/aac.svg' +import IconAi from '../assets/icons/ai.svg' +import IconAse from '../assets/icons/ase.svg' +import IconAsp from '../assets/icons/asp.svg' +import IconAspx from '../assets/icons/aspx.svg' +import IconAvi from '../assets/icons/avi.svg' +import IconBmp from '../assets/icons/bmp.svg' +import IconCpp from '../assets/icons/c++.svg' +import IconCad from '../assets/icons/cad.svg' +import IconCfm from '../assets/icons/cfm.svg' +import IconCgi from '../assets/icons/cgi.svg' +import IconCsh from '../assets/icons/csh.svg' +import IconCss from '../assets/icons/css.svg' +import IconCsv from '../assets/icons/csv.svg' +import IconDmg from '../assets/icons/dmg.svg' +import IconDoc from '../assets/icons/doc.svg' +import IconDocx from '../assets/icons/docx.svg' +import IconEps from '../assets/icons/eps.svg' +import IconEpub from '../assets/icons/epub.svg' +import IconExe from '../assets/icons/exe.svg' +import IconFlash from '../assets/icons/flash.svg' +import IconFlv from '../assets/icons/flv.svg' +import IconFont from '../assets/icons/font.svg' +import IconGif from '../assets/icons/gif.svg' +import IconGpx from '../assets/icons/gpx.svg' +import IconGzip from '../assets/icons/gzip.svg' +import IconHtml from '../assets/icons/html.svg' +import IconIcs from '../assets/icons/ics.svg' +import IconIso from '../assets/icons/iso.svg' +import IconJar from '../assets/icons/jar.svg' +import IconJava from '../assets/icons/java.svg' +import IconJpg from '../assets/icons/jpg.svg' +import IconJs from '../assets/icons/js.svg' +import IconJsp from '../assets/icons/jsp.svg' +import IconLog from '../assets/icons/log.svg' +import IconMax from '../assets/icons/max.svg' +import IconMd from '../assets/icons/md.svg' +import IconMkv from '../assets/icons/mkv.svg' +import IconMov from '../assets/icons/mov.svg' +import IconMp3 from '../assets/icons/mp3.svg' +import IconMp4 from '../assets/icons/mp4.svg' +import IconMpg from '../assets/icons/mpg.svg' +import IconObj from '../assets/icons/obj.svg' +import IconOtf from '../assets/icons/otf.svg' +import IconPdf from '../assets/icons/pdf.svg' +import IconPhp from '../assets/icons/php.svg' +import IconPng from '../assets/icons/png.svg' +import IconPptx from '../assets/icons/pptx.svg' +import IconPsd from '../assets/icons/psd.svg' +import IconPy from '../assets/icons/py.svg' +import IconRar from '../assets/icons/rar.svg' +import IconRaw from '../assets/icons/raw.svg' +import IconRb from '../assets/icons/rb.svg' +import IconRss from '../assets/icons/rss.svg' +import IconRtf from '../assets/icons/rtf.svg' +import IconSketch from '../assets/icons/sketch.svg' +import IconSql from '../assets/icons/sql.svg' +import IconSrt from '../assets/icons/srt.svg' +import IconSvg from '../assets/icons/svg.svg' +import IconTif from '../assets/icons/tif.svg' +import IconTiff from '../assets/icons/tiff.svg' +import IconTtf from '../assets/icons/ttf.svg' +import IconTxt from '../assets/icons/txt.svg' +import IconWav from '../assets/icons/wav.svg' +import IconXml from '../assets/icons/xml.svg' +import IconZip from '../assets/icons/zip.svg' +import IconLink12 from '../assets/icons/link-12.svg' + +const FileIcon = ({ type }) => { + // if type is defined as a relative path to the icon, convert it to icon "id" + const typeAsPath = type && type.match(/(?:\.\.\/)+assets\/icons\/([^.]+)\.svg/) + if (typeAsPath) { + type = typeAsPath[1] + } + + switch(type){ + case 'aac': + return + case 'ai': + return + case 'ase': + return + case 'asp': + return + case 'aspx': + return + case 'avi': + return + case 'bmp': + return + case 'c++': + return + case 'cad': + return + case 'cfm': + return + case 'cgi': + return + case 'csh': + return + case 'css': + return + case 'csv': + return + case 'dmg': + return + case 'doc': + return + case 'docx': + return + case 'eps': + return + case 'epub': + return + case 'exe': + return + case 'flash': + return + case 'flv': + return + case 'font': + return + case 'gif': + return + case 'gpx': + return + case 'gzip': + return + case 'html': + return + case 'ics': + return + case 'iso': + return + case 'jar': + return + case 'java': + return + case 'jpg': + return + case 'js': + return + case 'jsp': + return + case 'log': + return + case 'max': + return + case 'md': + return + case 'mkv': + return + case 'mov': + return + case 'mp3': + return + case 'mp4': + return + case 'mpg': + return + case 'obj': + return + case 'otf': + return + case 'pdf': + return + case 'php': + return + case 'png': + return + case 'pptx': + return + case 'psd': + return + case 'py': + return + case 'rar': + return + case 'raw': + return + case 'rb': + return + case 'rss': + return + case 'rtf': + return + case 'sketch': + return + case 'sql': + return + case 'srt': + return + case 'svg': + return + case 'tif': + return + case 'tiff': + return + case 'ttf': + return + case 'txt': + return + case 'wav': + return + case 'xml': + return + case 'zip': + return + case 'link-12': + return + default: + // this will be default icon + return + } +} + +FileIcon.propTypes = { + type: PT.string, +} + +export default FileIcon diff --git a/src/components/MobilePage/MobilePage.scss b/src/components/MobilePage/MobilePage.scss index 061c1af80..58ef96d16 100644 --- a/src/components/MobilePage/MobilePage.scss +++ b/src/components/MobilePage/MobilePage.scss @@ -11,14 +11,6 @@ overflow: hidden; overflow-y: scroll; } - - .mobile-page-gateway { - z-index: 10000; - position: absolute; - top: 0; - left: 0; - width: 100%; - } } .container { @@ -29,7 +21,7 @@ position: absolute; right: 0; top: 0; - z-index: 1000; + z-index: 2000; &.keep-toolbar { padding-top: 60px; diff --git a/src/config/projectWizard/index.js b/src/config/projectWizard/index.js index c9ed01533..50841339d 100644 --- a/src/config/projectWizard/index.js +++ b/src/config/projectWizard/index.js @@ -590,7 +590,7 @@ export function getProductEstimate(projectTemplate, projectData) { _.forOwn(preparedConditions, (cond, placeholder) => { preparedConditions[placeholder] = evaluate(cond, flatProjectData) === true ? '1 == 1' : '1 == 2' }) - const baseBlocks = getFilteredBuildingBlocks(priceConfig, buildingBlocks, preparedConditions, flatProjectData) + const baseBlocks = getFilteredBuildingBlocks(priceConfig, buildingBlocks, preparedConditions, flatProjectData, true) const addonBlocks = getFilteredBuildingBlocks(addonPriceConfig, buildingBlocks, preparedConditions, flatProjectData, true) // for each addon block, check if user has specified quantity for the selected addons addonBlocks.forEach((addonBlock) => { diff --git a/src/projects/actions/projectMember.js b/src/projects/actions/projectMember.js index 61a1087cc..ebcdd28ea 100644 --- a/src/projects/actions/projectMember.js +++ b/src/projects/actions/projectMember.js @@ -90,7 +90,9 @@ export function removeProjectMember(projectId, memberId, isUserLeaving) { function inviteMembersWithData(dispatch, projectId, emailIds, handles, role) { return new Promise((resolve, reject) => { - return dispatch(loadMembersByHandle(handles)) + // remove `@` from handles before making a request to the server as server may not support format with `@` + const clearedHandles = handles ? handles.map(handle => handle.replace(/^@/, '')) : [] + return dispatch(loadMembersByHandle(clearedHandles)) .then(({ value }) => { const req = {} if(value && value.length > 0) {