Fix emoji-mart crashing web UI on search by reverting the upgrade to 2.10.0 (#10413)
Fix #10315
This reverts commit db06b25376.
	
	
This commit is contained in:
		
					parent
					
						
							
								79227d153b
							
						
					
				
			
			
				commit
				
					
						8fb69f1366
					
				
			
		
					 7 changed files with 24 additions and 82 deletions
				
			
		|  | @ -50,7 +50,6 @@ class ModifierPickerMenu extends React.PureComponent { | ||||||
|     active: PropTypes.bool, |     active: PropTypes.bool, | ||||||
|     onSelect: PropTypes.func.isRequired, |     onSelect: PropTypes.func.isRequired, | ||||||
|     onClose: PropTypes.func.isRequired, |     onClose: PropTypes.func.isRequired, | ||||||
|     modifier: PropTypes.number, |  | ||||||
|   }; |   }; | ||||||
| 
 | 
 | ||||||
|   handleClick = e => { |   handleClick = e => { | ||||||
|  | @ -87,36 +86,20 @@ class ModifierPickerMenu extends React.PureComponent { | ||||||
| 
 | 
 | ||||||
|   setRef = c => { |   setRef = c => { | ||||||
|     this.node = c; |     this.node = c; | ||||||
|     if (this.node) { |  | ||||||
|       this.node.querySelector('li:first-child button').focus(); // focus the first element when opened
 |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   render () { |   render () { | ||||||
|     const { active, modifier } = this.props; |     const { active } = this.props; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <ul |       <div className='emoji-picker-dropdown__modifiers__menu' style={{ display: active ? 'block' : 'none' }} ref={this.setRef}> | ||||||
|         className='emoji-picker-dropdown__modifiers__menu' |         <button onClick={this.handleClick} data-index={1}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={1} backgroundImageFn={backgroundImageFn} /></button> | ||||||
|         style={{ display: active ? 'block' : 'none' }} |         <button onClick={this.handleClick} data-index={2}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={2} backgroundImageFn={backgroundImageFn} /></button> | ||||||
|         role='menuitem' |         <button onClick={this.handleClick} data-index={3}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={3} backgroundImageFn={backgroundImageFn} /></button> | ||||||
|         ref={this.setRef} |         <button onClick={this.handleClick} data-index={4}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={4} backgroundImageFn={backgroundImageFn} /></button> | ||||||
|       > |         <button onClick={this.handleClick} data-index={5}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={5} backgroundImageFn={backgroundImageFn} /></button> | ||||||
|         {[1, 2, 3, 4, 5, 6].map(i => ( |         <button onClick={this.handleClick} data-index={6}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={6} backgroundImageFn={backgroundImageFn} /></button> | ||||||
|           <li |       </div> | ||||||
|             onClick={this.handleClick} |  | ||||||
|             role='menuitemradio' |  | ||||||
|             aria-checked={i === (modifier || 1)} |  | ||||||
|             data-index={i} |  | ||||||
|             key={i} |  | ||||||
|           > |  | ||||||
|             <Emoji |  | ||||||
|               emoji='fist' set='twitter' size={22} sheetSize={32} skin={i} |  | ||||||
|               backgroundImageFn={backgroundImageFn} |  | ||||||
|             /> |  | ||||||
|           </li> |  | ||||||
|         ))} |  | ||||||
|       </ul> |  | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -148,22 +131,10 @@ class ModifierPicker extends React.PureComponent { | ||||||
|   render () { |   render () { | ||||||
|     const { active, modifier } = this.props; |     const { active, modifier } = this.props; | ||||||
| 
 | 
 | ||||||
|     function setRef(ref) { |  | ||||||
|       if (!ref) { |  | ||||||
|         return; |  | ||||||
|       } |  | ||||||
|       // TODO: It would be nice if we could pass props directly to emoji-mart's buttons.
 |  | ||||||
|       const button = ref.querySelector('button'); |  | ||||||
|       button.setAttribute('aria-haspopup', 'true'); |  | ||||||
|       button.setAttribute('aria-expanded', active); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return ( |     return ( | ||||||
|       <div className='emoji-picker-dropdown__modifiers'> |       <div className='emoji-picker-dropdown__modifiers'> | ||||||
|         <div ref={setRef}> |         <Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} /> | ||||||
|           <Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} /> |         <ModifierPickerMenu active={active} onSelect={this.handleSelect} onClose={this.props.onClose} /> | ||||||
|         </div> |  | ||||||
|         <ModifierPickerMenu active={active} modifier={modifier} onSelect={this.handleSelect} onClose={this.props.onClose} /> |  | ||||||
|       </div> |       </div> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import Picker from 'emoji-mart/dist-modern/components/picker/picker'; | import Picker from 'emoji-mart/dist-es/components/picker/picker'; | ||||||
| import Emoji from 'emoji-mart/dist-modern/components/emoji/emoji'; | import Emoji from 'emoji-mart/dist-es/components/emoji/emoji'; | ||||||
| 
 | 
 | ||||||
| export { | export { | ||||||
|   Picker, |   Picker, | ||||||
|  |  | ||||||
|  | @ -3226,11 +3226,11 @@ a.status-card.compact:hover { | ||||||
|   box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2); |   box-shadow: 1px 2px 6px rgba($base-shadow-color, 0.2); | ||||||
|   overflow: hidden; |   overflow: hidden; | ||||||
| 
 | 
 | ||||||
|   li { |   button { | ||||||
|     display: block; |     display: block; | ||||||
|     cursor: pointer; |     cursor: pointer; | ||||||
|     border: 0; |     border: 0; | ||||||
|     padding: 3px 8px; |     padding: 4px 8px; | ||||||
|     background: transparent; |     background: transparent; | ||||||
| 
 | 
 | ||||||
|     &:hover, |     &:hover, | ||||||
|  |  | ||||||
|  | @ -1,5 +1,3 @@ | ||||||
| @import '../../../node_modules/emoji-mart/css/emoji-mart.css'; |  | ||||||
| 
 |  | ||||||
| .emoji-mart { | .emoji-mart { | ||||||
|   &, |   &, | ||||||
|   * { |   * { | ||||||
|  | @ -53,14 +51,6 @@ | ||||||
| 
 | 
 | ||||||
|   &:hover { |   &:hover { | ||||||
|     color: darken($lighter-text-color, 4%); |     color: darken($lighter-text-color, 4%); | ||||||
| 
 |  | ||||||
|     svg { |  | ||||||
|       fill: darken($lighter-text-color, 4%); |  | ||||||
|     } |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   svg { |  | ||||||
|     fill: $lighter-text-color; |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -69,19 +59,11 @@ | ||||||
| 
 | 
 | ||||||
|   &:hover { |   &:hover { | ||||||
|     color: darken($highlight-text-color, 4%); |     color: darken($highlight-text-color, 4%); | ||||||
| 
 |  | ||||||
|     svg { |  | ||||||
|       fill: darken($highlight-text-color, 4%); |  | ||||||
|     } |  | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   .emoji-mart-anchor-bar { |   .emoji-mart-anchor-bar { | ||||||
|     bottom: -1px; |     bottom: -1px; | ||||||
|   } |   } | ||||||
| 
 |  | ||||||
|   svg { |  | ||||||
|     fill: $highlight-text-color; |  | ||||||
|   } |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .emoji-mart-anchor-bar { | .emoji-mart-anchor-bar { | ||||||
|  | @ -101,6 +83,7 @@ | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   svg { |   svg { | ||||||
|  |     fill: currentColor; | ||||||
|     max-height: 18px; |     max-height: 18px; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | @ -120,14 +103,15 @@ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .emoji-mart-search { | .emoji-mart-search { | ||||||
|   margin: 10px 40px 10px 5px; |   padding: 10px; | ||||||
|  |   padding-right: 45px; | ||||||
|   background: $simple-background-color; |   background: $simple-background-color; | ||||||
| 
 | 
 | ||||||
|   input { |   input { | ||||||
|     font-size: 14px; |     font-size: 14px; | ||||||
|     font-weight: 400; |     font-weight: 400; | ||||||
|     padding: 7px 9px; |     padding: 7px 9px; | ||||||
|     font-family: $font-sans-serif; |     font-family: inherit; | ||||||
|     display: block; |     display: block; | ||||||
|     width: 100%; |     width: 100%; | ||||||
|     background: rgba($ui-secondary-color, 0.3); |     background: rgba($ui-secondary-color, 0.3); | ||||||
|  | @ -182,7 +166,6 @@ | ||||||
|     font-weight: 500; |     font-weight: 500; | ||||||
|     padding: 5px 6px; |     padding: 5px 6px; | ||||||
|     background: $simple-background-color; |     background: $simple-background-color; | ||||||
|     font-family: $font-sans-serif; |  | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,16 +11,7 @@ module.exports = { | ||||||
|       options: { |       options: { | ||||||
|         babelrc: false, |         babelrc: false, | ||||||
|         plugins: [ |         plugins: [ | ||||||
|           [ |           'transform-react-remove-prop-types', | ||||||
|             'transform-react-remove-prop-types', |  | ||||||
|             { |  | ||||||
|               mode: 'remove', |  | ||||||
|               removeImport: true, |  | ||||||
|               additionalLibraries: [ |  | ||||||
|                 '../../utils/shared-props', // emoji-mart
 |  | ||||||
|               ], |  | ||||||
|             }, |  | ||||||
|           ], |  | ||||||
|         ], |         ], | ||||||
|         cacheDirectory: join(settings.cache_path, 'babel-loader-node-modules'), |         cacheDirectory: join(settings.cache_path, 'babel-loader-node-modules'), | ||||||
|         cacheCompression: env.NODE_ENV === 'production', |         cacheCompression: env.NODE_ENV === 'production', | ||||||
|  |  | ||||||
|  | @ -85,7 +85,7 @@ | ||||||
|     "cssnano": "^4.1.10", |     "cssnano": "^4.1.10", | ||||||
|     "detect-passive-events": "^1.0.2", |     "detect-passive-events": "^1.0.2", | ||||||
|     "dotenv": "^6.2.0", |     "dotenv": "^6.2.0", | ||||||
|     "emoji-mart": "^2.10.0", |     "emoji-mart": "Gargron/emoji-mart#build", | ||||||
|     "es6-symbol": "^3.1.1", |     "es6-symbol": "^3.1.1", | ||||||
|     "escape-html": "^1.0.3", |     "escape-html": "^1.0.3", | ||||||
|     "exif-js": "^2.3.0", |     "exif-js": "^2.3.0", | ||||||
|  |  | ||||||
|  | @ -3173,12 +3173,9 @@ elliptic@^6.0.0: | ||||||
|     minimalistic-assert "^1.0.0" |     minimalistic-assert "^1.0.0" | ||||||
|     minimalistic-crypto-utils "^1.0.0" |     minimalistic-crypto-utils "^1.0.0" | ||||||
| 
 | 
 | ||||||
| emoji-mart@^2.10.0: | emoji-mart@Gargron/emoji-mart#build: | ||||||
|   version "2.10.0" |   version "2.6.2" | ||||||
|   resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-2.10.0.tgz#e1adec430f4963f79055b12b80e6d60c5abb742d" |   resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9" | ||||||
|   integrity sha512-VhcX463f8TDaQc1Tpc8rI31E15+8KXOYff1vwjokjMT52bZlCQCyq3zrnNScSYjv95f1+R4DMMreeuPvYFvOhg== |  | ||||||
|   dependencies: |  | ||||||
|     prop-types "^15.6.0" |  | ||||||
| 
 | 
 | ||||||
| emoji-regex@^6.5.1: | emoji-regex@^6.5.1: | ||||||
|   version "6.5.1" |   version "6.5.1" | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue