fix: update to emoji-mart 2.10.0 (#10281)
* fix: update to emoji-mart 2.10.0 * remove useless change * fix CSS style of emoji picker, improve a11y * fix missing newline in scss * fix the title and input fonts
This commit is contained in:
		
					parent
					
						
							
								6a3f08661f
							
						
					
				
			
			
				commit
				
					
						db06b25376
					
				
			
		
					 7 changed files with 82 additions and 24 deletions
				
			
		|  | @ -50,6 +50,7 @@ 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 => { | ||||||
|  | @ -86,20 +87,36 @@ 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 } = this.props; |     const { active, modifier } = this.props; | ||||||
| 
 | 
 | ||||||
|     return ( |     return ( | ||||||
|       <div className='emoji-picker-dropdown__modifiers__menu' style={{ display: active ? 'block' : 'none' }} ref={this.setRef}> |       <ul | ||||||
|         <button onClick={this.handleClick} data-index={1}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={1} backgroundImageFn={backgroundImageFn} /></button> |         className='emoji-picker-dropdown__modifiers__menu' | ||||||
|         <button onClick={this.handleClick} data-index={2}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={2} backgroundImageFn={backgroundImageFn} /></button> |         style={{ display: active ? 'block' : 'none' }} | ||||||
|         <button onClick={this.handleClick} data-index={3}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={3} backgroundImageFn={backgroundImageFn} /></button> |         role='menuitem' | ||||||
|         <button onClick={this.handleClick} data-index={4}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={4} backgroundImageFn={backgroundImageFn} /></button> |         ref={this.setRef} | ||||||
|         <button onClick={this.handleClick} data-index={5}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={5} backgroundImageFn={backgroundImageFn} /></button> |       > | ||||||
|         <button onClick={this.handleClick} data-index={6}><Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={6} backgroundImageFn={backgroundImageFn} /></button> |         {[1, 2, 3, 4, 5, 6].map(i => ( | ||||||
|       </div> |           <li | ||||||
|  |             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> | ||||||
|     ); |     ); | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | @ -131,10 +148,22 @@ 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'> | ||||||
|         <Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} /> |         <div ref={setRef}> | ||||||
|         <ModifierPickerMenu active={active} onSelect={this.handleSelect} onClose={this.props.onClose} /> |           <Emoji emoji='fist' set='twitter' size={22} sheetSize={32} skin={modifier} onClick={this.handleClick} backgroundImageFn={backgroundImageFn} /> | ||||||
|  |         </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-es/components/picker/picker'; | import Picker from 'emoji-mart/dist-modern/components/picker/picker'; | ||||||
| import Emoji from 'emoji-mart/dist-es/components/emoji/emoji'; | import Emoji from 'emoji-mart/dist-modern/components/emoji/emoji'; | ||||||
| 
 | 
 | ||||||
| export { | export { | ||||||
|   Picker, |   Picker, | ||||||
|  |  | ||||||
|  | @ -3339,11 +3339,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; | ||||||
| 
 | 
 | ||||||
|   button { |   li { | ||||||
|     display: block; |     display: block; | ||||||
|     cursor: pointer; |     cursor: pointer; | ||||||
|     border: 0; |     border: 0; | ||||||
|     padding: 4px 8px; |     padding: 3px 8px; | ||||||
|     background: transparent; |     background: transparent; | ||||||
| 
 | 
 | ||||||
|     &:hover, |     &:hover, | ||||||
|  |  | ||||||
|  | @ -1,3 +1,5 @@ | ||||||
|  | @import '../../../node_modules/emoji-mart/css/emoji-mart.css'; | ||||||
|  | 
 | ||||||
| .emoji-mart { | .emoji-mart { | ||||||
|   &, |   &, | ||||||
|   * { |   * { | ||||||
|  | @ -51,6 +53,14 @@ | ||||||
| 
 | 
 | ||||||
|   &: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; | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | @ -59,11 +69,19 @@ | ||||||
| 
 | 
 | ||||||
|   &: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 { | ||||||
|  | @ -83,7 +101,6 @@ | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   svg { |   svg { | ||||||
|     fill: currentColor; |  | ||||||
|     max-height: 18px; |     max-height: 18px; | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  | @ -103,15 +120,14 @@ | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| .emoji-mart-search { | .emoji-mart-search { | ||||||
|   padding: 10px; |   margin: 10px 40px 10px 5px; | ||||||
|   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: inherit; |     font-family: $font-sans-serif; | ||||||
|     display: block; |     display: block; | ||||||
|     width: 100%; |     width: 100%; | ||||||
|     background: rgba($ui-secondary-color, 0.3); |     background: rgba($ui-secondary-color, 0.3); | ||||||
|  | @ -166,6 +182,7 @@ | ||||||
|     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,7 +11,16 @@ 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": "Gargron/emoji-mart#build", |     "emoji-mart": "^2.10.0", | ||||||
|     "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,9 +3173,12 @@ 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@Gargron/emoji-mart#build: | emoji-mart@^2.10.0: | ||||||
|   version "2.6.2" |   version "2.10.0" | ||||||
|   resolved "https://codeload.github.com/Gargron/emoji-mart/tar.gz/ff00dc470b5b2d9f145a6d6e977a54de5df2b4c9" |   resolved "https://registry.yarnpkg.com/emoji-mart/-/emoji-mart-2.10.0.tgz#e1adec430f4963f79055b12b80e6d60c5abb742d" | ||||||
|  |   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