* Extract BoxedGroupAccordion * Extract Select and SearchSelect * Extract Validation controls * Update sonar-ui-commontags/8.0
"react": "16.8.6", | "react": "16.8.6", | ||||
"react-dom": "16.8.6", | "react-dom": "16.8.6", | ||||
"regenerator-runtime": "0.13.2", | "regenerator-runtime": "0.13.2", | ||||
"sonar-ui-common": "0.0.10", | |||||
"sonar-ui-common": "0.0.13", | |||||
"whatwg-fetch": "2.0.4" | "whatwg-fetch": "2.0.4" | ||||
}, | }, | ||||
"devDependencies": { | "devDependencies": { |
dependencies: | dependencies: | ||||
"@types/react" "*" | "@types/react" "*" | ||||
"@types/react-select@1.2.6": | |||||
version "1.2.6" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/react-select/-/react-select-1.2.6.tgz#8a9579705e04b2c15ce529379402980d80e9d243" | |||||
integrity sha1-ipV5cF4EssFc5Sk3lAKYDYDp0kM= | |||||
dependencies: | |||||
"@types/react" "*" | |||||
"@types/react@*", "@types/react@16.8.23": | "@types/react@*", "@types/react@16.8.23": | ||||
version "16.8.23" | version "16.8.23" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/react/-/react-16.8.23.tgz#ec6be3ceed6353a20948169b6cb4c97b65b97ad2" | resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/react/-/react-16.8.23.tgz#ec6be3ceed6353a20948169b6cb4c97b65b97ad2" | ||||
isobject "^3.0.0" | isobject "^3.0.0" | ||||
static-extend "^0.1.1" | static-extend "^0.1.1" | ||||
classnames@2.2.6, classnames@^2.2.3, classnames@^2.2.5: | |||||
classnames@2.2.6, classnames@^2.2.3, classnames@^2.2.4, classnames@^2.2.5: | |||||
version "2.2.6" | version "2.2.6" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" | resolved "https://repox.jfrog.io/repox/api/npm/npm/classnames/-/classnames-2.2.6.tgz#43935bffdd291f326dad0a205309b38d00f650ce" | ||||
integrity sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4= | integrity sha1-Q5Nb/90pHzJtrQogUwmzjQD2UM4= | ||||
loose-envify "^1.3.1" | loose-envify "^1.3.1" | ||||
object-assign "^4.1.1" | object-assign "^4.1.1" | ||||
create-react-context@^0.2.2: | |||||
version "0.2.3" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/create-react-context/-/create-react-context-0.2.3.tgz#9ec140a6914a22ef04b8b09b7771de89567cb6f3" | |||||
integrity sha1-nsFAppFKIu8EuLCbd3HeiVZ8tvM= | |||||
dependencies: | |||||
fbjs "^0.8.0" | |||||
gud "^1.0.0" | |||||
cross-spawn@5.1.0: | cross-spawn@5.1.0: | ||||
version "5.1.0" | version "5.1.0" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" | resolved "https://repox.jfrog.io/repox/api/npm/npm/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" | resolved "https://repox.jfrog.io/repox/api/npm/npm/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" | ||||
integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= | integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= | ||||
deepmerge@^2.1.1: | |||||
version "2.2.1" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/deepmerge/-/deepmerge-2.2.1.tgz#5d3ff22a01c00f645405a2fbc17d0778a1801170" | |||||
integrity sha1-XT/yKgHAD2RUBaL7wX0HeKGAEXA= | |||||
default-gateway@^4.2.0: | default-gateway@^4.2.0: | ||||
version "4.2.0" | version "4.2.0" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" | resolved "https://repox.jfrog.io/repox/api/npm/npm/default-gateway/-/default-gateway-4.2.0.tgz#167104c7500c2115f6dd69b0a536bb8ed720552b" | ||||
dependencies: | dependencies: | ||||
bser "^2.0.0" | bser "^2.0.0" | ||||
fbjs@^0.8.9: | |||||
fbjs@^0.8.0, fbjs@^0.8.9: | |||||
version "0.8.17" | version "0.8.17" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" | resolved "https://repox.jfrog.io/repox/api/npm/npm/fbjs/-/fbjs-0.8.17.tgz#c4d598ead6949112653d6588b01a5cdcd9f90fdd" | ||||
integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= | integrity sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90= | ||||
combined-stream "^1.0.6" | combined-stream "^1.0.6" | ||||
mime-types "^2.1.12" | mime-types "^2.1.12" | ||||
formik@1.2.0: | |||||
version "1.2.0" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/formik/-/formik-1.2.0.tgz#a0daf8512ce2ec18d88ff59a5bb172b0167e85d1" | |||||
integrity sha1-oNr4USzi7BjYj/WaW7FysBZ+hdE= | |||||
dependencies: | |||||
create-react-context "^0.2.2" | |||||
deepmerge "^2.1.1" | |||||
hoist-non-react-statics "^2.5.5" | |||||
lodash.clonedeep "^4.5.0" | |||||
lodash.topath "4.5.2" | |||||
prop-types "^15.6.1" | |||||
react-fast-compare "^1.0.0" | |||||
tslib "^1.9.3" | |||||
warning "^3.0.0" | |||||
forwarded@~0.1.2: | forwarded@~0.1.2: | ||||
version "0.1.2" | version "0.1.2" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" | resolved "https://repox.jfrog.io/repox/api/npm/npm/forwarded/-/forwarded-0.1.2.tgz#98c23dab1175657b8c0573e8ceccd91b0ff18c84" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" | resolved "https://repox.jfrog.io/repox/api/npm/npm/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" | ||||
integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= | integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= | ||||
gud@^1.0.0: | |||||
version "1.0.0" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/gud/-/gud-1.0.0.tgz#a489581b17e6a70beca9abe3ae57de7a499852c0" | |||||
integrity sha1-pIlYGxfmpwvsqavjrlfeekmYUsA= | |||||
gzip-size@3.0.0: | gzip-size@3.0.0: | ||||
version "3.0.0" | version "3.0.0" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" | resolved "https://repox.jfrog.io/repox/api/npm/npm/gzip-size/-/gzip-size-3.0.0.tgz#546188e9bdc337f673772f81660464b389dce520" | ||||
p-locate "^3.0.0" | p-locate "^3.0.0" | ||||
path-exists "^3.0.0" | path-exists "^3.0.0" | ||||
lodash.clonedeep@^4.5.0: | |||||
version "4.5.0" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" | |||||
integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= | |||||
lodash.escape@^4.0.1: | lodash.escape@^4.0.1: | ||||
version "4.0.1" | version "4.0.1" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" | resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.escape/-/lodash.escape-4.0.1.tgz#c9044690c21e04294beaa517712fded1fa88de98" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" | resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" | ||||
integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= | integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= | ||||
lodash.topath@4.5.2: | |||||
version "4.5.2" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.topath/-/lodash.topath-4.5.2.tgz#3616351f3bba61994a0931989660bd03254fd009" | |||||
integrity sha1-NhY1Hzu6YZlKCTGYlmC9AyVP0Ak= | |||||
lodash.unescape@4.0.1: | lodash.unescape@4.0.1: | ||||
version "4.0.1" | version "4.0.1" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" | resolved "https://repox.jfrog.io/repox/api/npm/npm/lodash.unescape/-/lodash.unescape-4.0.1.tgz#bf2249886ce514cda112fae9218cdc065211fc9c" | ||||
object.assign "^4.1.0" | object.assign "^4.1.0" | ||||
reflect.ownkeys "^0.2.0" | reflect.ownkeys "^0.2.0" | ||||
prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.6.0, prop-types@^15.6.2, prop-types@^15.7.2: | |||||
prop-types@^15.5.10, prop-types@^15.5.6, prop-types@^15.5.8, prop-types@^15.6.0, prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2: | |||||
version "15.7.2" | version "15.7.2" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" | resolved "https://repox.jfrog.io/repox/api/npm/npm/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" | ||||
integrity sha1-UsQedbjIfnK52TYOAga5ncv/psU= | integrity sha1-UsQedbjIfnK52TYOAga5ncv/psU= | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/react-error-overlay/-/react-error-overlay-4.0.1.tgz#417addb0814a90f3a7082eacba7cee588d00da89" | resolved "https://repox.jfrog.io/repox/api/npm/npm/react-error-overlay/-/react-error-overlay-4.0.1.tgz#417addb0814a90f3a7082eacba7cee588d00da89" | ||||
integrity sha1-QXrdsIFKkPOnCC6sunzuWI0A2ok= | integrity sha1-QXrdsIFKkPOnCC6sunzuWI0A2ok= | ||||
react-fast-compare@^1.0.0: | |||||
version "1.0.0" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/react-fast-compare/-/react-fast-compare-1.0.0.tgz#813a039155e49b43ceffe99528fe5e9d97a6c938" | |||||
integrity sha1-gToDkVXkm0PO/+mVKP5enZemyTg= | |||||
react-input-autosize@^2.1.2: | |||||
version "2.2.1" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/react-input-autosize/-/react-input-autosize-2.2.1.tgz#ec428fa15b1592994fb5f9aa15bb1eb6baf420f8" | |||||
integrity sha1-7EKPoVsVkplPtfmqFbsetrr0IPg= | |||||
dependencies: | |||||
prop-types "^15.5.8" | |||||
react-intl@2.8.0: | react-intl@2.8.0: | ||||
version "2.8.0" | version "2.8.0" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/react-intl/-/react-intl-2.8.0.tgz#20b0c1f01d1292427768aa8ec9e51ab7e36503ba" | resolved "https://repox.jfrog.io/repox/api/npm/npm/react-intl/-/react-intl-2.8.0.tgz#20b0c1f01d1292427768aa8ec9e51ab7e36503ba" | ||||
prop-types "^15.5.6" | prop-types "^15.5.6" | ||||
warning "^3.0.0" | warning "^3.0.0" | ||||
react-select@1.2.1: | |||||
version "1.2.1" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/react-select/-/react-select-1.2.1.tgz#a2fe58a569eb14dcaa6543816260b97e538120d1" | |||||
integrity sha1-ov5YpWnrFNyqZUOBYmC5flOBINE= | |||||
dependencies: | |||||
classnames "^2.2.4" | |||||
prop-types "^15.5.8" | |||||
react-input-autosize "^2.1.2" | |||||
react-test-renderer@16.8.5: | react-test-renderer@16.8.5: | ||||
version "16.8.5" | version "16.8.5" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/react-test-renderer/-/react-test-renderer-16.8.5.tgz#4cba7a8aad73f7e8a0bc4379a0fe21632886a563" | resolved "https://repox.jfrog.io/repox/api/npm/npm/react-test-renderer/-/react-test-renderer-16.8.5.tgz#4cba7a8aad73f7e8a0bc4379a0fe21632886a563" | ||||
faye-websocket "^0.10.0" | faye-websocket "^0.10.0" | ||||
uuid "^3.0.1" | uuid "^3.0.1" | ||||
sonar-ui-common@0.0.10: | |||||
version "0.0.10" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/sonar-ui-common/-/sonar-ui-common-0.0.10.tgz#c51643ff14232d7ef8669bb553a4c694bd2b7c0c" | |||||
integrity sha1-xRZD/xQjLX74Zpu1U6TGlL0rfAw= | |||||
sonar-ui-common@0.0.13: | |||||
version "0.0.13" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/sonar-ui-common/-/sonar-ui-common-0.0.13.tgz#b01255f32d7863e529117bfe715890edfcdb8c97" | |||||
integrity sha1-sBJV8y14Y+UpEXv+cViQ7fzbjJc= | |||||
dependencies: | dependencies: | ||||
"@types/react-select" "1.2.6" | |||||
classnames "2.2.6" | classnames "2.2.6" | ||||
clipboard "2.0.4" | clipboard "2.0.4" | ||||
d3-array "1.2.4" | d3-array "1.2.4" | ||||
d3-shape "1.2.2" | d3-shape "1.2.2" | ||||
d3-zoom "1.7.3" | d3-zoom "1.7.3" | ||||
date-fns "1.30.1" | date-fns "1.30.1" | ||||
formik "1.2.0" | |||||
history "3.3.0" | history "3.3.0" | ||||
lodash "4.17.11" | lodash "4.17.11" | ||||
react-draggable "3.2.1" | react-draggable "3.2.1" | ||||
react-intl "2.8.0" | react-intl "2.8.0" | ||||
react-modal "3.8.2" | react-modal "3.8.2" | ||||
react-router "3.2.1" | react-router "3.2.1" | ||||
react-select "1.2.1" | |||||
react-virtualized "9.21.0" | react-virtualized "9.21.0" | ||||
source-list-map@^2.0.0: | source-list-map@^2.0.0: | ||||
micromatch "^3.1.4" | micromatch "^3.1.4" | ||||
semver "^5.0.1" | semver "^5.0.1" | ||||
tslib@^1.9.0: | |||||
tslib@^1.9.0, tslib@^1.9.3: | |||||
version "1.10.0" | version "1.10.0" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" | resolved "https://repox.jfrog.io/repox/api/npm/npm/tslib/-/tslib-1.10.0.tgz#c3c19f95973fb0a62973fb09d90d961ee43e5c8a" | ||||
integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= | integrity sha1-w8GflZc/sKYpc/sJ2Q2WHuQ+XIo= |
"core-js": "3.0.0", | "core-js": "3.0.0", | ||||
"create-react-class": "15.6.3", | "create-react-class": "15.6.3", | ||||
"d3-array": "1.2.4", | "d3-array": "1.2.4", | ||||
"d3-hierarchy": "1.1.8", | |||||
"d3-scale": "2.1.2", | "d3-scale": "2.1.2", | ||||
"d3-selection": "1.4.0", | |||||
"d3-shape": "1.2.2", | |||||
"d3-zoom": "1.7.3", | |||||
"date-fns": "1.30.1", | "date-fns": "1.30.1", | ||||
"dompurify": "1.0.11", | "dompurify": "1.0.11", | ||||
"formik": "1.2.0", | |||||
"history": "3.3.0", | "history": "3.3.0", | ||||
"intl-relativeformat": "2.1.0", | "intl-relativeformat": "2.1.0", | ||||
"keymaster": "1.6.2", | "keymaster": "1.6.2", | ||||
"react-intl": "2.8.0", | "react-intl": "2.8.0", | ||||
"react-redux": "5.1.1", | "react-redux": "5.1.1", | ||||
"react-router": "3.2.1", | "react-router": "3.2.1", | ||||
"react-select": "1.2.1", | |||||
"react-virtualized": "9.21.0", | "react-virtualized": "9.21.0", | ||||
"redux": "4.0.1", | "redux": "4.0.1", | ||||
"redux-logger": "3.0.6", | "redux-logger": "3.0.6", | ||||
"regenerator-runtime": "0.13.2", | "regenerator-runtime": "0.13.2", | ||||
"remark-custom-blocks": "2.3.0", | "remark-custom-blocks": "2.3.0", | ||||
"remark-slug": "5.1.0", | "remark-slug": "5.1.0", | ||||
"sonar-ui-common": "0.0.11", | |||||
"sonar-ui-common": "0.0.13", | |||||
"unist-util-visit": "1.4.0", | "unist-util-visit": "1.4.0", | ||||
"valid-url": "1.0.9", | "valid-url": "1.0.9", | ||||
"whatwg-fetch": "2.0.4" | "whatwg-fetch": "2.0.4" | ||||
"@babel/preset-react": "7.0.0", | "@babel/preset-react": "7.0.0", | ||||
"@types/classnames": "2.2.6", | "@types/classnames": "2.2.6", | ||||
"@types/d3-array": "1.2.4", | "@types/d3-array": "1.2.4", | ||||
"@types/d3-hierarchy": "1.1.4", | |||||
"@types/d3-scale": "2.0.2", | "@types/d3-scale": "2.0.2", | ||||
"@types/d3-selection": "1.3.2", | "@types/d3-selection": "1.3.2", | ||||
"@types/d3-shape": "1.2.4", | |||||
"@types/d3-zoom": "1.7.2", | "@types/d3-zoom": "1.7.2", | ||||
"@types/dompurify": "0.0.32", | "@types/dompurify": "0.0.32", | ||||
"@types/enzyme": "3.10.1", | "@types/enzyme": "3.10.1", | ||||
"@types/react-intl": "2.3.17", | "@types/react-intl": "2.3.17", | ||||
"@types/react-redux": "6.0.6", | "@types/react-redux": "6.0.6", | ||||
"@types/react-router": "3.0.20", | "@types/react-router": "3.0.20", | ||||
"@types/react-select": "1.2.6", | |||||
"@types/react-virtualized": "9.21.0", | "@types/react-virtualized": "9.21.0", | ||||
"@types/sanitize-html": "1.20.0", | "@types/sanitize-html": "1.20.0", | ||||
"@types/valid-url": "1.0.2", | "@types/valid-url": "1.0.2", |
} from 'sonar-ui-common/components/controls/ActionsDropdown'; | } from 'sonar-ui-common/components/controls/ActionsDropdown'; | ||||
import RadioToggle from 'sonar-ui-common/components/controls/RadioToggle'; | import RadioToggle from 'sonar-ui-common/components/controls/RadioToggle'; | ||||
import ReloadButton from 'sonar-ui-common/components/controls/ReloadButton'; | import ReloadButton from 'sonar-ui-common/components/controls/ReloadButton'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import SearchSelect from 'sonar-ui-common/components/controls/SearchSelect'; | |||||
import throwGlobalError from '../../utils/throwGlobalError'; | import throwGlobalError from '../../utils/throwGlobalError'; | ||||
import addGlobalSuccessMessage from '../../utils/addGlobalSuccessMessage'; | import addGlobalSuccessMessage from '../../utils/addGlobalSuccessMessage'; | ||||
import Suggestions from '../embed-docs-modal/Suggestions'; | import Suggestions from '../embed-docs-modal/Suggestions'; | ||||
import Favorite from '../../../components/controls/Favorite'; | import Favorite from '../../../components/controls/Favorite'; | ||||
import HomePageSelect from '../../../components/controls/HomePageSelect'; | import HomePageSelect from '../../../components/controls/HomePageSelect'; | ||||
import BranchIcon from '../../../components/icons-components/BranchIcon'; | import BranchIcon from '../../../components/icons-components/BranchIcon'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import SelectList from '../../../components/SelectList/SelectList'; | import SelectList from '../../../components/SelectList/SelectList'; | ||||
import CoverageRating from '../../../components/ui/CoverageRating'; | import CoverageRating from '../../../components/ui/CoverageRating'; | ||||
import NotFound from '../../../app/components/NotFound'; | import NotFound from '../../../app/components/NotFound'; | ||||
import SearchSelect from '../../../components/controls/SearchSelect'; | |||||
import A11ySkipTarget from '../a11y/A11ySkipTarget'; | import A11ySkipTarget from '../a11y/A11ySkipTarget'; | ||||
const exposeLibraries = () => { | const exposeLibraries = () => { |
import { Link } from 'react-router'; | import { Link } from 'react-router'; | ||||
import { Location } from 'history'; | import { Location } from 'history'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import SQPageContainer from './components/SQPageContainer'; | import SQPageContainer from './components/SQPageContainer'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { isLoggedIn } from '../../../helpers/users'; | import { isLoggedIn } from '../../../helpers/users'; | ||||
import './style.css'; | import './style.css'; | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { differenceWith } from 'lodash'; | import { differenceWith } from 'lodash'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import { AsyncSelect } from 'sonar-ui-common/components/controls/Select'; | |||||
import ProjectNotifications from './ProjectNotifications'; | import ProjectNotifications from './ProjectNotifications'; | ||||
import { NotificationProject } from './types'; | import { NotificationProject } from './types'; | ||||
import { getSuggestions } from '../../../api/components'; | import { getSuggestions } from '../../../api/components'; | ||||
import { AsyncSelect } from '../../../components/controls/Select'; | |||||
import Organization from '../../../components/shared/Organization'; | import Organization from '../../../components/shared/Organization'; | ||||
export interface Props { | export interface Props { |
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { FormikProps } from 'formik'; | |||||
import { connect } from 'react-redux'; | import { connect } from 'react-redux'; | ||||
import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import InputValidationField from 'sonar-ui-common/components/controls/InputValidationField'; | import InputValidationField from 'sonar-ui-common/components/controls/InputValidationField'; | ||||
import ValidationModal from 'sonar-ui-common/components/controls/ValidationModal'; | |||||
import UserDeleteAccountContent from './UserDeleteAccountContent'; | import UserDeleteAccountContent from './UserDeleteAccountContent'; | ||||
import RecentHistory from '../../../app/components/RecentHistory'; | import RecentHistory from '../../../app/components/RecentHistory'; | ||||
import ValidationModal from '../../../components/controls/ValidationModal'; | |||||
import { deactivateUser } from '../../../api/users'; | import { deactivateUser } from '../../../api/users'; | ||||
import { Router, withRouter } from '../../../components/hoc/withRouter'; | import { Router, withRouter } from '../../../components/hoc/withRouter'; | ||||
import { doLogout } from '../../../store/rootActions'; | import { doLogout } from '../../../store/rootActions'; | ||||
onClose={toggleModal} | onClose={toggleModal} | ||||
onSubmit={this.handleSubmit} | onSubmit={this.handleSubmit} | ||||
validate={this.handleValidate}> | validate={this.handleValidate}> | ||||
{({ | |||||
dirty, | |||||
errors, | |||||
handleBlur, | |||||
handleChange, | |||||
isSubmitting, | |||||
touched, | |||||
values | |||||
}: FormikProps<Values>) => ( | |||||
{({ dirty, errors, handleBlur, handleChange, isSubmitting, touched, values }) => ( | |||||
<> | <> | ||||
<Alert className="big-spacer-bottom" variant="error"> | <Alert className="big-spacer-bottom" variant="error"> | ||||
{translate('my_profile.warning_message')} | {translate('my_profile.warning_message')} |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { STATUSES } from '../constants'; | import { STATUSES } from '../constants'; | ||||
import Select from '../../../components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
value?: string; | value?: string; |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { ALL_TYPES } from '../constants'; | import { ALL_TYPES } from '../constants'; | ||||
import Select from '../../../components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
value: string; | value: string; |
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { setWorkerCount } from '../../../api/ce'; | import { setWorkerCount } from '../../../api/ce'; | ||||
import Select from '../../../components/controls/Select'; | |||||
const MAX_WORKERS = 10; | const MAX_WORKERS = 10; | ||||
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import SeverityHelper from '../../../components/shared/SeverityHelper'; | import SeverityHelper from '../../../components/shared/SeverityHelper'; | ||||
import { activateRule, Profile } from '../../../api/quality-profiles'; | import { activateRule, Profile } from '../../../api/quality-profiles'; | ||||
import { SEVERITIES } from '../../../helpers/constants'; | import { SEVERITIES } from '../../../helpers/constants'; |
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import { formatMeasure } from 'sonar-ui-common/helpers/measures'; | import { formatMeasure } from 'sonar-ui-common/helpers/measures'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { Query, serializeQuery } from '../query'; | import { Query, serializeQuery } from '../query'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { Profile, bulkActivateRules, bulkDeactivateRules } from '../../../api/quality-profiles'; | import { Profile, bulkActivateRules, bulkDeactivateRules } from '../../../api/quality-profiles'; | ||||
interface Props { | interface Props { |
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import MarkdownTips from '../../../components/common/MarkdownTips'; | import MarkdownTips from '../../../components/common/MarkdownTips'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import SeverityHelper from '../../../components/shared/SeverityHelper'; | import SeverityHelper from '../../../components/shared/SeverityHelper'; | ||||
import TypeHelper from '../../../components/shared/TypeHelper'; | import TypeHelper from '../../../components/shared/TypeHelper'; | ||||
import { createRule, updateRule } from '../../../api/rules'; | import { createRule, updateRule } from '../../../api/rules'; |
import ListIcon from 'sonar-ui-common/components/icons/ListIcon'; | import ListIcon from 'sonar-ui-common/components/icons/ListIcon'; | ||||
import TreeIcon from 'sonar-ui-common/components/icons/TreeIcon'; | import TreeIcon from 'sonar-ui-common/components/icons/TreeIcon'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { hasList, hasTree, hasTreemap, View } from '../utils'; | import { hasList, hasTree, hasTreemap, View } from '../utils'; | ||||
interface Props { | interface Props { |
import * as classNames from 'classnames'; | import * as classNames from 'classnames'; | ||||
import { isWebUri } from 'valid-url'; | import { isWebUri } from 'valid-url'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import ValidationInput from '../../../components/controls/ValidationInput'; | |||||
import ValidationInput from 'sonar-ui-common/components/controls/ValidationInput'; | |||||
import OrganizationAvatar from '../../../components/common/OrganizationAvatar'; | import OrganizationAvatar from '../../../components/common/OrganizationAvatar'; | ||||
interface Props { | interface Props { |
import * as React from 'react'; | import * as React from 'react'; | ||||
import * as classNames from 'classnames'; | import * as classNames from 'classnames'; | ||||
import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||
import ValidationInput from 'sonar-ui-common/components/controls/ValidationInput'; | |||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import { getHostUrl } from 'sonar-ui-common/helpers/urls'; | import { getHostUrl } from 'sonar-ui-common/helpers/urls'; | ||||
import { getOrganization } from '../../../api/organizations'; | import { getOrganization } from '../../../api/organizations'; | ||||
import ValidationInput from '../../../components/controls/ValidationInput'; | |||||
interface Props { | interface Props { | ||||
initialValue?: string; | initialValue?: string; |
import { sortBy } from 'lodash'; | import { sortBy } from 'lodash'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import { getBaseUrl } from 'sonar-ui-common/helpers/urls'; | import { getBaseUrl } from 'sonar-ui-common/helpers/urls'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { sanitizeAlmId } from '../../../helpers/almIntegrations'; | import { sanitizeAlmId } from '../../../helpers/almIntegrations'; | ||||
interface Props { | interface Props { |
import * as classNames from 'classnames'; | import * as classNames from 'classnames'; | ||||
import { isWebUri } from 'valid-url'; | import { isWebUri } from 'valid-url'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import ValidationInput from '../../../components/controls/ValidationInput'; | |||||
import ValidationInput from 'sonar-ui-common/components/controls/ValidationInput'; | |||||
interface Props { | interface Props { | ||||
initialValue?: string; | initialValue?: string; |
import * as React from 'react'; | import * as React from 'react'; | ||||
import * as classNames from 'classnames'; | import * as classNames from 'classnames'; | ||||
import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||
import ValidationInput from 'sonar-ui-common/components/controls/ValidationInput'; | |||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import ValidationInput from '../../../components/controls/ValidationInput'; | |||||
import { doesComponentExists } from '../../../api/components'; | import { doesComponentExists } from '../../../api/components'; | ||||
interface Props { | interface Props { |
import { getBaseUrl } from 'sonar-ui-common/helpers/urls'; | import { getBaseUrl } from 'sonar-ui-common/helpers/urls'; | ||||
import { SubmitButton } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton } from 'sonar-ui-common/components/controls/buttons'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { serializeQuery, ORGANIZATION_IMPORT_BINDING_IN_PROGRESS_TIMESTAMP } from './utils'; | import { serializeQuery, ORGANIZATION_IMPORT_BINDING_IN_PROGRESS_TIMESTAMP } from './utils'; | ||||
import OrganizationAvatar from '../../../components/common/OrganizationAvatar'; | import OrganizationAvatar from '../../../components/common/OrganizationAvatar'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { sanitizeAlmId } from '../../../helpers/almIntegrations'; | import { sanitizeAlmId } from '../../../helpers/almIntegrations'; | ||||
interface Props { | interface Props { |
import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | ||||
import SimpleModal from 'sonar-ui-common/components/controls/SimpleModal'; | import SimpleModal from 'sonar-ui-common/components/controls/SimpleModal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { getAllMetrics } from '../../../api/metrics'; | import { getAllMetrics } from '../../../api/metrics'; | ||||
interface Props { | interface Props { |
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | ||||
import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | ||||
import SimpleModal from 'sonar-ui-common/components/controls/SimpleModal'; | import SimpleModal from 'sonar-ui-common/components/controls/SimpleModal'; | ||||
import Select, { Creatable } from '../../../components/controls/Select'; | |||||
import Select, { Creatable } from 'sonar-ui-common/components/controls/Select'; | |||||
export interface MetricProps { | export interface MetricProps { | ||||
description: string; | description: string; |
import Checkbox from 'sonar-ui-common/components/controls/Checkbox'; | import Checkbox from 'sonar-ui-common/components/controls/Checkbox'; | ||||
import HelpTooltip from 'sonar-ui-common/components/controls/HelpTooltip'; | import HelpTooltip from 'sonar-ui-common/components/controls/HelpTooltip'; | ||||
import Radio from 'sonar-ui-common/components/controls/Radio'; | import Radio from 'sonar-ui-common/components/controls/Radio'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import SearchSelect from 'sonar-ui-common/components/controls/SearchSelect'; | |||||
import { searchAssignees } from '../utils'; | import { searchAssignees } from '../utils'; | ||||
import Avatar from '../../../components/ui/Avatar'; | import Avatar from '../../../components/ui/Avatar'; | ||||
import MarkdownTips from '../../../components/common/MarkdownTips'; | import MarkdownTips from '../../../components/common/MarkdownTips'; | ||||
import SearchSelect from '../../../components/controls/SearchSelect'; | |||||
import Select from '../../../components/controls/Select'; | |||||
import SeverityHelper from '../../../components/shared/SeverityHelper'; | import SeverityHelper from '../../../components/shared/SeverityHelper'; | ||||
import throwGlobalError from '../../../app/utils/throwGlobalError'; | import throwGlobalError from '../../../app/utils/throwGlobalError'; | ||||
import { searchIssueTags, bulkChangeIssues } from '../../../api/issues'; | import { searchIssueTags, bulkChangeIssues } from '../../../api/issues'; |
import * as React from 'react'; | import * as React from 'react'; | ||||
import * as classNames from 'classnames'; | import * as classNames from 'classnames'; | ||||
import { getLocalizedMetricName, translate } from 'sonar-ui-common/helpers/l10n'; | import { getLocalizedMetricName, translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { BadgeColors, BadgeType, BadgeOptions, BadgeFormats } from './utils'; | import { BadgeColors, BadgeType, BadgeOptions, BadgeFormats } from './utils'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { fetchWebApi } from '../../../api/web-api'; | import { fetchWebApi } from '../../../api/web-api'; | ||||
interface Props { | interface Props { |
import { getBaseUrl, getPathUrlAsString } from 'sonar-ui-common/helpers/urls'; | import { getBaseUrl, getPathUrlAsString } from 'sonar-ui-common/helpers/urls'; | ||||
import { lazyLoad } from 'sonar-ui-common/components/lazyLoad'; | import { lazyLoad } from 'sonar-ui-common/components/lazyLoad'; | ||||
import OverviewApp from './OverviewApp'; | import OverviewApp from './OverviewApp'; | ||||
import ReviewApp from '../pullRequests/ReviewApp'; | |||||
import Suggestions from '../../../app/components/embed-docs-modal/Suggestions'; | import Suggestions from '../../../app/components/embed-docs-modal/Suggestions'; | ||||
import { withRouter, Router } from '../../../components/hoc/withRouter'; | import { withRouter, Router } from '../../../components/hoc/withRouter'; | ||||
import { getProjectUrl } from '../../../helpers/urls'; | import { getProjectUrl } from '../../../helpers/urls'; | ||||
import { isShortLivingBranch, isPullRequest } from '../../../helpers/branches'; | import { isShortLivingBranch, isPullRequest } from '../../../helpers/branches'; | ||||
const EmptyOverview = lazyLoad(() => import('./EmptyOverview')); | const EmptyOverview = lazyLoad(() => import('./EmptyOverview')); | ||||
const ReviewApp = lazyLoad(() => import('../pullRequests/ReviewApp')); | |||||
interface Props { | interface Props { | ||||
branchLike?: T.BranchLike; | branchLike?: T.BranchLike; |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { connect } from 'react-redux'; | import { connect } from 'react-redux'; | ||||
import { lazyLoad } from 'sonar-ui-common/components/lazyLoad'; | |||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import MetaKey from './MetaKey'; | import MetaKey from './MetaKey'; | ||||
import MetaOrganizationKey from './MetaOrganizationKey'; | import MetaOrganizationKey from './MetaOrganizationKey'; | ||||
import MetaQualityProfiles from './MetaQualityProfiles'; | import MetaQualityProfiles from './MetaQualityProfiles'; | ||||
import MetaSize from './MetaSize'; | import MetaSize from './MetaSize'; | ||||
import MetaTags from './MetaTags'; | import MetaTags from './MetaTags'; | ||||
import BadgesModal from '../badges/BadgesModal'; | |||||
import AnalysesList from '../events/AnalysesList'; | import AnalysesList from '../events/AnalysesList'; | ||||
import { hasPrivateAccess } from '../../../helpers/organizations'; | import { hasPrivateAccess } from '../../../helpers/organizations'; | ||||
import { | import { | ||||
} from '../../../store/rootReducer'; | } from '../../../store/rootReducer'; | ||||
import PrivacyBadgeContainer from '../../../components/common/PrivacyBadgeContainer'; | import PrivacyBadgeContainer from '../../../components/common/PrivacyBadgeContainer'; | ||||
const BadgesModal = lazyLoad(() => import('../badges/BadgesModal'), 'BadgesModal'); | |||||
interface StateToProps { | interface StateToProps { | ||||
appState: T.AppState; | appState: T.AppState; | ||||
currentUser: T.CurrentUser; | currentUser: T.CurrentUser; |
import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | ||||
import SimpleModal from 'sonar-ui-common/components/controls/SimpleModal'; | import SimpleModal from 'sonar-ui-common/components/controls/SimpleModal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from '../../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { getPermissionTemplates, applyTemplateToProject } from '../../../../api/permissions'; | import { getPermissionTemplates, applyTemplateToProject } from '../../../../api/permissions'; | ||||
interface Props { | interface Props { |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import AddGraphMetric from './forms/AddGraphMetric'; | import AddGraphMetric from './forms/AddGraphMetric'; | ||||
import { isCustomGraph, GRAPH_TYPES } from '../utils'; | import { isCustomGraph, GRAPH_TYPES } from '../utils'; | ||||
import Select from '../../../components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
addCustomMetric: (metric: string) => void; | addCustomMetric: (metric: string) => void; |
import * as React from 'react'; | import * as React from 'react'; | ||||
import * as classNames from 'classnames'; | import * as classNames from 'classnames'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import ProjectActivityEventSelectOption from './ProjectActivityEventSelectOption'; | import ProjectActivityEventSelectOption from './ProjectActivityEventSelectOption'; | ||||
import ProjectActivityEventSelectValue from './ProjectActivityEventSelectValue'; | import ProjectActivityEventSelectValue from './ProjectActivityEventSelectValue'; | ||||
import ProjectActivityDateInput from './ProjectActivityDateInput'; | import ProjectActivityDateInput from './ProjectActivityDateInput'; | ||||
import { EVENT_TYPES, APPLICATION_EVENT_TYPES, Query } from '../utils'; | import { EVENT_TYPES, APPLICATION_EVENT_TYPES, Query } from '../utils'; | ||||
import Select from '../../../components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
category?: string; | category?: string; |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from '../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
allGates: T.QualityGate[]; | allGates: T.QualityGate[]; |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { Profile } from '../../api/quality-profiles'; | import { Profile } from '../../api/quality-profiles'; | ||||
import Select from '../../components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
onChangeProfile: (oldProfile: string, newProfile: string) => Promise<void>; | onChangeProfile: (oldProfile: string, newProfile: string) => Promise<void>; |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import PerspectiveSelectOption, { Option } from './PerspectiveSelectOption'; | import PerspectiveSelectOption, { Option } from './PerspectiveSelectOption'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { VIEWS, VISUALIZATIONS } from '../utils'; | import { VIEWS, VISUALIZATIONS } from '../utils'; | ||||
interface Props { | interface Props { |
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Tooltip from 'sonar-ui-common/components/controls/Tooltip'; | import Tooltip from 'sonar-ui-common/components/controls/Tooltip'; | ||||
import { ButtonIcon } from 'sonar-ui-common/components/controls/buttons'; | import { ButtonIcon } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import ProjectsSortingSelectOption, { Option } from './ProjectsSortingSelectOption'; | import ProjectsSortingSelectOption, { Option } from './ProjectsSortingSelectOption'; | ||||
import { colors } from '../../../app/theme'; | import { colors } from '../../../app/theme'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { SORTING_METRICS, SORTING_LEAK_METRICS, parseSorting } from '../utils'; | import { SORTING_METRICS, SORTING_LEAK_METRICS, parseSorting } from '../utils'; | ||||
interface Props { | interface Props { |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
isFavorite?: boolean; | isFavorite?: boolean; |
import { ResetButtonLink, SubmitButton } from 'sonar-ui-common/components/controls/buttons'; | import { ResetButtonLink, SubmitButton } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { getPermissionTemplates, bulkApplyTemplate } from '../../api/permissions'; | import { getPermissionTemplates, bulkApplyTemplate } from '../../api/permissions'; | ||||
import Select from '../../components/controls/Select'; | |||||
export interface Props { | export interface Props { | ||||
analyzedBefore: Date | undefined; | analyzedBefore: Date | undefined; |
import Checkbox from 'sonar-ui-common/components/controls/Checkbox'; | import Checkbox from 'sonar-ui-common/components/controls/Checkbox'; | ||||
import HelpTooltip from 'sonar-ui-common/components/controls/HelpTooltip'; | import HelpTooltip from 'sonar-ui-common/components/controls/HelpTooltip'; | ||||
import SearchBox from 'sonar-ui-common/components/controls/SearchBox'; | import SearchBox from 'sonar-ui-common/components/controls/SearchBox'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import BulkApplyTemplateModal from './BulkApplyTemplateModal'; | import BulkApplyTemplateModal from './BulkApplyTemplateModal'; | ||||
import DeleteModal from './DeleteModal'; | import DeleteModal from './DeleteModal'; | ||||
import DateInput from '../../components/controls/DateInput'; | import DateInput from '../../components/controls/DateInput'; | ||||
import Select from '../../components/controls/Select'; | |||||
import { Project } from '../../api/components'; | import { Project } from '../../api/components'; | ||||
export interface Props { | export interface Props { |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { getPossibleOperators } from '../utils'; | import { getPossibleOperators } from '../utils'; | ||||
interface Props { | interface Props { |
getLocalizedMetricName, | getLocalizedMetricName, | ||||
getLocalizedMetricDomain | getLocalizedMetricDomain | ||||
} from 'sonar-ui-common/helpers/l10n'; | } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
metrics: T.Metric[]; | metrics: T.Metric[]; |
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
name: string; | name: string; |
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { Profile } from '../types'; | import { Profile } from '../types'; | ||||
interface Props { | interface Props { |
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { Profile } from '../types'; | import { Profile } from '../types'; | ||||
import { changeProfileParent } from '../../../api/quality-profiles'; | import { changeProfileParent } from '../../../api/quality-profiles'; | ||||
import Select from '../../../components/controls/Select'; | |||||
interface Props { | interface Props { | ||||
onChange: () => void; | onChange: () => void; |
import GroupIcon from 'sonar-ui-common/components/icons/GroupIcon'; | import GroupIcon from 'sonar-ui-common/components/icons/GroupIcon'; | ||||
import { debounce, identity } from 'lodash'; | import { debounce, identity } from 'lodash'; | ||||
import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { Group } from './ProfilePermissions'; | import { Group } from './ProfilePermissions'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import Avatar from '../../../components/ui/Avatar'; | import Avatar from '../../../components/ui/Avatar'; | ||||
type Option = T.UserSelected | Group; | type Option = T.UserSelected | Group; |
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | ||||
import Modal from 'sonar-ui-common/components/controls/Modal'; | import Modal from 'sonar-ui-common/components/controls/Modal'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { | import { | ||||
changeProfileParent, | changeProfileParent, | ||||
createQualityProfile, | createQualityProfile, | ||||
getImporters | getImporters | ||||
} from '../../../api/quality-profiles'; | } from '../../../api/quality-profiles'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { Profile } from '../types'; | import { Profile } from '../types'; | ||||
interface Props { | interface Props { |
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { Option } from 'react-select'; | |||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { getProfilesPath, getProfilesForLanguagePath } from '../utils'; | import { getProfilesPath, getProfilesForLanguagePath } from '../utils'; | ||||
import Select from '../../../components/controls/Select'; | |||||
import { withRouter, Router } from '../../../components/hoc/withRouter'; | import { withRouter, Router } from '../../../components/hoc/withRouter'; | ||||
interface Props { | interface Props { | ||||
return null; | return null; | ||||
} | } | ||||
const options: Option[] = languages.map(language => ({ | |||||
const options = languages.map(language => ({ | |||||
label: language.name, | label: language.name, | ||||
value: language.key | value: language.key | ||||
})); | })); |
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import Select from '../../../../components/controls/Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import { DefaultSpecializedInputProps } from '../../utils'; | import { DefaultSpecializedInputProps } from '../../utils'; | ||||
type Props = DefaultSpecializedInputProps & Pick<T.SettingCategoryDefinition, 'options'>; | type Props = DefaultSpecializedInputProps & Pick<T.SettingCategoryDefinition, 'options'>; |
import { map } from 'lodash'; | import { map } from 'lodash'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import { Alert } from 'sonar-ui-common/components/ui/Alert'; | import { Alert } from 'sonar-ui-common/components/ui/Alert'; | ||||
import BoxedGroupAccordion from 'sonar-ui-common/components/controls/BoxedGroupAccordion'; | |||||
import HealthItem from './HealthItem'; | import HealthItem from './HealthItem'; | ||||
import Section from './Section'; | import Section from './Section'; | ||||
import BoxedGroupAccordion from '../../../../components/controls/BoxedGroupAccordion'; | |||||
import { LOGS_LEVELS, groupSections, getLogsLevel } from '../../utils'; | import { LOGS_LEVELS, groupSections, getLogsLevel } from '../../utils'; | ||||
interface Props { | interface Props { |
import * as React from 'react'; | import * as React from 'react'; | ||||
import { debounce } from 'lodash'; | import { debounce } from 'lodash'; | ||||
import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | ||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import Avatar from '../../../components/ui/Avatar'; | import Avatar from '../../../components/ui/Avatar'; | ||||
import Select from '../../../components/controls/Select'; | |||||
interface Option { | interface Option { | ||||
login: string; | login: string; |
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
*/ | */ | ||||
import * as React from 'react'; | import * as React from 'react'; | ||||
import { FormikProps } from 'formik'; | |||||
import { isWebUri } from 'valid-url'; | import { isWebUri } from 'valid-url'; | ||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | import { translate } from 'sonar-ui-common/helpers/l10n'; | ||||
import InputValidationField from 'sonar-ui-common/components/controls/InputValidationField'; | import InputValidationField from 'sonar-ui-common/components/controls/InputValidationField'; | ||||
import ValidationModal from '../../../components/controls/ValidationModal'; | |||||
import ValidationModal from 'sonar-ui-common/components/controls/ValidationModal'; | |||||
interface Props { | interface Props { | ||||
onClose: () => void; | onClose: () => void; | ||||
onDone: (data: { name: string; url: string }) => Promise<void>; | |||||
onDone: (data: Values) => Promise<void>; | |||||
webhook?: T.Webhook; | webhook?: T.Webhook; | ||||
} | } | ||||
confirmButtonText={confirmButtonText} | confirmButtonText={confirmButtonText} | ||||
header={modalHeader} | header={modalHeader} | ||||
initialValues={{ | initialValues={{ | ||||
name: webhook ? webhook.name : '', | |||||
secret: webhook ? webhook.secret : '', | |||||
url: webhook ? webhook.url : '' | |||||
name: (webhook && webhook.name) || '', | |||||
secret: (webhook && webhook.secret) || '', | |||||
url: (webhook && webhook.url) || '' | |||||
}} | }} | ||||
isInitialValid={isUpdate} | isInitialValid={isUpdate} | ||||
onClose={this.props.onClose} | onClose={this.props.onClose} | ||||
onSubmit={this.props.onDone} | onSubmit={this.props.onDone} | ||||
size="small" | size="small" | ||||
validate={this.handleValidate}> | validate={this.handleValidate}> | ||||
{({ | |||||
dirty, | |||||
errors, | |||||
handleBlur, | |||||
handleChange, | |||||
isSubmitting, | |||||
touched, | |||||
values | |||||
}: FormikProps<Values>) => ( | |||||
{({ dirty, errors, handleBlur, handleChange, isSubmitting, touched, values }) => ( | |||||
<> | <> | ||||
<InputValidationField | <InputValidationField | ||||
autoFocus={true} | autoFocus={true} |
import * as React from 'react'; | import * as React from 'react'; | ||||
import AlertErrorIcon from 'sonar-ui-common/components/icons/AlertErrorIcon'; | import AlertErrorIcon from 'sonar-ui-common/components/icons/AlertErrorIcon'; | ||||
import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon'; | import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon'; | ||||
import BoxedGroupAccordion from 'sonar-ui-common/components/controls/BoxedGroupAccordion'; | |||||
import DeliveryItem from './DeliveryItem'; | import DeliveryItem from './DeliveryItem'; | ||||
import DateTimeFormatter from '../../../components/intl/DateTimeFormatter'; | import DateTimeFormatter from '../../../components/intl/DateTimeFormatter'; | ||||
import BoxedGroupAccordion from '../../../components/controls/BoxedGroupAccordion'; | |||||
import { getDelivery } from '../../../api/webhooks'; | import { getDelivery } from '../../../api/webhooks'; | ||||
interface Props { | interface Props { |
initialValues={ | initialValues={ | ||||
Object { | Object { | ||||
"name": "foo", | "name": "foo", | ||||
"secret": undefined, | |||||
"secret": "", | |||||
"url": "http://foo.bar", | "url": "http://foo.bar", | ||||
} | } | ||||
} | } |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import * as classNames from 'classnames'; | |||||
import OpenCloseIcon from 'sonar-ui-common/components/icons/OpenCloseIcon'; | |||||
interface Props { | |||||
children: React.ReactNode; | |||||
className?: string; | |||||
data?: string; | |||||
onClick: (data?: string) => void; | |||||
open: boolean; | |||||
renderHeader?: () => React.ReactNode; | |||||
title: React.ReactNode; | |||||
} | |||||
interface State { | |||||
hoveringInner: boolean; | |||||
} | |||||
export default class BoxedGroupAccordion extends React.PureComponent<Props, State> { | |||||
state: State = { hoveringInner: false }; | |||||
handleClick = () => { | |||||
this.props.onClick(this.props.data); | |||||
}; | |||||
onDetailEnter = () => { | |||||
this.setState({ hoveringInner: true }); | |||||
}; | |||||
onDetailLeave = () => { | |||||
this.setState({ hoveringInner: false }); | |||||
}; | |||||
render() { | |||||
const { className, open, renderHeader, title } = this.props; | |||||
return ( | |||||
<div | |||||
className={classNames('boxed-group boxed-group-accordion', className, { | |||||
'no-hover': this.state.hoveringInner | |||||
})}> | |||||
<div className="boxed-group-header" onClick={this.handleClick} role="listitem"> | |||||
<span className="boxed-group-accordion-title"> | |||||
<OpenCloseIcon className="little-spacer-right" open={open} /> | |||||
{title} | |||||
</span> | |||||
{renderHeader && renderHeader()} | |||||
</div> | |||||
{open && ( | |||||
<div | |||||
className="boxed-group-inner" | |||||
onMouseEnter={this.onDetailEnter} | |||||
onMouseLeave={this.onDetailLeave}> | |||||
{this.props.children} | |||||
</div> | |||||
)} | |||||
</div> | |||||
); | |||||
} | |||||
} |
import { ButtonIcon, ClearButton } from 'sonar-ui-common/components/controls/buttons'; | import { ButtonIcon, ClearButton } from 'sonar-ui-common/components/controls/buttons'; | ||||
import OutsideClickHandler from 'sonar-ui-common/components/controls/OutsideClickHandler'; | import OutsideClickHandler from 'sonar-ui-common/components/controls/OutsideClickHandler'; | ||||
import { lazyLoad } from 'sonar-ui-common/components/lazyLoad'; | import { lazyLoad } from 'sonar-ui-common/components/lazyLoad'; | ||||
import Select from './Select'; | |||||
import Select from 'sonar-ui-common/components/controls/Select'; | |||||
import './DayPicker.css'; | import './DayPicker.css'; | ||||
import './styles.css'; | import './styles.css'; | ||||
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { debounce } from 'lodash'; | |||||
import { translate, translateWithParameters } from 'sonar-ui-common/helpers/l10n'; | |||||
import Select, { Creatable } from './Select'; | |||||
interface Props<T> { | |||||
autofocus?: boolean; | |||||
canCreate?: boolean; | |||||
className?: string; | |||||
clearable?: boolean; | |||||
defaultOptions?: T[]; | |||||
minimumQueryLength?: number; | |||||
multi?: boolean; | |||||
onSearch: (query: string) => Promise<T[]>; | |||||
onSelect?: (option: T) => void; | |||||
onMultiSelect?: (options: T[]) => void; | |||||
promptTextCreator?: (label: string) => string; | |||||
renderOption?: (option: T) => JSX.Element; | |||||
resetOnBlur?: boolean; | |||||
value?: T | T[]; | |||||
} | |||||
interface State<T> { | |||||
loading: boolean; | |||||
options: T[]; | |||||
query: string; | |||||
} | |||||
export default class SearchSelect<T extends { value: string }> extends React.PureComponent< | |||||
Props<T>, | |||||
State<T> | |||||
> { | |||||
mounted = false; | |||||
constructor(props: Props<T>) { | |||||
super(props); | |||||
this.state = { loading: false, options: props.defaultOptions || [], query: '' }; | |||||
this.handleSearch = debounce(this.handleSearch, 250); | |||||
} | |||||
componentDidMount() { | |||||
this.mounted = true; | |||||
} | |||||
componentWillUnmount() { | |||||
this.mounted = false; | |||||
} | |||||
get autofocus() { | |||||
return this.props.autofocus !== undefined ? this.props.autofocus : true; | |||||
} | |||||
get minimumQueryLength() { | |||||
return this.props.minimumQueryLength !== undefined ? this.props.minimumQueryLength : 2; | |||||
} | |||||
get resetOnBlur() { | |||||
return this.props.resetOnBlur !== undefined ? this.props.resetOnBlur : true; | |||||
} | |||||
handleSearch = (query: string) => { | |||||
// Ignore the result if the query changed | |||||
const currentQuery = query; | |||||
this.props.onSearch(currentQuery).then( | |||||
options => { | |||||
if (this.mounted) { | |||||
this.setState(state => ({ | |||||
loading: false, | |||||
options: state.query === currentQuery ? options : state.options | |||||
})); | |||||
} | |||||
}, | |||||
() => { | |||||
if (this.mounted) { | |||||
this.setState({ loading: false }); | |||||
} | |||||
} | |||||
); | |||||
}; | |||||
handleChange = (option: T | T[]) => { | |||||
if (Array.isArray(option)) { | |||||
if (this.props.onMultiSelect) { | |||||
this.props.onMultiSelect(option); | |||||
} | |||||
} else if (this.props.onSelect) { | |||||
this.props.onSelect(option); | |||||
} | |||||
}; | |||||
handleInputChange = (query: string) => { | |||||
if (query.length >= this.minimumQueryLength) { | |||||
this.setState({ loading: true, query }); | |||||
this.handleSearch(query); | |||||
} else { | |||||
// `onInputChange` is called with an empty string after a user selects a value | |||||
// in this case we shouldn't reset `options`, because it also resets select value :( | |||||
const options = (query.length === 0 && this.props.defaultOptions) || []; | |||||
this.setState({ options, query }); | |||||
} | |||||
}; | |||||
// disable internal filtering | |||||
handleFilterOption = () => true; | |||||
render() { | |||||
const Component = this.props.canCreate ? Creatable : Select; | |||||
return ( | |||||
<Component | |||||
autoFocus={this.autofocus} | |||||
className={this.props.className} | |||||
clearable={this.props.clearable} | |||||
escapeClearsValue={false} | |||||
filterOption={this.handleFilterOption} | |||||
isLoading={this.state.loading} | |||||
multi={this.props.multi} | |||||
noResultsText={ | |||||
this.state.query.length < this.minimumQueryLength | |||||
? translateWithParameters('select2.tooShort', this.minimumQueryLength) | |||||
: translate('select2.noMatches') | |||||
} | |||||
onBlurResetsInput={this.resetOnBlur} | |||||
onChange={this.handleChange} | |||||
onInputChange={this.handleInputChange} | |||||
optionRenderer={this.props.renderOption} | |||||
options={this.state.options} | |||||
placeholder={translate('search_verb')} | |||||
promptTextCreator={this.props.promptTextCreator} | |||||
searchable={true} | |||||
value={this.props.value} | |||||
valueRenderer={this.props.renderOption} | |||||
/> | |||||
); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { ReactSelectProps, ReactCreatableSelectProps, ReactAsyncSelectProps } from 'react-select'; | |||||
import { ClearButton } from 'sonar-ui-common/components/controls/buttons'; | |||||
import { lazyLoad } from 'sonar-ui-common/components/lazyLoad'; | |||||
import './react-select.css'; | |||||
const ReactSelectLib = import('react-select'); | |||||
const ReactSelect = lazyLoad(() => ReactSelectLib); | |||||
const ReactCreatable = lazyLoad(() => ReactSelectLib.then(lib => ({ default: lib.Creatable }))); | |||||
const ReactAsync = lazyLoad(() => ReactSelectLib.then(lib => ({ default: lib.Async }))); | |||||
function renderInput() { | |||||
return <ClearButton className="button-tiny spacer-left text-middle" iconProps={{ size: 12 }} />; | |||||
} | |||||
interface WithInnerRef { | |||||
innerRef?: (element: React.Component) => void; | |||||
} | |||||
export default function Select({ innerRef, ...props }: WithInnerRef & ReactSelectProps) { | |||||
// TODO try to define good defaults, if any | |||||
// ReactSelect doesn't declare `clearRenderer` prop | |||||
const ReactSelectAny = ReactSelect as any; | |||||
// hide the "x" icon when select is empty | |||||
const clearable = props.clearable ? Boolean(props.value) : false; | |||||
return ( | |||||
<ReactSelectAny {...props} clearRenderer={renderInput} clearable={clearable} ref={innerRef} /> | |||||
); | |||||
} | |||||
export function Creatable(props: ReactCreatableSelectProps) { | |||||
// ReactSelect doesn't declare `clearRenderer` prop | |||||
const ReactCreatableAny = ReactCreatable as any; | |||||
return <ReactCreatableAny {...props} clearRenderer={renderInput} />; | |||||
} | |||||
// TODO figure out why `ref` prop is incompatible | |||||
export function AsyncSelect(props: ReactAsyncSelectProps & { ref?: any }) { | |||||
return <ReactAsync {...props} />; | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { FormikActions, FormikProps, Formik } from 'formik'; | |||||
export type ChildrenProps<V> = T.Omit<FormikProps<V>, 'handleSubmit'>; | |||||
interface Props<V> { | |||||
children: (props: ChildrenProps<V>) => React.ReactNode; | |||||
initialValues: V; | |||||
isInitialValid?: boolean; | |||||
onSubmit: (data: V) => Promise<void>; | |||||
validate: (data: V) => { [P in keyof V]?: string } | Promise<{ [P in keyof V]?: string }>; | |||||
} | |||||
export default class ValidationForm<V> extends React.Component<Props<V>> { | |||||
mounted = false; | |||||
componentDidMount() { | |||||
this.mounted = true; | |||||
} | |||||
componentWillUnmount() { | |||||
this.mounted = false; | |||||
} | |||||
handleSubmit = (data: V, { setSubmitting }: FormikActions<V>) => { | |||||
const result = this.props.onSubmit(data); | |||||
const stopSubmitting = () => { | |||||
if (this.mounted) { | |||||
setSubmitting(false); | |||||
} | |||||
}; | |||||
if (result) { | |||||
result.then(stopSubmitting, stopSubmitting); | |||||
} else { | |||||
stopSubmitting(); | |||||
} | |||||
}; | |||||
render() { | |||||
return ( | |||||
<Formik<V> | |||||
initialValues={this.props.initialValues} | |||||
isInitialValid={this.props.isInitialValid} | |||||
onSubmit={this.handleSubmit} | |||||
validate={this.props.validate}> | |||||
{({ handleSubmit, ...props }) => ( | |||||
<form onSubmit={handleSubmit}>{this.props.children(props)}</form> | |||||
)} | |||||
</Formik> | |||||
); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import AlertErrorIcon from 'sonar-ui-common/components/icons/AlertErrorIcon'; | |||||
import AlertSuccessIcon from 'sonar-ui-common/components/icons/AlertSuccessIcon'; | |||||
import HelpTooltip from 'sonar-ui-common/components/controls/HelpTooltip'; | |||||
interface Props { | |||||
description?: string; | |||||
children: React.ReactNode; | |||||
className?: string; | |||||
error: string | undefined; | |||||
help?: string; | |||||
id: string; | |||||
isInvalid: boolean; | |||||
isValid: boolean; | |||||
label: React.ReactNode; | |||||
required?: boolean; | |||||
} | |||||
export default function ValidationInput(props: Props) { | |||||
const hasError = props.isInvalid && props.error !== undefined; | |||||
return ( | |||||
<div className={props.className}> | |||||
<label htmlFor={props.id}> | |||||
<span className="text-middle"> | |||||
<strong>{props.label}</strong> | |||||
{props.required && <em className="mandatory">*</em>} | |||||
</span> | |||||
{props.help && <HelpTooltip className="spacer-left" overlay={props.help} />} | |||||
</label> | |||||
<div className="little-spacer-top spacer-bottom"> | |||||
{props.children} | |||||
{props.isInvalid && <AlertErrorIcon className="spacer-left text-middle" />} | |||||
{hasError && ( | |||||
<span className="little-spacer-left text-danger text-middle">{props.error}</span> | |||||
)} | |||||
{props.isValid && <AlertSuccessIcon className="spacer-left text-middle" />} | |||||
</div> | |||||
{props.description && <div className="note abs-width-400">{props.description}</div>} | |||||
</div> | |||||
); | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { translate } from 'sonar-ui-common/helpers/l10n'; | |||||
import { SubmitButton, ResetButtonLink } from 'sonar-ui-common/components/controls/buttons'; | |||||
import DeferredSpinner from 'sonar-ui-common/components/ui/DeferredSpinner'; | |||||
import Modal, { ModalProps } from 'sonar-ui-common/components/controls/Modal'; | |||||
import ValidationForm, { ChildrenProps } from './ValidationForm'; | |||||
interface Props<V> extends ModalProps { | |||||
children: (props: ChildrenProps<V>) => React.ReactNode; | |||||
confirmButtonText: string; | |||||
header: string; | |||||
initialValues: V; | |||||
isDestructive?: boolean; | |||||
isInitialValid?: boolean; | |||||
onClose: () => void; | |||||
onSubmit: (data: V) => Promise<void>; | |||||
validate: (data: V) => { [P in keyof V]?: string }; | |||||
} | |||||
export default class ValidationModal<V> extends React.PureComponent<Props<V>> { | |||||
handleSubmit = (data: V) => { | |||||
return this.props.onSubmit(data).then(() => { | |||||
this.props.onClose(); | |||||
}); | |||||
}; | |||||
render() { | |||||
return ( | |||||
<Modal | |||||
contentLabel={this.props.header} | |||||
noBackdrop={this.props.noBackdrop} | |||||
onRequestClose={this.props.onClose} | |||||
size={this.props.size}> | |||||
<ValidationForm | |||||
initialValues={this.props.initialValues} | |||||
isInitialValid={this.props.isInitialValid} | |||||
onSubmit={this.handleSubmit} | |||||
validate={this.props.validate}> | |||||
{props => ( | |||||
<> | |||||
<header className="modal-head"> | |||||
<h2>{this.props.header}</h2> | |||||
</header> | |||||
<div className="modal-body">{this.props.children(props)}</div> | |||||
<footer className="modal-foot"> | |||||
<DeferredSpinner className="spacer-right" loading={props.isSubmitting} /> | |||||
<SubmitButton | |||||
className={this.props.isDestructive ? 'button-red' : undefined} | |||||
disabled={props.isSubmitting || !props.isValid || !props.dirty}> | |||||
{this.props.confirmButtonText} | |||||
</SubmitButton> | |||||
<ResetButtonLink disabled={props.isSubmitting} onClick={this.props.onClose}> | |||||
{translate('cancel')} | |||||
</ResetButtonLink> | |||||
</footer> | |||||
</> | |||||
)} | |||||
</ValidationForm> | |||||
</Modal> | |||||
); | |||||
} | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { shallow } from 'enzyme'; | |||||
import { click } from 'sonar-ui-common/helpers/testUtils'; | |||||
import BoxedGroupAccordion from '../BoxedGroupAccordion'; | |||||
it('should render correctly', () => { | |||||
expect(getWrapper()).toMatchSnapshot(); | |||||
}); | |||||
it('should show the inner content after a click', () => { | |||||
const onClick = jest.fn(); | |||||
const wrapper = getWrapper({ onClick }); | |||||
click(wrapper.find('.boxed-group-header')); | |||||
expect(onClick).lastCalledWith('foo'); | |||||
wrapper.setProps({ open: true }); | |||||
expect(wrapper.find('.boxed-group-inner').exists()).toBeTruthy(); | |||||
}); | |||||
function getWrapper(props = {}) { | |||||
return shallow( | |||||
<BoxedGroupAccordion | |||||
data="foo" | |||||
onClick={() => {}} | |||||
open={false} | |||||
renderHeader={() => <div>header content</div>} | |||||
title="Foo" | |||||
{...props}> | |||||
<div>inner content</div> | |||||
</BoxedGroupAccordion> | |||||
); | |||||
} |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { shallow } from 'enzyme'; | |||||
import SearchSelect from '../SearchSelect'; | |||||
jest.mock('lodash', () => { | |||||
const lodash = require.requireActual('lodash'); | |||||
lodash.debounce = jest.fn(fn => fn); | |||||
return lodash; | |||||
}); | |||||
it('should render Select', () => { | |||||
expect(shallow(<SearchSelect onSearch={jest.fn()} onSelect={jest.fn()} />)).toMatchSnapshot(); | |||||
}); | |||||
it('should call onSelect', () => { | |||||
const onSelect = jest.fn(); | |||||
const wrapper = shallow(<SearchSelect onSearch={jest.fn()} onSelect={onSelect} />); | |||||
wrapper.prop('onChange')({ value: 'foo' }); | |||||
expect(onSelect).lastCalledWith({ value: 'foo' }); | |||||
}); | |||||
it('should call onSearch', () => { | |||||
const onSearch = jest.fn().mockReturnValue(Promise.resolve([])); | |||||
const wrapper = shallow( | |||||
<SearchSelect minimumQueryLength={2} onSearch={onSearch} onSelect={jest.fn()} /> | |||||
); | |||||
wrapper.prop('onInputChange')('f'); | |||||
expect(onSearch).not.toHaveBeenCalled(); | |||||
wrapper.prop('onInputChange')('foo'); | |||||
expect(onSearch).lastCalledWith('foo'); | |||||
}); |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { shallow } from 'enzyme'; | |||||
import ValidationForm from '../ValidationForm'; | |||||
it('should render and submit', async () => { | |||||
const render = jest.fn(); | |||||
const onSubmit = jest.fn(); | |||||
const setSubmitting = jest.fn(); | |||||
const wrapper = shallow( | |||||
<ValidationForm initialValues={{ foo: 'bar' }} onSubmit={onSubmit} validate={jest.fn()}> | |||||
{render} | |||||
</ValidationForm> | |||||
); | |||||
expect(wrapper).toMatchSnapshot(); | |||||
wrapper.dive(); | |||||
expect(render).toBeCalledWith( | |||||
expect.objectContaining({ dirty: false, errors: {}, values: { foo: 'bar' } }) | |||||
); | |||||
wrapper.prop<Function>('onSubmit')({ foo: 'bar' }, { setSubmitting }); | |||||
expect(setSubmitting).toBeCalledWith(false); | |||||
onSubmit.mockResolvedValue(undefined).mockClear(); | |||||
setSubmitting.mockClear(); | |||||
wrapper.prop<Function>('onSubmit')({ foo: 'bar' }, { setSubmitting }); | |||||
await new Promise(setImmediate); | |||||
expect(setSubmitting).toBeCalledWith(false); | |||||
}); |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { shallow } from 'enzyme'; | |||||
import ValidationInput from '../ValidationInput'; | |||||
it('should render', () => { | |||||
expect( | |||||
shallow( | |||||
<ValidationInput | |||||
description="My description" | |||||
error={undefined} | |||||
help="Help message" | |||||
id="field-id" | |||||
isInvalid={false} | |||||
isValid={false} | |||||
label="Field label" | |||||
required={true}> | |||||
<div /> | |||||
</ValidationInput> | |||||
) | |||||
).toMatchSnapshot(); | |||||
}); | |||||
it('should render with error', () => { | |||||
expect( | |||||
shallow( | |||||
<ValidationInput | |||||
description="My description" | |||||
error="Field error message" | |||||
id="field-id" | |||||
isInvalid={true} | |||||
isValid={false} | |||||
label="Field label"> | |||||
<div /> | |||||
</ValidationInput> | |||||
) | |||||
).toMatchSnapshot(); | |||||
}); | |||||
it('should render when valid', () => { | |||||
expect( | |||||
shallow( | |||||
<ValidationInput | |||||
description="My description" | |||||
error={undefined} | |||||
id="field-id" | |||||
isInvalid={false} | |||||
isValid={true} | |||||
label="Field label" | |||||
required={true}> | |||||
<div /> | |||||
</ValidationInput> | |||||
) | |||||
).toMatchSnapshot(); | |||||
}); |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
import * as React from 'react'; | |||||
import { shallow } from 'enzyme'; | |||||
import ValidationModal from '../ValidationModal'; | |||||
it('should render correctly', () => { | |||||
const wrapper = shallow( | |||||
<ValidationModal<{ field: string }> | |||||
confirmButtonText="confirm" | |||||
header="title" | |||||
initialValues={{ field: 'foo' }} | |||||
isDestructive={true} | |||||
isInitialValid={true} | |||||
onClose={jest.fn()} | |||||
onSubmit={jest.fn()} | |||||
validate={jest.fn()}> | |||||
{props => ( | |||||
<input | |||||
name="field" | |||||
onBlur={props.handleBlur} | |||||
onChange={props.handleChange} | |||||
type="text" | |||||
value={props.values.field} | |||||
/> | |||||
)} | |||||
</ValidationModal> | |||||
); | |||||
expect(wrapper).toMatchSnapshot(); | |||||
}); |
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||||
exports[`should render correctly 1`] = ` | |||||
<div | |||||
className="boxed-group boxed-group-accordion" | |||||
> | |||||
<div | |||||
className="boxed-group-header" | |||||
onClick={[Function]} | |||||
role="listitem" | |||||
> | |||||
<span | |||||
className="boxed-group-accordion-title" | |||||
> | |||||
<OpenCloseIcon | |||||
className="little-spacer-right" | |||||
open={false} | |||||
/> | |||||
Foo | |||||
</span> | |||||
<div> | |||||
header content | |||||
</div> | |||||
</div> | |||||
</div> | |||||
`; |
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||||
exports[`should render Select 1`] = ` | |||||
<Select | |||||
autoFocus={true} | |||||
escapeClearsValue={false} | |||||
filterOption={[Function]} | |||||
isLoading={false} | |||||
noResultsText="select2.tooShort.2" | |||||
onBlurResetsInput={true} | |||||
onChange={[Function]} | |||||
onInputChange={[Function]} | |||||
options={Array []} | |||||
placeholder="search_verb" | |||||
searchable={true} | |||||
/> | |||||
`; |
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||||
exports[`should render and submit 1`] = ` | |||||
<Formik | |||||
enableReinitialize={false} | |||||
initialValues={ | |||||
Object { | |||||
"foo": "bar", | |||||
} | |||||
} | |||||
isInitialValid={false} | |||||
onSubmit={[Function]} | |||||
validate={[MockFunction]} | |||||
validateOnBlur={true} | |||||
validateOnChange={true} | |||||
> | |||||
<Component /> | |||||
</Formik> | |||||
`; |
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||||
exports[`should render 1`] = ` | |||||
<div> | |||||
<label | |||||
htmlFor="field-id" | |||||
> | |||||
<span | |||||
className="text-middle" | |||||
> | |||||
<strong> | |||||
Field label | |||||
</strong> | |||||
<em | |||||
className="mandatory" | |||||
> | |||||
* | |||||
</em> | |||||
</span> | |||||
<HelpTooltip | |||||
className="spacer-left" | |||||
overlay="Help message" | |||||
/> | |||||
</label> | |||||
<div | |||||
className="little-spacer-top spacer-bottom" | |||||
> | |||||
<div /> | |||||
</div> | |||||
<div | |||||
className="note abs-width-400" | |||||
> | |||||
My description | |||||
</div> | |||||
</div> | |||||
`; | |||||
exports[`should render when valid 1`] = ` | |||||
<div> | |||||
<label | |||||
htmlFor="field-id" | |||||
> | |||||
<span | |||||
className="text-middle" | |||||
> | |||||
<strong> | |||||
Field label | |||||
</strong> | |||||
<em | |||||
className="mandatory" | |||||
> | |||||
* | |||||
</em> | |||||
</span> | |||||
</label> | |||||
<div | |||||
className="little-spacer-top spacer-bottom" | |||||
> | |||||
<div /> | |||||
<AlertSuccessIcon | |||||
className="spacer-left text-middle" | |||||
/> | |||||
</div> | |||||
<div | |||||
className="note abs-width-400" | |||||
> | |||||
My description | |||||
</div> | |||||
</div> | |||||
`; | |||||
exports[`should render with error 1`] = ` | |||||
<div> | |||||
<label | |||||
htmlFor="field-id" | |||||
> | |||||
<span | |||||
className="text-middle" | |||||
> | |||||
<strong> | |||||
Field label | |||||
</strong> | |||||
</span> | |||||
</label> | |||||
<div | |||||
className="little-spacer-top spacer-bottom" | |||||
> | |||||
<div /> | |||||
<AlertErrorIcon | |||||
className="spacer-left text-middle" | |||||
/> | |||||
<span | |||||
className="little-spacer-left text-danger text-middle" | |||||
> | |||||
Field error message | |||||
</span> | |||||
</div> | |||||
<div | |||||
className="note abs-width-400" | |||||
> | |||||
My description | |||||
</div> | |||||
</div> | |||||
`; |
// Jest Snapshot v1, https://goo.gl/fbAQLP | |||||
exports[`should render correctly 1`] = ` | |||||
<Modal | |||||
contentLabel="title" | |||||
onRequestClose={[MockFunction]} | |||||
> | |||||
<ValidationForm | |||||
initialValues={ | |||||
Object { | |||||
"field": "foo", | |||||
} | |||||
} | |||||
isInitialValid={true} | |||||
onSubmit={[Function]} | |||||
validate={[MockFunction]} | |||||
> | |||||
<Component /> | |||||
</ValidationForm> | |||||
</Modal> | |||||
`; |
/* | |||||
* SonarQube | |||||
* Copyright (C) 2009-2019 SonarSource SA | |||||
* mailto:info AT sonarsource DOT com | |||||
* | |||||
* This program is free software; you can redistribute it and/or | |||||
* modify it under the terms of the GNU Lesser General Public | |||||
* License as published by the Free Software Foundation; either | |||||
* version 3 of the License, or (at your option) any later version. | |||||
* | |||||
* This program is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
* Lesser General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU Lesser General Public License | |||||
* along with this program; if not, write to the Free Software Foundation, | |||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |||||
*/ | |||||
.Select { | |||||
position: relative; | |||||
display: inline-block; | |||||
vertical-align: middle; | |||||
font-size: var(--smallFontSize); | |||||
text-align: left; | |||||
} | |||||
.Select, | |||||
.Select div, | |||||
.Select input, | |||||
.Select span { | |||||
box-sizing: border-box; | |||||
} | |||||
.Select.is-disabled > .Select-control { | |||||
background-color: var(--disableGrayBg) !important; | |||||
border-color: var(--disableGrayBorder) !important; | |||||
} | |||||
.Select.is-disabled > .Select-control:hover { | |||||
box-shadow: none !important; | |||||
} | |||||
.Select.is-disabled .Select-arrow-zone { | |||||
cursor: not-allowed !important; | |||||
pointer-events: none !important; | |||||
} | |||||
.Select.is-disabled .Select-placeholder, | |||||
.Select.is-disabled .Select-value { | |||||
color: var(--disableGrayText) !important; | |||||
} | |||||
.Select-control { | |||||
position: relative; | |||||
display: table; | |||||
width: 100%; | |||||
height: var(--controlHeight); | |||||
line-height: calc(var(--controlHeight) - 2px); | |||||
border: 1px solid var(--gray80); | |||||
border-collapse: separate; | |||||
border-radius: 2px; | |||||
background-color: #fff; | |||||
color: var(--baseFontColor); | |||||
cursor: default; | |||||
outline: none; | |||||
overflow: hidden; | |||||
} | |||||
.is-searchable.is-open > .Select-control { | |||||
cursor: text; | |||||
} | |||||
.is-open > .Select-control { | |||||
border-bottom-right-radius: 0; | |||||
border-bottom-left-radius: 0; | |||||
background: #fff; | |||||
} | |||||
.is-open > .Select-control > .Select-arrow { | |||||
border-color: transparent transparent #999; | |||||
border-width: 0 5px 5px; | |||||
} | |||||
.is-searchable.is-focused:not(.is-open) > .Select-control { | |||||
cursor: text; | |||||
} | |||||
.is-focused:not(.is-open) > .Select-control { | |||||
border-color: var(--blue); | |||||
} | |||||
.Select-placeholder { | |||||
color: var(--secondFontColor); | |||||
} | |||||
.Select-placeholder, | |||||
:not(.Select--multi) > .Select-control .Select-value { | |||||
bottom: 0; | |||||
left: 0; | |||||
line-height: 23px; | |||||
padding-left: 8px; | |||||
padding-right: 24px; | |||||
position: absolute; | |||||
right: 0; | |||||
top: 0; | |||||
max-width: 100%; | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
white-space: nowrap; | |||||
} | |||||
.Select-value [class^='icon-'] { | |||||
padding-top: 5px; | |||||
} | |||||
.Select-value svg, | |||||
.Select-value img { | |||||
padding-top: 4px; | |||||
} | |||||
.Select-value .outline-badge, | |||||
.Select-option .outline-badge { | |||||
height: 20px; | |||||
line-height: 19px; | |||||
margin-top: 1px; | |||||
} | |||||
.Select-option svg, | |||||
.Select-option img, | |||||
.Select-option [class^='icon-'] { | |||||
padding-top: 2px; | |||||
} | |||||
.has-value:not(.Select--multi) > .Select-control > .Select-value .Select-value-label, | |||||
.has-value.is-pseudo-focused:not(.Select--multi) | |||||
> .Select-control | |||||
> .Select-value | |||||
.Select-value-label { | |||||
color: var(--baseFontColor); | |||||
} | |||||
.has-value:not(.Select--multi) > .Select-control > .Select-value a.Select-value-label, | |||||
.has-value.is-pseudo-focused:not(.Select--multi) | |||||
> .Select-control | |||||
> .Select-value | |||||
a.Select-value-label { | |||||
cursor: pointer; | |||||
text-decoration: none; | |||||
} | |||||
.has-value:not(.Select--multi) > .Select-control > .Select-value a.Select-value-label:hover, | |||||
.has-value.is-pseudo-focused:not(.Select--multi) | |||||
> .Select-control | |||||
> .Select-value | |||||
a.Select-value-label:hover, | |||||
.has-value:not(.Select--multi) > .Select-control > .Select-value a.Select-value-label:focus, | |||||
.has-value.is-pseudo-focused:not(.Select--multi) | |||||
> .Select-control | |||||
> .Select-value | |||||
a.Select-value-label:focus { | |||||
color: #007eff; | |||||
outline: none; | |||||
text-decoration: underline; | |||||
} | |||||
.Select-input { | |||||
vertical-align: top; | |||||
height: 22px; | |||||
padding-left: 8px; | |||||
padding-right: 8px; | |||||
outline: none; | |||||
} | |||||
.Select-input > input { | |||||
background: none transparent; | |||||
border: 0 none; | |||||
cursor: default; | |||||
display: inline-block; | |||||
font-family: inherit; | |||||
font-size: var(--smallFontSize); | |||||
height: 22px; | |||||
margin: 0; | |||||
outline: none; | |||||
padding: 0; | |||||
box-shadow: none; | |||||
-webkit-appearance: none; | |||||
} | |||||
.is-focused .Select-input > input { | |||||
cursor: text; | |||||
} | |||||
.has-value.is-pseudo-focused .Select-input { | |||||
opacity: 0; | |||||
} | |||||
.Select-control:not(.is-searchable) > .Select-input { | |||||
outline: none; | |||||
} | |||||
.Select-loading-zone { | |||||
cursor: pointer; | |||||
display: table-cell; | |||||
position: relative; | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
width: 16px; | |||||
} | |||||
.Select-loading { | |||||
-webkit-animation: Select-animation-spin 400ms infinite linear; | |||||
-o-animation: Select-animation-spin 400ms infinite linear; | |||||
animation: Select-animation-spin 400ms infinite linear; | |||||
width: 16px; | |||||
height: 16px; | |||||
box-sizing: border-box; | |||||
border-radius: 50%; | |||||
border: 2px solid #ccc; | |||||
border-right-color: var(--baseFontColor); | |||||
display: inline-block; | |||||
position: relative; | |||||
vertical-align: middle; | |||||
} | |||||
.Select-clear-zone { | |||||
-webkit-animation: Select-animation-fadeIn 200ms; | |||||
-o-animation: Select-animation-fadeIn 200ms; | |||||
animation: Select-animation-fadeIn 200ms; | |||||
color: #999; | |||||
cursor: pointer; | |||||
display: table-cell; | |||||
position: relative; | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
width: 16px; | |||||
height: 16px; | |||||
padding-right: 4px; | |||||
} | |||||
.Select-clear-zone:hover .Select-clear { | |||||
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxNCAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEuNDE0MjE7Ij4gICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4wMjM0Mzc1LDAsMCwwLjAyMzQzNzUsLTUuMDE1NjIsLTUuMDE1NjIpIj4gICAgICAgIDxwYXRoIGQ9Ik04MTAsMjc0TDU3Miw1MTJMODEwLDc1MEw3NTAsODEwTDUxMiw1NzJMMjc0LDgxMEwyMTQsNzUwTDQ1Miw1MTJMMjE0LDI3NEwyNzQsMjE0TDUxMiw0NTJMNzUwLDIxNEw4MTAsMjc0WiIgc3R5bGU9ImZpbGw6cmdiKDIzMSwyMCw1Nik7ZmlsbC1ydWxlOm5vbnplcm87Ii8+ICAgIDwvZz48L3N2Zz4=); | |||||
} | |||||
.Select-clear { | |||||
display: block; | |||||
width: 9px; | |||||
height: 9px; | |||||
background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj48c3ZnIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHZpZXdCb3g9IjAgMCAxNCAxNCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3BhY2U9InByZXNlcnZlIiBzdHlsZT0iZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlLWxpbmVqb2luOnJvdW5kO3N0cm9rZS1taXRlcmxpbWl0OjEuNDE0MjE7Ij4gICAgPGcgdHJhbnNmb3JtPSJtYXRyaXgoMC4wMjM0Mzc1LDAsMCwwLjAyMzQzNzUsLTUuMDE1NjIsLTUuMDE1NjIpIj4gICAgICAgIDxwYXRoIGQ9Ik04MTAsMjc0TDU3Miw1MTJMODEwLDc1MEw3NTAsODEwTDUxMiw1NzJMMjc0LDgxMEwyMTQsNzUwTDQ1Miw1MTJMMjE0LDI3NEwyNzQsMjE0TDUxMiw0NTJMNzUwLDIxNEw4MTAsMjc0WiIgc3R5bGU9ImZpbGw6cmdiKDE1MywxNTMsMTUzKTtmaWxsLXJ1bGU6bm9uemVybzsiLz4gICAgPC9nPjwvc3ZnPg==); | |||||
background-size: 9px 9px; | |||||
text-indent: -9999px; | |||||
} | |||||
.Select--multi .Select-clear-zone { | |||||
width: 17px; | |||||
} | |||||
.Select-arrow-zone { | |||||
cursor: pointer; | |||||
display: table-cell; | |||||
position: relative; | |||||
text-align: center; | |||||
vertical-align: middle; | |||||
width: 20px; | |||||
padding-right: 5px; | |||||
} | |||||
.Select-arrow { | |||||
border-color: #999 transparent transparent; | |||||
border-style: solid; | |||||
border-width: 4px 4px 2px; | |||||
display: inline-block; | |||||
height: 0; | |||||
width: 0; | |||||
} | |||||
.is-open .Select-arrow, | |||||
.Select-arrow-zone:hover > .Select-arrow { | |||||
border-top-color: #666; | |||||
} | |||||
@-webkit-keyframes Select-animation-fadeIn { | |||||
from { | |||||
opacity: 0; | |||||
} | |||||
to { | |||||
opacity: 1; | |||||
} | |||||
} | |||||
@keyframes Select-animation-fadeIn { | |||||
from { | |||||
opacity: 0; | |||||
} | |||||
to { | |||||
opacity: 1; | |||||
} | |||||
} | |||||
.Select-menu-outer { | |||||
border-bottom-right-radius: 4px; | |||||
border-bottom-left-radius: 4px; | |||||
background-color: #fff; | |||||
border: 1px solid #ccc; | |||||
border-top-color: var(--barBorderColor); | |||||
box-sizing: border-box; | |||||
margin-top: -1px; | |||||
max-height: 200px; | |||||
position: absolute; | |||||
top: 100%; | |||||
width: 100%; | |||||
z-index: var(--dropdownMenuZIndex); | |||||
-webkit-overflow-scrolling: touch; | |||||
box-shadow: var(--defaultShadow); | |||||
} | |||||
.Select-menu { | |||||
max-height: 198px; | |||||
padding: 5px 0; | |||||
overflow-y: auto; | |||||
} | |||||
.Select-option { | |||||
display: block; | |||||
line-height: 20px; | |||||
padding: 0 8px; | |||||
box-sizing: border-box; | |||||
color: var(--baseFontColor); | |||||
font-size: var(--smallFontSize); | |||||
cursor: pointer; | |||||
white-space: nowrap; | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
} | |||||
.Select-option:last-child { | |||||
border-bottom-right-radius: 2px; | |||||
border-bottom-left-radius: 2px; | |||||
} | |||||
.Select-option.is-focused { | |||||
background-color: var(--barBackgroundColor); | |||||
} | |||||
.Select-option.is-disabled { | |||||
font-weight: 600; | |||||
cursor: default; | |||||
} | |||||
.Select-noresults { | |||||
box-sizing: border-box; | |||||
color: #999; | |||||
cursor: default; | |||||
display: block; | |||||
padding: 8px 10px; | |||||
} | |||||
.Select--multi .Select-value { | |||||
background-color: rgba(0, 126, 255, 0.08); | |||||
border-radius: 2px; | |||||
border: 1px solid rgba(0, 126, 255, 0.24); | |||||
color: var(--baseFontColor); | |||||
display: inline-block; | |||||
font-size: var(--smallFontSize); | |||||
line-height: 14px; | |||||
margin: 1px 4px 1px 1px; | |||||
vertical-align: top; | |||||
} | |||||
.Select-value-label { | |||||
font-size: var(--smallFontSize); | |||||
} | |||||
.is-searchable.is-open .Select-value-label { | |||||
opacity: 0.5; | |||||
} | |||||
.Select-big .Select-control { | |||||
padding-top: 4px; | |||||
padding-bottom: 4px; | |||||
} | |||||
.Select-big .Select-placeholder { | |||||
margin-top: 4px; | |||||
margin-bottom: 4px; | |||||
} | |||||
.Select-big .Select-value-label { | |||||
display: inline-block; | |||||
margin-top: 7px; | |||||
line-height: 16px; | |||||
} | |||||
.Select-big .Select-option { | |||||
padding: 7px 8px; | |||||
line-height: 16px; | |||||
} | |||||
.Select-big img, | |||||
.Select-big svg { | |||||
padding-top: 0; | |||||
} | |||||
.Select--multi .Select-value-icon, | |||||
.Select--multi .Select-value-label { | |||||
display: inline-block; | |||||
vertical-align: middle; | |||||
} | |||||
.Select--multi .Select-value-label { | |||||
display: inline-block; | |||||
max-width: 200px; | |||||
border-bottom-right-radius: 2px; | |||||
border-top-right-radius: 2px; | |||||
cursor: default; | |||||
padding: 2px 5px; | |||||
overflow: hidden; | |||||
text-overflow: ellipsis; | |||||
white-space: nowrap; | |||||
} | |||||
.Select--multi a.Select-value-label { | |||||
color: #007eff; | |||||
cursor: pointer; | |||||
text-decoration: none; | |||||
} | |||||
.Select--multi a.Select-value-label:hover { | |||||
text-decoration: underline; | |||||
} | |||||
.Select--multi .Select-value-icon { | |||||
cursor: pointer; | |||||
border-bottom-left-radius: 2px; | |||||
border-top-left-radius: 2px; | |||||
border-right: 1px solid rgba(0, 126, 255, 0.24); | |||||
padding: 1px 5px; | |||||
} | |||||
.Select--multi .Select-value-icon:hover, | |||||
.Select--multi .Select-value-icon:focus { | |||||
background-color: rgba(0, 113, 230, 0.08); | |||||
color: #0071e6; | |||||
} | |||||
.Select--multi .Select-value-icon:active { | |||||
background-color: rgba(0, 126, 255, 0.24); | |||||
} | |||||
.Select--multi.is-disabled .Select-value { | |||||
background-color: #fcfcfc; | |||||
border: 1px solid #e3e3e3; | |||||
color: var(--baseFontColor); | |||||
} | |||||
.Select--multi.is-disabled .Select-value-icon { | |||||
cursor: not-allowed; | |||||
border-right: 1px solid #e3e3e3; | |||||
} | |||||
.Select--multi.is-disabled .Select-value-icon:hover, | |||||
.Select--multi.is-disabled .Select-value-icon:focus, | |||||
.Select--multi.is-disabled .Select-value-icon:active { | |||||
background-color: #fcfcfc; | |||||
} | |||||
.Select-aria-only { | |||||
display: none; | |||||
} | |||||
@keyframes Select-animation-spin { | |||||
to { | |||||
transform: rotate(1turn); | |||||
} | |||||
} | |||||
@-webkit-keyframes Select-animation-spin { | |||||
to { | |||||
-webkit-transform: rotate(1turn); | |||||
} | |||||
} |
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-color/-/d3-color-1.2.2.tgz#80cf7cfff7401587b8f89307ba36fe4a576bc7cf" | resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-color/-/d3-color-1.2.2.tgz#80cf7cfff7401587b8f89307ba36fe4a576bc7cf" | ||||
integrity sha1-gM98//dAFYe4+JMHujb+Sldrx88= | integrity sha1-gM98//dAFYe4+JMHujb+Sldrx88= | ||||
"@types/d3-hierarchy@1.1.4": | |||||
version "1.1.4" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-hierarchy/-/d3-hierarchy-1.1.4.tgz#b04dfcb1f2074da789ada10fe4942d13f0bce421" | |||||
integrity sha1-sE38sfIHTaeJraEP5JQtE/C85CE= | |||||
"@types/d3-interpolate@*": | "@types/d3-interpolate@*": | ||||
version "1.3.1" | version "1.3.1" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz#1c280511f622de9b0b47d463fa55f9a4fd6f5fc8" | resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-interpolate/-/d3-interpolate-1.3.1.tgz#1c280511f622de9b0b47d463fa55f9a4fd6f5fc8" | ||||
dependencies: | dependencies: | ||||
"@types/d3-color" "*" | "@types/d3-color" "*" | ||||
"@types/d3-path@*": | |||||
version "1.0.8" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-path/-/d3-path-1.0.8.tgz#48e6945a8ff43ee0a1ce85c8cfa2337de85c7c79" | |||||
integrity sha1-SOaUWo/0PuChzoXIz6IzfehcfHk= | |||||
"@types/d3-scale@2.0.2": | "@types/d3-scale@2.0.2": | ||||
version "2.0.2" | version "2.0.2" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-scale/-/d3-scale-2.0.2.tgz#61145948aa1a52ab31384766cd013308699112b3" | resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-scale/-/d3-scale-2.0.2.tgz#61145948aa1a52ab31384766cd013308699112b3" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-selection/-/d3-selection-1.3.2.tgz#dd5661a560ba9ce3aba823c424b8d4a1bc7e833f" | resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-selection/-/d3-selection-1.3.2.tgz#dd5661a560ba9ce3aba823c424b8d4a1bc7e833f" | ||||
integrity sha1-3VZhpWC6nOOrqCPEJLjUobx+gz8= | integrity sha1-3VZhpWC6nOOrqCPEJLjUobx+gz8= | ||||
"@types/d3-shape@1.2.4": | |||||
version "1.2.4" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-shape/-/d3-shape-1.2.4.tgz#e65585f2254d83ae42c47af2e730dd9b97952996" | |||||
integrity sha1-5lWF8iVNg65CxHry5zDdm5eVKZY= | |||||
dependencies: | |||||
"@types/d3-path" "*" | |||||
"@types/d3-time@*": | "@types/d3-time@*": | ||||
version "1.0.10" | version "1.0.10" | ||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-time/-/d3-time-1.0.10.tgz#d338c7feac93a98a32aac875d1100f92c7b61f4f" | resolved "https://repox.jfrog.io/repox/api/npm/npm/@types/d3-time/-/d3-time-1.0.10.tgz#d338c7feac93a98a32aac875d1100f92c7b61f4f" | ||||
faye-websocket "^0.10.0" | faye-websocket "^0.10.0" | ||||
uuid "^3.0.1" | uuid "^3.0.1" | ||||
sonar-ui-common@0.0.11: | |||||
version "0.0.11" | |||||
resolved "https://registry.yarnpkg.com/sonar-ui-common/-/sonar-ui-common-0.0.11.tgz#b9aee225da16564d5b823ca2fb103f6d913db719" | |||||
integrity sha512-Q3Umwf+nVnH0J6XUR104PRpLN8aGAlqZHOA2oxaJVzhwT26o80A6i0i6PZAkzrbqQE4jhTRBQ396oalihI0s2g== | |||||
sonar-ui-common@0.0.13: | |||||
version "0.0.13" | |||||
resolved "https://repox.jfrog.io/repox/api/npm/npm/sonar-ui-common/-/sonar-ui-common-0.0.13.tgz#b01255f32d7863e529117bfe715890edfcdb8c97" | |||||
integrity sha1-sBJV8y14Y+UpEXv+cViQ7fzbjJc= | |||||
dependencies: | dependencies: | ||||
"@types/react-select" "1.2.6" | |||||
classnames "2.2.6" | classnames "2.2.6" | ||||
clipboard "2.0.4" | clipboard "2.0.4" | ||||
d3-array "1.2.4" | d3-array "1.2.4" | ||||
d3-shape "1.2.2" | d3-shape "1.2.2" | ||||
d3-zoom "1.7.3" | d3-zoom "1.7.3" | ||||
date-fns "1.30.1" | date-fns "1.30.1" | ||||
formik "1.2.0" | |||||
history "3.3.0" | history "3.3.0" | ||||
lodash "4.17.11" | lodash "4.17.11" | ||||
react-draggable "3.2.1" | react-draggable "3.2.1" | ||||
react-intl "2.8.0" | react-intl "2.8.0" | ||||
react-modal "3.8.2" | react-modal "3.8.2" | ||||
react-router "3.2.1" | react-router "3.2.1" | ||||
react-select "1.2.1" | |||||
react-virtualized "9.21.0" | react-virtualized "9.21.0" | ||||
sort-keys@^2.0.0: | sort-keys@^2.0.0: |