Ava Wroten
            
            She/Her
          
 
          
          
            On Gitlab @gaiety
            
               Or Github @sharpshark28
            
            Or Github @sharpshark28
          
A project feature saved by A11y
Mouse Drag & Drop
Do we support Touch?
What about A11y?
A11Y
A....11.....Y
Accessibility
Equity
Web assistive technologies commonly help with...
Limited mobility, muscle slowness, tremors, low vision, color blindness, partial hearing loss, etc
👩🏽🔬 👨🏾🎨 👩🏻🔧 👨🏼✈️
I build software for humans
So I did some research...
✔️ Mouse Drag & Drop
✔️ Touch Drag & Drop
index.hbs
            <SortableGroupAccessible
              tabindex="0"
              class="border focus:border-teal-400"
            > Foo </SortableGroupAccessible>
          sortable-group-accessible.hbs
              <div ...attributes>
                {{yield}}
              </div>
            rendered html
              <div tabindex="0" class="border focus:border-teal-400"
              > Foo </div>
            sortable-group-accessible.hbs
            <div
              {{on 'focus' this.handleFocus}}
              {{on 'blur' this.handleBlur}}
              {{key-up this.handleArrowUp key='ArrowUp'}}
              {{key-up this.handleArrowDown key='ArrowDown'}}
          modifiers/key-up.js
            import { modifier } from 'ember-modifier';
            const listener = (evt) => {
              if (!desiredKey || desiredKey === evt.key) handler(evt);
            }
            export default modifier(function keyUp(element, [handler], { key: desiredKey }) {
              element.addEventListener('keyup', listener);
              return () => { element.removeEventListener('keyup', listener); }
            });
          modifiers/key-up-test.js
            test('it can listen for specific key up events', async function(assert) {
              this.keyUp = ({ key }) => {
                assert.step('key up');
                assert.equal(key, 'Enter');
              };
              await render(hbs`
                <div {{key-up this.keyUp}} data-test-id='keyup'></div>`);
              let selector = '[data-test-id=keyup]';
              await triggerKeyEvent(selector, 'keyup', 'Enter');
              assert.verifySteps(['key up']);
            });
          index-test.js
            assert.dom(findAll('[data-test-id=item]')[0]).hasText('Item 1');
            assert.dom(findAll('[data-test-id=item]')[1]).hasText('Item 2');
            await triggerEvent('[data-test-id=group]', 'focus');
            await click('[data-test-id=sort-down]');
            assert.dom(findAll('[data-test-id=item]')[0]).hasText('Item 2');
            assert.dom(findAll('[data-test-id=item]')[1]).hasText('Item 1');
          v2.x.x ember-sortable
Hire someone different than you.
Make A11y a priority at your next design meeting!