[Glitch] fix: update to emoji-mart 2.10.0
Port db06b25376 to glitch-soc
			
			
This commit is contained in:
		
							parent
							
								
									e900b03e38
								
							
						
					
					
						commit
						49bea8c46b
					
				
					 4 changed files with 65 additions and 19 deletions
				
			
		| 
						 | 
					@ -129,6 +129,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 => {
 | 
				
			||||||
| 
						 | 
					@ -165,20 +166,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>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -210,10 +227,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>
 | 
				
			||||||
    );
 | 
					    );
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -44,11 +44,11 @@
 | 
				
			||||||
  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 '~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: 0;
 | 
					    bottom: 0;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  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;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -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,
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue